Python Package Licensing

A Python package can check a license before enabling paid operations, but code distributed to a customer can be inspected or changed. Start by deciding which entitlement the customer buys and where you can enforce it. PermitCore provides a Python SDK for validation, activation and the documented license lifecycle.

Choose the enforcement boundary

For a local library or desktop tool, place the check at the boundary of valuable operations and return useful errors to the caller. For hosted functionality, enforce entitlement on your own backend as well. Do not describe a client-side import hook or a hidden string as an unbreakable licensing boundary.

Make identity predictable

Decide whether the purchase covers a device, account, deployment or concurrent session. Containers and rebuilt environments may not have a stable hardware identity. Avoid silently creating a new activation every time a worker starts. Use the actual device or floating-session lifecycle that matches the offer, and document it for customers.

Separate distribution from entitlement

Installing a wheel is not license issuance. Publish or deliver your package through the chosen channel, then provide the customer license using a separate supported flow. A distributed package must not contain your platform administrator credentials. PermitCore Store can sell through the vendor-selected Stripe or Paddle account; it is not a private Python package registry.

Test failure paths in the real host

Exercise the Python versions, operating systems, packaging and concurrent workers you support. Verify rejected requests, timeout behavior, signed offline expiry and graceful shutdown. A successful test in a development virtual environment does not establish that every embedded Python host behaves identically.

Common questions

Is there a dedicated integration for this platform?

Use the documented SDK or HTTP boundary described here. Platform packaging, plugin/update distribution and framework security remain part of your application.

Can I include a management API key in the shipped code?

No. Keep management credentials on a controlled backend; distributed client code is inspectable.

Which checkout provider can my Store use?

Each vendor chooses Stripe or Paddle for the whole Store. Existing purchases keep their original connection; checkout does not automatically switch providers.

Read the implementation details