{"id":30476393,"url":"https://github.com/tesorio/django-anon","last_synced_at":"2025-10-09T00:13:08.451Z","repository":{"id":36072960,"uuid":"182576282","full_name":"Tesorio/django-anon","owner":"Tesorio","description":":shipit: Anonymize production data so it can be safely used in not-so-safe environments","archived":false,"fork":false,"pushed_at":"2024-01-30T06:48:30.000Z","size":215,"stargazers_count":163,"open_issues_count":9,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-18T12:01:33.205Z","etag":null,"topics":["django","hacktoberfest"],"latest_commit_sha":null,"homepage":"https://django-anon.readthedocs.io/en/latest/","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/Tesorio.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-21T19:52:08.000Z","updated_at":"2025-05-16T10:18:13.000Z","dependencies_parsed_at":"2023-01-16T12:49:25.889Z","dependency_job_id":null,"html_url":"https://github.com/Tesorio/django-anon","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Tesorio/django-anon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tesorio%2Fdjango-anon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tesorio%2Fdjango-anon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tesorio%2Fdjango-anon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tesorio%2Fdjango-anon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tesorio","download_url":"https://codeload.github.com/Tesorio/django-anon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tesorio%2Fdjango-anon/sbom","scorecard":{"id":139403,"data":{"date":"2025-08-04","repo":{"name":"github.com/Tesorio/django-anon","commit":"2bb97539537f36cc1671f4f2c4775e654db3f427"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":3.3,"checks":[{"name":"Code-Review","score":9,"reason":"Found 24/26 approved changesets -- score normalized to 9","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:83: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:100: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/Tesorio/django-anon/main.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:105","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:34","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:47","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:73","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:89","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   5 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"50 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2021-421 / GHSA-h4m5-qpfp-3mpv","Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: GHSA-3ww4-gg4f-jr7f","Warn: Project is vulnerable to: GHSA-5cpq-8wj7-hf2v","Warn: Project is vulnerable to: GHSA-9v9h-cgj8-h64p","Warn: Project is vulnerable to: PYSEC-2023-254 / GHSA-jfhm-5ghh-2f97","Warn: Project is vulnerable to: GHSA-jm77-qphf-c4w8","Warn: Project is vulnerable to: PYSEC-2021-63 / GHSA-rhm9-p9w5-fwm7","Warn: Project is vulnerable to: GHSA-v8gr-m533-ghj9","Warn: Project is vulnerable to: GHSA-w7pp-m8wf-vj6r","Warn: Project is vulnerable to: GHSA-x4qr-2fvf-3mr5","Warn: Project is vulnerable to: PYSEC-2021-98 / GHSA-68w8-qjq3-2gfm","Warn: Project is vulnerable to: GHSA-7xr5-9hcq-chf9","Warn: Project is vulnerable to: GHSA-8x94-hmjh-97hq","Warn: Project is vulnerable to: PYSEC-2021-99 / GHSA-p99v-5w3c-jqq9","Warn: Project is vulnerable to: PYSEC-2021-8 / GHSA-qm57-vhq3-3fwf","Warn: Project is vulnerable to: GHSA-rrqc-c2jx-6jgv","Warn: Project is vulnerable to: PYSEC-2021-7 / GHSA-rxjp-mfm9-w4wr","Warn: Project is vulnerable to: PYSEC-2021-439 / GHSA-v6rh-hp5x-86rv","Warn: Project is vulnerable to: PYSEC-2021-6 / GHSA-xgxc-v2qg-chmh","Warn: Project is vulnerable to: PYSEC-2021-109 / GHSA-xpfp-f569-q3p2","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: GHSA-2m57-hf25-phgg","Warn: Project is vulnerable to: PYSEC-2021-333 / GHSA-p5w8-wqhj-9hhf","Warn: Project is vulnerable to: PYSEC-2023-87 / GHSA-rrm6-wvj7-cwh2","Warn: Project is vulnerable to: GHSA-753j-mpmx-qq6g","Warn: Project is vulnerable to: GHSA-7cx3-6m66-7c5m","Warn: Project is vulnerable to: GHSA-8w49-h785-mj3c","Warn: Project is vulnerable to: PYSEC-2023-75 / GHSA-hj3f-6gcp-jg8j","Warn: Project is vulnerable to: GHSA-qppv-j76h-2rpx","Warn: Project is vulnerable to: GHSA-w235-7p84-xx57","Warn: Project is vulnerable to: GHSA-g7vv-2v7x-gj9p","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2021-59 / GHSA-5phf-pp7p-vc2r","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2021-108 / GHSA-q2q7-5pp4-w6pg","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2024-187 / GHSA-rqc4-2hc7-8c8v","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T07:35:54.790Z","repository_id":36072960,"created_at":"2025-08-16T07:35:54.790Z","updated_at":"2025-08-16T07:35:54.790Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271844821,"owners_count":24832830,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-24T02:00:11.135Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["django","hacktoberfest"],"created_at":"2025-08-24T10:24:16.946Z","updated_at":"2025-10-09T00:13:03.396Z","avatar_url":"https://github.com/Tesorio.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":".. BANNERSTART\n.. Since PyPI does not support raw directives, we remove them from the README\n..\n.. raw directives are only used to make README fancier on GitHub and do not\n.. contain relevant information to be displayed in PyPI, as they are not tied\n.. to the current version, but to the current development status\n.. raw:: html\n\n    \u003cp align=\"center\"\u003e\n      \u003ca href=\"https://github.com/Tesorio/django-anon\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/Tesorio/django-anon/master/icon.svg?sanitize=true\" width=\"128\"\u003e\n      \u003c/a\u003e\n    \u003c/p\u003e\n\n    \u003ch1 align=\"center\"\u003edjango-anon\u003c/h1\u003e\n    \u003cp align=\"center\"\u003e\n      \u003cstrong\u003e\n        \u003cimg src=\"https://github.githubassets.com/images/icons/emoji/shipit.png\" width=\"16\"\u003e Anonymize production data so it can be safely used in not-so-safe environments\n      \u003c/strong\u003e\n    \u003c/p\u003e\n\n    \u003cp align=\"center\"\u003e\n      \u003ca href=\"https://github.com/Tesorio/django-anon/actions?query=branch%3Amaster\"\u003e\n        \u003cimg src=\"https://github.com/Tesorio/django-anon/workflows/CI/badge.svg?branch=master\"\u003e\n      \u003c/a\u003e\n      \u003ca href=\"https://django-anon.readthedocs.io/en/latest/\"\u003e\n        \u003cimg src=\"https://readthedocs.org/projects/pip/badge/?version=latest\u0026style=flat\"\u003e\n      \u003c/a\u003e\n      \u003ca href=\"https://github.com/Tesorio/django-anon/blob/master/LICENSE.txt\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\"\u003e\n      \u003c/a\u003e\n      \u003ca href=\"https://pypi.org/project/django-anon/\"\u003e\n        \u003cimg src=\"https://img.shields.io/pypi/v/django-anon.svg?color=blue\"\u003e\n      \u003c/a\u003e\n    \u003c/p\u003e\n    \n    \u003cp align=\"center\"\u003e\n      \u003ca href=\"#installation\"\u003e\n        Install\n      \u003c/a\u003e\n      |\n      \u003ca href=\"https://django-anon.readthedocs.io/en/latest/introduction.html#table-of-contents\"\u003e\n        Read Documentation\n      \u003c/a\u003e\n      |\n      \u003ca href=\"https://pypi.org/project/django-anon/\"\u003e\n        PyPI\n      \u003c/a\u003e\n      |\n      \u003ca href=\"https://github.com/Tesorio/django-anon/blob/master/CONTRIBUTING.rst\"\u003e\n        Contribute\n      \u003c/a\u003e\n    \u003c/p\u003e\n.. BANNEREND\n\n**django-anon** will help you anonymize your production database so it can be\nshared among developers, helping to reproduce bugs and make performance improvements\nin a production-like environment.\n\n.. image:: https://raw.githubusercontent.com/Tesorio/django-anon/master/django-anon-recording.gif\n\n.. start-features\n\nFeatures\n========\n\n.. start-features-table\n\n.. csv-table::\n\n   \"🚀\", \"**Really fast** data anonymization and database operations using bulk updates to operate over huge tables\"\n   \"🍰\", \"**Flexible** to use your own anonymization functions or external libraries like `Faker \u003chttps://faker.readthedocs.io/en/latest/index.html\u003e`_\"\n   \"🐩\", \"**Elegant** solution following consolidated patterns from projects like `Django \u003chttps://djangoproject.com/\u003e`_ and `Factory Boy \u003chttps://factoryboy.readthedocs.io/en/latest/index.html\u003e`_\"\n   \"🔨\", \"**Powerful**. It can be used on any projects, not only Django, not only Python. Really!\"\n\n.. end-features-table\n.. end-features\n.. start-table-of-contents\n\nTable of Contents\n=================\n.. contents::\n   :local:\n\n.. end-table-of-contents\n.. start-introduction\n\n\nInstallation\n------------\n\n.. code::\n\n   pip install django-anon\n\n   \nSupported versions\n------------------\n\n* Python (2.7, 3.7)\n* Django (1.11, 2.2, 3.0)\n\n\nLicense\n-------\n\n`MIT \u003chttps://github.com/Tesorio/django-anon/blob/master/LICENSE\u003e`_\n\n.. end-introduction\n.. start-usage\n\n\nUsage\n-----\n\nUse ``anon.BaseAnonymizer`` to define your anonymizer classes:\n\n.. code-block:: python\n\n   import anon\n\n   from your_app.models import Person\n\n   class PersonAnonymizer(anon.BaseAnonymizer):\n      email = anon.fake_email\n      \n      # You can use static values instead of callables\n      is_admin = False\n\n      class Meta:\n         model = Person\n\n   # run anonymizer: be cautious, this will affect your current database!\n   PersonAnonymizer().run()\n\n\nBuilt-in functions\n~~~~~~~~~~~~~~~~~~\n\n.. code:: python\n\n   import anon\n\n   anon.fake_word(min_size=_min_word_size, max_size=20)\n   anon.fake_text(max_size=255, max_diff_allowed=5, separator=' ')\n   anon.fake_small_text(max_size=50)\n   anon.fake_name(max_size=15)\n   anon.fake_username(max_size=10, separator='')\n   anon.fake_email(max_size=40, suffix='@example.com')\n   anon.fake_url(max_size=50, scheme='http://', suffix='.com')\n   anon.fake_phone_number(format='999-999-9999')\n\n\nLazy attributes\n~~~~~~~~~~~~~~~\n\nLazy attributes can be defined as inline lambdas or methods, as shown below,\nusing the ``anon.lazy_attribute`` function/decorator.\n\n.. code-block:: python\n\n   import anon\n\n   from your_app.models import Person\n\n   class PersonAnonymizer(anon.BaseAnonymizer):\n      name = anon.lazy_attribute(lambda o: 'x' * len(o.name))\n\n      @lazy_attribute\n      def date_of_birth(self):\n         # keep year and month\n         return self.date_of_birth.replace(day=1)\n\n      class Meta:\n         model = Person\n\n\nThe clean method\n~~~~~~~~~~~~~~~~\n\n.. code-block:: python\n\n   import anon\n\n   class UserAnonymizer(anon.BaseAnonymizer):\n      class Meta:\n         model = User\n\n      def clean(self, obj):\n         obj.set_password('test')\n         obj.save()\n\n\nDefining a custom QuerySet\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA custom QuerySet can be used to select the rows that should be anonymized:\n\n.. code-block:: python\n\n   import anon\n\n   from your_app.models import Person\n\n   class PersonAnonymizer(anon.BaseAnonymizer):\n      email = anon.fake_email\n\n      class Meta:\n         model = Person\n\n      def get_queryset(self):\n         # keep admins unmodified\n         return Person.objects.exclude(is_admin=True)\n\n\nHigh-quality fake data\n~~~~~~~~~~~~~~~~~~~~~~\n\nIn order to be really fast, **django-anon** uses it's own algorithm to generate fake data. It is\nreally fast, but the generated data is not pretty. If you need something prettier in terms of data,\nwe suggest using `Faker \u003chttps://faker.readthedocs.io/en/latest/index.html\u003e`_, which can be used\nout-of-the-box as the below:\n\n.. code-block:: python\n\n   import anon\n\n   from faker import Faker\n   from your_app.models import Address\n\n   faker = Faker()\n\n   class PersonAnonymizer(anon.BaseAnonymizer):\n      postalcode = faker.postalcode\n\n      class Meta:\n         model = Address\n\n.. end-usage\n\nChangelog\n---------\n\nCheck out `CHANGELOG.rst \u003chttps://github.com/Tesorio/django-anon/blob/master/CHANGELOG.rst\u003e`_ for release notes\n\nContributing\n------------\n\nCheck out `CONTRIBUTING.rst \u003chttps://github.com/Tesorio/django-anon/blob/master/CONTRIBUTING.rst\u003e`_ for information about getting involved\n\n----\n\n`Icon \u003cicon.svg\u003e`_ made by `Eucalyp \u003chttps://www.flaticon.com/authors/eucalyp\u003e`_ from `www.flaticon.com \u003chttps://www.flaticon.com/\u003e`_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftesorio%2Fdjango-anon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftesorio%2Fdjango-anon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftesorio%2Fdjango-anon/lists"}