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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_pilecore-2.5.0.tar.gz.
File metadata
- Download URL: py_pilecore-2.5.0.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c1b36b6e37013b15fd1a1a088fe127c1233fb2660f51225856f4603e3aa0a96
|
|
| MD5 |
afe12b8e5e24afa3c8d9cb189b23c348
|
|
| BLAKE2b-256 |
618d83a7ab866d7a27cd0f4943a2bacfc3aced9aecae5428d7391f37f6948017
|
Provenance
The following attestation bundles were made for py_pilecore-2.5.0.tar.gz:
Publisher:
release_pypi.yaml on cemsbv/py-pilecore
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
py_pilecore-2.5.0.tar.gz -
Subject digest:
9c1b36b6e37013b15fd1a1a088fe127c1233fb2660f51225856f4603e3aa0a96 - Sigstore transparency entry: 2751035844
- Sigstore integration time:
-
Permalink:
cemsbv/py-pilecore@aa716a2de79a713fb893838a1dd79604d41a465c -
Branch / Tag:
refs/tags/2.5.0 - Owner: https://github.com/cemsbv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release_pypi.yaml@aa716a2de79a713fb893838a1dd79604d41a465c -
Trigger Event:
push
-
Statement type:
File details
Details for the file py_pilecore-2.5.0-py3-none-any.whl.
File metadata
- Download URL: py_pilecore-2.5.0-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e44696614a18a84467076a35c40fa516eae55bb37488c325eb136bf46f6b1c7b
|
|
| MD5 |
ee2efc6da3c786e84543dbb24751c0d3
|
|
| BLAKE2b-256 |
ff4634bab83ae82ad53de0ea3d1527b5d68df7691b845b596acb70b0f2236271
|
Provenance
The following attestation bundles were made for py_pilecore-2.5.0-py3-none-any.whl:
Publisher:
release_pypi.yaml on cemsbv/py-pilecore
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
py_pilecore-2.5.0-py3-none-any.whl -
Subject digest:
e44696614a18a84467076a35c40fa516eae55bb37488c325eb136bf46f6b1c7b - Sigstore transparency entry: 2751035866
- Sigstore integration time:
-
Permalink:
cemsbv/py-pilecore@aa716a2de79a713fb893838a1dd79604d41a465c -
Branch / Tag:
refs/tags/2.5.0 - Owner: https://github.com/cemsbv
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release_pypi.yaml@aa716a2de79a713fb893838a1dd79604d41a465c -
Trigger Event:
push
-
Statement type: