Skip to main content

No project description provided

Project description

Cedar Python

CI (main)  PyPI version

cedarpy helps you use the (Rust) Cedar Policy library from Python. You can use cedarpy to:

  • check whether a request is authorized by the Cedar Policy engine
  • validate policies against a schema
  • format policies

cedarpy releases correspond to the following Cedar Policy engine versions:

Cedar Policy (engine) releasecedarpy releasecedarpy branch
v4.8.2v4.8.1main
v4.7.2v4.7.1release/4.7.x
v4.1.0v4.1.0release/4.1.x
v2.2.0v0.4.1release/2.2.x

Beginning with v4.1.0, cedarpy's version number indicates the Cedar Policy engine major and minor version that it is based on. cedarpy increases the patch number when releasing backwards-compatible changes and bug fixes. So the cedarpy and Cedar Engine patch versions can and will diverge. Select the cedarpy version that provides the Cedar Policy language and engine features you need.

cedarpy packages are available for the following platforms:

Operating SystemProcessor ArchitecturesPython
Linuxx86_64, aarch643.9 - 3.14
Macx86_64, aarch643.11 - 3.14
Windowsx86_643.9 - 3.14

Note: This project is not officially supported by AWS or the Cedar Policy team.

Using the library

Releases of cedarpy are available on PyPi. You can install the latest release with:

pip install cedarpy

