{ "version": "1", "pip_version": "24.0", "install": [ { "download_info": { "url": "https://files.pythonhosted.org/packages/95/60/e545d2c14b5b95229b59ec86ba351a050ba3ef25dfa5ef1be5c52e1f8e85/attested_relay-0.2.0a2-py3-none-any.whl", "archive_info": { "hash": "sha256=9c306a628b78a770aed6abe8705ef7ec496da34d5c278b5a2467cbbd0e0b27eb", "hashes": { "sha256": "9c306a628b78a770aed6abe8705ef7ec496da34d5c278b5a2467cbbd0e0b27eb" } } }, "is_direct": false, "is_yanked": false, "requested": true, "metadata": { "metadata_version": "2.4", "name": "attested-relay", "version": "0.2.0a2", "dynamic": [ "license-file" ], "summary": "Nitro-attested inner TLS over retry-safe HTTPS GET messages", "description": "# attested-relay\n\nA Python client for an AWS Nitro-attested relay. It carries an inner TLS 1.3\nconnection in ordinary HTTPS GET messages. The outer HTTPS server transports\nciphertext; the inner peer is authenticated by Nitro before an upstream URL is\nsent.\n\n```python\nfrom attested_relay import Relay\n\nrelay = Relay(\"https://YOUR-RELAY\", expected_pcr0=\"YOUR_INDEPENDENTLY_VERIFIED_96_HEX_PCR0\")\nrelay.verify()\nresponse = relay.get(\"https://example.com/\")\nprint(response.status_code, response.text)\n```\n\nThe client checks the bundled AWS Nitro root, certificate chain, COSE signature,\nfresh client nonce and timestamp, pinned image measurement, debug PCR rejection,\nthe actual inner TLS peer key, measured protocol parameters, Graviton5 readiness\nand current epoch state. Do not obtain the PCR0 pin solely from an untrusted\nrelay operator; independently reproduce or audit the measured image.\n\nThe relay encrypts audit records under daily keys recoverable through public\nseven-segment native RandomX v2.0.1 puzzles. The intended delay is approximate\nsequential work from epoch activation, not a guaranteed wall-clock deadline or\nproven VDF. A deployment requires actual calibration and reviewed measurements.\nAWS Nitro and its attestation PKI are trusted.\n\nThis is an early prerelease. It does not silently accept a development server,\nan arbitrary enclave measurement, or an expired/nonready live attestation. A\nliteral URL-fetch-only agent cannot independently calculate TLS or validate\ncryptographic signatures without additional execution capability.\n\nThe separate `attested-relay-timelock` distribution bundles the native solver.\nArchive verification is intentionally separate from live verification so that\nold, correctly signed records remain verifiable after certificate expiration.\n\nCLI:\n\n```\nattested-relay verify https://YOUR-RELAY --pcr0 YOUR_PIN\nattested-relay get https://YOUR-RELAY https://example.com/ --pcr0 YOUR_PIN\n```\n", "description_content_type": "text/markdown", "requires_dist": [ "cryptography>=45", "pyOpenSSL>=25", "cbor2>=5.6" ], "requires_python": ">=3.11" } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/7b/b1/67a0611622c0b68f0af7abae259f6bf135a4f836551615370f29f5dc332c/attested_relay_timelock-0.2.0a2-py3-none-manylinux_2_34_x86_64.whl", "archive_info": { "hash": "sha256=1289d53332bf4e0cc4334099a291dcbdf0474e809185948fa55bc5ab9f41e4b8", "hashes": { "sha256": "1289d53332bf4e0cc4334099a291dcbdf0474e809185948fa55bc5ab9f41e4b8" } } }, "is_direct": false, "is_yanked": false, "requested": true, "metadata": { "metadata_version": "2.4", "name": "attested-relay-timelock", "version": "0.2.0a2", "dynamic": [ "license-file" ], "summary": "Native RandomX solver and checkpoint manager for attested relay archives", "description": "# attested-relay-timelock\n\nThis package bundles the native Rust RandomX v2.0.1 generator, solver, checkpoint\njournal, calibration, and archive decryption commands in a platform wheel.\nIt has no Python substitute for RandomX. Build the wheel from this complete\nrepository with `pip wheel --no-deps ./python/attested-relay-timelock` (Rust,\nCMake, and a C++ compiler are required). Source-only PyPI installation is not\nsupported; publish the platform wheels after native validation on each platform.\n\n```\nattested-relay-timelock calibrate --mode full --samples 10000\nattested-relay-timelock solve --manifest puzzle.json \\\n --service-public-key ATTESTATION_VERIFIED_ED25519_HEX \\\n --checkpoint epoch.jsonl --key-out epoch.key\nattested-relay-timelock decrypt-record --manifest puzzle.json \\\n --service-public-key ATTESTATION_VERIFIED_ED25519_HEX \\\n --epoch-key epoch.key --record ciphertext.json --plaintext-out record.bin\n```\n\nRe-run the identical solve command after a restart to resume. The append-only\njournal preserves completed entries after interrupted writes. Checkpoint digests\ndetect accidental corruption; checkpoints are local progress hints, and a malicious\nwriter can waste computation but cannot produce a returned key without passing\nthe segment AEAD and published epoch-key commitment. Protect the journal directory.\n\nThe public key is a required independent trust pin, obtained from verified\nattestation or a previously verified archived identity. A manifest's self-reported\nsigner does not establish trust.\n\nThe high-level `Puzzle` API uses an authenticated archive **bundle** URL:\n\n```python\nfrom attested_relay_timelock import Puzzle\n\npuzzle = Puzzle.from_url(\n \"https://relay.girl.surgery/v1/artifacts/SHA256.bundle.json\",\n expected_pcr0=INDEPENDENTLY_VERIFIED_PCR0_HEX,\n)\nepoch_key = puzzle.solve(checkpoint=\"./solver-state/epoch.jsonl\")\nplaintext = puzzle.decrypt_record(\n \"downloaded.record.json\",\n epoch_key=epoch_key,\n plaintext_out=\"./solver-state/decrypted-record.bin\",\n)\n```\n\nReplace `SHA256` with the bundle's actual 64-character content digest. Install\n`attested-relay-timelock[archive]` on Python 3.11 or later for this interface;\nthe existing `follow` extra also installs the archive verifier. A bare\n`.puzzle.json` URL is rejected because it lacks the linked Nitro identity\nevidence. The required PCR0 pin must come from an independently trusted build\nmeasurement, not from the downloaded archive or its hosting server. Verification\nchecks every artifact digest, AWS Nitro signature/certificate chain, PCRs,\nattested TLS/service keys, Graviton5 policy, manifest signature, and work\nparameters. Historical warming evidence is valid here; it does not establish\npresent service readiness or when a puzzle was made public.\n\n`puzzle.manifest_id`, `puzzle.service_public_key`, `puzzle.manifest`,\n`puzzle.policy`, and `puzzle.attestation` expose authenticated metadata. Dictionary\nproperties return independent copies. `solve()` writes the verified manifest\nnext to the checkpoint and returns the recovered key's `Path`; its default name\nis `.key`, or set `key_out=` explicitly. It defaults to genuine\nnative `full` mode; `mode=\"light\"` computes the same result more slowly.\nSolving can take days. Interrupt and resume with the same checkpoint/output paths;\nan already completed key output raises `FileExistsError` rather than replacing it.\n`decrypt_record()` verifies the manifest signature, epoch/key commitment and\nrecord AEAD authentication natively, and creates a new plaintext output. The\nrecord envelope itself has no service signature. Once an epoch key is public,\nanyone holding it can create another valid AEAD envelope; identifying the\noriginal archived record then also requires an independently trusted digest or\npublication record. Both operations work offline after\n`from_url()` completes. Existing differing manifests, keys and plaintext files\nare preserved. Protect solver-state directories from other writers.\n\nThe native decryptor returns authenticated bytes without interpreting their\nencoding. Current audit plaintext is canonical **CBOR version 3**, including a\n`software_version` field; decode it with `cbor2.loads(plaintext.read_bytes())`.\nHistorical diagnostic archives use **JSON version 2**, decoded with\n`json.loads(plaintext.read_bytes())`. Inspect the decoded `version` field and\nhandle only the format/version your application supports. The encrypted\n`.record.json` envelope remains JSON in both cases; its filename does not imply\nthat the decrypted bytes are JSON. `Puzzle` decrypts both formats through the\nsame native authentication path.\n\nOnly explicit `insecure_local=True` permits a loopback HTTP URL (for example,\nthe operator's SSH archive tunnel). It never disables Nitro/PCR/hardware checks.\nArchive fetches share a bounded timeout, reject redirects and enforce size\nlimits. URLs with credentials, queries or fragments are rejected. There is no\nURL-only trust shortcut or development-attestation bypass in this API.\n\n`light` mode uses the genuine RandomX algorithm with a 256 MiB cache and computes\ndataset items as needed. `full` uses a shared 2080 MiB dataset for faster execution.\nBoth produce identical hashes. Production iteration counts must be calibrated in\nfull mode on the reference CPU, compiled into the enclave image, and measured\nunder seven-worker load. Short tests never establish a seven-day delay.\n\nContinuous solving uses verified historical bundles and the paginated all-artifact\nindex, restarting discovery from its first page each poll so newly inserted hashes\nare not missed:\n\n```\nattested-relay-timelock follow https://relay.example --expected-pcr0 PCR0_HEX \\\n --state-dir ./solver-state --max-workers 7\n```\n\nInstall the `follow` extra (and the matching `attested-relay` package). Each bundle\nmust pass archived Nitro identity verification before its independently authenticated\nservice key is handed to the native solver. Seven full-mode solvers require roughly\n16 GiB for datasets/caches plus process overhead. Existing verified keys are reused;\nfailed solvers preserve checkpoints and are retried on later discovery scans. Keys\nare stored locally; this command does not publish them to an external service.\n", "description_content_type": "text/markdown", "requires_dist": [ "attested-relay<0.3,>=0.2.0a1; extra == \"archive\"", "attested-relay<0.3,>=0.2.0a1; extra == \"follow\"" ], "requires_python": ">=3.10", "provides_extra": [ "archive", "follow" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/24/3f/0288c2383455f1c94741fd8de819fb6d7360065274d905711a62fc6cd1f2/boto3-1.43.91-py3-none-any.whl", "archive_info": { "hash": "sha256=5ff948cfac8bff72227930e0894a8542731e1998634d1ffd8a074c20a90af919", "hashes": { "sha256": "5ff948cfac8bff72227930e0894a8542731e1998634d1ffd8a074c20a90af919" } } }, "is_direct": false, "is_yanked": false, "requested": true, "metadata": { "metadata_version": "2.1", "name": "boto3", "version": "1.43.91", "summary": "The AWS SDK for Python", "description": "===============================\nBoto3 - The AWS SDK for Python\n===============================\n\n|Version| |Python| |License|\n\nBoto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for\nPython, which allows Python developers to write software that makes use\nof services like Amazon S3 and Amazon EC2. You can find the latest, most\nup to date, documentation at our `doc site`_, including a list of\nservices that are supported.\n\nBoto3 is maintained and published by `Amazon Web Services`_.\n\nBoto (pronounced boh-toh) was named after the fresh water dolphin native to the Amazon river. The name was chosen by the author of the original Boto library, Mitch Garnaat, as a reference to the company.\n\nNotices\n-------\n\nOn 2026-04-29, support for Python 3.9 ended for Boto3. This follows the\nPython Software Foundation `end of support `__\nfor the runtime which occurred on 2025-10-31.\n\nFor more information on deprecations, see this\n`blog post `__.\n\n.. _boto: https://docs.pythonboto.org/\n.. _`doc site`: https://docs.aws.amazon.com/boto3/latest/\n.. _`Amazon Web Services`: https://aws.amazon.com/what-is-aws/\n.. |Python| image:: https://img.shields.io/pypi/pyversions/boto3.svg?style=flat\n :target: https://pypi.python.org/pypi/boto3/\n :alt: Python Versions\n.. |Version| image:: https://img.shields.io/pypi/v/boto3.svg?style=flat\n :target: https://pypi.python.org/pypi/boto3/\n :alt: Package Version\n.. |License| image:: https://img.shields.io/pypi/l/boto3.svg?style=flat\n :target: https://github.com/boto/boto3/blob/develop/LICENSE\n :alt: License\n\nGetting Started\n---------------\nAssuming that you have a supported version of Python installed, you can first\nset up your environment with:\n\n.. code-block:: sh\n\n $ python -m venv .venv\n ...\n $ . .venv/bin/activate\n\nThen, you can install boto3 from PyPI with:\n\n.. code-block:: sh\n\n $ python -m pip install boto3\n\nor install from source with:\n\n.. code-block:: sh\n\n $ git clone https://github.com/boto/boto3.git\n $ cd boto3\n $ python -m pip install -r requirements.txt\n $ python -m pip install -e .\n\n\nUsing Boto3\n~~~~~~~~~~~~~~\nAfter installing boto3\n\nNext, set up credentials (in e.g. ``~/.aws/credentials``):\n\n.. code-block:: ini\n\n [default]\n aws_access_key_id = YOUR_KEY\n aws_secret_access_key = YOUR_SECRET\n\nThen, set up a default region (in e.g. ``~/.aws/config``):\n\n.. code-block:: ini\n\n [default]\n region = us-east-1\n\nOther credential configuration methods can be found `here `__\n\nThen, from a Python interpreter:\n\n.. code-block:: python\n\n >>> import boto3\n >>> s3 = boto3.resource('s3')\n >>> for bucket in s3.buckets.all():\n print(bucket.name)\n\nRunning Tests\n~~~~~~~~~~~~~\nYou can run tests in all supported Python versions using ``tox``. By default,\nit will run all of the unit and functional tests, but you can also specify your own\n``pytest`` options. Note that this requires that you have all supported\nversions of Python installed, otherwise you must pass ``-e`` or run the\n``pytest`` command directly:\n\n.. code-block:: sh\n\n $ tox\n $ tox -- unit/test_session.py\n $ tox -e py26,py33 -- integration/\n\nYou can also run individual tests with your default Python version:\n\n.. code-block:: sh\n\n $ pytest tests/unit\n\n\nGetting Help\n------------\n\nWe use GitHub issues for tracking bugs and feature requests and have limited\nbandwidth to address them. Please use these community resources for getting\nhelp:\n\n* Ask a question on `Stack Overflow `__ and tag it with `boto3 `__\n* Open a support ticket with `AWS Support `__\n* If it turns out that you may have found a bug, please `open an issue `__\n\n\nContributing\n------------\n\nWe value feedback and contributions from our community. Whether it's a bug report, new feature, correction, or additional documentation, we welcome your issues and pull requests. Please read through this `CONTRIBUTING `__ document before submitting any issues or pull requests to ensure we have all the necessary information to effectively respond to your contribution.\n\n\nMaintenance and Support for SDK Major Versions\n----------------------------------------------\n\nBoto3 was made generally available on 06/22/2015 and is currently in the full support phase of the availability life cycle.\n\nFor information about maintenance and support for SDK major versions and their underlying dependencies, see the following in the AWS SDKs and Tools Shared Configuration and Credentials Reference Guide:\n\n* `AWS SDKs and Tools Maintenance Policy `__\n* `AWS SDKs and Tools Version Support Matrix `__\n\n\nMore Resources\n--------------\n\n* `NOTICE `__\n* `Changelog `__\n* `License `__\n", "home_page": "https://github.com/boto/boto3", "author": "Amazon Web Services", "license": "Apache-2.0", "classifier": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Free Threading :: 2 - Beta" ], "requires_dist": [ "botocore (<1.44.0,>=1.43.91)", "jmespath (<2.0.0,>=0.7.1)", "s3transfer (<0.20.0,>=0.19.0)", "botocore[crt] (<2.0a0,>=1.21.0) ; extra == 'crt'" ], "requires_python": ">= 3.10", "project_url": [ "Documentation, https://docs.aws.amazon.com/boto3/latest/", "Source, https://github.com/boto/boto3" ], "provides_extra": [ "crt" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/8f/1a/f672cc408d808035397c5d63a1b31a6a56ee95417a9d60d120d96349d182/botocore-1.43.91-py3-none-any.whl", "archive_info": { "hash": "sha256=f96363d4caf50bce45fe2fdc2d4d86b3bea7f5cd805169d53c1371c2dd4772b6", "hashes": { "sha256": "f96363d4caf50bce45fe2fdc2d4d86b3bea7f5cd805169d53c1371c2dd4772b6" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.1", "name": "botocore", "version": "1.43.91", "summary": "Low-level, data-driven core of boto 3.", "description": "botocore\n========\n\n|Version| |Python| |License|\n\nA low-level interface to a growing number of Amazon Web Services. The\nbotocore package is the foundation for the\n`AWS CLI `__ as well as\n`boto3 `__.\n\nBotocore is maintained and published by `Amazon Web Services`_.\n\nNotices\n-------\n\nOn 2026-04-29, support for Python 3.9 ended for Botocore. This follows the\nPython Software Foundation `end of support `__\nfor the runtime which occurred on 2025-10-31.\n\nFor more information, see this `blog post `__.\n\n.. _`Amazon Web Services`: https://aws.amazon.com/what-is-aws/\n.. |Python| image:: https://img.shields.io/pypi/pyversions/botocore.svg?style=flat\n :target: https://pypi.python.org/pypi/botocore/\n :alt: Python Versions\n.. |Version| image:: http://img.shields.io/pypi/v/botocore.svg?style=flat\n :target: https://pypi.python.org/pypi/botocore/\n :alt: Package Version\n.. |License| image:: http://img.shields.io/pypi/l/botocore.svg?style=flat\n :target: https://github.com/boto/botocore/blob/develop/LICENSE.txt\n :alt: License\n\nGetting Started\n---------------\nAssuming that you have Python and ``virtualenv`` installed, set up your environment and install the required dependencies like this or you can install the library using ``pip``:\n\n.. code-block:: sh\n\n $ git clone https://github.com/boto/botocore.git\n $ cd botocore\n $ python -m venv .venv\n ...\n $ source .venv/bin/activate\n $ python -m pip install -r requirements.txt\n $ python -m pip install -e .\n\n.. code-block:: sh\n\n $ pip install botocore\n\nUsing Botocore\n~~~~~~~~~~~~~~\nAfter installing botocore\n\nNext, set up credentials (in e.g. ``~/.aws/credentials``):\n\n.. code-block:: ini\n\n [default]\n aws_access_key_id = YOUR_KEY\n aws_secret_access_key = YOUR_SECRET\n\nThen, set up a default region (in e.g. ``~/.aws/config``):\n\n.. code-block:: ini\n\n [default]\n region=us-east-1\n\nOther credentials configuration method can be found `here `__\n\nThen, from a Python interpreter:\n\n.. code-block:: python\n\n >>> import botocore.session\n >>> session = botocore.session.get_session()\n >>> client = session.create_client('ec2')\n >>> print(client.describe_instances())\n\n\nGetting Help\n------------\n\nWe use GitHub issues for tracking bugs and feature requests and have limited\nbandwidth to address them. Please use these community resources for getting\nhelp. Please note many of the same resources available for ``boto3`` are\napplicable for ``botocore``:\n\n* Ask a question on `Stack Overflow `__ and tag it with `boto3 `__\n* Open a support ticket with `AWS Support `__\n* If it turns out that you may have found a bug, please `open an issue `__\n\n\nContributing\n------------\n\nWe value feedback and contributions from our community. Whether it's a bug report, new feature, correction, or additional documentation, we welcome your issues and pull requests. Please read through this `CONTRIBUTING `__ document before submitting any issues or pull requests to ensure we have all the necessary information to effectively respond to your contribution.\n\n\nMaintenance and Support for SDK Major Versions\n----------------------------------------------\n\nBotocore was made generally available on 06/22/2015 and is currently in the full support phase of the availability life cycle.\n\nFor information about maintenance and support for SDK major versions and their underlying dependencies, see the following in the AWS SDKs and Tools Reference Guide:\n\n* `AWS SDKs and Tools Maintenance Policy `__\n* `AWS SDKs and Tools Version Support Matrix `__\n\n\nMore Resources\n--------------\n\n* `NOTICE `__\n* `Changelog `__\n* `License `__\n", "home_page": "https://github.com/boto/botocore", "author": "Amazon Web Services", "license": "Apache-2.0", "classifier": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Free Threading :: 2 - Beta" ], "requires_dist": [ "jmespath (<2.0.0,>=0.7.1)", "python-dateutil (<3.0.0,>=2.1)", "urllib3 (!=2.2.0,<3,>=1.25.4)", "awscrt (==0.36.0) ; extra == 'crt'" ], "requires_python": ">= 3.10", "provides_extra": [ "crt" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/f0/a5/10c6c126d59b07f2bd005094dd12a20afa46146f7e2673ed6f61a57641a7/cbor2-6.1.4-cp312-cp312-manylinux_2_28_x86_64.whl", "archive_info": { "hash": "sha256=310f3dfb296ba48fe9b63c5cf26e691e3548a1eae6901d2f0c18e941d151f220", "hashes": { "sha256": "310f3dfb296ba48fe9b63c5cf26e691e3548a1eae6901d2f0c18e941d151f220" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.4", "name": "cbor2", "version": "6.1.4", "dynamic": [ "license-file" ], "summary": "CBOR (de)serializer with extensive tag support", "description": ".. image:: https://github.com/agronholm/cbor2/actions/workflows/test.yml/badge.svg\n :target: https://github.com/agronholm/cbor2/actions/workflows/test.yml\n :alt: Testing Status\n.. image:: https://github.com/agronholm/cbor2/actions/workflows/publish.yml/badge.svg\n :target: https://github.com/agronholm/cbor2/actions/workflows/publish.yml\n :alt: Publish Status\n.. image:: https://coveralls.io/repos/github/agronholm/cbor2/badge.svg?branch=master\n :target: https://coveralls.io/github/agronholm/cbor2?branch=master\n :alt: Code Coverage\n.. image:: https://readthedocs.org/projects/cbor2/badge/?version=latest\n :target: https://cbor2.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n.. image:: https://tidelift.com/badges/package/pypi/cbor2\n :target: https://tidelift.com/subscription/pkg/pypi-cbor2\n :alt: Tidelift\n\nAbout\n=====\n\nThis library provides encoding and decoding for the Concise Binary Object Representation (CBOR)\n(`RFC 8949`_) serialization format. The specification is fully compatible with the original RFC\n7049. `Read the docs `_ to learn more.\n\nIt is implemented in Rust.\n\n.. _RFC 8949: https://www.rfc-editor.org/rfc/rfc8949.html\n\nFeatures\n--------\n\n* Simple API like the ``json`` or ``pickle`` modules\n* Support many `CBOR tags`_ with `stdlib objects`_\n* Generic tag decoding\n* `Shared value`_ references including cyclic references\n* `String references`_ compact encoding with repeated strings replaced with indices\n* Extensible `tagged value handling`_ using ``tag_hook`` and ``object_hook`` on decode and\n ``default`` on encode.\n* Command-line diagnostic tool, converting CBOR file or stream to JSON ``python -m cbor2.tool``\n (This is a lossy conversion, for diagnostics only)\n* Thorough test suite (Tested on big- and little-endian architectures)\n\n.. _CBOR tags: https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml\n.. _stdlib objects: https://cbor2.readthedocs.io/en/latest/usage.html#tag-support\n.. _Shared value: http://cbor.schmorp.de/value-sharing\n.. _String references: http://cbor.schmorp.de/stringref\n.. _tagged value handling: https://cbor2.readthedocs.io/en/latest/customizing.html#using-the-cbor-tags-for-custom-types\n\nInstallation\n============\n\nThe simplest way to install the library is with pip_:\n\n::\n\n pip install cbor2\n\nIf this fails, see the next section.\n\n.. _pip: https://packaging.python.org/en/latest/tutorials/installing-packages/\n\nBuild requirements\n------------------\n\nIf you wish to compile the code yourself, or are installing on a yet unsupported Python version\nor platform where there are no wheels available, you need the following pre-requisites:\n\n* Python >= 3.10 (or `PyPy3`_ 3.11+)\n* `Rust toolchain`_ (tested with v1.93.0)\n\n.. _PyPy3: https://www.pypy.org/\n.. _Rust toolchain: https://rust-lang.org/tools/install/\n\nUsage\n=====\n\n`Basic Usage `_\n\nCommand-line Usage\n==================\n\nThe provided command line tool (``cbor2``) converts CBOR data in raw binary or base64\nencoding into a representation that allows printing as JSON. This is a lossy\ntransformation as each datatype is converted into something that can be represented as a\nJSON value.\n\nThe tool can alternatively be invoked with ``python -m cbor2.tool``.\n\nUsage::\n\n # Pass hexadecimal through xxd.\n $ echo a16568656c6c6f65776f726c64 | xxd -r -ps | cbor2 --pretty\n {\n \"hello\": \"world\"\n }\n # Decode Base64 directly\n $ echo ggEC | python -m cbor2.tool --decode\n [1, 2]\n # Read from a file encoded in Base64\n $ python -m cbor2.tool -d tests/examples.cbor.b64\n {...}\n\nIt can be used in a pipeline with json processing tools like `jq`_ to allow syntax\ncoloring, field extraction and more.\n\nCBOR data items concatenated into a sequence can be decoded also::\n\n $ echo ggECggMEggUG | cbor2 -d --sequence\n [1, 2]\n [3, 4]\n [5, 6]\n\nMultiple files can also be sent to a single output file::\n\n $ cbor2 -o all_files.json file1.cbor file2.cbor ... fileN.cbor\n\n.. _jq: https://stedolan.github.io/jq/\n\nSecurity\n========\n\nThis library has not been tested against malicious input. In theory it should be\nas safe as JSON, since unlike ``pickle`` the decoder does not execute any code.\n", "description_content_type": "text/x-rst", "keywords": [ "serialization", "cbor" ], "author_email": "Alex Grönholm ", "classifier": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Typing :: Typed", "Programming Language :: Python :: Free Threading :: 2 - Beta", "Programming Language :: Rust", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3.15" ], "requires_python": ">=3.10", "project_url": [ "Changelog, https://cbor2.readthedocs.io/en/latest/versionhistory.html", "Documentation, https://cbor2.readthedocs.org/en/latest/", "Source Code, https://github.com/agronholm/cbor2", "Issue Tracker, https://github.com/agronholm/cbor2/issues" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/85/66/6ccca4722987ddedaa7fc9c3f4708af7431f5535666c174350830888c6b7/cryptography-50.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", "archive_info": { "hash": "sha256=51afcfceb15597cf2635068e4ac9a56b2abde622edde17f37d85fd7b5306497a", "hashes": { "sha256": "51afcfceb15597cf2635068e4ac9a56b2abde622edde17f37d85fd7b5306497a" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.4", "name": "cryptography", "version": "50.0.1", "summary": "cryptography is a package which provides cryptographic recipes and primitives to Python developers.", "description": "pyca/cryptography\n=================\n\n.. image:: https://img.shields.io/pypi/v/cryptography.svg\n :target: https://pypi.org/project/cryptography/\n :alt: Latest Version\n\n.. image:: https://readthedocs.org/projects/cryptography/badge/?version=latest\n :target: https://cryptography.io\n :alt: Latest Docs\n\n.. image:: https://github.com/pyca/cryptography/actions/workflows/ci.yml/badge.svg\n :target: https://github.com/pyca/cryptography/actions/workflows/ci.yml?query=branch%3Amain\n\n``cryptography`` is a package which provides cryptographic recipes and\nprimitives to Python developers. Our goal is for it to be your \"cryptographic\nstandard library\". It supports Python 3.9+ and PyPy3 7.3.11+.\n\n``cryptography`` includes both high level recipes and low level interfaces to\ncommon cryptographic algorithms such as symmetric ciphers, message digests, and\nkey derivation functions. For example, to encrypt something with\n``cryptography``'s high level symmetric encryption recipe:\n\n.. code-block:: pycon\n\n >>> from cryptography.fernet import Fernet\n >>> # Put this somewhere safe!\n >>> key = Fernet.generate_key()\n >>> f = Fernet(key)\n >>> token = f.encrypt(b\"A really secret message. Not for prying eyes.\")\n >>> token\n b'...'\n >>> f.decrypt(token)\n b'A really secret message. Not for prying eyes.'\n\nYou can find more information in the `documentation`_.\n\nYou can install ``cryptography`` with:\n\n.. code-block:: console\n\n $ pip install cryptography\n\nFor full details see `the installation documentation`_.\n\nDiscussion\n~~~~~~~~~~\n\nIf you run into bugs, you can file them in our `issue tracker`_.\n\nWe maintain a `cryptography-dev`_ mailing list for development discussion.\n\nYou can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get\ninvolved.\n\nSecurity\n~~~~~~~~\n\nNeed to report a security issue? Please consult our `security reporting`_\ndocumentation.\n\n\n.. _`documentation`: https://cryptography.io/\n.. _`the installation documentation`: https://cryptography.io/en/latest/installation/\n.. _`issue tracker`: https://github.com/pyca/cryptography/issues\n.. _`cryptography-dev`: https://mail.python.org/mailman/listinfo/cryptography-dev\n.. _`security reporting`: https://cryptography.io/en/latest/security/\n\n", "description_content_type": "text/x-rst; charset=UTF-8", "author_email": "The Python Cryptographic Authority and individual contributors ", "classifier": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Programming Language :: Python :: Free Threading :: 3 - Stable", "Topic :: Security :: Cryptography" ], "requires_dist": [ "cffi>=2.0.0 ; platform_python_implementation != 'PyPy'", "typing-extensions>=4.13.2 ; python_full_version < '3.11'", "bcrypt>=3.1.5 ; extra == 'ssh'" ], "requires_python": ">=3.9, !=3.9.0, !=3.9.1", "project_url": [ "changelog, https://cryptography.io/en/latest/changelog/", "documentation, https://cryptography.io/", "homepage, https://github.com/pyca/cryptography", "issues, https://github.com/pyca/cryptography/issues", "source, https://github.com/pyca/cryptography/" ], "provides_extra": [ "ssh" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl", "archive_info": { "hash": "sha256=a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64", "hashes": { "sha256": "a5663118de4908c91729bea0acadca56526eb2698e83de10cd116ae0f4e97c64" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.1", "name": "jmespath", "version": "1.1.0", "summary": "JSON Matching Expressions", "description": "JMESPath\n========\n\n\n.. image:: https://badges.gitter.im/Join Chat.svg\n :target: https://gitter.im/jmespath/chat\n\n\nJMESPath (pronounced \"james path\") allows you to declaratively specify how to\nextract elements from a JSON document.\n\nFor example, given this document::\n\n {\"foo\": {\"bar\": \"baz\"}}\n\nThe jmespath expression ``foo.bar`` will return \"baz\".\n\nJMESPath also supports:\n\nReferencing elements in a list. Given the data::\n\n {\"foo\": {\"bar\": [\"one\", \"two\"]}}\n\nThe expression: ``foo.bar[0]`` will return \"one\".\nYou can also reference all the items in a list using the ``*``\nsyntax::\n\n {\"foo\": {\"bar\": [{\"name\": \"one\"}, {\"name\": \"two\"}]}}\n\nThe expression: ``foo.bar[*].name`` will return [\"one\", \"two\"].\nNegative indexing is also supported (-1 refers to the last element\nin the list). Given the data above, the expression\n``foo.bar[-1].name`` will return \"two\".\n\nThe ``*`` can also be used for hash types::\n\n {\"foo\": {\"bar\": {\"name\": \"one\"}, \"baz\": {\"name\": \"two\"}}}\n\nThe expression: ``foo.*.name`` will return [\"one\", \"two\"].\n\n\nInstallation\n============\n\nYou can install JMESPath from pypi with:\n\n.. code:: bash\n\n pip install jmespath\n\n\nAPI\n===\n\nThe ``jmespath.py`` library has two functions\nthat operate on python data structures. You can use ``search``\nand give it the jmespath expression and the data:\n\n.. code:: python\n\n >>> import jmespath\n >>> path = jmespath.search('foo.bar', {'foo': {'bar': 'baz'}})\n 'baz'\n\nSimilar to the ``re`` module, you can use the ``compile`` function\nto compile the JMESPath expression and use this parsed expression\nto perform repeated searches:\n\n.. code:: python\n\n >>> import jmespath\n >>> expression = jmespath.compile('foo.bar')\n >>> expression.search({'foo': {'bar': 'baz'}})\n 'baz'\n >>> expression.search({'foo': {'bar': 'other'}})\n 'other'\n\nThis is useful if you're going to use the same jmespath expression to\nsearch multiple documents. This avoids having to reparse the\nJMESPath expression each time you search a new document.\n\nOptions\n-------\n\nYou can provide an instance of ``jmespath.Options`` to control how\na JMESPath expression is evaluated. The most common scenario for\nusing an ``Options`` instance is if you want to have ordered output\nof your dict keys. To do this you can use either of these options:\n\n.. code:: python\n\n >>> import jmespath\n >>> jmespath.search('{a: a, b: b}',\n ... mydata,\n ... jmespath.Options(dict_cls=collections.OrderedDict))\n\n\n >>> import jmespath\n >>> parsed = jmespath.compile('{a: a, b: b}')\n >>> parsed.search(mydata,\n ... jmespath.Options(dict_cls=collections.OrderedDict))\n\n\nCustom Functions\n~~~~~~~~~~~~~~~~\n\nThe JMESPath language has numerous\n`built-in functions\n`__, but it is\nalso possible to add your own custom functions. Keep in mind that\ncustom function support in jmespath.py is experimental and the API may\nchange based on feedback.\n\n**If you have a custom function that you've found useful, consider submitting\nit to jmespath.site and propose that it be added to the JMESPath language.**\nYou can submit proposals\n`here `__.\n\nTo create custom functions:\n\n* Create a subclass of ``jmespath.functions.Functions``.\n* Create a method with the name ``_func_``.\n* Apply the ``jmespath.functions.signature`` decorator that indicates\n the expected types of the function arguments.\n* Provide an instance of your subclass in a ``jmespath.Options`` object.\n\nBelow are a few examples:\n\n.. code:: python\n\n import jmespath\n from jmespath import functions\n\n # 1. Create a subclass of functions.Functions.\n # The function.Functions base class has logic\n # that introspects all of its methods and automatically\n # registers your custom functions in its function table.\n class CustomFunctions(functions.Functions):\n\n # 2 and 3. Create a function that starts with _func_\n # and decorate it with @signature which indicates its\n # expected types.\n # In this example, we're creating a jmespath function\n # called \"unique_letters\" that accepts a single argument\n # with an expected type \"string\".\n @functions.signature({'types': ['string']})\n def _func_unique_letters(self, s):\n # Given a string s, return a sorted\n # string of unique letters: 'ccbbadd' -> 'abcd'\n return ''.join(sorted(set(s)))\n\n # Here's another example. This is creating\n # a jmespath function called \"my_add\" that expects\n # two arguments, both of which should be of type number.\n @functions.signature({'types': ['number']}, {'types': ['number']})\n def _func_my_add(self, x, y):\n return x + y\n\n # 4. Provide an instance of your subclass in a Options object.\n options = jmespath.Options(custom_functions=CustomFunctions())\n\n # Provide this value to jmespath.search:\n # This will print 3\n print(\n jmespath.search(\n 'my_add(`1`, `2`)', {}, options=options)\n )\n\n # This will print \"abcd\"\n print(\n jmespath.search(\n 'foo.bar | unique_letters(@)',\n {'foo': {'bar': 'ccbbadd'}},\n options=options)\n )\n\nAgain, if you come up with useful functions that you think make\nsense in the JMESPath language (and make sense to implement in all\nJMESPath libraries, not just python), please let us know at\n`jmespath.site `__.\n\n\nSpecification\n=============\n\nIf you'd like to learn more about the JMESPath language, you can check out\nthe `JMESPath tutorial `__. Also check\nout the `JMESPath examples page `__ for\nexamples of more complex jmespath queries.\n\nThe grammar is specified using ABNF, as described in\n`RFC4234 `_.\nYou can find the most up to date\n`grammar for JMESPath here `__.\n\nYou can read the full\n`JMESPath specification here `__.\n\n\nTesting\n=======\n\nIn addition to the unit tests for the jmespath modules,\nthere is a ``tests/compliance`` directory that contains\n.json files with test cases. This allows other implementations\nto verify they are producing the correct output. Each json\nfile is grouped by feature.\n\n\nDiscuss\n=======\n\nJoin us on our `Gitter channel `__\nif you want to chat or if you have any questions.\n", "home_page": "https://github.com/jmespath/jmespath.py", "author": "James Saryerwinnie", "author_email": "js@jamesls.com", "license": "MIT", "classifier": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "requires_python": ">=3.9" } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/51/ad/2cf6d3fa2fae5c79e1ed9960c0d42badd0f94d81dd12b50604cdc839e648/pyopenssl-26.4.0-py3-none-any.whl", "archive_info": { "hash": "sha256=f0eb0cb2d581d3ad2b9c489468485e7f2ab6727d08401bcf9d824c3caddf3c1c", "hashes": { "sha256": "f0eb0cb2d581d3ad2b9c489468485e7f2ab6727d08401bcf9d824c3caddf3c1c" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.4", "name": "pyOpenSSL", "version": "26.4.0", "dynamic": [ "author", "author-email", "classifier", "description", "home-page", "license", "license-file", "project-url", "provides-extra", "requires-dist", "requires-python", "summary" ], "summary": "Python wrapper module around the OpenSSL library", "description": "========================================================\npyOpenSSL -- A Python wrapper around the OpenSSL library\n========================================================\n\n.. image:: https://readthedocs.org/projects/pyopenssl/badge/?version=stable\n :target: https://pyopenssl.org/en/stable/\n :alt: Stable Docs\n\n.. image:: https://github.com/pyca/pyopenssl/workflows/CI/badge.svg?branch=main\n :target: https://github.com/pyca/pyopenssl/actions?query=workflow%3ACI+branch%3Amain\n\n**Note:** The Python Cryptographic Authority **strongly suggests** the use of `pyca/cryptography`_\nwhere possible. If you are using pyOpenSSL for anything other than making a TLS connection\n**you should move to cryptography and drop your pyOpenSSL dependency**.\n\nHigh-level wrapper around a subset of the OpenSSL library. Includes\n\n* ``SSL.Connection`` objects, wrapping the methods of Python's portable sockets\n* Callbacks written in Python\n* Extensive error-handling mechanism, mirroring OpenSSL's error codes\n\n... and much more.\n\nYou can find more information in the documentation_.\nDevelopment takes place on GitHub_.\n\n\nDiscussion\n==========\n\nIf you run into bugs, you can file them in our `issue tracker`_.\n\nWe maintain a cryptography-dev_ mailing list for both user and development discussions.\n\nYou can also join ``#pyca`` on ``irc.libera.chat`` to ask questions or get involved.\n\n\n.. _documentation: https://pyopenssl.org/\n.. _`issue tracker`: https://github.com/pyca/pyopenssl/issues\n.. _cryptography-dev: https://mail.python.org/mailman/listinfo/cryptography-dev\n.. _GitHub: https://github.com/pyca/pyopenssl\n.. _`pyca/cryptography`: https://github.com/pyca/cryptography\n\n\nRelease Information\n===================\n\n26.4.0 (2026-08-01)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Maximum supported ``cryptography`` version is now 50.x.\n\n\n26.3.0 (2026-06-12)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Dropped support for Python 3.8.\n- The minimum ``cryptography`` version is now 49.0.0.\n- Removed deprecated ``OpenSSL.crypto.X509Req``, ``OpenSSL.crypto.dump_certificate_request``, and ``OpenSSL.crypto.load_certificate_request``. ``cryptography.x509`` should be used instead.\n- ``OpenSSL.SSL.Connection.set_session`` now raises ``ValueError`` if the ``Session`` was obtained from a ``Connection`` that was using a different ``Context`` than this one. OpenSSL requires (but does not verify) that sessions only be re-used with a compatible ``SSL_CTX``, so this contract is now enforced.\n\nDeprecations:\n^^^^^^^^^^^^^\n\n- Deprecated ``OpenSSL.crypto.PKey.generate_key`` and ``OpenSSL.crypto.PKey.check``. The key generation and loading APIs in ``cryptography`` should be used instead.\n- Deprecated ``OpenSSL.crypto.dump_privatekey``. The serialization APIs on ``cryptography`` private key types should be used instead.\n- Deprecated all the mutable APIs on ``OpenSSL.crypto.X509``: ``set_version``, ``set_pubkey``, ``sign``, ``set_serial_number``, ``gmtime_adj_notAfter``, ``gmtime_adj_notBefore``, ``set_notBefore``, ``set_notAfter``, ``set_issuer``, and ``set_subject``. ``cryptography.x509.CertificateBuilder`` should be used instead.\n- Deprecated ``OpenSSL.SSL.Context.set_passwd_cb``. Users should decrypt and load their private keys themselves, with ``cryptography``'s key loading APIs, and then call ``OpenSSL.SSL.Context.use_privatekey``.\n- Deprecated ``OpenSSL.crypto.X509Name``, as well as the remaining APIs that consume or return it: ``OpenSSL.crypto.X509.get_issuer``, ``OpenSSL.crypto.X509.get_subject``, and ``OpenSSL.SSL.Context.set_client_ca_list``. The APIs in ``cryptography.x509`` should be used instead.\n\nChanges:\n^^^^^^^^\n\n- ``OpenSSL.SSL.Connection.get_client_ca_list`` now takes an ``as_cryptography`` keyword-argument. When ``True`` is passed then ``cryptography.x509.Name`` are returned, instead of ``OpenSSL.crypto.X509Name``. In the future, passing ``False`` (the default) will be deprecated.\n\n\n26.2.0 (2026-05-04)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Removed deprecated ``OpenSSL.crypto.X509Extension``, ``OpenSSL.crypto.X509Req.add_extension``, ``OpenSSL.crypto.X509Req.get_extensions``, ``OpenSSL.crypto.X509.add_extension``, ``OpenSSL.crypto.X509.get_extensions``. ``cryptography.x509`` should be used instead.\n- It is now an error to calling any mutating method on ``OpenSSL.SSL.Context`` after it has been used to create a ``Connection``. This was previously deprecated and has always been unsafe.\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Maximum supported ``cryptography`` version is now 48.x.\n- Added ``OpenSSL.SSL.Connection.set_options`` to set options on a per-connection basis.\n\n26.1.0 (2026-04-24)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Maximum supported ``cryptography`` version is now 47.x.\n- Fixed ``X509Name`` field setters to correctly pass the value length to OpenSSL. Previously, values containing NUL bytes would be silently truncated, causing a divergence between the stored ASN.1 value and the value visible from Python. Credit to **BudongJW** for reporting the issue. **CVE-2026-40475**\n\n26.0.0 (2026-03-15)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Dropped support for Python 3.7.\n- The minimum ``cryptography`` version is now 46.0.0.\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Added support for using aws-lc instead of OpenSSL.\n- Properly raise an error if a DTLS cookie callback returned a cookie longer than ``DTLS1_COOKIE_LENGTH`` bytes. Previously this would result in a buffer-overflow. Credit to **dark_haxor** for reporting the issue. **CVE-2026-27459**\n- Added ``OpenSSL.SSL.Connection.get_group_name`` to determine which group name was negotiated.\n- ``Context.set_tlsext_servername_callback`` now handles exceptions raised in the callback by calling ``sys.excepthook`` and returning a fatal TLS alert. Previously, exceptions were silently swallowed and the handshake would proceed as if the callback had succeeded. Credit to **Leury Castillo** for reporting this issue. **CVE-2026-27448**\n\n25.3.0 (2025-09-16)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Maximum supported ``cryptography`` version is now 46.x.\n\n\n25.2.0 (2025-09-14)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- The minimum ``cryptography`` version is now 45.0.7.\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- pyOpenSSL now sets ``SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER`` on connections by default, matching CPython's behavior.\n- Added ``OpenSSL.SSL.Context.clear_mode``.\n- Added ``OpenSSL.SSL.Context.set_tls13_ciphersuites`` to set the allowed TLS 1.3 ciphers.\n- Added ``OpenSSL.SSL.Connection.set_info_callback``\n\n25.1.0 (2025-05-17)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\n- Attempting using any methods that mutate an ``OpenSSL.SSL.Context`` after it\n has been used to create an ``OpenSSL.SSL.Connection`` will emit a warning. In\n a future release, this will raise an exception.\n\nChanges:\n^^^^^^^^\n\n* ``cryptography`` maximum version has been increased to 45.0.x.\n\n\n25.0.0 (2025-01-12)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Corrected type annotations on ``Context.set_alpn_select_callback``, ``Context.set_session_cache_mode``, ``Context.set_options``, ``Context.set_mode``, ``X509.subject_name_hash``, and ``X509Store.load_locations``.\n- Deprecated APIs are now marked using ``warnings.deprecated``. ``mypy`` will emit deprecation notices for them when used with ``--enable-error-code deprecated``.\n\n24.3.0 (2024-11-27)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Removed the deprecated ``OpenSSL.crypto.CRL``, ``OpenSSL.crypto.Revoked``, ``OpenSSL.crypto.dump_crl``, and ``OpenSSL.crypto.load_crl``. ``cryptography.x509``'s CRL functionality should be used instead.\n- Removed the deprecated ``OpenSSL.crypto.sign`` and ``OpenSSL.crypto.verify``. ``cryptography.hazmat.primitives.asymmetric``'s signature APIs should be used instead.\n\nDeprecations:\n^^^^^^^^^^^^^\n\n- Deprecated ``OpenSSL.rand`` - callers should use ``os.urandom()`` instead.\n- Deprecated ``add_extensions`` and ``get_extensions`` on ``OpenSSL.crypto.X509Req`` and ``OpenSSL.crypto.X509``. These should have been deprecated at the same time ``X509Extension`` was. Users should use pyca/cryptography's X.509 APIs instead.\n- Deprecated ``OpenSSL.crypto.get_elliptic_curves`` and ``OpenSSL.crypto.get_elliptic_curve``, as well as passing the reult of them to ``OpenSSL.SSL.Context.set_tmp_ecdh``, users should instead pass curves from ``cryptography``.\n- Deprecated passing ``X509`` objects to ``OpenSSL.SSL.Context.use_certificate``, ``OpenSSL.SSL.Connection.use_certificate``, ``OpenSSL.SSL.Context.add_extra_chain_cert``, and ``OpenSSL.SSL.Context.add_client_ca``, users should instead pass ``cryptography.x509.Certificate`` instances. This is in preparation for deprecating pyOpenSSL's ``X509`` entirely.\n- Deprecated passing ``PKey`` objects to ``OpenSSL.SSL.Context.use_privatekey`` and ``OpenSSL.SSL.Connection.use_privatekey``, users should instead pass ``cryptography`` private key instances. This is in preparation for deprecating pyOpenSSL's ``PKey`` entirely.\n\nChanges:\n^^^^^^^^\n\n* ``cryptography`` maximum version has been increased to 44.0.x.\n* ``OpenSSL.SSL.Connection.get_certificate``, ``OpenSSL.SSL.Connection.get_peer_certificate``, ``OpenSSL.SSL.Connection.get_peer_cert_chain``, and ``OpenSSL.SSL.Connection.get_verified_chain`` now take an ``as_cryptography`` keyword-argument. When ``True`` is passed then ``cryptography.x509.Certificate`` are returned, instead of ``OpenSSL.crypto.X509``. In the future, passing ``False`` (the default) will be deprecated.\n\n\n24.2.1 (2024-07-20)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Fixed changelog to remove sphinx specific restructured text strings.\n\n\n24.2.0 (2024-07-20)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\n- Deprecated ``OpenSSL.crypto.X509Req``, ``OpenSSL.crypto.load_certificate_request``, ``OpenSSL.crypto.dump_certificate_request``. Instead, ``cryptography.x509.CertificateSigningRequest``, ``cryptography.x509.CertificateSigningRequestBuilder``, ``cryptography.x509.load_der_x509_csr``, or ``cryptography.x509.load_pem_x509_csr`` should be used.\n\nChanges:\n^^^^^^^^\n\n- Added type hints for the ``SSL`` module.\n `#1308 `_.\n- Changed ``OpenSSL.crypto.PKey.from_cryptography_key`` to accept public and private EC, ED25519, ED448 keys.\n `#1310 `_.\n\n24.1.0 (2024-03-09)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n* Removed the deprecated ``OpenSSL.crypto.PKCS12`` and\n ``OpenSSL.crypto.NetscapeSPKI``. ``OpenSSL.crypto.PKCS12`` may be replaced\n by the PKCS#12 APIs in the ``cryptography`` package.\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n24.0.0 (2024-01-22)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Added ``OpenSSL.SSL.Connection.get_selected_srtp_profile`` to determine which SRTP profile was negotiated.\n `#1279 `_.\n\n23.3.0 (2023-10-25)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Dropped support for Python 3.6.\n- The minimum ``cryptography`` version is now 41.0.5.\n- Removed ``OpenSSL.crypto.load_pkcs7`` and ``OpenSSL.crypto.load_pkcs12`` which had been deprecated for 3 years.\n- Added ``OpenSSL.SSL.OP_LEGACY_SERVER_CONNECT`` to allow legacy insecure renegotiation between OpenSSL and unpatched servers.\n `#1234 `_.\n\nDeprecations:\n^^^^^^^^^^^^^\n\n- Deprecated ``OpenSSL.crypto.PKCS12`` (which was intended to have been deprecated at the same time as ``OpenSSL.crypto.load_pkcs12``).\n- Deprecated ``OpenSSL.crypto.NetscapeSPKI``.\n- Deprecated ``OpenSSL.crypto.CRL``\n- Deprecated ``OpenSSL.crypto.Revoked``\n- Deprecated ``OpenSSL.crypto.load_crl`` and ``OpenSSL.crypto.dump_crl``\n- Deprecated ``OpenSSL.crypto.sign`` and ``OpenSSL.crypto.verify``\n- Deprecated ``OpenSSL.crypto.X509Extension``\n\nChanges:\n^^^^^^^^\n\n- Changed ``OpenSSL.crypto.X509Store.add_crl`` to also accept\n ``cryptography``'s ``x509.CertificateRevocationList`` arguments in addition\n to the now deprecated ``OpenSSL.crypto.CRL`` arguments.\n- Fixed ``test_set_default_verify_paths`` test so that it is skipped if no\n network connection is available.\n\n23.2.0 (2023-05-30)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Removed ``X509StoreFlags.NOTIFY_POLICY``.\n `#1213 `_.\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- ``cryptography`` maximum version has been increased to 41.0.x.\n- Invalid versions are now rejected in ``OpenSSL.crypto.X509Req.set_version``.\n- Added ``X509VerificationCodes`` to ``OpenSSL.SSL``.\n `#1202 `_.\n\n23.1.1 (2023-03-28)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Worked around an issue in OpenSSL 3.1.0 which caused `X509Extension.get_short_name` to raise an exception when no short name was known to OpenSSL.\n `#1204 `_.\n\n23.1.0 (2023-03-24)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- ``cryptography`` maximum version has been increased to 40.0.x.\n- Add ``OpenSSL.SSL.Connection.DTLSv1_get_timeout`` and ``OpenSSL.SSL.Connection.DTLSv1_handle_timeout``\n to support DTLS timeouts `#1180 `_.\n\n23.0.0 (2023-01-01)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Add ``OpenSSL.SSL.X509StoreFlags.PARTIAL_CHAIN`` constant to allow for users\n to perform certificate verification on partial certificate chains.\n `#1166 `_\n- ``cryptography`` maximum version has been increased to 39.0.x.\n\n22.1.0 (2022-09-25)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Remove support for SSLv2 and SSLv3.\n- The minimum ``cryptography`` version is now 38.0.x (and we now pin releases\n against ``cryptography`` major versions to prevent future breakage)\n- The ``OpenSSL.crypto.X509StoreContextError`` exception has been refactored,\n changing its internal attributes.\n `#1133 `_\n\nDeprecations:\n^^^^^^^^^^^^^\n\n- ``OpenSSL.SSL.SSLeay_version`` is deprecated in favor of\n ``OpenSSL.SSL.OpenSSL_version``. The constants ``OpenSSL.SSL.SSLEAY_*`` are\n deprecated in favor of ``OpenSSL.SSL.OPENSSL_*``.\n\nChanges:\n^^^^^^^^\n\n- Add ``OpenSSL.SSL.Connection.set_verify`` and ``OpenSSL.SSL.Connection.get_verify_mode``\n to override the context object's verification flags.\n `#1073 `_\n- Add ``OpenSSL.SSL.Connection.use_certificate`` and ``OpenSSL.SSL.Connection.use_privatekey``\n to set a certificate per connection (and not just per context) `#1121 `_.\n\n22.0.0 (2022-01-29)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Drop support for Python 2.7.\n `#1047 `_\n- The minimum ``cryptography`` version is now 35.0.\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Expose wrappers for some `DTLS\n `_\n primitives. `#1026 `_\n\n21.0.0 (2021-09-28)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- The minimum ``cryptography`` version is now 3.3.\n- Drop support for Python 3.5\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Raise an error when an invalid ALPN value is set.\n `#993 `_\n- Added ``OpenSSL.SSL.Context.set_min_proto_version`` and ``OpenSSL.SSL.Context.set_max_proto_version``\n to set the minimum and maximum supported TLS version `#985 `_.\n- Updated ``to_cryptography`` and ``from_cryptography`` methods to support an upcoming release of ``cryptography`` without raising deprecation warnings.\n `#1030 `_\n\n20.0.1 (2020-12-15)\n-------------------\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDeprecations:\n^^^^^^^^^^^^^\n\nChanges:\n^^^^^^^^\n\n- Fixed compatibility with OpenSSL 1.1.0.\n\n20.0.0 (2020-11-27)\n-------------------\n\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- The minimum ``cryptography`` version is now 3.2.\n- Remove deprecated ``OpenSSL.tsafe`` module.\n- Removed deprecated ``OpenSSL.SSL.Context.set_npn_advertise_callback``, ``OpenSSL.SSL.Context.set_npn_select_callback``, and ``OpenSSL.SSL.Connection.get_next_proto_negotiated``.\n- Drop support for Python 3.4\n- Drop support for OpenSSL 1.0.1 and 1.0.2\n\nDeprecations:\n^^^^^^^^^^^^^\n\n- Deprecated ``OpenSSL.crypto.load_pkcs7`` and ``OpenSSL.crypto.load_pkcs12``.\n\nChanges:\n^^^^^^^^\n\n- Added a new optional ``chain`` parameter to ``OpenSSL.crypto.X509StoreContext()``\n where additional untrusted certificates can be specified to help chain building.\n `#948 `_\n- Added ``OpenSSL.crypto.X509Store.load_locations`` to set trusted\n certificate file bundles and/or directories for verification.\n `#943 `_\n- Added ``Context.set_keylog_callback`` to log key material.\n `#910 `_\n- Added ``OpenSSL.SSL.Connection.get_verified_chain`` to retrieve the\n verified certificate chain of the peer.\n `#894 `_.\n- Make verification callback optional in ``Context.set_verify``.\n If omitted, OpenSSL's default verification is used.\n `#933 `_\n- Fixed a bug that could truncate or cause a zero-length key error due to a\n null byte in private key passphrase in ``OpenSSL.crypto.load_privatekey``\n and ``OpenSSL.crypto.dump_privatekey``.\n `#947 `_\n\n19.1.0 (2019-11-18)\n-------------------\n\n\nBackward-incompatible changes:\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Removed deprecated ``ContextType``, ``ConnectionType``, ``PKeyType``, ``X509NameType``, ``X509ReqType``, ``X509Type``, ``X509StoreType``, ``CRLType``, ``PKCS7Type``, ``PKCS12Type``, and ``NetscapeSPKIType`` aliases.\n Use the classes without the ``Type`` suffix instead.\n `#814 `_\n- The minimum ``cryptography`` version is now 2.8 due to issues on macOS with a transitive dependency.\n `#875 `_\n\nDeprecations:\n^^^^^^^^^^^^^\n\n- Deprecated ``OpenSSL.SSL.Context.set_npn_advertise_callback``, ``OpenSSL.SSL.Context.set_npn_select_callback``, and ``OpenSSL.SSL.Connection.get_next_proto_negotiated``.\n ALPN should be used instead.\n `#820 `_\n\n\nChanges:\n^^^^^^^^\n\n- Support ``bytearray`` in ``SSL.Connection.send()`` by using cffi's from_buffer.\n `#852 `_\n- The ``OpenSSL.SSL.Context.set_alpn_select_callback`` can return a new ``NO_OVERLAPPING_PROTOCOLS`` sentinel value\n to allow a TLS handshake to complete without an application protocol.\n\n`Full changelog `_.\n\n", "home_page": "https://pyopenssl.org/", "author": "The pyOpenSSL developers", "author_email": "cryptography-dev@python.org", "license": "Apache License, Version 2.0", "classifier": [ "Development Status :: 6 - Mature", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Security :: Cryptography", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Networking" ], "requires_dist": [ "cryptography<51,>=49.0.0", "typing-extensions>=4.9; python_version < \"3.13\"", "pytest-rerunfailures; extra == \"test\"", "pretend; extra == \"test\"", "pytest>=3.0.1; extra == \"test\"", "sphinx!=5.2.0,!=5.2.0.post0,!=7.2.5; extra == \"docs\"", "sphinx_rtd_theme; extra == \"docs\"" ], "requires_python": ">=3.9", "project_url": [ "Source, https://github.com/pyca/pyopenssl" ], "provides_extra": [ "test", "docs" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl", "archive_info": { "hash": "sha256=d8168eccca828cbb2cd573675333f3bddd254313a9c42494b84c76b539e8ba25", "hashes": { "sha256": "d8168eccca828cbb2cd573675333f3bddd254313a9c42494b84c76b539e8ba25" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.1", "name": "s3transfer", "version": "0.19.2", "summary": "An Amazon S3 Transfer Manager", "description": "=====================================================\ns3transfer - An Amazon S3 Transfer Manager for Python\n=====================================================\n\nS3transfer is a Python library for managing Amazon S3 transfers.\nThis project is maintained and published by Amazon Web Services.\n\n.. note::\n\n This project is not currently GA. If you are planning to use this code in\n production, make sure to lock to a minor version as interfaces may break\n from minor version to minor version. For a basic, stable interface of\n s3transfer, try the interfaces exposed in `boto3 `__\n", "home_page": "https://github.com/boto/s3transfer", "author": "Amazon Web Services", "author_email": "kyknapp1@gmail.com", "license": "Apache License 2.0", "classifier": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Natural Language :: English", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Free Threading :: 2 - Beta" ], "requires_dist": [ "botocore (<2.0a.0,>=1.37.4)", "botocore[crt] (<2.0a.0,>=1.37.4) ; extra == 'crt'" ], "requires_python": ">= 3.10", "provides_extra": [ "crt" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/b1/db/dceb9dd5b231e1da801793f8acc9f3c52a7e1afe40bb1aae37e02b0faad5/cffi-2.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", "archive_info": { "hash": "sha256=c1453022f490d2459a11819d83ad1d586e9ff65a12ac3e705ffebd46d3685dcf", "hashes": { "sha256": "c1453022f490d2459a11819d83ad1d586e9ff65a12ac3e705ffebd46d3685dcf" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.4", "name": "cffi", "version": "2.1.1", "dynamic": [ "license-file" ], "summary": "Foreign Function Interface for Python calling C code.", "description": "[![GitHub Actions Status](https://github.com/python-cffi/cffi/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/python-cffi/cffi/actions/workflows/ci.yaml?query=branch%3Amain++)\n[![PyPI version](https://img.shields.io/pypi/v/cffi.svg)](https://pypi.org/project/cffi)\n[![Read the Docs](https://img.shields.io/badge/docs-latest-blue.svg)][Documentation]\n\n\nCFFI\n====\n\nForeign Function Interface for Python calling C code.\n\nPlease see the [Documentation] or uncompiled in the `doc/` subdirectory.\n\nDownload\n--------\n\n[Download page](https://github.com/python-cffi/cffi/releases)\n\nSource Code\n-----------\n\nSource code is publicly available on\n[GitHub](https://github.com/python-cffi/cffi).\n\nContact\n-------\n\n[Mailing list](https://groups.google.com/forum/#!forum/python-cffi)\n\nTesting/development tips\n------------------------\n\nAfter `git clone` or `wget && tar`, we will get a directory called `cffi` or `cffi-x.x.x`. We call it `repo-directory`. To run tests under CPython, run the following in the `repo-directory`:\n\n pip install pytest\n pip install -e . # editable install of CFFI for local development\n pytest src/c/ testing/\n\n[Documentation]: http://cffi.readthedocs.org/\n", "description_content_type": "text/markdown", "author": "Armin Rigo, Maciej Fijalkowski", "maintainer": "Matt Davis, Matt Clay", "classifier": [ "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3.15", "Programming Language :: Python :: Free Threading :: 2 - Beta", "Programming Language :: Python :: Implementation :: CPython" ], "requires_dist": [ "pycparser; implementation_name != \"PyPy\"" ], "requires_python": ">=3.10", "project_url": [ "Documentation, https://cffi.readthedocs.io/", "Changelog, https://cffi.readthedocs.io/en/latest/whatsnew.html", "Download, https://github.com/python-cffi/cffi/releases", "Contact, https://groups.google.com/forum/#!forum/python-cffi", "Source Code, https://github.com/python-cffi/cffi", "Issue Tracker, https://github.com/python-cffi/cffi/issues" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", "archive_info": { "hash": "sha256=a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", "hashes": { "sha256": "a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.1", "name": "python-dateutil", "version": "2.9.0.post0", "summary": "Extensions to the standard Python datetime module", "description": "dateutil - powerful extensions to datetime\n==========================================\n\n|pypi| |support| |licence|\n\n|gitter| |readthedocs|\n\n|travis| |appveyor| |pipelines| |coverage|\n\n.. |pypi| image:: https://img.shields.io/pypi/v/python-dateutil.svg?style=flat-square\n :target: https://pypi.org/project/python-dateutil/\n :alt: pypi version\n\n.. |support| image:: https://img.shields.io/pypi/pyversions/python-dateutil.svg?style=flat-square\n :target: https://pypi.org/project/python-dateutil/\n :alt: supported Python version\n\n.. |travis| image:: https://img.shields.io/travis/dateutil/dateutil/master.svg?style=flat-square&label=Travis%20Build\n :target: https://travis-ci.org/dateutil/dateutil\n :alt: travis build status\n\n.. |appveyor| image:: https://img.shields.io/appveyor/ci/dateutil/dateutil/master.svg?style=flat-square&logo=appveyor\n :target: https://ci.appveyor.com/project/dateutil/dateutil\n :alt: appveyor build status\n\n.. |pipelines| image:: https://dev.azure.com/pythondateutilazure/dateutil/_apis/build/status/dateutil.dateutil?branchName=master\n :target: https://dev.azure.com/pythondateutilazure/dateutil/_build/latest?definitionId=1&branchName=master\n :alt: azure pipelines build status\n\n.. |coverage| image:: https://codecov.io/gh/dateutil/dateutil/branch/master/graphs/badge.svg?branch=master\n :target: https://codecov.io/gh/dateutil/dateutil?branch=master\n :alt: Code coverage\n\n.. |gitter| image:: https://badges.gitter.im/dateutil/dateutil.svg\n :alt: Join the chat at https://gitter.im/dateutil/dateutil\n :target: https://gitter.im/dateutil/dateutil\n\n.. |licence| image:: https://img.shields.io/pypi/l/python-dateutil.svg?style=flat-square\n :target: https://pypi.org/project/python-dateutil/\n :alt: licence\n\n.. |readthedocs| image:: https://img.shields.io/readthedocs/dateutil/latest.svg?style=flat-square&label=Read%20the%20Docs\n :alt: Read the documentation at https://dateutil.readthedocs.io/en/latest/\n :target: https://dateutil.readthedocs.io/en/latest/\n\nThe `dateutil` module provides powerful extensions to\nthe standard `datetime` module, available in Python.\n\nInstallation\n============\n`dateutil` can be installed from PyPI using `pip` (note that the package name is\ndifferent from the importable name)::\n\n pip install python-dateutil\n\nDownload\n========\ndateutil is available on PyPI\nhttps://pypi.org/project/python-dateutil/\n\nThe documentation is hosted at:\nhttps://dateutil.readthedocs.io/en/stable/\n\nCode\n====\nThe code and issue tracker are hosted on GitHub:\nhttps://github.com/dateutil/dateutil/\n\nFeatures\n========\n\n* Computing of relative deltas (next month, next year,\n next Monday, last week of month, etc);\n* Computing of relative deltas between two given\n date and/or datetime objects;\n* Computing of dates based on very flexible recurrence rules,\n using a superset of the `iCalendar `_\n specification. Parsing of RFC strings is supported as well.\n* Generic parsing of dates in almost any string format;\n* Timezone (tzinfo) implementations for tzfile(5) format\n files (/etc/localtime, /usr/share/zoneinfo, etc), TZ\n environment string (in all known formats), iCalendar\n format files, given ranges (with help from relative deltas),\n local machine timezone, fixed offset timezone, UTC timezone,\n and Windows registry-based time zones.\n* Internal up-to-date world timezone information based on\n Olson's database.\n* Computing of Easter Sunday dates for any given year,\n using Western, Orthodox or Julian algorithms;\n* A comprehensive test suite.\n\nQuick example\n=============\nHere's a snapshot, just to give an idea about the power of the\npackage. For more examples, look at the documentation.\n\nSuppose you want to know how much time is left, in\nyears/months/days/etc, before the next easter happening on a\nyear with a Friday 13th in August, and you want to get today's\ndate out of the \"date\" unix system command. Here is the code:\n\n.. code-block:: python3\n\n >>> from dateutil.relativedelta import *\n >>> from dateutil.easter import *\n >>> from dateutil.rrule import *\n >>> from dateutil.parser import *\n >>> from datetime import *\n >>> now = parse(\"Sat Oct 11 17:13:46 UTC 2003\")\n >>> today = now.date()\n >>> year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year\n >>> rdelta = relativedelta(easter(year), today)\n >>> print(\"Today is: %s\" % today)\n Today is: 2003-10-11\n >>> print(\"Year with next Aug 13th on a Friday is: %s\" % year)\n Year with next Aug 13th on a Friday is: 2004\n >>> print(\"How far is the Easter of that year: %s\" % rdelta)\n How far is the Easter of that year: relativedelta(months=+6)\n >>> print(\"And the Easter of that year is: %s\" % (today+rdelta))\n And the Easter of that year is: 2004-04-11\n\nBeing exactly 6 months ahead was **really** a coincidence :)\n\nContributing\n============\n\nWe welcome many types of contributions - bug reports, pull requests (code, infrastructure or documentation fixes). For more information about how to contribute to the project, see the ``CONTRIBUTING.md`` file in the repository.\n\n\nAuthor\n======\nThe dateutil module was written by Gustavo Niemeyer \nin 2003.\n\nIt is maintained by:\n\n* Gustavo Niemeyer 2003-2011\n* Tomi Pieviläinen 2012-2014\n* Yaron de Leeuw 2014-2016\n* Paul Ganssle 2015-\n\nStarting with version 2.4.1 and running until 2.8.2, all source and binary\ndistributions will be signed by a PGP key that has, at the very least, been\nsigned by the key which made the previous release. A table of release signing\nkeys can be found below:\n\n=========== ============================\nReleases Signing key fingerprint\n=========== ============================\n2.4.1-2.8.2 `6B49 ACBA DCF6 BD1C A206 67AB CD54 FCE3 D964 BEFB`_\n=========== ============================\n\nNew releases *may* have signed tags, but binary and source distributions\nuploaded to PyPI will no longer have GPG signatures attached.\n\nContact\n=======\nOur mailing list is available at `dateutil@python.org `_. As it is hosted by the PSF, it is subject to the `PSF code of\nconduct `_.\n\nLicense\n=======\n\nAll contributions after December 1, 2017 released under dual license - either `Apache 2.0 License `_ or the `BSD 3-Clause License `_. Contributions before December 1, 2017 - except those those explicitly relicensed - are released only under the BSD 3-Clause License.\n\n\n.. _6B49 ACBA DCF6 BD1C A206 67AB CD54 FCE3 D964 BEFB:\n https://pgp.mit.edu/pks/lookup?op=vindex&search=0xCD54FCE3D964BEFB\n", "description_content_type": "text/x-rst", "home_page": "https://github.com/dateutil/dateutil", "author": "Gustavo Niemeyer", "author_email": "gustavo@niemeyer.net", "maintainer": "Paul Ganssle", "maintainer_email": "dateutil@python.org", "license": "Dual License", "classifier": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Software Development :: Libraries" ], "requires_dist": [ "six >=1.5" ], "requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7", "project_url": [ "Documentation, https://dateutil.readthedocs.io/en/stable/", "Source, https://github.com/dateutil/dateutil" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", "archive_info": { "hash": "sha256=481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", "hashes": { "sha256": "481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.4", "name": "typing_extensions", "version": "4.16.0", "summary": "Backported and Experimental Type Hints for Python 3.9+", "description": "# Typing Extensions\n\n[![Chat at https://gitter.im/python/typing](https://badges.gitter.im/python/typing.svg)](https://gitter.im/python/typing)\n\n[Documentation](https://typing-extensions.readthedocs.io/en/latest/#) –\n[PyPI](https://pypi.org/project/typing-extensions/)\n\n## Overview\n\nThe `typing_extensions` module serves two related purposes:\n\n- Enable use of new type system features on older Python versions. For example,\n `typing.TypeGuard` is new in Python 3.10, but `typing_extensions` allows\n users on previous Python versions to use it too.\n- Enable experimentation with new type system PEPs before they are accepted and\n added to the `typing` module.\n\n`typing_extensions` is treated specially by static type checkers such as\nmypy and pyright. Objects defined in `typing_extensions` are treated the same\nway as equivalent forms in `typing`.\n\n`typing_extensions` uses\n[Semantic Versioning](https://semver.org/). The\nmajor version will be incremented only for backwards-incompatible changes.\nTherefore, it's safe to depend\non `typing_extensions` like this: `typing_extensions ~=x.y`,\nwhere `x.y` is the first version that includes all features you need.\n[This](https://packaging.python.org/en/latest/specifications/version-specifiers/#compatible-release)\nis equivalent to `typing_extensions >=x.y, <(x+1)`. Do not depend on `~= x.y.z`\nunless you really know what you're doing; that defeats the purpose of\nsemantic versioning.\n\n## Included items\n\nSee [the documentation](https://typing-extensions.readthedocs.io/en/latest/#) for a\ncomplete listing of module contents.\n\n## Contributing\n\nSee [CONTRIBUTING.md](https://github.com/python/typing_extensions/blob/main/CONTRIBUTING.md)\nfor how to contribute to `typing_extensions`.\n\n", "description_content_type": "text/markdown", "keywords": [ "annotations", "backport", "checker", "checking", "function", "hinting", "hints", "type", "typechecking", "typehinting", "typehints", "typing" ], "author_email": "\"Guido van Rossum, Jukka Lehtosalo, Łukasz Langa, Michael Lee\" ", "classifier": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: 3.15", "Topic :: Software Development" ], "requires_python": ">=3.9", "project_url": [ "Bug Tracker, https://github.com/python/typing_extensions/issues", "Changes, https://github.com/python/typing_extensions/blob/main/CHANGELOG.md", "Documentation, https://typing-extensions.readthedocs.io/", "Home, https://github.com/python/typing_extensions", "Q & A, https://github.com/python/typing/discussions", "Repository, https://github.com/python/typing_extensions" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", "archive_info": { "hash": "sha256=9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", "hashes": { "sha256": "9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.4", "name": "urllib3", "version": "2.7.0", "summary": "HTTP library with thread-safe connection pooling, file post, and more.", "description": "

\n\n![urllib3](https://github.com/urllib3/urllib3/raw/main/docs/_static/banner_github.svg)\n\n

\n\n

\n \"PyPI\n \"Python\n \"Join\n \"Coverage\n \"Build\n \"Documentation
\n \"OpenSSF\n \"SLSA\n \"CII\n

\n\nurllib3 is a powerful, *user-friendly* HTTP client for Python.\nurllib3 brings many critical features that are missing from the Python\nstandard libraries:\n\n- Thread safety.\n- Connection pooling.\n- Client-side SSL/TLS verification.\n- File uploads with multipart encoding.\n- Helpers for retrying requests and dealing with HTTP redirects.\n- Support for gzip, deflate, brotli, and zstd encoding.\n- Proxy support for HTTP and SOCKS.\n- 100% test coverage.\n\n... and many more features, but most importantly: Our maintainers have a 15+\nyear track record of maintaining urllib3 with the highest code standards and\nattention to security and safety.\n\n[Much of the Python ecosystem already uses urllib3](https://urllib3.readthedocs.io/en/stable/#who-uses)\nand you should too.\n\n\n## Installing\n\nurllib3 can be installed with [pip](https://pip.pypa.io):\n\n```bash\n$ python -m pip install urllib3\n```\n\nAlternatively, you can grab the latest source code from [GitHub](https://github.com/urllib3/urllib3):\n\n```bash\n$ git clone https://github.com/urllib3/urllib3.git\n$ cd urllib3\n$ pip install .\n```\n\n## Getting Started\n\nurllib3 is easy to use:\n\n```python3\n>>> import urllib3\n>>> resp = urllib3.request(\"GET\", \"http://httpbin.org/robots.txt\")\n>>> resp.status\n200\n>>> resp.data\nb\"User-agent: *\\nDisallow: /deny\\n\"\n```\n\nurllib3 has usage and reference documentation at [urllib3.readthedocs.io](https://urllib3.readthedocs.io).\n\n\n## Community\n\nurllib3 has a [community Discord channel](https://discord.gg/urllib3) for asking questions and\ncollaborating with other contributors. Drop by and say hello 👋\n\n\n## Contributing\n\nurllib3 happily accepts contributions. Please see our\n[contributing documentation](https://urllib3.readthedocs.io/en/latest/contributing.html)\nfor some tips on getting started.\n\n\n## Security Disclosures\n\nTo report a security vulnerability, please use the\n[Tidelift security contact](https://tidelift.com/security).\nTidelift will coordinate the fix and disclosure with maintainers.\n\n\n## Maintainers\n\nMeet our maintainers since 2008:\n\n- Current Lead: [@illia-v](https://github.com/illia-v) (Illia Volochii)\n- [@sethmlarson](https://github.com/sethmlarson) (Seth M. Larson)\n- [@pquentin](https://github.com/pquentin) (Quentin Pradet)\n- [@theacodes](https://github.com/theacodes) (Thea Flowers)\n- [@haikuginger](https://github.com/haikuginger) (Jess Shapiro)\n- [@lukasa](https://github.com/lukasa) (Cory Benfield)\n- [@sigmavirus24](https://github.com/sigmavirus24) (Ian Stapleton Cordasco)\n- [@shazow](https://github.com/shazow) (Andrey Petrov)\n\n👋\n\n\n## Sponsorship\n\nIf your company benefits from this library, please consider [sponsoring its\ndevelopment](https://urllib3.readthedocs.io/en/latest/sponsors.html).\n\n\n## For Enterprise\n\nProfessional support for urllib3 is available as part of the [Tidelift\nSubscription][1]. Tidelift gives software development teams a single source for\npurchasing and maintaining their software, with professional grade assurances\nfrom the experts who know it best, while seamlessly integrating with existing\ntools.\n\n[1]: https://tidelift.com/subscription/pkg/pypi-urllib3?utm_source=pypi-urllib3&utm_medium=referral&utm_campaign=readme\n", "description_content_type": "text/markdown", "keywords": [ "filepost", "http", "httplib", "https", "pooling", "ssl", "threadsafe", "urllib" ], "author_email": "Andrey Petrov ", "maintainer_email": "Seth Michael Larson , Quentin Pradet , Illia Volochii ", "classifier": [ "Environment :: Web Environment", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Free Threading :: 2 - Beta", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries" ], "requires_dist": [ "brotli>=1.2.0; (platform_python_implementation == 'CPython') and extra == 'brotli'", "brotlicffi>=1.2.0.0; (platform_python_implementation != 'CPython') and extra == 'brotli'", "h2<5,>=4; extra == 'h2'", "pysocks!=1.5.7,<2.0,>=1.5.6; extra == 'socks'", "backports-zstd>=1.0.0; (python_version < '3.14') and extra == 'zstd'" ], "requires_python": ">=3.10", "project_url": [ "Changelog, https://github.com/urllib3/urllib3/blob/main/CHANGES.rst", "Documentation, https://urllib3.readthedocs.io", "Code, https://github.com/urllib3/urllib3", "Issue tracker, https://github.com/urllib3/urllib3/issues" ], "provides_extra": [ "brotli", "h2", "socks", "zstd" ] } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", "archive_info": { "hash": "sha256=4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", "hashes": { "sha256": "4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.1", "name": "six", "version": "1.17.0", "summary": "Python 2 and 3 compatibility utilities", "description": ".. image:: https://img.shields.io/pypi/v/six.svg\n :target: https://pypi.org/project/six/\n :alt: six on PyPI\n\n.. image:: https://readthedocs.org/projects/six/badge/?version=latest\n :target: https://six.readthedocs.io/\n :alt: six's documentation on Read the Docs\n\n.. image:: https://img.shields.io/badge/license-MIT-green.svg\n :target: https://github.com/benjaminp/six/blob/master/LICENSE\n :alt: MIT License badge\n\nSix is a Python 2 and 3 compatibility library. It provides utility functions\nfor smoothing over the differences between the Python versions with the goal of\nwriting Python code that is compatible on both Python versions. See the\ndocumentation for more information on what is provided.\n\nSix supports Python 2.7 and 3.3+. It is contained in only one Python\nfile, so it can be easily copied into your project. (The copyright and license\nnotice must be retained.)\n\nOnline documentation is at https://six.readthedocs.io/.\n\nBugs can be reported to https://github.com/benjaminp/six. The code can also\nbe found there.\n", "home_page": "https://github.com/benjaminp/six", "author": "Benjamin Peterson", "author_email": "benjamin@python.org", "license": "MIT", "classifier": [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Topic :: Software Development :: Libraries", "Topic :: Utilities" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" } }, { "download_info": { "url": "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", "archive_info": { "hash": "sha256=b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", "hashes": { "sha256": "b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992" } } }, "is_direct": false, "is_yanked": false, "requested": false, "metadata": { "metadata_version": "2.4", "name": "pycparser", "version": "3.0", "dynamic": [ "license-file" ], "summary": "C parser in Python", "description": "===============\npycparser v3.00\n===============\n\n\n.. image:: https://github.com/eliben/pycparser/workflows/pycparser-tests/badge.svg\n :align: center\n :target: https://github.com/eliben/pycparser/actions\n\n----\n\n.. contents::\n :backlinks: none\n\n.. sectnum::\n\nIntroduction\n============\n\nWhat is pycparser?\n------------------\n\n**pycparser** is a parser for the C language, written in pure Python. It is a\nmodule designed to be easily integrated into applications that need to parse\nC source code.\n\nWhat is it good for?\n--------------------\n\nAnything that needs C code to be parsed. The following are some uses for\n**pycparser**, taken from real user reports:\n\n* C code obfuscator\n* Front-end for various specialized C compilers\n* Static code checker\n* Automatic unit-test discovery\n* Adding specialized extensions to the C language\n\nOne of the most popular uses of **pycparser** is in the `cffi\n`_ library, which uses it to parse the\ndeclarations of C functions and types in order to auto-generate FFIs.\n\n**pycparser** is unique in the sense that it's written in pure Python - a very\nhigh level language that's easy to experiment with and tweak. To people familiar\nwith Lex and Yacc, **pycparser**'s code will be simple to understand. It also\nhas no external dependencies (except for a Python interpreter), making it very\nsimple to install and deploy.\n\nWhich version of C does pycparser support?\n------------------------------------------\n\n**pycparser** aims to support the full C99 language (according to the standard\nISO/IEC 9899). Some features from C11 are also supported, and patches to support\nmore are welcome.\n\n**pycparser** supports very few GCC extensions, but it's fairly easy to set\nthings up so that it parses code with a lot of GCC-isms successfully. See the\n`FAQ `_ for more details.\n\nWhat grammar does pycparser follow?\n-----------------------------------\n\n**pycparser** very closely follows the C grammar provided in Annex A of the C99\nstandard (ISO/IEC 9899).\n\nHow is pycparser licensed?\n--------------------------\n\n`BSD license `_.\n\nContact details\n---------------\n\nFor reporting problems with **pycparser** or submitting feature requests, please\nopen an `issue `_, or submit a\npull request.\n\n\nInstalling\n==========\n\nPrerequisites\n-------------\n\n**pycparser** is being tested with modern versions of Python on\nLinux, macOS and Windows. See `the CI dashboard `__\nfor details.\n\n**pycparser** has no external dependencies.\n\nInstallation process\n--------------------\n\nThe recommended way to install **pycparser** is with ``pip``::\n\n > pip install pycparser\n\nUsing\n=====\n\nInteraction with the C preprocessor\n-----------------------------------\n\nIn order to be compilable, C code must be preprocessed by the C preprocessor -\n``cpp``. A compatible ``cpp`` handles preprocessing directives like ``#include`` and\n``#define``, removes comments, and performs other minor tasks that prepare the C\ncode for compilation.\n\nFor all but the most trivial snippets of C code **pycparser**, like a C\ncompiler, must receive preprocessed C code in order to function correctly. If\nyou import the top-level ``parse_file`` function from the **pycparser** package,\nit will interact with ``cpp`` for you, as long as it's in your PATH, or you\nprovide a path to it.\n\nNote also that you can use ``gcc -E`` or ``clang -E`` instead of ``cpp``. See\nthe ``using_gcc_E_libc.py`` example for more details. Windows users can download\nand install a binary build of Clang for Windows `from this website\n`_.\n\nWhat about the standard C library headers?\n------------------------------------------\n\nC code almost always ``#include``\\s various header files from the standard C\nlibrary, like ``stdio.h``. While (with some effort) **pycparser** can be made to\nparse the standard headers from any C compiler, it's much simpler to use the\nprovided \"fake\" standard includes for C11 in ``utils/fake_libc_include``. These\nare standard C header files that contain only the bare necessities to allow\nvalid parsing of the files that use them. As a bonus, since they're minimal, it\ncan significantly improve the performance of parsing large C files.\n\nThe key point to understand here is that **pycparser** doesn't really care about\nthe semantics of types. It only needs to know whether some token encountered in\nthe source is a previously defined type. This is essential in order to be able\nto parse C correctly.\n\nSee `this blog post\n`_\nfor more details.\n\nNote that the fake headers are not included in the ``pip`` package nor installed\nvia the package build (`#224 `_).\n\nBasic usage\n-----------\n\nTake a look at the |examples|_ directory of the distribution for a few examples\nof using **pycparser**. These should be enough to get you started. Please note\nthat most realistic C code samples would require running the C preprocessor\nbefore passing the code to **pycparser**; see the previous sections for more\ndetails.\n\n.. |examples| replace:: ``examples``\n.. _examples: examples\n\n\nAdvanced usage\n--------------\n\nThe public interface of **pycparser** is well documented with comments in\n``pycparser/c_parser.py``. For a detailed overview of the various AST nodes\ncreated by the parser, see ``pycparser/_c_ast.cfg``.\n\nThere's also a `FAQ available here `_.\nIn any case, you can always drop me an `email `_ for help.\n\n\nModifying\n=========\n\nThere are a few points to keep in mind when modifying **pycparser**:\n\n* The code for **pycparser**'s AST nodes is automatically generated from a\n configuration file - ``_c_ast.cfg``, by ``_ast_gen.py``. If you modify the AST\n configuration, make sure to re-generate the code. This can be done by running\n the ``_ast_gen.py`` script (from the repository root or the\n ``pycparser`` directory).\n* Read the docstring in the constructor of the ``CParser`` class for details\n on configuration and compatibility arguments.\n\n\nPackage contents\n================\n\nOnce you unzip the ``pycparser`` package, you'll see the following files and\ndirectories:\n\nREADME.rst:\n This README file.\n\nLICENSE:\n The pycparser license\n\nsetup.py:\n Legacy installation script (build metadata lives in ``pyproject.toml``).\n\npyproject.toml:\n Package metadata and build configuration.\n\nexamples/:\n A directory with some examples of using **pycparser**\n\npycparser/:\n The **pycparser** module source code.\n\ntests/:\n Unit tests.\n\nutils/fake_libc_include:\n Minimal standard C library include files that should allow to parse any C code.\n Note that these headers now include C11 code, so they may not work when the\n preprocessor is configured to an earlier C standard (like ``-std=c99``).\n\nutils/internal/:\n Internal utilities for my own use. You probably don't need them.\n\n\nContributors\n============\n\nSome people have contributed to **pycparser** by opening issues on bugs they've\nfound and/or submitting patches. The list of contributors is in the CONTRIBUTORS\nfile in the source distribution. After **pycparser** moved to Github I stopped\nupdating this list because Github does a much better job at tracking\ncontributions.\n", "description_content_type": "text/x-rst", "author_email": "Eli Bendersky ", "maintainer_email": "Eli Bendersky ", "classifier": [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14" ], "requires_python": ">=3.10", "project_url": [ "Homepage, https://github.com/eliben/pycparser" ] } } ], "environment": { "implementation_name": "cpython", "implementation_version": "3.12.3", "os_name": "posix", "platform_machine": "x86_64", "platform_release": "6.8.0-136-generic", "platform_system": "Linux", "platform_version": "#136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:53:05 UTC 2026", "python_full_version": "3.12.3", "platform_python_implementation": "CPython", "python_version": "3.12", "sys_platform": "linux" } }