py-pilecore
Public python SDK for the CEMS PileCore web-API
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.