├── .github └── workflows │ └── publish.yml ├── .gitignore ├── .mailmap ├── .readthedocs.yaml ├── CHANGELOG.md ├── LICENSE.txt ├── MANIFEST.in ├── README.md ├── docs ├── Makefile ├── _static │ └── css │ │ └── custom.css ├── avoid.rst ├── bad_encodings.rst ├── cite.rst ├── cli.rst ├── conf.py ├── config.rst ├── detect.rst ├── encodings.rst ├── explain.rst ├── fixes.rst ├── heuristic.rst ├── images │ └── shipping-label.png └── index.rst ├── ftfy ├── __init__.py ├── bad_codecs │ ├── __init__.py │ ├── sloppy.py │ └── utf8_variants.py ├── badness.py ├── chardata.py ├── cli.py ├── fixes.py ├── formatting.py └── py.typed ├── mypy.ini ├── notebook ├── excel-export.png └── ftfy talk.ipynb ├── notes └── mysteries.txt ├── pyproject.toml ├── pytest.ini ├── scripts └── char_data_table.py ├── tests ├── __init__.py ├── face.txt ├── test-cases │ ├── README.md │ ├── in-the-wild.json │ ├── known-failures.json │ ├── language-names.json │ ├── negative.json │ └── synthetic.json ├── test_bytes.py ├── test_characters.py ├── test_cli.py ├── test_encodings.py ├── test_entities.py └── test_examples_in_json.py ├── tox.ini └── uv.lock /.github/workflows/publish.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/.github/workflows/publish.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/.gitignore -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/.mailmap -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/.readthedocs.yaml -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/LICENSE.txt -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/MANIFEST.in -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/README.md -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/Makefile -------------------------------------------------------------------------------- /docs/_static/css/custom.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/_static/css/custom.css -------------------------------------------------------------------------------- /docs/avoid.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/avoid.rst -------------------------------------------------------------------------------- /docs/bad_encodings.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/bad_encodings.rst -------------------------------------------------------------------------------- /docs/cite.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/cite.rst -------------------------------------------------------------------------------- /docs/cli.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/cli.rst -------------------------------------------------------------------------------- /docs/conf.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/conf.py -------------------------------------------------------------------------------- /docs/config.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/config.rst -------------------------------------------------------------------------------- /docs/detect.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/detect.rst -------------------------------------------------------------------------------- /docs/encodings.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/encodings.rst -------------------------------------------------------------------------------- /docs/explain.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/explain.rst -------------------------------------------------------------------------------- /docs/fixes.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/fixes.rst -------------------------------------------------------------------------------- /docs/heuristic.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/heuristic.rst -------------------------------------------------------------------------------- /docs/images/shipping-label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/images/shipping-label.png -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/docs/index.rst -------------------------------------------------------------------------------- /ftfy/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/__init__.py -------------------------------------------------------------------------------- /ftfy/bad_codecs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/bad_codecs/__init__.py -------------------------------------------------------------------------------- /ftfy/bad_codecs/sloppy.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/bad_codecs/sloppy.py -------------------------------------------------------------------------------- /ftfy/bad_codecs/utf8_variants.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/bad_codecs/utf8_variants.py -------------------------------------------------------------------------------- /ftfy/badness.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/badness.py -------------------------------------------------------------------------------- /ftfy/chardata.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/chardata.py -------------------------------------------------------------------------------- /ftfy/cli.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/cli.py -------------------------------------------------------------------------------- /ftfy/fixes.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/fixes.py -------------------------------------------------------------------------------- /ftfy/formatting.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/ftfy/formatting.py -------------------------------------------------------------------------------- /ftfy/py.typed: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mypy.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/mypy.ini -------------------------------------------------------------------------------- /notebook/excel-export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/notebook/excel-export.png -------------------------------------------------------------------------------- /notebook/ftfy talk.ipynb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/notebook/ftfy talk.ipynb -------------------------------------------------------------------------------- /notes/mysteries.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/notes/mysteries.txt -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/pyproject.toml -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/pytest.ini -------------------------------------------------------------------------------- /scripts/char_data_table.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/scripts/char_data_table.py -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/face.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/face.txt -------------------------------------------------------------------------------- /tests/test-cases/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test-cases/README.md -------------------------------------------------------------------------------- /tests/test-cases/in-the-wild.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test-cases/in-the-wild.json -------------------------------------------------------------------------------- /tests/test-cases/known-failures.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test-cases/known-failures.json -------------------------------------------------------------------------------- /tests/test-cases/language-names.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test-cases/language-names.json -------------------------------------------------------------------------------- /tests/test-cases/negative.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test-cases/negative.json -------------------------------------------------------------------------------- /tests/test-cases/synthetic.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test-cases/synthetic.json -------------------------------------------------------------------------------- /tests/test_bytes.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test_bytes.py -------------------------------------------------------------------------------- /tests/test_characters.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test_characters.py -------------------------------------------------------------------------------- /tests/test_cli.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test_cli.py -------------------------------------------------------------------------------- /tests/test_encodings.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test_encodings.py -------------------------------------------------------------------------------- /tests/test_entities.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test_entities.py -------------------------------------------------------------------------------- /tests/test_examples_in_json.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tests/test_examples_in_json.py -------------------------------------------------------------------------------- /tox.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/tox.ini -------------------------------------------------------------------------------- /uv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rspeer/python-ftfy/HEAD/uv.lock --------------------------------------------------------------------------------