# pye57
[](https://pypi.org/project/pye57)
[](https://pypi.org/project/pye57)

Python wrapper of [LibE57Format](https://github.com/asmaloney/libE57Format) to read and write .e57 point cloud files
## Example usage
```python
import numpy as np
import pye57
e57 = pye57.E57("e57_file.e57")
# read scan at index 0
data = e57.read_scan(0)
# 'data' is a dictionary with the point types as keys
assert isinstance(data["cartesianX"], np.ndarray)
assert isinstance(data["cartesianY"], np.ndarray)
assert isinstance(data["cartesianZ"], np.ndarray)
# other attributes can be read using:
data = e57.read_scan(0, intensity=True, colors=True, row_column=True)
assert isinstance(data["cartesianX"], np.ndarray)
assert isinstance(data["cartesianY"], np.ndarray)
assert isinstance(data["cartesianZ"], np.ndarray)
assert isinstance(data["intensity"], np.ndarray)
assert isinstance(data["colorRed"], np.ndarray)
assert isinstance(data["colorGreen"], np.ndarray)
assert isinstance(data["colorBlue"], np.ndarray)
assert isinstance(data["rowIndex"], np.ndarray)
assert isinstance(data["columnIndex"], np.ndarray)
# the 'read_scan' method filters points using the 'cartesianInvalidState' field
# if you want to get everything as raw, untransformed data, use:
data_raw = e57.read_scan_raw(0)
# writing is also possible, but only using raw data for now
with pye57.E57("e57_file_write.e57", mode='w') as e57_write:
e57_write.write_scan_raw(data_raw)
# you can specify a header to copy information from
e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))
# the ScanHeader object wraps most of the scan information:
header = e57.get_header(0)
print(header.point_count)
print(header.rotation_matrix)
print(header.translation)
# all the header information can be printed using:
for line in header.pretty_print():
print(line)
# the scan position can be accessed with:
position_scan_0 = e57.scan_position(0)
# the binding is very close to the E57Foundation API
# you can modify the nodes easily from python
imf = e57.image_file
root = imf.root()
data3d = root["data3D"]
scan_0 = data3d[0]
translation_x = scan_0["pose"]["translation"]["x"]
```
## Installation
On linux, Windows or Apple Silicon:
`python -m pip install pye57`
On macOS with Intel CPU you can try to build from source (advanced users):
## Building from source (for developers)
### Cloning the repository with required submodule
Clone a new repository along with the libe57Format submodule
`git clone https://github.com/davidcaron/pye57.git --recursive`
If the repository has already been previously cloned, but without the --recursive flag
```Bash
cd pye57 # go to the cloned repository
git submodule init # this will initialise the submodules in the repository
git submodule update # this will update the submodules in the repository
```
### Dependencies on Linux
Install libxerces-c-dev first.
`sudo apt install libxerces-c-dev`
### Dependencies on Windows
To get xerces-c, you can either build from source or if you're using conda:
`conda install -y xerces-c`
### Dependencies on MacOS
To get xerces-c, run:
`bash ./scripts/install_xerces_c.sh`
### Run `pip install` from the repo source
```Bash
cd pye57
python -m pip install .
```
### Uninstalling
Use pip again
```Bash
python -m pip uninstall pye57
```
Raw data
{
"_id": null,
"home_page": "https://www.github.com/davidcaron/pye57",
"name": "pye57",
"maintainer": "Graham Knapp",
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "graham.knapp@gmail.com",
"keywords": null,
"author": "David Caron",
"author_email": "dcaron05@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/77/9f/e49ab6ca2c5b785baf92656d8e61ee1ec7153597e4e03dd79aad92df4fda/pye57-0.4.18.tar.gz",
"platform": null,
"description": "\n# pye57\n\n[](https://pypi.org/project/pye57)\n[](https://pypi.org/project/pye57)\n\n\nPython wrapper of [LibE57Format](https://github.com/asmaloney/libE57Format) to read and write .e57 point cloud files\n\n## Example usage\n\n```python\nimport numpy as np\nimport pye57\n\ne57 = pye57.E57(\"e57_file.e57\")\n\n# read scan at index 0\ndata = e57.read_scan(0)\n\n# 'data' is a dictionary with the point types as keys\nassert isinstance(data[\"cartesianX\"], np.ndarray)\nassert isinstance(data[\"cartesianY\"], np.ndarray)\nassert isinstance(data[\"cartesianZ\"], np.ndarray)\n\n# other attributes can be read using:\ndata = e57.read_scan(0, intensity=True, colors=True, row_column=True)\nassert isinstance(data[\"cartesianX\"], np.ndarray)\nassert isinstance(data[\"cartesianY\"], np.ndarray)\nassert isinstance(data[\"cartesianZ\"], np.ndarray)\nassert isinstance(data[\"intensity\"], np.ndarray)\nassert isinstance(data[\"colorRed\"], np.ndarray)\nassert isinstance(data[\"colorGreen\"], np.ndarray)\nassert isinstance(data[\"colorBlue\"], np.ndarray)\nassert isinstance(data[\"rowIndex\"], np.ndarray)\nassert isinstance(data[\"columnIndex\"], np.ndarray)\n\n# the 'read_scan' method filters points using the 'cartesianInvalidState' field\n# if you want to get everything as raw, untransformed data, use:\ndata_raw = e57.read_scan_raw(0)\n\n# writing is also possible, but only using raw data for now\nwith pye57.E57(\"e57_file_write.e57\", mode='w') as e57_write:\n e57_write.write_scan_raw(data_raw)\n # you can specify a header to copy information from\n e57_write.write_scan_raw(data_raw, scan_header=e57.get_header(0))\n\n# the ScanHeader object wraps most of the scan information:\nheader = e57.get_header(0)\nprint(header.point_count)\nprint(header.rotation_matrix)\nprint(header.translation)\n\n# all the header information can be printed using:\nfor line in header.pretty_print():\n print(line)\n\n# the scan position can be accessed with:\nposition_scan_0 = e57.scan_position(0)\n\n# the binding is very close to the E57Foundation API\n# you can modify the nodes easily from python\nimf = e57.image_file\nroot = imf.root()\ndata3d = root[\"data3D\"]\nscan_0 = data3d[0]\ntranslation_x = scan_0[\"pose\"][\"translation\"][\"x\"]\n```\n\n## Installation\n\nOn linux, Windows or Apple Silicon:\n\n`python -m pip install pye57`\n\nOn macOS with Intel CPU you can try to build from source (advanced users):\n\n## Building from source (for developers)\n\n### Cloning the repository with required submodule\n\nClone a new repository along with the libe57Format submodule\n\n`git clone https://github.com/davidcaron/pye57.git --recursive`\n\nIf the repository has already been previously cloned, but without the --recursive flag\n\n```Bash\ncd pye57 # go to the cloned repository\ngit submodule init # this will initialise the submodules in the repository\ngit submodule update # this will update the submodules in the repository\n```\n\n### Dependencies on Linux\n\nInstall libxerces-c-dev first.\n\n`sudo apt install libxerces-c-dev`\n\n### Dependencies on Windows\n\nTo get xerces-c, you can either build from source or if you're using conda:\n\n`conda install -y xerces-c`\n\n### Dependencies on MacOS\n\nTo get xerces-c, run:\n\n`bash ./scripts/install_xerces_c.sh`\n\n### Run `pip install` from the repo source\n\n```Bash\ncd pye57\npython -m pip install .\n```\n\n### Uninstalling\n\nUse pip again\n\n```Bash\npython -m pip uninstall pye57\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python .e57 files reader/writer",
"version": "0.4.18",
"project_urls": {
"Homepage": "https://www.github.com/davidcaron/pye57"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "75e4d1da66f8796f41109de5b593aaffee7646dd5bf3158ac19edd879beb1bd2",
"md5": "33f1a2a447e2fac2a7a8b6c5a676b290",
"sha256": "8cdaea9ef06125cb371336544cb971d08e2b2e453d2895d626afad06d86a501f"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "33f1a2a447e2fac2a7a8b6c5a676b290",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 2665481,
"upload_time": "2025-07-13T14:28:31",
"upload_time_iso_8601": "2025-07-13T14:28:31.244893Z",
"url": "https://files.pythonhosted.org/packages/75/e4/d1da66f8796f41109de5b593aaffee7646dd5bf3158ac19edd879beb1bd2/pye57-0.4.18-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c4fb00c42b35d3ddc7f69e8d32539bb77f248a4c647d7010604fb19cac52f637",
"md5": "e600fed3886b13036f90b3021b3edfe4",
"sha256": "b53b85f8c2b8bf6099464659a075ed145ff31669f5a73a4f6900fcda7b1c442a"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "e600fed3886b13036f90b3021b3edfe4",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 17170443,
"upload_time": "2025-07-13T14:28:33",
"upload_time_iso_8601": "2025-07-13T14:28:33.137772Z",
"url": "https://files.pythonhosted.org/packages/c4/fb/00c42b35d3ddc7f69e8d32539bb77f248a4c647d7010604fb19cac52f637/pye57-0.4.18-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0b77b6c558f34a4942ce4e81a62689a8b1f28180475814b45b26aadb0a18ca38",
"md5": "248fa49732fbf0a50b2fd553b6e8be20",
"sha256": "d5d48e14792d94f07706ad60ef04357532a36ae165737fd3504cf26ee145f8e6"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "248fa49732fbf0a50b2fd553b6e8be20",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 1127331,
"upload_time": "2025-07-13T14:28:35",
"upload_time_iso_8601": "2025-07-13T14:28:35.295185Z",
"url": "https://files.pythonhosted.org/packages/0b/77/b6c558f34a4942ce4e81a62689a8b1f28180475814b45b26aadb0a18ca38/pye57-0.4.18-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5d176e50c2f79ef8b57c94d48eaf30ef2f97facec3ab9408c87b82b4660f80bb",
"md5": "3188a9ce814a60743cb5d7393ef2fa50",
"sha256": "512ce1d71342184448a01a50f298376c57e6aa001dafe1f562f072be0cd529db"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3188a9ce814a60743cb5d7393ef2fa50",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 2666342,
"upload_time": "2025-07-13T14:28:36",
"upload_time_iso_8601": "2025-07-13T14:28:36.628804Z",
"url": "https://files.pythonhosted.org/packages/5d/17/6e50c2f79ef8b57c94d48eaf30ef2f97facec3ab9408c87b82b4660f80bb/pye57-0.4.18-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "73494db6ea87d037b0925bf8d591b2eb5b1034f7e8eca18082697232025ddc6a",
"md5": "b0a3727aee0f6e5bc07cc83fbf6b3f7d",
"sha256": "241726d62189c41f58aebb27d93b7c1769663befce30ec01df24bb114989abbe"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "b0a3727aee0f6e5bc07cc83fbf6b3f7d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 17194117,
"upload_time": "2025-07-13T14:28:38",
"upload_time_iso_8601": "2025-07-13T14:28:38.369761Z",
"url": "https://files.pythonhosted.org/packages/73/49/4db6ea87d037b0925bf8d591b2eb5b1034f7e8eca18082697232025ddc6a/pye57-0.4.18-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ff385756c929c6da80a8d5fabd0cc933dabeebfa2187d23e2fadb9940b2c55a7",
"md5": "6a6249436accfe149c5a15ad4e743c65",
"sha256": "30fb09e18dc6ad59edf7298113bb6b53ecc01a99860f2dcd33e9901643814ce8"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "6a6249436accfe149c5a15ad4e743c65",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 1127678,
"upload_time": "2025-07-13T14:28:40",
"upload_time_iso_8601": "2025-07-13T14:28:40.442081Z",
"url": "https://files.pythonhosted.org/packages/ff/38/5756c929c6da80a8d5fabd0cc933dabeebfa2187d23e2fadb9940b2c55a7/pye57-0.4.18-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f1a412ca5adb18468bd81f7faa2e68b451dd892b18c6c767f8209e24a58b33bd",
"md5": "6aee33507257ab4194900dc6a1d4a714",
"sha256": "17a069828d39b121f79e7bd086c05b69e38235ac7245db2198ea252f6fc6f884"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "6aee33507257ab4194900dc6a1d4a714",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 2672858,
"upload_time": "2025-07-13T14:28:41",
"upload_time_iso_8601": "2025-07-13T14:28:41.868756Z",
"url": "https://files.pythonhosted.org/packages/f1/a4/12ca5adb18468bd81f7faa2e68b451dd892b18c6c767f8209e24a58b33bd/pye57-0.4.18-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cfb652647fa92c3c1328d37c904015d6170d55928b2fa881e2f523527826c390",
"md5": "82b5137f1f05ccc735b91b4ec6225534",
"sha256": "20756d32bd2d9a91c51786c3820ad85d8142f99bf19fd608b47d9f752775800e"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "82b5137f1f05ccc735b91b4ec6225534",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 17256856,
"upload_time": "2025-07-13T14:28:43",
"upload_time_iso_8601": "2025-07-13T14:28:43.628677Z",
"url": "https://files.pythonhosted.org/packages/cf/b6/52647fa92c3c1328d37c904015d6170d55928b2fa881e2f523527826c390/pye57-0.4.18-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2a6e51a478d766c686d3bf81bcfb1097bc0b6e642e2e710aa330d0de8e8bcb04",
"md5": "ea756cb319f9c7d040f447f4897684bb",
"sha256": "6f46aa9d370d9904fda416a7183404d1c19fb48fbd59fa14a6cc35d0edc7e096"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "ea756cb319f9c7d040f447f4897684bb",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 1129200,
"upload_time": "2025-07-13T14:28:45",
"upload_time_iso_8601": "2025-07-13T14:28:45.384030Z",
"url": "https://files.pythonhosted.org/packages/2a/6e/51a478d766c686d3bf81bcfb1097bc0b6e642e2e710aa330d0de8e8bcb04/pye57-0.4.18-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cd7c001e51a557e8821218ed6040e3b10c35b3deac4cb0d6e5039f887b5125fe",
"md5": "150d0c0bc40fb804cd49a5ac14cb5b3f",
"sha256": "6ce44ab07095c7728a8488c8422f529d384a1aadc1aed96f5786e085a9019899"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "150d0c0bc40fb804cd49a5ac14cb5b3f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 2673008,
"upload_time": "2025-07-13T14:28:46",
"upload_time_iso_8601": "2025-07-13T14:28:46.878853Z",
"url": "https://files.pythonhosted.org/packages/cd/7c/001e51a557e8821218ed6040e3b10c35b3deac4cb0d6e5039f887b5125fe/pye57-0.4.18-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6f85bc0a4684c85b63861716f78c919f72cf48dd0d41b3ade2192e114a81418b",
"md5": "5cb9c6ebd604a1a6f9ed82fe03ef0e45",
"sha256": "2a4a42871b457e4958a5727ff2ad28e486948510a4430bed11ce9f5eb2127661"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "5cb9c6ebd604a1a6f9ed82fe03ef0e45",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 17261892,
"upload_time": "2025-07-13T14:28:48",
"upload_time_iso_8601": "2025-07-13T14:28:48.668277Z",
"url": "https://files.pythonhosted.org/packages/6f/85/bc0a4684c85b63861716f78c919f72cf48dd0d41b3ade2192e114a81418b/pye57-0.4.18-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "173e7ddffde52d5064f36fc920b0988be767f44a39da502218988ad68750af01",
"md5": "1e0a92a06266dca0752f4db84bde5b16",
"sha256": "4cc771c75e883fe3f607b419dcb1add1f5f94ca6baed09489dd289c8b1bff07b"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "1e0a92a06266dca0752f4db84bde5b16",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 1129252,
"upload_time": "2025-07-13T14:28:50",
"upload_time_iso_8601": "2025-07-13T14:28:50.713295Z",
"url": "https://files.pythonhosted.org/packages/17/3e/7ddffde52d5064f36fc920b0988be767f44a39da502218988ad68750af01/pye57-0.4.18-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "42f77d1f688de3e4304ab0f41c129e2a8fc020e2a905a0abc42735eaa0a95199",
"md5": "41afbc914315a16e6716cf245a15febf",
"sha256": "85fa9d70e595712bd5b2dd1dd644c688085986fbd50da497fd4deb749f68b34c"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "41afbc914315a16e6716cf245a15febf",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 2665685,
"upload_time": "2025-07-13T14:28:51",
"upload_time_iso_8601": "2025-07-13T14:28:51.868828Z",
"url": "https://files.pythonhosted.org/packages/42/f7/7d1f688de3e4304ab0f41c129e2a8fc020e2a905a0abc42735eaa0a95199/pye57-0.4.18-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "19ce66028f969afc73d231be5b210462291aeb6aaec486187eb7cb02b18ee21f",
"md5": "01b9f77e9dc5a959f8d1e5c2e2d0d77d",
"sha256": "62efdf8a0d625fc701d172da7823d1571884dc5154fd3ebcdf492395e335ec42"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "01b9f77e9dc5a959f8d1e5c2e2d0d77d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 17169491,
"upload_time": "2025-07-13T14:28:53",
"upload_time_iso_8601": "2025-07-13T14:28:53.663557Z",
"url": "https://files.pythonhosted.org/packages/19/ce/66028f969afc73d231be5b210462291aeb6aaec486187eb7cb02b18ee21f/pye57-0.4.18-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "26691ccfaba9c09ca4feb3cb74d59ce91186dfe3eedcb3c5037531e80bee0732",
"md5": "716577849f881591672b39fcf69479d9",
"sha256": "4d2dea9b1ec6123237b406f284887a692197bbf720e203629b462f6f3ebdaea2"
},
"downloads": -1,
"filename": "pye57-0.4.18-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "716577849f881591672b39fcf69479d9",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 1145433,
"upload_time": "2025-07-13T14:28:55",
"upload_time_iso_8601": "2025-07-13T14:28:55.319840Z",
"url": "https://files.pythonhosted.org/packages/26/69/1ccfaba9c09ca4feb3cb74d59ce91186dfe3eedcb3c5037531e80bee0732/pye57-0.4.18-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "779fe49ab6ca2c5b785baf92656d8e61ee1ec7153597e4e03dd79aad92df4fda",
"md5": "e4cdcd68cfce8f0a9b5bc1d20560e011",
"sha256": "981d01aa83408abe0ddb36cf05cee7a5ed20b2d7f211cba0952fe95f8bc97bda"
},
"downloads": -1,
"filename": "pye57-0.4.18.tar.gz",
"has_sig": false,
"md5_digest": "e4cdcd68cfce8f0a9b5bc1d20560e011",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 474355,
"upload_time": "2025-07-13T14:28:56",
"upload_time_iso_8601": "2025-07-13T14:28:56.674143Z",
"url": "https://files.pythonhosted.org/packages/77/9f/e49ab6ca2c5b785baf92656d8e61ee1ec7153597e4e03dd79aad92df4fda/pye57-0.4.18.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-13 14:28:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "davidcaron",
"github_project": "pye57",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pye57"
}