{"id":38667332,"url":"https://github.com/ambient-innovation/ambient-toolbox","last_synced_at":"2026-04-02T18:56:03.214Z","repository":{"id":157963973,"uuid":"631915911","full_name":"ambient-innovation/ambient-toolbox","owner":"ambient-innovation","description":"Helpers and tools for Python and web-development with Django","archived":false,"fork":false,"pushed_at":"2026-01-16T14:18:40.000Z","size":792,"stargazers_count":25,"open_issues_count":19,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-01-17T04:37:33.533Z","etag":null,"topics":["anonymisation","bleach","django","helpers-library","python3","testing"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/ambient-toolbox/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ambient-innovation.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-04-24T10:29:32.000Z","updated_at":"2026-01-16T14:18:44.000Z","dependencies_parsed_at":"2024-01-12T12:50:33.541Z","dependency_job_id":"f63cadb7-3591-4715-bc58-71610a4a2b63","html_url":"https://github.com/ambient-innovation/ambient-toolbox","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ambient-innovation/ambient-toolbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambient-innovation%2Fambient-toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambient-innovation%2Fambient-toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambient-innovation%2Fambient-toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambient-innovation%2Fambient-toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ambient-innovation","download_url":"https://codeload.github.com/ambient-innovation/ambient-toolbox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ambient-innovation%2Fambient-toolbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28505565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anonymisation","bleach","django","helpers-library","python3","testing"],"created_at":"2026-01-17T09:50:54.758Z","updated_at":"2026-04-02T18:56:03.197Z","avatar_url":"https://github.com/ambient-innovation.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PyPI release](https://img.shields.io/pypi/v/ambient-toolbox.svg)](https://pypi.org/project/ambient-toolbox/)\n[![Downloads](https://static.pepy.tech/badge/ambient-toolbox)](https://pepy.tech/project/ambient-toolbox)\n[![Coverage](https://img.shields.io/badge/Coverage-100.0%25-success)](https://github.com/ambient-innovation/ambient-toolbox/actions?workflow=CI)\n[![Linting](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![Coding Style](https://img.shields.io/badge/code%20style-Ruff-000000.svg)](https://github.com/astral-sh/ruff)\n[![Documentation Status](https://readthedocs.org/projects/ambient-toolbox/badge/?version=latest)](https://ambient-toolbox.readthedocs.io/en/latest/?badge=latest)\n\nPython toolbox of Ambient Digital containing an abundance of useful tools and gadgets.\n\n[PyPI](https://pypi.org/project/ambient-toolbox/) • [GitHub](https://github.com/ambient-innovation/ambient-toolbox) • [Full documentation](https://ambient-toolbox.readthedocs.io/en/latest/index.html)\n\nCreator \u0026 Maintainer: [Ambient Digital](https://ambient.digital/)\n\n## Features\n\n* Useful classes and mixins for Django admin\n* Coverage script for GitLab\n* Extensions for DRF and GraphQL\n* Mailing backends for Django\n* Management commands for validating a projects test structure\n* Object ownership tracking with timestamping\n* Pattern for improved workflow with Django ORM\n* Helper and util functions for many different use-cases\n* Sentry plugins\n* django-scrubber wrapper class\n* Mixins and test classes for django (class-based) views\n\n# Migration from \"ai_django_core\"\n\nThis package was previously known as [ai_django_core](https://pypi.org/project/ai-django-core/). Due to the\nmisleading nature of the name, we chose to rename it with something more meaningful.\n\nThe migration is really simple, just:\n\n* Install ambient-toolbox and remove the dependency to ai-django-core\n* Search and replace all usages of `from ai_django_core...` to `from ambient_toolbox...`\n* The class-based mail functionality was moved to a separate package called\n[django-pony-express](https://pypi.org/project/django-pony-express/).\n\n## Installation\n\n- Install the package via pip:\n\n  `pip install ambient-toolbox`\n\n  or via uv:\n\n  `uv add ambient-toolbox`\n\n- Add module to `INSTALLED_APPS` within the main django `settings.py`:\n\n```python\nINSTALLED_APPS = (\n    # ...\n    \"ambient_toolbox\",\n)\n```\n\n- Apply migrations by running:\n\n  `python ./manage.py migrate`\n\n## Releasing a new version\n\nReleases are fully automated. Push a version tag and the pipeline will build, sign with\n[Sigstore](https://www.sigstore.dev/), publish to PyPI via\n[Trusted Publishing](https://docs.pypi.org/trusted-publishers/), and create a GitHub Release —\nno API tokens needed.\n\n```bash\ngit tag v\u003cversion\u003e          # e.g. git tag v1.2.3\ngit push origin v\u003cversion\u003e\n```\n\nTags **must** start with `v`. Tags without the prefix won't trigger the pipeline.\n\n### First-time setup\n\nBefore the pipeline can run for the first time, an admin must:\n\n1. **Create GitHub Environment `pypi`**\n   - Go to *Settings → Environments → New environment*, name it exactly `pypi`\n   - Under *Deployment branches and tags*, add a tag rule with pattern `v*`\n   - Optionally add required reviewers for a manual approval gate\n\n2. **Configure PyPI Trusted Publisher**\n   - Go to *PyPI → Project settings → Publishing → Add a new publisher*\n   - Fill in: Owner `ambient-innovation`, Repository `ambient-toolbox`,\n     Workflow `release.yml`, Environment `pypi`\n\n### Publish to ReadTheDocs.io\n\n- Fetch the latest changes in GitHub mirror and push them\n- Trigger new build at ReadTheDocs.io (follow instructions in admin panel at RTD) if the GitHub webhook is not yet set\n  up.\n\n### Maintenance\n\nPlease note that this package supports the [ambient-package-update](https://pypi.org/project/ambient-package-update/).\nSo you don't have to worry about the maintenance of this package. This updater is rendering all important\nconfiguration and setup files. It works similar to well-known updaters like `pyupgrade` or `django-upgrade`.\n\nTo run an update, refer to the [documentation page](https://pypi.org/project/ambient-package-update/)\nof the \"ambient-package-update\".\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fambient-innovation%2Fambient-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fambient-innovation%2Fambient-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fambient-innovation%2Fambient-toolbox/lists"}