Skip to main content

stonefish-code-shield

Industry-grade Python code protection.

PyPi Version

For a comprehensive license management solution that is both developer- and user-friendly, check out the Stonefish License Manager.

Quickstart

Protecting Python Packages

To protect a Python project using the Stonefish Code Shield, ensure that it includes a minimal pyproject.toml file. Then simple replace your build system (e.g., setuptools) with stonefish_code_shield in the pyproject.toml file:

[build-system]
# requires = ["setuptools"]
# build-backend = "setuptools.build_meta"
requires = ["stonefish-code-shield"]
build-backend = "stonefish_code_shield.build_meta"

# ...
# additional project metadata as per PEP 621
# <https://peps.python.org/pep-0621/>
# (recommended)
# ...

Done! Your project is now protected with Stonefish Code Shield. Try it out by running

pip install .

or

(pip install build)
python -m build . --wheel

[!TIP]

In some situations, turning off code protection can be beneficial, for example when testing your software. To turn off Stonefish Code Shield, build with

python -m build . --wheel -Cstonefish=off

When testing with tox, a possible config is

[tox]
envlist = py3

[testenv:.pkg]
passenv = *
config_settings_build_wheel =
  stonefish-code-shield = off

[testenv]
passenv = *
package = wheel
deps =
    pytest
commands =
    pytest

Protecting Standalone Python Scripts

For individual Python files, you can use the scs command-line utility:

scs /path/to/file.py

Guidelines

Here are some guidelines to keep in mind while working with Stonefish Code Shield:

  • Stonefish renames class and function names, so relying on the __name__ attribute in your code won't be possible.

  • Stonefish cannot yet handle relative * imports, e.g.,

    from .utils import *
    

    In your code, make all imports explicit:

    from .utils import div_to_mod, Extractor
    

    This is recommended practice anyway.

  • Stonefish hides private (underscored) names from the API. If you want your users to use these variables or functions, you'll have to rename them.

  • Users must add *.dat files to their package data, e.g.,

    [tool.setuptools.package-data]
    "*" = ["*.dat"]
    

    in pyproject.toml. This is because the encrypted code must be shipped with the package.

  • Local imports should be relative (from . import x) instead of using absolute imports (import x) if x/ or x.py is an internal folder or directory.

  • Stonefish places all data files in a flat directory structure, so it cannot handle files that are read from two different Python paths.

    ./data.dat
    
    ./a.py
        Path(__file__).parent / "data.dat"
    
    ./b/b.py
        Path(__file__).parent / .. / "data.dat"
    

More info

For details on on Stonefish Code Shield protects your code, see here.

Contact support@mondaytech.com for more info.

Release files for stonefish-code-shield 0.3.71

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for stonefish-code-shield 0.3.71
File Interpreter ABI Platform
stonefish_code_shield-0.3.71-py3-none-any.whl Python 3 none any Details

Release files / stonefish_code_shield-0.3.71-py3-none-any.whl

Download URL stonefish_code_shield-0.3.71-py3-none-any.whl
Size 76.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
47aaf2f628c2f92741703da0ee5490693b6beb3f40353a8dcc281b4c71c3ef1d
BLAKE2b-256 checksum
How to use checksums
19fa6e5137af0496ba04468ca8b26d851e73800affd8daa65ad23641bfe40935
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.0.1 CPython/3.12.8

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 Dec 28, 2024.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.71 This release

1 release file

0.3.70

1 release file

0.3.69

1 release file

0.3.64

1 release file

0.3.60

1 release file

0.3.59

1 release file

0.3.58

1 release file

0.3.57

1 release file

0.3.56

1 release file

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