Readme
======
.. image:: pyxcp_social.svg
:align: center
Reliable Python tooling for the ASAM MCD-1 XCP protocol (measurement,
calibration, flashing) with multiple transports (CAN, Ethernet, USB,
Serial) and handy CLI utilities.
|PyPI| |Python Versions| |License: LGPL v3+| |Code style: black|
``pyXCP`` is a production-ready Python library for communicating with
XCP-enabled devices, most commonly automotive ECUs. Use it to take
measurements, adjust parameters (calibration), stream DAQ/STIM, and
program devices during development.
Highlights:
- Transports: Ethernet (TCP/IP), CAN, USB, Serial (SxI)
- Cross-platform: Windows, Linux, macOS
- Rich CLI tools for common XCP tasks
- Extensible architecture and layered design
--------------
Installation
------------
The easiest way is from PyPI:
.. code:: shell
pip install pyxcp
To install from the main branch:
.. code:: shell
pip install git+https://github.com/christoph2/pyxcp.git
Requirements
~~~~~~~~~~~~
- Python >= 3.10
- Building from source requires a working C/C++ toolchain (native
extensions are used for performance). Wheels are provided for common
platforms and Python versions; if a wheel is not available, pip will
build from source.
- An XCP slave device (or simulator)
Quick start
-----------
The tutorial walks you through typical tasks end-to-end: see `tutorial <tutorial.rst>`_.
Minimal example using the built-in argument parser and context manager:
.. code:: python
from pyxcp.cmdline import ArgumentParser
ap = ArgumentParser(description="pyXCP hello world")
with ap.run() as x:
x.connect()
identifier = x.identifier(0x01)
print(f"ID: {identifier!r}")
print(x.slaveProperties)
x.disconnect()
Configuration
~~~~~~~~~~~~~
``pyXCP`` supports a
`traitlets <https://github.com/ipython/traitlets>`__\-based configuration system.
- Recommended Python config example and generator: `tutorial <tutorial.rst>`__ and `configuration <configuration.rst>`__
- Legacy TOML examples remain available for compatibility.
Command‑line tools
~~~~~~~~~~~~~~~~~~
Installed entry points (see pyproject.toml):
- xcp-info — print capabilities and properties
- xcp-id-scanner — scan for slave identifiers
- xcp-fetch-a2l — retrieve A2L from target (if supported)
- xcp-profile — generate/convert config files
- xcp-examples — launch assorted demos/examples
- xmraw-converter — convert recorder .xmraw data
- pyxcp-probe-can-drivers — list available CAN interfaces
Run any tool with -h for options.
Features
--------
- Multiple transport layers: Ethernet (TCP), CAN, USB, SxI (serial/UART)
- Data Acquisition (DAQ) and Stimulation (STIM)
- Calibration (read/write parameters)
- Flashing/programming workflows
- A2L (ASAM MCD‑2 MC) support
- Recorder utilities and converters (see `recorder <recorder.rst>`__)
- Extensible architecture for custom transports
Documentation
-------------
- Getting started tutorial: `tutorial <tutorial.rst>`__
- Configuration: `configuration <configuration.rst>`__
- CAN driver setup and troubleshooting: `howto_can_driver <howto_can_driver.rst>`__
- Recorder: `recorder <recorder.rst>`__
- Troubleshooting: `troubleshooting <troubleshooting.rst>`__
- Troubleshooting matrix (common errors, root causes, fixes):
`troubleshooting_matrix <troubleshooting_matrix.rst>`__
To build the Sphinx documentation locally:
1. Install doc requirements:
``pip install -r docs/requirements.txt``
2. Build:
``sphinx-build -b html docs docs/_build/html``
3. Open
``docs/_build/html/index.html``
Compatibility
-------------
- Operating systems: Windows, Linux, macOS
- Python: 3.10 - 3.14, CPython wheels where available
- CAN backends: python-can compatible drivers (see `howto_can_driver <howto_can_driver.rst>`__)
Contributing
------------
Contributions are welcome! Please: - Read `CODE_OF_CONDUCT <../CODE_OF_CONDUCT.md>`__ - Open an
issue or discussion before large changes - Use
`pre-commit <https://github.com/pre-commit/pre-commit>`__ to run linters
and tests locally
License
-------
GNU Lesser General Public License v3 or later (LGPLv3+). See LICENSE for
details.
References
----------
- ASAM MCD‑1 XCP standard:
https://www.asam.net/standards/detail/mcd-1-xcp/
About ASAM MCD‑1 XCP
--------------------
XCP (Universal Measurement and Calibration Protocol) is an ASAM standard
defining a vendor‑neutral protocol to access internal data of electronic
control units (ECUs) for measurement, calibration (parameter tuning),
and programming. XCP decouples the protocol from the physical transport,
so the same command set can be carried over different buses such as CAN,
FlexRay, Ethernet, USB, or Serial.
- Roles: An XCP Master (this library) communicates with an XCP Slave
(your device/ECU or simulator).
- Layered concept: XCP defines an application layer and transport
layers. ``pyXCP`` implements the application layer and multiple transport
bindings.
- Use cases:
- Measurement: Read variables from the ECU in real‑time, including
high‑rate DAQ streaming.
- Calibration: Read/write parameters (calibration data) in RAM/flash.
- Programming: Download new program/data to flash (where the slave
supports it).
For the authoritative description, see the ASAM page:
https://www.asam.net/standards/detail/mcd-1-xcp/
XCP in a nutshell
-----------------
- Connect/Session: The master establishes a connection, negotiates
capabilities/features, and optionally unlocks protected functions via
seed & key.
- Addressing: Memory is accessed via absolute or segment‑relative
addresses. Addressing modes are described in the associated A2L file
(ASAM MCD‑2 MC), which maps symbolic names to addresses, data types,
and conversion rules.
- Events: The slave exposes events (e.g., “1 ms task”, “Combustion
cycle”), which trigger DAQ sampling. The master assigns signals (ODTs)
to these events for time‑aligned acquisition.
- DAQ/STIM: DAQ = Data Acquisition (slave → master), STIM = Stimulation
(master → slave). Both use event‑driven lists for deterministic
timing.
- Timestamps: DAQ may carry timestamps from the slave for precise time
correlation.
- Security: Access to sensitive commands (e.g., programming,
calibration) can be protected by a seed & key algorithm negotiated at
runtime.
- Checksums: XCP defines checksum services useful for verifying memory
regions (e.g., after flashing).
Relation to A2L (ASAM MCD‑2 MC)
-------------------------------
While XCP defines the protocol, the A2L file describes the measurement
and calibration objects (characteristics, measurements), data types,
conversion rules, and memory layout. In practice, you use ``pyXCP`` together
with an A2L to: - Resolve symbolic names to addresses and data types. -
Configure DAQ lists from human‑readable signal names. - Interpret raw
values using the appropriate conversion methods.
``pyXCP`` provides utilities to fetch A2L data when supported by the slave
and to work with A2L‑described objects. See also
`pya2ldb <https://github.com/christoph2/pya2l>`__!
Transports and addressing
-------------------------
XCP is transport‑agnostic. ``pyXCP`` supports multiple transports and
addressing schemes: - CAN (XCP on CAN): Robust and ubiquitous in
vehicles; limited payload and bandwidth; suited for many calibration
tasks and moderate DAQ rates. - Ethernet (XCP on TCP/UDP): High
bandwidth with low latency; well suited for rich DAQ and programming
workflows. - USB: High throughput for lab setups; requires device
support. - Serial/SxI: Simple point‑to‑point links for embedded targets
and simulators.
The exact capabilities (e.g., max CTO/DTO, checksum types, timestamping)
are negotiated at connect time and depend on the slave and transport.
Supported features (overview)
-----------------------------
The scope of features depends on the connected slave. At the library
level, ``pyXCP`` provides: - Session management: CONNECT/DISCONNECT,
GET_STATUS/SLAVE_PROPERTIES, communication mode setup, error handling. -
Memory access: Upload/short upload, Download/Download Next,
verifications, optional paged memory where supported. - DAQ/STIM:
Configuration of DAQ lists/ODTs, event assignment, data streaming,
timestamp handling when available. - Programming helpers: Building
blocks for program/erase/write flows (exact sequence per slave’s flash
algorithm and A2L description). - Security/Seed & Key: Pluggable
seed‑to‑key resolution including 32↔64‑bit bridge on Windows. -
Utilities: Identifier scanning, A2L helpers, recorder and converters.
Refer to `tutorial <tutorial.rst>`__ and `configuration <configuration.rst>`__ for feature usage,
and xcp-info for a capability dump of your target.
Compliance and versions
-----------------------
``pyXCP`` aims to be compatible with commonly used parts of ASAM MCD‑1 XCP.
Specific optional features are enabled when a slave advertises them
during CONNECT. Because implementations vary across vendors and ECU
projects, always consult your A2L and use xcp-info to confirm negotiated
options (e.g., checksum type, timestamp unit, max DTO size, address
granularity).
If you rely on a particular XCP feature/profile not mentioned here,
please open an issue with details about your slave and A2L so we can
clarify support and—if feasible—add coverage.
Safety, performance, and limitations
------------------------------------
- Safety‑critical systems: XCP is a development and testing protocol. Do
not enable measurement/calibration on safety‑critical systems in the
field unless your system‑level safety case covers it.
- Performance: Achievable DAQ rates depend on transport bandwidth, ECU
event rates, DTO sizes, and host processing. Ethernet typically yields
the highest throughput.
- Latency/jitter: Event scheduling in the slave and OS scheduling on the
host can affect determinism. Use timestamps to correlate data
precisely.
- Access control: Seed & key protects sensitive functions; your
organization’s policy should govern algorithm distribution and access.
Further resources
-----------------
- ASAM MCD‑1 XCP standard (overview and membership):
https://www.asam.net/standards/detail/mcd-1-xcp/
- ASAM MCD‑2 MC (A2L) for object descriptions:
https://www.asam.net/standards/detail/mcd-2-mc/
- Introduction to DAQ/STIM concepts (ASAM publications and vendor docs)
- Related: CCP (legacy predecessor to XCP), ASAM MDF for measurement
data storage
.. |CI| image:: https://github.com/christoph2/pyxcp/workflows/Python%20application/badge.svg
:target: https://github.com/christoph2/pyxcp/actions
.. |PyPI| image:: https://img.shields.io/pypi/v/pyxcp.svg
:target: https://pypi.org/project/pyxcp/
.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/pyxcp.svg
:target: https://pypi.org/project/pyxcp/
.. |License: LGPL v3+| image:: https://img.shields.io/badge/License-LGPL%20v3%2B-blue.svg
:target: https://www.gnu.org/licenses/lgpl-3.0
.. |Code style: black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
Raw data
{
"_id": null,
"home_page": null,
"name": "pyxcp",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "automotive, ecu, xcp, asam, autosar",
"author": "Christoph Schueler",
"author_email": "cpu.gems@googlemail.com",
"download_url": "https://files.pythonhosted.org/packages/f7/ee/8307b14709ca647b126b08fec52ce815a8111ed3229c09ff305b24ec4c30/pyxcp-0.23.9.tar.gz",
"platform": null,
"description": "Readme\n======\n\n.. image:: pyxcp_social.svg\n :align: center\n\nReliable Python tooling for the ASAM MCD-1 XCP protocol (measurement,\ncalibration, flashing) with multiple transports (CAN, Ethernet, USB,\nSerial) and handy CLI utilities.\n\n|PyPI| |Python Versions| |License: LGPL v3+| |Code style: black|\n\n``pyXCP`` is a production-ready Python library for communicating with\nXCP-enabled devices, most commonly automotive ECUs. Use it to take\nmeasurements, adjust parameters (calibration), stream DAQ/STIM, and\nprogram devices during development.\n\nHighlights:\n\n- Transports: Ethernet (TCP/IP), CAN, USB, Serial (SxI)\n- Cross-platform: Windows, Linux, macOS\n- Rich CLI tools for common XCP tasks\n- Extensible architecture and layered design\n\n--------------\n\nInstallation\n------------\n\nThe easiest way is from PyPI:\n\n.. code:: shell\n\n pip install pyxcp\n\nTo install from the main branch:\n\n.. code:: shell\n\n pip install git+https://github.com/christoph2/pyxcp.git\n\nRequirements\n~~~~~~~~~~~~\n\n- Python >= 3.10\n- Building from source requires a working C/C++ toolchain (native\n extensions are used for performance). Wheels are provided for common\n platforms and Python versions; if a wheel is not available, pip will\n build from source.\n- An XCP slave device (or simulator)\n\nQuick start\n-----------\n\nThe tutorial walks you through typical tasks end-to-end: see `tutorial <tutorial.rst>`_.\n\nMinimal example using the built-in argument parser and context manager:\n\n.. code:: python\n\n from pyxcp.cmdline import ArgumentParser\n\n ap = ArgumentParser(description=\"pyXCP hello world\")\n\n with ap.run() as x:\n x.connect()\n identifier = x.identifier(0x01)\n print(f\"ID: {identifier!r}\")\n print(x.slaveProperties)\n x.disconnect()\n\nConfiguration\n~~~~~~~~~~~~~\n\n``pyXCP`` supports a\n`traitlets <https://github.com/ipython/traitlets>`__\\-based configuration system.\n\n- Recommended Python config example and generator: `tutorial <tutorial.rst>`__ and `configuration <configuration.rst>`__\n- Legacy TOML examples remain available for compatibility.\n\nCommand\u2011line tools\n~~~~~~~~~~~~~~~~~~\n\nInstalled entry points (see pyproject.toml):\n\n- xcp-info \u2014 print capabilities and properties\n- xcp-id-scanner \u2014 scan for slave identifiers\n- xcp-fetch-a2l \u2014 retrieve A2L from target (if supported)\n- xcp-profile \u2014 generate/convert config files\n- xcp-examples \u2014 launch assorted demos/examples\n- xmraw-converter \u2014 convert recorder .xmraw data\n- pyxcp-probe-can-drivers \u2014 list available CAN interfaces\n\nRun any tool with -h for options.\n\nFeatures\n--------\n\n- Multiple transport layers: Ethernet (TCP), CAN, USB, SxI (serial/UART)\n- Data Acquisition (DAQ) and Stimulation (STIM)\n- Calibration (read/write parameters)\n- Flashing/programming workflows\n- A2L (ASAM MCD\u20112 MC) support\n- Recorder utilities and converters (see `recorder <recorder.rst>`__)\n- Extensible architecture for custom transports\n\nDocumentation\n-------------\n\n- Getting started tutorial: `tutorial <tutorial.rst>`__\n- Configuration: `configuration <configuration.rst>`__\n- CAN driver setup and troubleshooting: `howto_can_driver <howto_can_driver.rst>`__\n- Recorder: `recorder <recorder.rst>`__\n- Troubleshooting: `troubleshooting <troubleshooting.rst>`__\n- Troubleshooting matrix (common errors, root causes, fixes):\n `troubleshooting_matrix <troubleshooting_matrix.rst>`__\n\nTo build the Sphinx documentation locally:\n\n1. Install doc requirements:\n\t``pip install -r docs/requirements.txt``\n2. Build:\n\t``sphinx-build -b html docs docs/_build/html``\n3. Open\n\t``docs/_build/html/index.html``\n\nCompatibility\n-------------\n\n- Operating systems: Windows, Linux, macOS\n- Python: 3.10 - 3.14, CPython wheels where available\n- CAN backends: python-can compatible drivers (see `howto_can_driver <howto_can_driver.rst>`__)\n\nContributing\n------------\n\nContributions are welcome! Please: - Read `CODE_OF_CONDUCT <../CODE_OF_CONDUCT.md>`__ - Open an\nissue or discussion before large changes - Use\n`pre-commit <https://github.com/pre-commit/pre-commit>`__ to run linters\nand tests locally\n\nLicense\n-------\n\nGNU Lesser General Public License v3 or later (LGPLv3+). See LICENSE for\ndetails.\n\nReferences\n----------\n\n- ASAM MCD\u20111 XCP standard:\n https://www.asam.net/standards/detail/mcd-1-xcp/\n\nAbout ASAM MCD\u20111 XCP\n--------------------\n\nXCP (Universal Measurement and Calibration Protocol) is an ASAM standard\ndefining a vendor\u2011neutral protocol to access internal data of electronic\ncontrol units (ECUs) for measurement, calibration (parameter tuning),\nand programming. XCP decouples the protocol from the physical transport,\nso the same command set can be carried over different buses such as CAN,\nFlexRay, Ethernet, USB, or Serial.\n\n- Roles: An XCP Master (this library) communicates with an XCP Slave\n (your device/ECU or simulator).\n- Layered concept: XCP defines an application layer and transport\n layers. ``pyXCP`` implements the application layer and multiple transport\n bindings.\n- Use cases:\n\n - Measurement: Read variables from the ECU in real\u2011time, including\n high\u2011rate DAQ streaming.\n - Calibration: Read/write parameters (calibration data) in RAM/flash.\n - Programming: Download new program/data to flash (where the slave\n supports it).\n\nFor the authoritative description, see the ASAM page:\nhttps://www.asam.net/standards/detail/mcd-1-xcp/\n\nXCP in a nutshell\n-----------------\n\n- Connect/Session: The master establishes a connection, negotiates\n capabilities/features, and optionally unlocks protected functions via\n seed & key.\n- Addressing: Memory is accessed via absolute or segment\u2011relative\n addresses. Addressing modes are described in the associated A2L file\n (ASAM MCD\u20112 MC), which maps symbolic names to addresses, data types,\n and conversion rules.\n- Events: The slave exposes events (e.g., \u201c1 ms task\u201d, \u201cCombustion\n cycle\u201d), which trigger DAQ sampling. The master assigns signals (ODTs)\n to these events for time\u2011aligned acquisition.\n- DAQ/STIM: DAQ = Data Acquisition (slave \u2192 master), STIM = Stimulation\n (master \u2192 slave). Both use event\u2011driven lists for deterministic\n timing.\n- Timestamps: DAQ may carry timestamps from the slave for precise time\n correlation.\n- Security: Access to sensitive commands (e.g., programming,\n calibration) can be protected by a seed & key algorithm negotiated at\n runtime.\n- Checksums: XCP defines checksum services useful for verifying memory\n regions (e.g., after flashing).\n\nRelation to A2L (ASAM MCD\u20112 MC)\n-------------------------------\n\nWhile XCP defines the protocol, the A2L file describes the measurement\nand calibration objects (characteristics, measurements), data types,\nconversion rules, and memory layout. In practice, you use ``pyXCP`` together\nwith an A2L to: - Resolve symbolic names to addresses and data types. -\nConfigure DAQ lists from human\u2011readable signal names. - Interpret raw\nvalues using the appropriate conversion methods.\n\n``pyXCP`` provides utilities to fetch A2L data when supported by the slave\nand to work with A2L\u2011described objects. See also\n`pya2ldb <https://github.com/christoph2/pya2l>`__!\n\nTransports and addressing\n-------------------------\n\nXCP is transport\u2011agnostic. ``pyXCP`` supports multiple transports and\naddressing schemes: - CAN (XCP on CAN): Robust and ubiquitous in\nvehicles; limited payload and bandwidth; suited for many calibration\ntasks and moderate DAQ rates. - Ethernet (XCP on TCP/UDP): High\nbandwidth with low latency; well suited for rich DAQ and programming\nworkflows. - USB: High throughput for lab setups; requires device\nsupport. - Serial/SxI: Simple point\u2011to\u2011point links for embedded targets\nand simulators.\n\nThe exact capabilities (e.g., max CTO/DTO, checksum types, timestamping)\nare negotiated at connect time and depend on the slave and transport.\n\nSupported features (overview)\n-----------------------------\n\nThe scope of features depends on the connected slave. At the library\nlevel, ``pyXCP`` provides: - Session management: CONNECT/DISCONNECT,\nGET_STATUS/SLAVE_PROPERTIES, communication mode setup, error handling. -\nMemory access: Upload/short upload, Download/Download Next,\nverifications, optional paged memory where supported. - DAQ/STIM:\nConfiguration of DAQ lists/ODTs, event assignment, data streaming,\ntimestamp handling when available. - Programming helpers: Building\nblocks for program/erase/write flows (exact sequence per slave\u2019s flash\nalgorithm and A2L description). - Security/Seed & Key: Pluggable\nseed\u2011to\u2011key resolution including 32\u219464\u2011bit bridge on Windows. -\nUtilities: Identifier scanning, A2L helpers, recorder and converters.\n\nRefer to `tutorial <tutorial.rst>`__ and `configuration <configuration.rst>`__ for feature usage,\nand xcp-info for a capability dump of your target.\n\nCompliance and versions\n-----------------------\n\n``pyXCP`` aims to be compatible with commonly used parts of ASAM MCD\u20111 XCP.\nSpecific optional features are enabled when a slave advertises them\nduring CONNECT. Because implementations vary across vendors and ECU\nprojects, always consult your A2L and use xcp-info to confirm negotiated\noptions (e.g., checksum type, timestamp unit, max DTO size, address\ngranularity).\n\nIf you rely on a particular XCP feature/profile not mentioned here,\nplease open an issue with details about your slave and A2L so we can\nclarify support and\u2014if feasible\u2014add coverage.\n\nSafety, performance, and limitations\n------------------------------------\n\n- Safety\u2011critical systems: XCP is a development and testing protocol. Do\n not enable measurement/calibration on safety\u2011critical systems in the\n field unless your system\u2011level safety case covers it.\n- Performance: Achievable DAQ rates depend on transport bandwidth, ECU\n event rates, DTO sizes, and host processing. Ethernet typically yields\n the highest throughput.\n- Latency/jitter: Event scheduling in the slave and OS scheduling on the\n host can affect determinism. Use timestamps to correlate data\n precisely.\n- Access control: Seed & key protects sensitive functions; your\n organization\u2019s policy should govern algorithm distribution and access.\n\nFurther resources\n-----------------\n\n- ASAM MCD\u20111 XCP standard (overview and membership):\n https://www.asam.net/standards/detail/mcd-1-xcp/\n- ASAM MCD\u20112 MC (A2L) for object descriptions:\n https://www.asam.net/standards/detail/mcd-2-mc/\n- Introduction to DAQ/STIM concepts (ASAM publications and vendor docs)\n- Related: CCP (legacy predecessor to XCP), ASAM MDF for measurement\n data storage\n\n.. |CI| image:: https://github.com/christoph2/pyxcp/workflows/Python%20application/badge.svg\n :target: https://github.com/christoph2/pyxcp/actions\n.. |PyPI| image:: https://img.shields.io/pypi/v/pyxcp.svg\n :target: https://pypi.org/project/pyxcp/\n.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/pyxcp.svg\n :target: https://pypi.org/project/pyxcp/\n.. |License: LGPL v3+| image:: https://img.shields.io/badge/License-LGPL%20v3%2B-blue.svg\n :target: https://www.gnu.org/licenses/lgpl-3.0\n.. |Code style: black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/psf/black\n\n",
"bugtrack_url": null,
"license": "LGPLv3",
"summary": "Universal Calibration Protocol for Python",
"version": "0.23.9",
"project_urls": {
"Homepage": "https://github.com/christoph2/pyxcp"
},
"split_keywords": [
"automotive",
" ecu",
" xcp",
" asam",
" autosar"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3a4d8737c401d7879fa490603bc3a3e399dad135aae173cc9e0b34c41860cefb",
"md5": "3c5bce58468c5dee3e3801f996af35ab",
"sha256": "11659358d754c436315887ab887e76111f7d8e313f14c05c3491ff9342972ecf"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3c5bce58468c5dee3e3801f996af35ab",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 696776,
"upload_time": "2025-09-03T04:25:42",
"upload_time_iso_8601": "2025-09-03T04:25:42.290407Z",
"url": "https://files.pythonhosted.org/packages/3a/4d/8737c401d7879fa490603bc3a3e399dad135aae173cc9e0b34c41860cefb/pyxcp-0.23.9-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a5fd22802427cfa13879ca27b72aa3e68db385afe1ee871d0d36ad8cae622077",
"md5": "453262466e4d7df548e843a7a28e32fb",
"sha256": "871a65cb4f4291a350681a72dbf15702abd46f4db74aeba5a93553a7c3ce2310"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "453262466e4d7df548e843a7a28e32fb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 791449,
"upload_time": "2025-09-03T04:25:44",
"upload_time_iso_8601": "2025-09-03T04:25:44.188671Z",
"url": "https://files.pythonhosted.org/packages/a5/fd/22802427cfa13879ca27b72aa3e68db385afe1ee871d0d36ad8cae622077/pyxcp-0.23.9-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c1937384d0dda5dfd3fc683a6a8f457988a7a5d535753a8556d44b899dbb5ede",
"md5": "363ccdddc86a53e796ef8af3838f9a8e",
"sha256": "bcda7cafc7b13ca0480e0ec06ba298468888afa010ccb4d8b07e091b656c40c6"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "363ccdddc86a53e796ef8af3838f9a8e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 851596,
"upload_time": "2025-09-03T04:25:45",
"upload_time_iso_8601": "2025-09-03T04:25:45.645634Z",
"url": "https://files.pythonhosted.org/packages/c1/93/7384d0dda5dfd3fc683a6a8f457988a7a5d535753a8556d44b899dbb5ede/pyxcp-0.23.9-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8d026aabc8d14e09808385d0b56c2aab01cc31be6be82f830313c76630e8d4b6",
"md5": "a8745384c1d851802c695122b4057dc6",
"sha256": "1873c39a782aab12ce0abfa24a5f057f4c206efc89fcaf51faab66034ab590f1"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "a8745384c1d851802c695122b4057dc6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 656236,
"upload_time": "2025-09-03T04:25:46",
"upload_time_iso_8601": "2025-09-03T04:25:46.716173Z",
"url": "https://files.pythonhosted.org/packages/8d/02/6aabc8d14e09808385d0b56c2aab01cc31be6be82f830313c76630e8d4b6/pyxcp-0.23.9-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dd5d74ba1a12ea72fdb6a48d55744b32ebc524c9efd44c43a802930d1269604a",
"md5": "2e8909c27ba93269ca905edb8a32d240",
"sha256": "68723aaea5d12ad7b25dbbbc628e9a40e99bdffdcd964654fba5cc68844fa544"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp310-cp310-win_arm64.whl",
"has_sig": false,
"md5_digest": "2e8909c27ba93269ca905edb8a32d240",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.10",
"size": 650220,
"upload_time": "2025-09-03T04:25:48",
"upload_time_iso_8601": "2025-09-03T04:25:48.559235Z",
"url": "https://files.pythonhosted.org/packages/dd/5d/74ba1a12ea72fdb6a48d55744b32ebc524c9efd44c43a802930d1269604a/pyxcp-0.23.9-cp310-cp310-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e95221e4772beeea4837a48fb955443c74c374ed9ca91848c46044f669a26b27",
"md5": "c5e5b460d40da172d0868f07921fa016",
"sha256": "fa437883bc6fa5eead751c50e2b963fe36ec93036ad5c908020efebd390990b0"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c5e5b460d40da172d0868f07921fa016",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 1132908,
"upload_time": "2025-09-03T04:25:50",
"upload_time_iso_8601": "2025-09-03T04:25:50.103943Z",
"url": "https://files.pythonhosted.org/packages/e9/52/21e4772beeea4837a48fb955443c74c374ed9ca91848c46044f669a26b27/pyxcp-0.23.9-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c72828eea91bc2d9b782a9c2c2f07082613ee8b8b939385e6a9d9e233b1a4111",
"md5": "2f2c1ff3b9e50329827c2b4747c2e4fa",
"sha256": "ef65edf5afe00c37f6be26aa0858999a1bf1d731dc4b0b8887e3bda2c4ab87c4"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "2f2c1ff3b9e50329827c2b4747c2e4fa",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 1319032,
"upload_time": "2025-09-03T04:25:51",
"upload_time_iso_8601": "2025-09-03T04:25:51.709162Z",
"url": "https://files.pythonhosted.org/packages/c7/28/28eea91bc2d9b782a9c2c2f07082613ee8b8b939385e6a9d9e233b1a4111/pyxcp-0.23.9-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4d2488fd4d66c4c289a1d3382130620b0598f52024e7bef279dd9c8be711040f",
"md5": "f9cce98e3862b9b9c016fb90a5e22b6c",
"sha256": "17bb24436afe7734c9944373d2144d936f21022b59d7f38df11414368c13b0f8"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "f9cce98e3862b9b9c016fb90a5e22b6c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 1440298,
"upload_time": "2025-09-03T04:25:53",
"upload_time_iso_8601": "2025-09-03T04:25:53.189068Z",
"url": "https://files.pythonhosted.org/packages/4d/24/88fd4d66c4c289a1d3382130620b0598f52024e7bef279dd9c8be711040f/pyxcp-0.23.9-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b335d1b7be2436a4861246b25e4be2532b3a651acc173afd6c4462d560e91bea",
"md5": "fe4d90fb825798f415b2af3f76fc9797",
"sha256": "eb04371be103620990bfbfd5a96ec52b5b89a68332894414c2dcd2730ae186a5"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "fe4d90fb825798f415b2af3f76fc9797",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 1047687,
"upload_time": "2025-09-03T04:25:54",
"upload_time_iso_8601": "2025-09-03T04:25:54.715716Z",
"url": "https://files.pythonhosted.org/packages/b3/35/d1b7be2436a4861246b25e4be2532b3a651acc173afd6c4462d560e91bea/pyxcp-0.23.9-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "593897353b831908160b96d61e0991e6519860a0f8edea559b104567ebbb6ed3",
"md5": "763003e50666218762d8396431dc7010",
"sha256": "c1c8b2b9f62eae9d5aab6935b64d240ff31bbbf1c9f36efb9da6f32aa739e08e"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp311-cp311-win_arm64.whl",
"has_sig": false,
"md5_digest": "763003e50666218762d8396431dc7010",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.10",
"size": 1032955,
"upload_time": "2025-09-03T04:25:55",
"upload_time_iso_8601": "2025-09-03T04:25:55.794304Z",
"url": "https://files.pythonhosted.org/packages/59/38/97353b831908160b96d61e0991e6519860a0f8edea559b104567ebbb6ed3/pyxcp-0.23.9-cp311-cp311-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6063d91011f9cdd6ef209bed73c857a1ad7e3c8c3a0f059dfa76dd3b46ba2e74",
"md5": "fcc3ca83900a0d055a55a85c95e12c82",
"sha256": "cf92a6ff285705223f849ab34172a2e9787f25a1f39292eea5c79df556e14321"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "fcc3ca83900a0d055a55a85c95e12c82",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 1572174,
"upload_time": "2025-09-03T04:25:56",
"upload_time_iso_8601": "2025-09-03T04:25:56.885263Z",
"url": "https://files.pythonhosted.org/packages/60/63/d91011f9cdd6ef209bed73c857a1ad7e3c8c3a0f059dfa76dd3b46ba2e74/pyxcp-0.23.9-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ccbc6fef138ff27624d34dad983efc2a986590eec451c9bc6353efd69c754c86",
"md5": "3b10c3c375ff4982936a93a1ff2d8fdc",
"sha256": "da3d15f91b4b000f353c629c99ccdca774fb85789ea5b5b5cb96a4009f2c0aa7"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "3b10c3c375ff4982936a93a1ff2d8fdc",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 1849841,
"upload_time": "2025-09-03T04:25:59",
"upload_time_iso_8601": "2025-09-03T04:25:59.049513Z",
"url": "https://files.pythonhosted.org/packages/cc/bc/6fef138ff27624d34dad983efc2a986590eec451c9bc6353efd69c754c86/pyxcp-0.23.9-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4066ba473ed57b99296e69b8c27d2ddaf2865010e15131af49c28d07cd441ac4",
"md5": "9aa90edb97938ad7e9f07419dc8dac31",
"sha256": "06e55c2c04be5c4ec47fc9fa4d986f976b59ab1133cb5129c9baa2a83bc69bf0"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "9aa90edb97938ad7e9f07419dc8dac31",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 2033887,
"upload_time": "2025-09-03T04:26:00",
"upload_time_iso_8601": "2025-09-03T04:26:00.713443Z",
"url": "https://files.pythonhosted.org/packages/40/66/ba473ed57b99296e69b8c27d2ddaf2865010e15131af49c28d07cd441ac4/pyxcp-0.23.9-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5c38a7417313566d6e2ad7a8df8b725547636c8ee0d02453663609868a9b49b6",
"md5": "e8b78d24d4f9d5ceda72e2a739837eb5",
"sha256": "732532c164ff0ae2e73173066adffdf163ddc93b96de199efb3c7f2bff2395a6"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "e8b78d24d4f9d5ceda72e2a739837eb5",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 1442049,
"upload_time": "2025-09-03T04:26:01",
"upload_time_iso_8601": "2025-09-03T04:26:01.802562Z",
"url": "https://files.pythonhosted.org/packages/5c/38/a7417313566d6e2ad7a8df8b725547636c8ee0d02453663609868a9b49b6/pyxcp-0.23.9-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8ff5dd415785618bb414e0e8ba5a2753e9f1926c2214c9a1886913e524cd39c3",
"md5": "d1acd51ed7783d10cdbd489b419e4ca8",
"sha256": "8f10e36475ca7885742b9ba7d403a262a9ecb2fd3753c25264d8821a84309c34"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp312-cp312-win_arm64.whl",
"has_sig": false,
"md5_digest": "d1acd51ed7783d10cdbd489b419e4ca8",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.10",
"size": 1412902,
"upload_time": "2025-09-03T04:26:03",
"upload_time_iso_8601": "2025-09-03T04:26:03.812788Z",
"url": "https://files.pythonhosted.org/packages/8f/f5/dd415785618bb414e0e8ba5a2753e9f1926c2214c9a1886913e524cd39c3/pyxcp-0.23.9-cp312-cp312-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f82a94046f1b1c16d62dd70e10e1b72a244ac1de5e6ae8182b03f5db13e55005",
"md5": "9aaa249cf4a07c024624cdb4f8ddd589",
"sha256": "67be6af781026984dca0b696cdc2df8a897b33e5c22ef43778adee0a9543233b"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "9aaa249cf4a07c024624cdb4f8ddd589",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 2011588,
"upload_time": "2025-09-03T04:26:05",
"upload_time_iso_8601": "2025-09-03T04:26:05.455828Z",
"url": "https://files.pythonhosted.org/packages/f8/2a/94046f1b1c16d62dd70e10e1b72a244ac1de5e6ae8182b03f5db13e55005/pyxcp-0.23.9-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e4053bcc9b7f449d10248abd2ded884ce6f1346a572ad62c562a11e91f5b5e5e",
"md5": "a593c10ca65d089291a4a9269b44560e",
"sha256": "ff53a1ae5069abe474b0adfc7fbd86fadd79e5a4335954cb20489a71749362ad"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "a593c10ca65d089291a4a9269b44560e",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 2381418,
"upload_time": "2025-09-03T04:26:06",
"upload_time_iso_8601": "2025-09-03T04:26:06.809705Z",
"url": "https://files.pythonhosted.org/packages/e4/05/3bcc9b7f449d10248abd2ded884ce6f1346a572ad62c562a11e91f5b5e5e/pyxcp-0.23.9-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6eaa19301cbe02a15b841191745c8f3fed8dd0bf27435611b0193cda75c3ac6f",
"md5": "382ec9582200bfc0e47955303e5b564a",
"sha256": "fffc8547f4158095d309126d4b0857b708d8f1d87851a59a8686e9c408510916"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "382ec9582200bfc0e47955303e5b564a",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 2627469,
"upload_time": "2025-09-03T04:26:08",
"upload_time_iso_8601": "2025-09-03T04:26:08.403522Z",
"url": "https://files.pythonhosted.org/packages/6e/aa/19301cbe02a15b841191745c8f3fed8dd0bf27435611b0193cda75c3ac6f/pyxcp-0.23.9-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fab548258db858a95fbbc8629987acec4bb9b1d5d1f69f4f450f184f941d3353",
"md5": "3768b12bd478129192983b4cdc4b940d",
"sha256": "fe96b10929ee54995ef51a918b665f3d48a19f049225fa68606095f96997bae1"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "3768b12bd478129192983b4cdc4b940d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 1836418,
"upload_time": "2025-09-03T04:26:10",
"upload_time_iso_8601": "2025-09-03T04:26:10.252025Z",
"url": "https://files.pythonhosted.org/packages/fa/b5/48258db858a95fbbc8629987acec4bb9b1d5d1f69f4f450f184f941d3353/pyxcp-0.23.9-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0ea6eb976926f31eae839270da1edb491591bc59cad1e0e9d20a0bcc9d60a399",
"md5": "9537d2578b7fa31ecfbe9dc77275b86e",
"sha256": "dfebf249f3e7dd53e90ff35ce52c9e8ab679dca790f0084e792fafc148585a7b"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp313-cp313-win_arm64.whl",
"has_sig": false,
"md5_digest": "9537d2578b7fa31ecfbe9dc77275b86e",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": "<4.0,>=3.10",
"size": 1792852,
"upload_time": "2025-09-03T04:26:11",
"upload_time_iso_8601": "2025-09-03T04:26:11.379276Z",
"url": "https://files.pythonhosted.org/packages/0e/a6/eb976926f31eae839270da1edb491591bc59cad1e0e9d20a0bcc9d60a399/pyxcp-0.23.9-cp313-cp313-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a8819a4678fab95cad1465ad1bec0871542e5a6d7d000bbf3aad464086f97b11",
"md5": "ceeddb8841784bcccd6aaf8a441ce157",
"sha256": "10c9260a9db4eba6149d8a0d7309dbe0c5e01fc7cd30e3053c68ef904cd1be27"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp314-cp314-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ceeddb8841784bcccd6aaf8a441ce157",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": "<4.0,>=3.10",
"size": 2452086,
"upload_time": "2025-09-03T04:26:13",
"upload_time_iso_8601": "2025-09-03T04:26:13.123336Z",
"url": "https://files.pythonhosted.org/packages/a8/81/9a4678fab95cad1465ad1bec0871542e5a6d7d000bbf3aad464086f97b11/pyxcp-0.23.9-cp314-cp314-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "08898d61e70b40d99f4ac9a31bcd631b5278571ddab891f8e7cf5005a34882da",
"md5": "148c97360207bab7c0d67e3b0b5e24f0",
"sha256": "279555b872c1454a457df3cb7637f386ea79e4297848c13420c5fd1cc19fd1a8"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "148c97360207bab7c0d67e3b0b5e24f0",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": "<4.0,>=3.10",
"size": 2914170,
"upload_time": "2025-09-03T04:26:14",
"upload_time_iso_8601": "2025-09-03T04:26:14.242603Z",
"url": "https://files.pythonhosted.org/packages/08/89/8d61e70b40d99f4ac9a31bcd631b5278571ddab891f8e7cf5005a34882da/pyxcp-0.23.9-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f8bdc1b5b4d13dcd1ed3208e0c7a6b598d7c8377b28bb83e510f884d86d197e2",
"md5": "6144501ec96c852077a920f802600bcf",
"sha256": "e0acff54407fa05dee2efb955086e6c33376f576da961e1ed49197189e22bd1d"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "6144501ec96c852077a920f802600bcf",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": "<4.0,>=3.10",
"size": 3221447,
"upload_time": "2025-09-03T04:26:15",
"upload_time_iso_8601": "2025-09-03T04:26:15.547554Z",
"url": "https://files.pythonhosted.org/packages/f8/bd/c1b5b4d13dcd1ed3208e0c7a6b598d7c8377b28bb83e510f884d86d197e2/pyxcp-0.23.9-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e398f91239b4689857c3e106aceb30645b3c6f0ee5980029de4a197e160614a3",
"md5": "f3633413c3c778a6693b04e99710ec39",
"sha256": "453a76347c6ee6ca253809db827abfccec66ce763cdb20bea3d34e0be6f6c4c7"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp314-cp314-win_amd64.whl",
"has_sig": false,
"md5_digest": "f3633413c3c778a6693b04e99710ec39",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": "<4.0,>=3.10",
"size": 2292109,
"upload_time": "2025-09-03T04:26:17",
"upload_time_iso_8601": "2025-09-03T04:26:17.047556Z",
"url": "https://files.pythonhosted.org/packages/e3/98/f91239b4689857c3e106aceb30645b3c6f0ee5980029de4a197e160614a3/pyxcp-0.23.9-cp314-cp314-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "51c5528fb00df393cc00428d3a9efe84f5dc49a24c57e7bafe6b7db36dec4b29",
"md5": "70d9f834cd02485f1bed48ec1c56d5a1",
"sha256": "0f0ed158577be6f58d96c2c1af7db958a23ba5d067f90fe75558ecd57ca92d9b"
},
"downloads": -1,
"filename": "pyxcp-0.23.9-cp314-cp314-win_arm64.whl",
"has_sig": false,
"md5_digest": "70d9f834cd02485f1bed48ec1c56d5a1",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": "<4.0,>=3.10",
"size": 2230763,
"upload_time": "2025-09-03T04:26:18",
"upload_time_iso_8601": "2025-09-03T04:26:18.533768Z",
"url": "https://files.pythonhosted.org/packages/51/c5/528fb00df393cc00428d3a9efe84f5dc49a24c57e7bafe6b7db36dec4b29/pyxcp-0.23.9-cp314-cp314-win_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f7ee8307b14709ca647b126b08fec52ce815a8111ed3229c09ff305b24ec4c30",
"md5": "badfdb24b0cc9ef2209a298b104a9cea",
"sha256": "06051b6fa256533e1f0c7c062ab465a11861c9dbd53e9774ee6ff9656e9d9973"
},
"downloads": -1,
"filename": "pyxcp-0.23.9.tar.gz",
"has_sig": false,
"md5_digest": "badfdb24b0cc9ef2209a298b104a9cea",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 229769,
"upload_time": "2025-09-03T04:26:19",
"upload_time_iso_8601": "2025-09-03T04:26:19.745884Z",
"url": "https://files.pythonhosted.org/packages/f7/ee/8307b14709ca647b126b08fec52ce815a8111ed3229c09ff305b24ec4c30/pyxcp-0.23.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-03 04:26:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "christoph2",
"github_project": "pyxcp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"appveyor": true,
"lcname": "pyxcp"
}