nparseplus-sdk
The stable contract for building nParse+ plugins: addon windows, log parsers, event subscribers, and network pollers that load into the app at runtime.
- Plugin authors: install the SDK (see below — not on PyPI yet),
subclass
nparseplus_sdk.NParsePlugin, expose a module-levelcreate_plugin()factory, and check your work withnparseplus-plugin validate <path>. Note that add-ons are opt-in in the app: users must tick Settings > Advanced > Enable plugins (add-ons) and restart before anything loads. Full guide: the Plugins section of the nParse+ documentation. - Versioning: this package is versioned independently of the app.
Declare the SDK range you built against in
PluginMeta.requires_sdk(e.g.">=1.0,<2"); the app refuses plugins whose range does not admit the SDK version it bundles. - No dependency on the app: plugins execute inside nParse+, which
provides the runtime.
nparseplus_sdk.eventsandnparseplus_sdk.uire-export host classes lazily; for standalone type-checking/tests install the app from source (pip install git+https://github.com/prokopto-dev/nparse-plus).
Installing (not on PyPI yet)
The release workflow below exists but has not published a version, so
pip install nparseplus-sdk fails today. Install from the app repo's
sdk/ subdirectory instead:
pip install "git+https://github.com/prokopto-dev/nparse-plus@master#subdirectory=sdk"
pip install ./sdk # ...or from a nparse-plus checkout
In a plugin's pyproject.toml:
dependencies = [
"nparseplus-sdk @ git+https://github.com/prokopto-dev/nparse-plus@master#subdirectory=sdk",
]
Swap either form for a plain nparseplus-sdk>=1.0,<2 once the package is
live. Nothing else changes — the import path, the CLI and the contract are
identical.
Repository note
This package currently lives in the sdk/ directory of the main
prokopto-dev/nparse-plus repository as an independent uv workspace member,
versioned and released independently of the app. It may eventually move to
its own repository (prokopto-dev/nparseplus-sdk).
Releasing (maintainers)
The version has exactly one source: __version__ in
src/nparseplus_sdk/__init__.py. pyproject.toml declares
dynamic = ["version"] and hatchling reads that literal, and uv.lock
records no version for a dynamic-version package — so the wheel, the lock and
the runtime constant cannot disagree. Do not reintroduce a literal
version = in pyproject.toml, and do not derive SDK_VERSION from
importlib.metadata: a PyInstaller-frozen app has no dist metadata, so any
fallback next to that lookup is what every shipped build would report to
check_compat.
The SDK is not covered by the app's semantic-release automation (that
owns v* tags only). To cut a release:
- Bump
__version__insrc/nparseplus_sdk/__init__.py. - Commit, then tag
sdk-v<X.Y.Z>(matching the literal exactly) and push the tag:git tag sdk-v1.1.0 && git push origin sdk-v1.1.0. .github/workflows/release-sdk.ymlverifies the tag against__version__, runsuv build --package nparseplus-sdk, smoke-tests the built wheel in a clean venv (imports it, checks the reported version, runsnparseplus-plugin --help, and asserts the wheel does not pull innparseplus), then publishes to PyPI. It also accepts aworkflow_dispatchwith an existing tag.
Bump the app's nparseplus-sdk range in the root pyproject.toml only after
the matching version is live on PyPI.
One-time setup (human, not automatable)
Publishing uses PyPI Trusted Publishing (OIDC) — there is no API token and
no repository secret. Both of these must exist before the first sdk-v* tag,
or the publish step fails with an OIDC error:
-
PyPI pending publisher. The project does not exist on PyPI yet, so create a pending publisher at https://pypi.org/manage/account/publishing/ with exactly:
- PyPI Project Name:
nparseplus-sdk - Owner:
prokopto-dev - Repository name:
nparse-plus - Workflow name:
release-sdk.yml - Environment name:
pypi
(After the first successful upload this becomes a normal publisher on the project's Settings → Publishing page; nothing needs changing.)
- PyPI Project Name:
-
GitHub
pypienvironment. In the repository's Settings → Environments, create an environment namedpypiand add a required reviewer. The workflow declaresenvironment: pypi, so every publish then pauses for a human approval — the last gate between a pushed tag and an immutable PyPI upload.
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 nparseplus_sdk-1.0.0.tar.gz.
File metadata
- Download URL: nparseplus_sdk-1.0.0.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38c389b869bd059d0544f85a08ce99f78a9a1f8eefaffab281506075c8c7e668
|
|
| MD5 |
c1987cbf3d5a3a21a1361b3f3da9f7dd
|
|
| BLAKE2b-256 |
d44bbb3cdd3cd0e44f78ca23e98bdae54e1dccf84f454be476dd89f8edd5b922
|
Provenance
The following attestation bundles were made for nparseplus_sdk-1.0.0.tar.gz:
Publisher:
release-sdk.yml on prokopto-dev/nparse-plus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nparseplus_sdk-1.0.0.tar.gz -
Subject digest:
38c389b869bd059d0544f85a08ce99f78a9a1f8eefaffab281506075c8c7e668 - Sigstore transparency entry: 2292346606
- Sigstore integration time:
-
Permalink:
prokopto-dev/nparse-plus@b0c7b1c8b4c18a9f7e09d3a4285d7525e62aa56f -
Branch / Tag:
refs/tags/sdk-v1.0.0 - Owner: https://github.com/prokopto-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-sdk.yml@b0c7b1c8b4c18a9f7e09d3a4285d7525e62aa56f -
Trigger Event:
push
-
Statement type:
File details
Details for the file nparseplus_sdk-1.0.0-py3-none-any.whl.
File metadata
- Download URL: nparseplus_sdk-1.0.0-py3-none-any.whl
- Upload date:
- Size: 19.4 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 |
4704398708fc98fdde3aed8005c1d441b16e859744b20ee4cbb5b62ea4f34473
|
|
| MD5 |
0bc5740f8f21794b7e975a59bd0fa8e4
|
|
| BLAKE2b-256 |
4ef3efe93de4ebb32724c59c3fdb4000276e3129e13921ab5fb6883e03c0cfad
|
Provenance
The following attestation bundles were made for nparseplus_sdk-1.0.0-py3-none-any.whl:
Publisher:
release-sdk.yml on prokopto-dev/nparse-plus
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nparseplus_sdk-1.0.0-py3-none-any.whl -
Subject digest:
4704398708fc98fdde3aed8005c1d441b16e859744b20ee4cbb5b62ea4f34473 - Sigstore transparency entry: 2292346697
- Sigstore integration time:
-
Permalink:
prokopto-dev/nparse-plus@b0c7b1c8b4c18a9f7e09d3a4285d7525e62aa56f -
Branch / Tag:
refs/tags/sdk-v1.0.0 - Owner: https://github.com/prokopto-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-sdk.yml@b0c7b1c8b4c18a9f7e09d3a4285d7525e62aa56f -
Trigger Event:
push
-
Statement type: