Parse serialised data to recover their original underlying types
Project description
parsetypes
This Python package provides tools for parsing serialised data to recover their original underlying types.
Overview
The TypeParser
class provides configurable type inference and parsing. This can be initialised with different settings to, for example:
- treat
inf
as either a float or a normal string - give exact Decimal values instead of floats
- detect inline lists
Install
pip install parsetypes
Basic examples
Import parser:
from parsetypes import TypeParser
Basic parsing:
parser = TypeParser()
parser.parse("1.2") # 1.2
parser.parse("true") # True
parser.parse("") # None
Parsing a series so that it has a consistent type:
parser = TypeParser()
parser.infer_series(["1", "2", "3"]) # [1, 2, 3]
parser.infer_series(["5", "6.7", "8."]) # [5., 6.7, 8.]
parser.infer_series(["true", "false", ""]) # [True, False, None]
parser.infer_series(["1", "2.3", "abc"]) # ["1", "2.3", "abc"]
Parsing a table so that each column is of a consistent type:
parser = TypeParser()
table = parser.parse_table([
["1", "5", "true", "1"],
["2", "6.7", "false", "2.3"],
["3", "8.0", "", "abc"],
]):
assert table == [
[1, 5., True, "1"],
[2, 6.7, False, "2.3"],
[3, 8., None, "abc"],
]
Issues
Found a bug? Please file an issue, or, better yet, submit a pull request.
Development
Clone the repository with git clone https://github.com/yushiyangk/parsetypes.git
.
The source for the package is src/
, with tests in tests/
.
Virtual environment
Create the venv using python -m venv .
.
To activate the venv, on Linux run source Scripts/activate
, and on Windows run Scripts/Activate.ps1
or Scripts/activate.bat
.
Later, to deactivate the venv, run deactivate
.
Dependencies
Run pip install -r requirements.dev.txt
.
Install
To install the package locally (in the venv) for development, run pip install -e .
.
Tasks
For unit tests, run pytest
.
To run unit tests across all supported Python versions, run tox p -m testall
. This is slower than just pytest
. Note that only Python versions that are installed locally will be run.
To run the full set of tasks before package publication, run tox p -m prepare
. Alternatively, see below for manually running individual steps in this process.
Unit tests
Run pytest
or coverage run -m pytest
.
For coverage report, first run coverage run -m pytest
, then either coverage report -m
to print to stdout or coverage html
to generate an HTML report in htmlcov/
. Alternatively, run tox r -m test
to do both steps automatically (slower).
Documentation
Run tox r -m docs
.
The documentation is generated in docs/html/
, using template files in docs/template/
.
Packaging
Before packaging, check the package metadata by running pyroma .
or tox r -m metadata
.
To generate sdist and wheel packages, delete dist/
and generic_path.egg-info/
if they exist, then run python -m build
. Run twine check dist/*
to check that the packages were generated properly. Alternatively, run tox r -m package
to do these steps automatically.
Config files
MANIFEST.in
Additional files to include in published sdist packagepyproject.toml
Package metadata, as well as configs for test and build toolsrequirements.dev.txt
Package dependencies for development, in pip formatrequirements.publish.txt
Package dependencies for publishing, in pip formattox.ini
Config file for tox
Changelog
This project follows PEP 440 and Semantic Versioning (SemVer). In addition to the guarantees specified by SemVer, for versions before 1.0, this project guarantees backwards compatibility of the API for patch version updates (0.y.z).
The recommended version specifier is generic-path ~= x.y
for version 1.0 and later, and generic-path ~= 0.y.z
for versions prior to 1.0.
0.2.1
- Fixed documentation
0.2
- Added support for Python version 3.9; previously only 3.10 and 3.11 were supported
0.1.1
- Updated documentation
0.1
- Initial version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for parsetypes-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95d12f6020eb615317f26613a16925ac85f532fa0fcad9170fb90735bbac6d47 |
|
MD5 | b1c6737d1a983f08647aed3d0df417db |
|
BLAKE2b-256 | 3c972a0362d8194041de5aa0e461e4ad41b938c1fcea436a6d21624c16c8eb88 |