Unfortunately, github.com/PythonWoods/structum is not REUSE compliant and does not fully adopt the recommendations to make software licensing easy for humans and machines alike. Have a look at our tutorial to learn about the three simple steps to become REUSE compliant.
To add the badge to your project's README.md file,
use the following snippet:
[](https://api.reuse.software/info/github.com/PythonWoods/structum)
The API provides machine-readable artifacts for automatic analysis.
reuse spdx
command.
Commit 66d71a2d17be1b48031b9d8ebcfc5b7d7c8769b5 was checked on 25 Jan 2026 03:10:11 UTC
with the following result:
/opt/venv/lib/python3.11/site-packages/reuse/project.py:332: PendingDeprecationWarning: '.reuse/dep5' is deprecated. You are recommended to instead use REUSE.toml. Use `reuse convert-dep5` to convert. warnings.warn( /opt/venv/lib/python3.11/site-packages/reuse/project.py:332: PendingDeprecationWarning: '.reuse/dep5' is deprecated. You are recommended to instead use REUSE.toml. Use `reuse convert-dep5` to convert. warnings.warn( # MISSING LICENSES 'Apache-2.0' found in: * .github/ISSUE_TEMPLATE/bug_report.md * .github/ISSUE_TEMPLATE/feature_request.md * .github/ISSUE_TEMPLATE/plugin_proposal.md * .github/PULL_REQUEST_TEMPLATE.md * .github/dependabot.yml * .github/workflows/ci.yml * .github/workflows/deploy-docs.yml * .github/workflows/release.yml * .gitignore * .markdownlint.yaml * .pre-commit-config.yaml * .readthedocs.yaml * ARCHITECTURE.md * CHANGELOG.md * CODE_OF_CONDUCT.md * CONTRIBUTING.md * CONTRIBUTORS.md * README.md * ROADMAP.md * SECURITY.md * bandit.toml * docs/_headers * docs/_intersphinx/python.inv * docs/_snippets/core_modules_list.rst * docs/_snippets/example_minimal.rst * docs/_snippets/install_quick.rst * docs/_snippets/install_source.rst * docs/_snippets/plugins_list.rst * docs/_snippets/verify_install.rst * docs/_snippets/warning_alpha.rst * docs/_static/custom.css * docs/cli/api.rst * docs/cli/commands.rst * docs/cli/index.rst * docs/cli/profiling.rst * docs/cli/release.rst * docs/cli/security.rst * docs/cli/testing.rst * docs/conf.py * docs/constitution.rst * docs/contributing/code_of_conduct.rst * docs/contributing/documenting.rst * docs/contributing/index.rst * docs/contributing/releasing.rst * docs/contributing/review_checklist.rst * docs/contributing/style_guide.rst * docs/glossary.rst * docs/google06a72fc7473b211a.html * docs/governance/ai_assisted.rst * docs/governance/amendment_policy.rst * docs/governance/exit_strategy.rst * docs/governance/licensing.rst * docs/governance/plugin_standards.rst * docs/governance/seo.rst * docs/guides/anti_patterns.rst * docs/guides/archiving_code.rst * docs/guides/configuration_getting_started.rst * docs/guides/configuration_philosophy.rst * docs/guides/core_vs_plugins.rst * docs/guides/developer_tutorial.rst * docs/guides/enterprise_architecture.rst * docs/guides/index.rst * docs/guides/integration_patterns.rst * docs/guides/observability_stack.rst * docs/guides/user_tutorial.rst * docs/index.rst * docs/installation.rst * docs/mental_model.rst * docs/modules/auth.rst * docs/modules/configuration.rst * docs/modules/database.rst * docs/modules/index.rst * docs/modules/logging.rst * docs/modules/monitoring.rst * docs/performance/optimization.rst * docs/plugins/archive-html.rst * docs/plugins/archive-json.rst * docs/plugins/archive-markdown.rst * docs/plugins/archive-zip.rst * docs/plugins/auth.rst * docs/plugins/bootstrap.rst * docs/plugins/cli-tools.rst * docs/plugins/database.rst * docs/plugins/development.rst * docs/plugins/di.rst * docs/plugins/dynaconf.rst * docs/plugins/fastapi.rst * docs/plugins/index.rst * docs/plugins/observability.rst * docs/quick_reference.rst * docs/reference/archive/index.rst * docs/reference/auth.rst * docs/reference/bootstrap.rst * docs/reference/cli-tools.rst * docs/reference/core/auth.rst * docs/reference/core/config.rst * docs/reference/core/database.rst * docs/reference/core/logging.rst * docs/reference/core/monitoring.rst * docs/reference/core/plugins.rst * docs/reference/core/validation.rst * docs/reference/core.rst * docs/reference/database.rst * docs/reference/di.rst * docs/reference/dynaconf.rst * docs/reference/fastapi.rst * docs/reference/index.rst * docs/reference/meta.rst * docs/reference/observability.rst * docs/reference/plugins.rst * docs/reference/protocols.rst * docs/requirements.txt * docs/robots.txt * docs/why.rst * examples/01-logging-basics/README.md * examples/02-observability-full/README.md * examples/03-zero-config/README.md * examples/04-web-integration/README.md * examples/05-archiving/README.md * examples/05-event-driven/README.md * examples/05-standalone-plugins/README.md * examples/06-cli-tool/README.md * examples/07-background-workers/README.md * examples/08-full-stack/README.md * examples/09-deployment-patterns/README.md * examples/10-di-fastapi/README.md * examples/11-archiving-code/README.md * examples/11-archiving-code/sample.py * examples/README.md * examples/advanced/README.md * examples/beginner/README.md * examples/intermediate/README.md * packages/archive-html/README.md * packages/archive-html/pyproject.toml * packages/archive-html/tests/test_archive_html_dummy.py * packages/archive-json/README.md * packages/archive-json/pyproject.toml * packages/archive-json/src/structum/plugins/archive_json/schema.json * packages/archive-json/tests/test_archive_json_dummy.py * packages/archive-markdown/README.md * packages/archive-markdown/pyproject.toml * packages/archive-markdown/tests/test_archive_markdown_dummy.py * packages/archive-zip/README.md * packages/archive-zip/pyproject.toml * packages/archive-zip/tests/test_archive_zip_dummy.py * packages/auth/README.md * packages/auth/pyproject.toml * packages/auth/src/structum/plugins/auth/base.py * packages/auth/src/structum/plugins/auth/jwt.py * packages/auth/src/structum/plugins/auth/oauth.py * packages/auth/src/structum/plugins/auth/password.py * packages/auth/src/structum/plugins/auth/rbac.py * packages/auth/tests/conftest.py * packages/auth/tests/test_auth_dummy.py * packages/bootstrap/README.md * packages/bootstrap/pyproject.toml * packages/bootstrap/src/structum/plugins/bootstrap/__init__.py * packages/bootstrap/src/structum/plugins/bootstrap/core.py * packages/bootstrap/src/structum/plugins/bootstrap/manager.py * packages/bootstrap/src/structum/plugins/bootstrap/validators.py * packages/bootstrap/tests/conftest.py * packages/bootstrap/tests/test_bootstrap_dummy.py * packages/cli-tools/README.md * packages/cli-tools/pyproject.toml * packages/cli-tools/src/structum/plugins/cli_tools/__init__.py * packages/cli-tools/src/structum/plugins/cli_tools/api.py * packages/cli-tools/src/structum/plugins/cli_tools/archive.py * packages/cli-tools/src/structum/plugins/cli_tools/checks.py * packages/cli-tools/src/structum/plugins/cli_tools/main.py * packages/cli-tools/src/structum/plugins/cli_tools/profiling.py * packages/cli-tools/src/structum/plugins/cli_tools/release.py * packages/cli-tools/src/structum/plugins/cli_tools/security.py * packages/cli-tools/src/structum/plugins/cli_tools/testing.py * packages/cli-tools/tests/conftest.py * packages/cli-tools/tests/test_cli_tools_dummy.py * packages/database/README.md * packages/database/pyproject.toml * packages/database/src/structum/plugins/database/__init__.py * packages/database/src/structum/plugins/database/base.py * packages/database/src/structum/plugins/database/postgres.py * packages/database/src/structum/plugins/database/sqlalchemy.py * packages/database/tests/conftest.py * packages/database/tests/test_database_dummy.py * packages/di/README.md * packages/di/pyproject.toml * packages/di/src/structum/plugins/di/__init__.py * packages/di/src/structum/plugins/di/container.py * packages/di/src/structum/plugins/di/integrations/fastapi.py * packages/di/tests/conftest.py * packages/di/tests/test_di_dummy.py * packages/dynaconf/README.md * packages/dynaconf/pyproject.toml * packages/dynaconf/src/structum/plugins/dynaconf/__init__.py * packages/dynaconf/src/structum/plugins/dynaconf/builders.py * packages/dynaconf/src/structum/plugins/dynaconf/director.py * packages/dynaconf/src/structum/plugins/dynaconf/exceptions.py * packages/dynaconf/src/structum/plugins/dynaconf/features/__init__.py * packages/dynaconf/src/structum/plugins/dynaconf/features/cache.py * packages/dynaconf/src/structum/plugins/dynaconf/features/health.py * packages/dynaconf/src/structum/plugins/dynaconf/features/locks.py * packages/dynaconf/src/structum/plugins/dynaconf/features/migrations.py * packages/dynaconf/src/structum/plugins/dynaconf/features/transactions.py * packages/dynaconf/src/structum/plugins/dynaconf/features/watcher.py * packages/dynaconf/src/structum/plugins/dynaconf/manager.py * packages/dynaconf/src/structum/plugins/dynaconf/provider.py * packages/dynaconf/tests/conftest.py * packages/dynaconf/tests/test_dynaconf_dummy.py * packages/fastapi/README.md * packages/fastapi/pyproject.toml * packages/fastapi/src/structum/plugins/fastapi/__init__.py * packages/fastapi/src/structum/plugins/fastapi/app.py * packages/fastapi/src/structum/plugins/fastapi/dependencies.py * packages/fastapi/src/structum/plugins/fastapi/middleware.py * packages/fastapi/tests/__init__.py * packages/fastapi/tests/test_app.py * packages/fastapi/tests/test_fastapi_dummy.py * packages/observability/README.md * packages/observability/pyproject.toml * packages/observability/src/structum/plugins/observability/__init__.py * packages/observability/src/structum/plugins/observability/docs/prometheus.md * packages/observability/src/structum/plugins/observability/docs/usage.md * packages/observability/src/structum/plugins/observability/metrics.py * packages/observability/src/structum/plugins/observability/observability.py * packages/observability/src/structum/plugins/observability/prometheus.py * packages/observability/tests/conftest.py * packages/observability/tests/test_observability_dummy.py * packages/structum/README.md * packages/structum/pyproject.toml * packages/structum/src/structum/auth/__init__.py * packages/structum/src/structum/auth/interfaces.py * packages/structum/src/structum/auth/manager.py * packages/structum/src/structum/cli.py * packages/structum/src/structum/config/__init__.py * packages/structum/src/structum/config/adapters.py * packages/structum/src/structum/config/interface.py * packages/structum/src/structum/config/manager.py * packages/structum/src/structum/database/__init__.py * packages/structum/src/structum/database/exceptions.py * packages/structum/src/structum/database/interfaces.py * packages/structum/src/structum/database/manager.py * packages/structum/src/structum/logging/__init__.py * packages/structum/src/structum/logging/adapters.py * packages/structum/src/structum/logging/interfaces.py * packages/structum/src/structum/logging/manager.py * packages/structum/src/structum/monitoring/__init__.py * packages/structum/src/structum/monitoring/interfaces.py * packages/structum/src/structum/monitoring/manager.py * packages/structum/src/structum/utils/__init__.py * packages/structum/src/structum/utils/imports.py * packages/structum/src/structum/validation.py * packages/structum/tests/__init__.py * packages/structum/tests/conftest.py * packages/structum/tests/test_structum_dummy.py * pyproject.toml * registry/plugins.json * scripts/build-docs.sh # MISSING COPYRIGHT AND LICENSING INFORMATION The following files have no copyright and licensing information: * .coveragerc * .gitattributes * packages/archive-html/src/structum/plugins/archive_html/__init__.py * packages/archive-html/src/structum/plugins/archive_html/factory.py * packages/archive-html/src/structum/plugins/archive_html/renderer.py * packages/archive-json/src/structum/plugins/archive_json/__init__.py * packages/archive-json/src/structum/plugins/archive_json/factory.py * packages/archive-json/src/structum/plugins/archive_json/renderer.py * packages/archive-markdown/src/structum/plugins/archive_markdown/__init__.py * packages/archive-markdown/src/structum/plugins/archive_markdown/factory.py * packages/archive-markdown/src/structum/plugins/archive_markdown/renderer.py * packages/archive-markdown/src/structum/plugins/archive_markdown/tree.py * packages/archive-zip/src/structum/plugins/archive_zip/__init__.py * packages/archive-zip/src/structum/plugins/archive_zip/factory.py * packages/archive-zip/src/structum/plugins/archive_zip/renderer.py * packages/auth/src/structum/plugins/auth/__init__.py * packages/structum/src/structum/archive/__init__.py * packages/structum/src/structum/archive/exceptions.py * packages/structum/src/structum/archive/interface.py * packages/structum/src/structum/archive/manager.py * packages/structum/src/structum/archive/models.py * scripts/publish-pypi.sh * uv.lock The following files have no copyright information: * packages/auth/src/structum/plugins/auth/base.py * packages/auth/src/structum/plugins/auth/jwt.py * packages/auth/src/structum/plugins/auth/oauth.py * packages/auth/src/structum/plugins/auth/password.py * packages/auth/src/structum/plugins/auth/rbac.py * packages/database/src/structum/plugins/database/__init__.py * packages/database/src/structum/plugins/database/base.py * packages/database/src/structum/plugins/database/postgres.py * packages/database/src/structum/plugins/database/sqlalchemy.py * packages/structum/src/structum/auth/__init__.py * packages/structum/src/structum/auth/interfaces.py * packages/structum/src/structum/database/__init__.py * packages/structum/src/structum/database/interfaces.py The following files have no licensing information: * NOTICE # SUMMARY * Bad licenses: 0 * Deprecated licenses: 0 * Licenses without file extension: 0 * Missing licenses: Apache-2.0 * Unused licenses: 0 * Used licenses: Apache-2.0 * Read errors: 0 * Invalid SPDX License Expressions: 0 * Files with copyright information: 244 / 280 * Files with license information: 256 / 280 Unfortunately, your project is not compliant with version 3.3 of the REUSE Specification :-( # RECOMMENDATIONS * Fix missing licenses: For at least one of the license identifiers provided by the 'SPDX-License-Identifier' tags, there is no corresponding license text file in the 'LICENSES' directory. For SPDX license identifiers, you can simply run 'reuse download --all' to get any missing ones. For custom licenses (starting with 'LicenseRef-'), you need to add these files yourself. * Fix missing copyright/licensing information: For one or more files, the tool cannot find copyright and/or licensing information. You typically do this by adding 'SPDX-FileCopyrightText' and 'SPDX-License-Identifier' tags to each file. The tutorial explains additional ways to do this: