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.0.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.0-py3-none-any.whl (117.5 kB view details)

Uploaded Python 3

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

Hashes for py_pilecore-2.5.0.tar.gz
Algorithm Hash digest
SHA256 9c1b36b6e37013b15fd1a1a088fe127c1233fb2660f51225856f4603e3aa0a96
MD5 afe12b8e5e24afa3c8d9cb189b23c348
BLAKE2b-256 618d83a7ab866d7a27cd0f4943a2bacfc3aced9aecae5428d7391f37f6948017

See more details on using hashes here.

Provenance

The following attestation bundles were made for py_pilecore-2.5.0.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.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

Hashes for py_pilecore-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e44696614a18a84467076a35c40fa516eae55bb37488c325eb136bf46f6b1c7b
MD5 ee2efc6da3c786e84543dbb24751c0d3
BLAKE2b-256 ff4634bab83ae82ad53de0ea3d1527b5d68df7691b845b596acb70b0f2236271

See more details on using hashes here.

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

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

Release history Release notifications | RSS feed

2.5.1

2 files

This release

2.5.0 This release

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