Skip to main content

py-pilecore

Public python SDK for the CEMS PileCore web-API

Checked with mypy Code style: black Imports: isort Coverage Status

This repository is created by CEMS BV and is a public python wrapper around the CEMS PileCore web-API.

Installation

To install a package in this repository run:

$ pip install py-pilecore

Or, in a uv project:

$ uv add py-pilecore

ENV VARS

To use py-pilecore add the follow ENV vars to your environment. Or provide them when asked.

* NUCLEI_TOKEN
    - Your NUCLEI user token

You can obtain your NUCLEI_TOKEN on NUCLEI. Go to personal-access-tokens and create a new user token.

Contribution

Environment

This project uses uv for dependency management. The pinned dependency set lives in uv.lock, which is committed to the repository.

Create the development environment (a .venv in the repository root) with every optional dependency group installed:

uv sync --all-extras

That installs the project itself in editable mode as well. Prefix commands with uv run to run them inside that environment without activating it, or activate it the usual way with source .venv/bin/activate.

The test matrix covers Python 3.11 through 3.13. uv picks an interpreter that satisfies requires-python automatically; pass --python 3.11 to uv sync to develop against the oldest supported version.

Documentation

Build the docs:

uv sync --extra docs
uv run sphinx-build -b html docs public

Format

We format our code with black and isort.

uv run black --config "pyproject.toml" src/pypilecore tests notebooks
uv run isort --settings-path "pyproject.toml" src/pypilecore tests notebooks

Lint

To maintain code quality we use the GitHub super-linter.

Reproduce the full CI lint job (Docker)

The CI lint job runs the super-linter Docker image. To reproduce it exactly, run the run_super_linter.sh bash script from the root directory (requires Docker):

./run_super_linter.sh

Like CI, this lints only the files changed against main and auto-fixes black/isort formatting in place.

Run the Python linters without Docker

The active Python linters are pinned in the lint optional-dependency group. CI lints only the Python files changed against main (and excludes tests/), so collect that file list first, then run each linter against it:

uv sync --extra lint
FILES=$(git diff --name-only main...HEAD -- '*.py' | grep -v '^tests/')

uv run black --check --config "pyproject.toml" $FILES
uv run isort --check-only --settings-path "pyproject.toml" $FILES
uv run flake8 --config ".flake8" $FILES

mypy needs a caveat: super-linter runs it without installing the project, so unresolved third-party imports (matplotlib, numpy, pandas) become Any and their errors disappear. Reproduce that with a throwaway environment that has only mypy in it:

uv run --isolated --no-project --with mypy==2.1.0 \
  mypy --config-file "pyproject.toml" --no-install-types $FILES

Running mypy in a fully-installed environment reports extra import-related errors that CI does not, so the Docker script above remains authoritative.

UnitTest

Test the software with the use of coverage:

uv sync --extra test
uv run coverage run -m pytest

Dependencies

Direct dependencies and their version ranges are declared in pyproject.toml. The fully resolved set is locked in uv.lock, which is committed and must stay in sync with pyproject.toml.

Refresh the lock file after editing pyproject.toml:

uv lock

Update everything to the newest versions allowed by the declared ranges:

uv lock --upgrade

Update a single package:

uv lock --upgrade-package <name>

Install exactly what the lock file says, failing if it is out of date (this is what CI does):

uv sync --locked --all-extras

Renovate also maintains uv.lock automatically: it bumps the ranges in pyproject.toml and refreshes the lock in the same pull request, and lockFileMaintenance periodically refreshes transitive dependencies.

Download files

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

Source Distribution

py_pilecore-2.5.1.tar.gz (83.1 kB view details)

Uploaded Source

Built Distribution

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

py_pilecore-2.5.1-py3-none-any.whl (117.5 kB view details)

Uploaded Python 3

File details

Details for the file py_pilecore-2.5.1.tar.gz.

File metadata

  • Download URL: py_pilecore-2.5.1.tar.gz
  • Upload date:
  • Size: 83.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for py_pilecore-2.5.1.tar.gz
Algorithm Hash digest
SHA256 b51757fe65228aa659d9473e2d80850a5e696e41dae8035379d8d6b4598b8f53
MD5 f43afa7eab3e7ec3ecdf573b62a4fb1d
BLAKE2b-256 ee02c28bffd72d624bbfac24d3c9af4cf6698e333529024db7581c9b9f43b72e

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_pilecore-2.5.1.tar.gz:

Publisher: release_pypi.yaml on cemsbv/py-pilecore

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file py_pilecore-2.5.1-py3-none-any.whl.

File metadata

  • Download URL: py_pilecore-2.5.1-py3-none-any.whl
  • Upload date:
  • Size: 117.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for py_pilecore-2.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 673816b38b70d85184274041e60d57659eaa49a5840a125ffdfca711d44a1130
MD5 3b78364d14de577b626a84665f452729
BLAKE2b-256 4bb8aa6a3e9a5b1b0d93524f9f58495f91600865f74ceb8ba455d48674fa6809

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_pilecore-2.5.1-py3-none-any.whl:

Publisher: release_pypi.yaml on cemsbv/py-pilecore

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.5.1 This release

2 files

2.5.0

2 files

2.4.0

2 files

2.3.2

2 files

2.3.1

2 files

2.3.0

2 files

2.2.5

2 files

2.2.4

2 files

2.2.3

2 files

2.2.2

2 files

2.2.1

2 files

2.2.0

2 files

2.1.0

2 files

2.0.5

2 files

2.0.4

2 files

2.0.3

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page