(See the Developing section for how to use artifacts you've built locally.)

Authorizing access with Cedar policies in Python

Now you can use the library to authorize access with Cedar from your Python project using the is_authorized function. Here's an example of basic use:

from cedarpy import is_authorized, AuthzResult, Decision

policies: str = "//a string containing cedar policies"
entities: list = [  # a list of Cedar entities; can also be a json-formatted string of Cedar entities
    {"uid": {"__entity": { "type" : "User", "id" : "alice" }}, "attrs": {}, "parents": []}
    # ...
]
request = {
    "principal": 'User::"bob"',
    "action": 'Action::"view"',
    "resource": 'Photo::"1234-abcd"',
    "context": {}
}

authz_result: AuthzResult = is_authorized(request, policies, entities)

# so you can assert on the decision like:
assert Decision.Allow == authz_result.decision

# or use the 'allowed' convenience method 
assert authz_result.allowed

# or even via AuthzResult's attribute subscripting support 
assert authz_result['allowed']

The AuthzResult class also provides diagnostics and metrics for the access evaluation request.

See the unit tests for more examples of use and expected behavior.

Authorize a batch of requests

You can also authorize a batch of requests with the is_authorized_batch function. is_authorized_batch accepts a list of requests to evaluate against shared policies, entities, and schema.

Batch authorization is often much more efficient (+10x) than processing authorization requests one by one with is_authorized. This is because the most expensive part of the authorization process is transforming the policies, entities, and schema into objects that Cedar can evaluate. See RFC: support batch authorization requests for details.

Here's an example of how to use is_authorized_batch and the optional request-result correlation_id:

batch_id:str = randomstr()
requests: List[dict] = []
for action_name in action_names:
    requests.append({
        "principal": f'User::"{user_id}"',
        "action": f'Action::"{action_name}"',
        "resource": f'Resource::"{resource_id}"',
        "context": context_keys,
        "correlation_id": f"authz_req::{batch_id}-{action_name}"
    })

# ... resolve get policies, entities, schema ...

# process authorizations in batch
authz_results: List[AuthzResult] = is_authorized_batch(requests=requests, policies=policies, entities=entities, schema=schema)

# ... verify results came back in correct order via correlation_id ...
for request, result, in zip(requests, authz_results):
    assert request.get('correlation_id') == result.correlation_id

cedar-py returns the list of AuthzResult objects in the same order as the list of requests provided in the batch.

The above example also supplies an optional correlation_id in the request so that you can verify results are returned in the correct order or otherwise map a request to a result.

Validating policies against a schema

You can use validate_policies to validate Cedar policies against a schema before deploying them. Validation catches common mistakes like typos in entity types, invalid actions, type mismatches, and unsafe access to optional attributes—errors that would otherwise cause policies to silently fail at runtime.

This is particularly useful in CI/CD pipelines to catch policy errors before they reach production. See the Cedar validation documentation for details on what the validator checks.

Here's an example of basic use:

from cedarpy import validate_policies, ValidationResult

policies: str = "// a string containing Cedar policies"
schema: str = "// a Cedar schema as JSON string, Cedar schema string, or Python dict"

result: ValidationResult = validate_policies(policies, schema)

# so you can check validation passed like:
assert result.validation_passed

# or use ValidationResult in a boolean context
assert result  # True if validation passed

# and if validation fails, iterate over errors:
for error in result.errors:
    print(f"error: {error}")

The ValidationResult class provides the validation outcome and a list of ValidationError objects when validation fails.

See the unit tests for more examples of use and expected behavior.

Formatting Cedar policies

You can use format_policies to pretty-print Cedar policies according to convention.

from cedarpy import format_policies

policies: str = """
    permit(
        principal,
        action == Action::"edit",
        resource
    )
    when {
        resource.owner == principal
    };
"""

print(format_policies(policies))
# permit (
#   principal,
#   action == Action::"edit",
#   resource
# )
# when { resource.owner == principal };

Developing

You'll need a few things to get started:

  • Python +3.9
  • Rust and cargo

This project is built on the PyO3 and maturin projects. These projects are designed to enable Python to use Rust code and vice versa.

The most common development commands are in the Makefile

Create virtual env

First create a Python virtual environment for this project with: make venv-dev

In addition to creating a dedicated virtual environment, this will install cedar-py's dependencies.

If this works you should be able to run the following command:

maturin --help

Build and run cedar-py tests

Ensure the cedar-py virtual environment is active by sourcing it in your shell:

source venv-dev/bin/activate

Now run:

make quick

The make quick command will build the Rust source code with maturin and run the project's tests with pytest.

If all goes well, you should see output like:

(venv-dev) swedish-chef:cedar-py skuenzli$ make quick
Performing quick build
set -e ;\
	maturin develop ;\
	pytest
📦 Including license file "/path/to/cedar-py/LICENSE"
🔗 Found pyo3 bindings
🐍 Found CPython 3.9 at /path/to/cedar-py/venv-dev/bin/python
📡 Using build options features from pyproject.toml
Ignoring maturin: markers 'extra == "dev"' don't match your environment
Ignoring pip-tools: markers 'extra == "dev"' don't match your environment
Ignoring pytest: markers 'extra == "dev"' don't match your environment
💻 Using `MACOSX_DEPLOYMENT_TARGET=11.0` for aarch64-apple-darwin by default
   Compiling cedarpy v0.1.0 (/path/to/cedar-py)
    Finished dev [unoptimized + debuginfo] target(s) in 3.06s
📦 Built wheel for CPython 3.9 to /var/folders/k2/tnw8n1c54tv8nt4557pfx3440000gp/T/.tmpO6aj6c/cedarpy-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
🛠 Installed cedarpy-0.1.0
================================================================================================ test session starts ================================================================================================
platform darwin -- Python 3.9.12, pytest-7.4.0, pluggy-1.2.0
rootdir: /path/to/cedar-py
configfile: pyproject.toml
testpaths: tests/unit
collected 10 items

tests/unit/test_authorize.py::AuthorizeTestCase::test_authorize_basic_ALLOW PASSED                                                                                                                            [ 10%]
tests/unit/test_authorize.py::AuthorizeTestCase::test_authorize_basic_DENY PASSED                                                                                                                             [ 20%]

... snip ... # a bunch of tests passing - please write more!
tests/unit/test_import_module.py::InvokeModuleTestFunctionTestCase::test_invoke_parse_test_policy PASSED                                                                                                      [100%]

================================================================================================ 10 passed in 0.51s =================================================================================================

Integration tests

This project supports validating correctness with official Cedar integration tests. To run those tests you'll need to retrieve the cedar-integration-tests data with:

make submodules

Then you can run:

make integration-tests

cedar-py currently passes 69 of the 74 tests defined in the example_use_cases, multi, ip, and decimal suites. The integration tests also validate policies against schemas when shouldValidate is set in the test definition. See test_cedar_integration_tests.py for details.

Using locally-built artifacts

If you used make quick above, then a development build of the cedarpy module will already be installed in the virtual environment.

If you want to use your local cedarpy changes in another Python environment, you'll need to build a release with:

make release

The release process will build a wheel and output it into target/wheels/

Now you can install that file with pip, e.g.:

pip install --force-reinstall /path/to/cedar-py/target/wheels/ccedarpy-*.whl

Contributing

This project is in its early stages and contributions are welcome. Please check the project's GitHub issues for work we've already identified.

Some ways to contribute are:

  • Use the project and report experience and issues
  • Document usage and limitations
  • Enhance the library with additional functionality you need
  • Add test cases, particularly those from cedar-integration-tests

You can reach people interested in this project in the #cedar-py channel of the Cedar Policy Slack workspace.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cedarpy-4.8.1.tar.gz (197.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cedarpy-4.8.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

cedarpy-4.8.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

cedarpy-4.8.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

cedarpy-4.8.1-cp314-cp314-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.14Windows x86-64

cedarpy-4.8.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

cedarpy-4.8.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

cedarpy-4.8.1-cp314-cp314-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

cedarpy-4.8.1-cp314-cp314-macosx_10_12_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

cedarpy-4.8.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

cedarpy-4.8.1-cp313-cp313-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.13Windows x86-64

cedarpy-4.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

cedarpy-4.8.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

cedarpy-4.8.1-cp313-cp313-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cedarpy-4.8.1-cp313-cp313-macosx_10_12_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

cedarpy-4.8.1-cp312-cp312-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.12Windows x86-64

cedarpy-4.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cedarpy-4.8.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

cedarpy-4.8.1-cp312-cp312-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cedarpy-4.8.1-cp312-cp312-macosx_10_12_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

cedarpy-4.8.1-cp311-cp311-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.11Windows x86-64

cedarpy-4.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cedarpy-4.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

cedarpy-4.8.1-cp311-cp311-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cedarpy-4.8.1-cp311-cp311-macosx_10_12_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

cedarpy-4.8.1-cp310-cp310-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.10Windows x86-64

cedarpy-4.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cedarpy-4.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

cedarpy-4.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cedarpy-4.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

File details

Details for the file cedarpy-4.8.1.tar.gz.

File metadata

  • Download URL: cedarpy-4.8.1.tar.gz
  • Upload date:
  • Size: 197.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for cedarpy-4.8.1.tar.gz
Algorithm Hash digest
SHA256 cb2e0aa13eebb5748db62d53cc1816e179fc451d8dc549322516295eacccc72c
MD5 842f6f4c7a386639515daaf9a40b7846
BLAKE2b-256 0d991b2e19972c21e91fd311654e0b3404a947b189b0bbbaf6927a206eaa8766

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a9ca70d0957177ae82d21605677cbd4e154e52f0236d838203155a2565cc1fe
MD5 3663267081ffd0013ac2c283ad207839
BLAKE2b-256 fa53568e3e45d7b239e53d3a04cbe08389f4aa6573eb31cccdc3ed820871219b

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f2fabd9caa86df1ae99e6dc42e5ba5593c6de6568c534f24b6d9a4ed6267210
MD5 adfe2974ff0c2355cf0462bbc63a3f02
BLAKE2b-256 0e3c1a95d36b4bb81c35d781bd57ffa4b8348f7e745585e9fba80e8c925c2271

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bbfeebe2bc48d13b7104ff1611fe0c343d1e4459c825adde9cac84426fbc7996
MD5 508e7f2540f8d33bb6e0cb0bbe320c10
BLAKE2b-256 9f9996307b4afa3bb4b6c4573532106f044dd06d5f3a73ea0aaddc22233ff711

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: cedarpy-4.8.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for cedarpy-4.8.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 79e8ab08dafb9686528894b3423ef33ec61a0ab03a17357b924528739ae0a153
MD5 c0c12cc3ba1c755d267ea97eafe132ca
BLAKE2b-256 4467300156286851f15234b18f5de09381e8147ad8d09b19c3bf0bd458652cc8

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f8fba7ff768927d3143ea759e6d641018447e070bc012ea3af63ec10b0b3b3e
MD5 a6ea024488f5152bb7b4c80cd1b25bdb
BLAKE2b-256 a6241fb65f70fdd085284f55bd022ce9dbc66da1d8c90b8057a4aee4279e0a54

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6517df3367e9e691795385b8fea0bdf7d9e4b4159e4e33521461ade25505129e
MD5 201fd950c60a59d7efec8618fc0004e1
BLAKE2b-256 b810b9c02022a9d3ad32cbd16be7f45dc5367a158631503ef355c1789c52617f

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a4fc7d894a99c4c4ee4e01d3bc65b33ffa681c160e83d27665a460710e6ab61
MD5 9da3fd958fd099964e5936d3d4fafcb2
BLAKE2b-256 c02412017108e1923c8d648e2551754befe0972a428f23d3e7f2886c59cec6a4

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 452b27d065759ec5dbea773fa9f28810e831d60427ecd1576ccb40d739da248d
MD5 6e5dd92b961755a3e3e6368b3451ef94
BLAKE2b-256 67ee07d96f9dbe6d374dafdaab28af3cdb856d415cd05c563ce44ed09bfc4c5f

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 995d8eb087cf0bcc942ebb94f1c2cef713f5071b378881595be750b73d0e543d
MD5 237663a3f22abb12e31f56cf8a816a1d
BLAKE2b-256 fa0b8d28825b098be2ccdbd1147d4b0e035da5a9c4ff3e364735099c55fa580a

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cedarpy-4.8.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for cedarpy-4.8.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e59561d5ab48f7f0ee58f144a5976b09f032c3dda07046fb5ce7cfc353c16432
MD5 e3b1d48c3fb28f5c2f67b69f1962d339
BLAKE2b-256 954c082cb74ea21b99a26301f2fa2743b325bb79de42c730e572a387e2fe6dde

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a5b4367f6acf1ca69836638bfd270fae4e8ad963e30c4094dc3d7148b440861
MD5 bc05caae9e897fe80770cead181d7033
BLAKE2b-256 58bb23c28a6bfde5eb26478295206dbe348ff96a3108290b15a0da39cd508545

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b41f45b26715e6a9e92bc276b374c8dfe767384815c6c6961d19e45eb870a6cc
MD5 f2a9d3a95ad2af02e95e9d8c8f62af8d
BLAKE2b-256 8c3e6ddf637bcb4a5a57b3855e9c2bbdedbd691b24872c8383c026e7f39b2992

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9d44f60c1509518421dc1e227e61cea48474685a88ebff44a5ad26c25bddc620
MD5 13989c4eee24979d092f171167e6eecb
BLAKE2b-256 cfa579657dfaeb3d31db736a3d53e5d22da7b8e4a3a76f70b726978d4c3ea811

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b68e4b80673782ee4c93d3a0a36d4b52532d5d3f31c142536432c2b320823c01
MD5 0da3657c307b0a0af9637f88c4696a2e
BLAKE2b-256 f3295f7be2f9fe160acca92a5f8ebacfada59cbaecf8cf87ed997ad61fcd6bfb

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cedarpy-4.8.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for cedarpy-4.8.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ba73ad59c7bfa09231524d7d12467e068f8146407cce3b884f720481cd41038b
MD5 6cba4e9f4be55a66a5c74f2f5a685d2e
BLAKE2b-256 19761096cac93d344098d902e2927dc70c0f44b0a8d41a326bb49de1522745e7

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 138e8a7f2be9d4827a739162a392c5afa74e1a614bdf92deae904e7dc90ed0c8
MD5 7915059111d7e15e8455a1b755701973
BLAKE2b-256 4ecc0f17ac50547aa5ae79ad1342dace920235e5ef1021be15d1a442999078a5

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8acd97806de43ba4085048ebe50e3d0b60ceb4d49a9277aa9f961a31ee064f91
MD5 7f539fed588b3feed7cfd3922b6eef08
BLAKE2b-256 615654e56835f667dd0b3ad9d2d18422e1e5b5d865dfe38577242c3552de9af6

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b91310a600b92c4483c2c952b3abc0479084493a1b801965972911c95bad83e3
MD5 584d4c63840f0204b570c45ababb5dc7
BLAKE2b-256 9d03832770cf4de0be81d6e1032ea73c5dfc62ca44f11e5428dc47eb497aeb6e

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b36ec65bfadc6d51a4b6acd6d77d17bccbb08fc3021b1b57def61fb28bd962bb
MD5 699cd277ec42ea04ab3534f14bc88d5c
BLAKE2b-256 03662612524e8f78bcafe36772bc8df8bc54542be1446115e999fe69dfdb6e78

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cedarpy-4.8.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for cedarpy-4.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 36232404f0d3be72d0e3792b5094e84519294dc61877e3abc3d6dcda555f1cd8
MD5 5e9b73197d9c84a3de345d065b422383
BLAKE2b-256 22125eb8e1b45a4ee1726f7d81819b65ed764fb86e1ff862b46cf31c263eb98a

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 457260378a465eb8ef29dbc4116e690867db641c74cb782451379fbd53a4291b
MD5 39c1ed0da1963ea17a716f9d9450df3a
BLAKE2b-256 391b1b6d7cd8aaef9bf73ea2f88926990014cafdb805902eaca9f66c413300ee

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6f8a90258a8b1c66f4e5c262602cd0a16a2c36dace03cda211a7e239d8e86727
MD5 d8ffa73c8811946313b4516dd649bc5b
BLAKE2b-256 6ed055c4a15fac961ae256d0d4a64eeb97543575f13a4ad30575208520fb585f

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 660a5b9fe42cfc215957835386ba9be8c404ac9e728618f8d102a463c860aac2
MD5 9abbb098bc2e63bda1ff48290a20f8ea
BLAKE2b-256 19f44194608b4ef3568a6f195518d0263d1572abac343f6a96ee219dc94babd0

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9f7511498687514e76994250c29a4e9f757a589742eb18ed593acefaa2c05dd2
MD5 e17089fb655ba9fd092bc46c27bf0520
BLAKE2b-256 752f170935e5a5e81988bbe1eec4b8e6062b8092663a02ec017c5a3de8e1fc98

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cedarpy-4.8.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for cedarpy-4.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 299671f3686ea54b1cea921351dabad3a06286323d70e9ac4202c347e98e4b24
MD5 8c4d446f00cbb11e7505f6955127ec30
BLAKE2b-256 c7e195e039cf0019e1c98c4f78f7f57ae466c394e69a8dfe615add14fcb8447c

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c7e269e9b1e351f823d31835185c39bfa0f2297b0512c0966a0ed84542e7887
MD5 c233eaba9d05aad100b871fa6ed82f10
BLAKE2b-256 bc15d7a4e6b612f45aad8ba5040d8b031446c2c308b153e0a92896339f95067c

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d794614ee46fa7f4c82d9f211eb3d150f7b1b7632b9445a0f6b52543fef64918
MD5 64ff6b969ccc0139c3aa52c958d3968b
BLAKE2b-256 72bbf98967ff658938c537073db5a9b55715ad35ce4960ceb8f50bac4ffa34c2

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a19ef3058eca81b2592d795105b53dcaa95eac9dc221f8501b2df3645d2ca44
MD5 2c5b91be9ff33e13e0f45adf400d7894
BLAKE2b-256 02052c85daf8efd93fef853433adf723e5a7f9200bd2b9f3a974edf3ddea4e7d

See more details on using hashes here.

File details

Details for the file cedarpy-4.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cedarpy-4.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2088caea95e413591e4aac759f443823a0337fb5b55b6fd4f36dbbfedb12c7c4
MD5 e3084507c875f0814a9849215142a182
BLAKE2b-256 b4716f4affca1726e00e3fcb6500102b9b96120e6bebf2e0c31bb419cf0252ea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page