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.

Metadata

Release files for py-pilecore 2.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-pilecore 2.5.1
File Size Uploaded Provenance Actions
py_pilecore-2.5.1.tar.gz 83.1 kB With provenance Details for py_pilecore-2.5.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for py-pilecore 2.5.1
File Interpreter ABI Platform Actions
py_pilecore-2.5.1-py3-none-any.whl Python 3 none any Details for py_pilecore-2.5.1-py3-none-any.whl

Total release size: 200.6 kB

Release files / py_pilecore-2.5.1.tar.gz

Download URL py_pilecore-2.5.1.tar.gz
Size 83.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b51757fe65228aa659d9473e2d80850a5e696e41dae8035379d8d6b4598b8f53
BLAKE2b-256 checksum
How to use checksums
ee02c28bffd72d624bbfac24d3c9af4cf6698e333529024db7581c9b9f43b72e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release files / py_pilecore-2.5.1-py3-none-any.whl

Download URL py_pilecore-2.5.1-py3-none-any.whl
Size 117.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
673816b38b70d85184274041e60d57659eaa49a5840a125ffdfca711d44a1130
BLAKE2b-256 checksum
How to use checksums
4bb8aa6a3e9a5b1b0d93524f9f58495f91600865f74ceb8ba455d48674fa6809
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Security for py-pilecore 2.5.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for py_pilecore-2.5.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.5.1 This release

2 release files Full provenance

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