.. contents::
:backlinks: top
========
Status
========
|VersionsBadge| |ImplementationBadge| |LicenseBadge|
|PyPI| |RTD| |Codecov| |Pyup| |CommitsSinceLastRelease|
=======
About
=======
This is a Python cffi_ port of libtcod_.
This library is `hosted on GitHub <https://github.com/libtcod/python-tcod>`_.
Any issues you have with this module can be reported at the
`GitHub issue tracker <https://github.com/libtcod/python-tcod/issues>`_.
=======
Usage
=======
This module was designed to be backward compatible with the original libtcodpy
module distributed with libtcod.
If you had code that runs on libtcodpy then you can use this library as a
drop-in replacement. This installs a libtcodpy module so you'll only need to
delete the libtcodpy/ folder that's usually bundled in an older libtcodpy
project.
Guides and Tutorials for libtcodpy should work with the tcod module.
The latest documentation can be found here:
https://python-tcod.readthedocs.io/en/latest/
==============
Installation
==============
Detailed installation instructions are here:
https://python-tcod.readthedocs.io/en/latest/installation.html
For the most part it's just::
pip3 install tcod
==============
Requirements
==============
* Python 3.10+
* Windows, Linux, or MacOS X 10.9+.
* On Linux, requires libsdl3
===========
Changelog
===========
You can find the most recent changelog
`here <https://github.com/libtcod/python-tcod/blob/main/CHANGELOG.md>`_.
=========
License
=========
python-tcod is distributed under the `Simplified 2-clause FreeBSD license
<https://github.com/HexDecimal/python-tdl/blob/master/LICENSE.txt>`_.
.. _LICENSE.txt: https://github.com/libtcod/python-tcod/blob/master/LICENSE.txt
.. _python-tdl: https://github.com/libtcod/python-tcod/
.. _cffi: https://cffi.readthedocs.io/en/latest/
.. _numpy: https://docs.scipy.org/doc/numpy/user/index.html
.. _libtcod: https://github.com/libtcod/libtcod
.. _pip: https://pip.pypa.io/en/stable/installing/
.. |VersionsBadge| image:: https://img.shields.io/pypi/pyversions/tcod.svg?maxAge=2592000
:target: https://pypi.python.org/pypi/tcod
.. |ImplementationBadge| image:: https://img.shields.io/pypi/implementation/tcod.svg?maxAge=2592000
:target: https://pypi.python.org/pypi/tcod
.. |LicenseBadge| image:: https://img.shields.io/pypi/l/tcod.svg?maxAge=2592000
:target: https://github.com/HexDecimal/tcod/blob/master/LICENSE.txt
.. |PyPI| image:: https://img.shields.io/pypi/v/tcod.svg?maxAge=10800
:target: https://pypi.python.org/pypi/tcod
.. |RTD| image:: https://readthedocs.org/projects/python-tcod/badge/?version=latest
:target: http://python-tcod.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. |Codecov| image:: https://codecov.io/gh/libtcod/python-tcod/branch/master/graph/badge.svg
:target: https://codecov.io/gh/libtcod/python-tcod
.. |Issues| image:: https://img.shields.io/github/issues/libtcod/python-tcod.svg?maxAge=3600
:target: https://github.com/libtcod/python-tcod/issues
.. |Pyup| image:: https://pyup.io/repos/github/libtcod/python-tcod/shield.svg
:target: https://pyup.io/repos/github/libtcod/python-tcod/
:alt: Updates
.. |CommitsSinceLastRelease| image:: https://img.shields.io/github/commits-since/libtcod/python-tcod/latest
:target: https://github.com/libtcod/python-tcod/blob/main/CHANGELOG.md
Raw data
{
"_id": null,
"home_page": null,
"name": "tcod",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "roguelike, cffi, Unicode, libtcod, field-of-view, pathfinding",
"author": null,
"author_email": "Kyle Benesch <4b796c65+tcod@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/fd/7e/47e6a7ee07531953ff55e2f0c946d226e26678e79ff896bdecb5ac46842f/tcod-19.1.0.tar.gz",
"platform": "Windows",
"description": ".. contents::\n :backlinks: top\n\n========\n Status\n========\n|VersionsBadge| |ImplementationBadge| |LicenseBadge|\n\n|PyPI| |RTD| |Codecov| |Pyup| |CommitsSinceLastRelease|\n\n=======\n About\n=======\nThis is a Python cffi_ port of libtcod_.\n\nThis library is `hosted on GitHub <https://github.com/libtcod/python-tcod>`_.\n\nAny issues you have with this module can be reported at the\n`GitHub issue tracker <https://github.com/libtcod/python-tcod/issues>`_.\n\n=======\n Usage\n=======\nThis module was designed to be backward compatible with the original libtcodpy\nmodule distributed with libtcod.\nIf you had code that runs on libtcodpy then you can use this library as a\ndrop-in replacement. This installs a libtcodpy module so you'll only need to\ndelete the libtcodpy/ folder that's usually bundled in an older libtcodpy\nproject.\n\nGuides and Tutorials for libtcodpy should work with the tcod module.\n\nThe latest documentation can be found here:\nhttps://python-tcod.readthedocs.io/en/latest/\n\n==============\n Installation\n==============\nDetailed installation instructions are here:\nhttps://python-tcod.readthedocs.io/en/latest/installation.html\n\nFor the most part it's just::\n\n pip3 install tcod\n\n==============\n Requirements\n==============\n* Python 3.10+\n* Windows, Linux, or MacOS X 10.9+.\n* On Linux, requires libsdl3\n\n===========\n Changelog\n===========\n\nYou can find the most recent changelog\n`here <https://github.com/libtcod/python-tcod/blob/main/CHANGELOG.md>`_.\n\n=========\n License\n=========\npython-tcod is distributed under the `Simplified 2-clause FreeBSD license\n<https://github.com/HexDecimal/python-tdl/blob/master/LICENSE.txt>`_.\n\n.. _LICENSE.txt: https://github.com/libtcod/python-tcod/blob/master/LICENSE.txt\n\n.. _python-tdl: https://github.com/libtcod/python-tcod/\n\n.. _cffi: https://cffi.readthedocs.io/en/latest/\n\n.. _numpy: https://docs.scipy.org/doc/numpy/user/index.html\n\n.. _libtcod: https://github.com/libtcod/libtcod\n\n.. _pip: https://pip.pypa.io/en/stable/installing/\n\n.. |VersionsBadge| image:: https://img.shields.io/pypi/pyversions/tcod.svg?maxAge=2592000\n :target: https://pypi.python.org/pypi/tcod\n\n.. |ImplementationBadge| image:: https://img.shields.io/pypi/implementation/tcod.svg?maxAge=2592000\n :target: https://pypi.python.org/pypi/tcod\n\n.. |LicenseBadge| image:: https://img.shields.io/pypi/l/tcod.svg?maxAge=2592000\n :target: https://github.com/HexDecimal/tcod/blob/master/LICENSE.txt\n\n.. |PyPI| image:: https://img.shields.io/pypi/v/tcod.svg?maxAge=10800\n :target: https://pypi.python.org/pypi/tcod\n\n.. |RTD| image:: https://readthedocs.org/projects/python-tcod/badge/?version=latest\n :target: http://python-tcod.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n.. |Codecov| image:: https://codecov.io/gh/libtcod/python-tcod/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/libtcod/python-tcod\n\n.. |Issues| image:: https://img.shields.io/github/issues/libtcod/python-tcod.svg?maxAge=3600\n :target: https://github.com/libtcod/python-tcod/issues\n\n.. |Pyup| image:: https://pyup.io/repos/github/libtcod/python-tcod/shield.svg\n :target: https://pyup.io/repos/github/libtcod/python-tcod/\n :alt: Updates\n\n.. |CommitsSinceLastRelease| image:: https://img.shields.io/github/commits-since/libtcod/python-tcod/latest\n :target: https://github.com/libtcod/python-tcod/blob/main/CHANGELOG.md\n",
"bugtrack_url": null,
"license": null,
"summary": "The official Python port of libtcod.",
"version": "19.1.0",
"project_urls": {
"Changelog": "https://github.com/libtcod/python-tcod/blob/main/CHANGELOG.md",
"Documentation": "https://python-tcod.readthedocs.io",
"Forum": "https://github.com/libtcod/python-tcod/discussions",
"Homepage": "https://github.com/libtcod/python-tcod",
"Source": "https://github.com/libtcod/python-tcod",
"Tracker": "https://github.com/libtcod/python-tcod/issues"
},
"split_keywords": [
"roguelike",
" cffi",
" unicode",
" libtcod",
" field-of-view",
" pathfinding"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "0a81d26ab6e82adadec8fe2e070e5e3ca21f52c21e49f8bfd5cd3e6931893072",
"md5": "ca292fec7a2f0228355919916039fcb1",
"sha256": "1ac90daf0a44777d73157f9200889fe8ae3b82dbe6d981df2268c2e23092944b"
},
"downloads": -1,
"filename": "tcod-19.1.0-cp310-abi3-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "ca292fec7a2f0228355919916039fcb1",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3873843,
"upload_time": "2025-07-12T09:46:47",
"upload_time_iso_8601": "2025-07-12T09:46:47.333982Z",
"url": "https://files.pythonhosted.org/packages/0a/81/d26ab6e82adadec8fe2e070e5e3ca21f52c21e49f8bfd5cd3e6931893072/tcod-19.1.0-cp310-abi3-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c710f38b98c75db165b63f42553e7ccc53d394cfa55caf122e0b0f1de26e50d5",
"md5": "fb701c4dbfb5fd872d531307280931b0",
"sha256": "7d4cca9d9e8c6713bea4bea4c39c16a8eef5c8f7ffa0dd5c4fa1104ae3a21fee"
},
"downloads": -1,
"filename": "tcod-19.1.0-cp310-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "fb701c4dbfb5fd872d531307280931b0",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 8267422,
"upload_time": "2025-07-12T09:46:49",
"upload_time_iso_8601": "2025-07-12T09:46:49.761668Z",
"url": "https://files.pythonhosted.org/packages/c7/10/f38b98c75db165b63f42553e7ccc53d394cfa55caf122e0b0f1de26e50d5/tcod-19.1.0-cp310-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "76a533be7ac9e99386686a90fd7d9fe07e9ac7f12c1fac1c1e5efc55244cd049",
"md5": "e33a59b40f404cec7dbdac8dd11787e5",
"sha256": "847156c057d02a095794ce51c7fb4a486dd5a2f00128d025983054aaa16e2fc2"
},
"downloads": -1,
"filename": "tcod-19.1.0-cp310-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "e33a59b40f404cec7dbdac8dd11787e5",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 8607358,
"upload_time": "2025-07-12T09:46:52",
"upload_time_iso_8601": "2025-07-12T09:46:52.059212Z",
"url": "https://files.pythonhosted.org/packages/76/a5/33be7ac9e99386686a90fd7d9fe07e9ac7f12c1fac1c1e5efc55244cd049/tcod-19.1.0-cp310-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3694314f4ef0968d9b7fce12f8f74ba15c7fe5feec9ba40459507ecdcc9ac5d7",
"md5": "f293e1a868daa363415d70cc8afb200e",
"sha256": "b5aa6c2e11ae3ffa9a894b683b85e6c5778f2dac7b3368e8082b5417a4a336f5"
},
"downloads": -1,
"filename": "tcod-19.1.0-cp310-abi3-win32.whl",
"has_sig": false,
"md5_digest": "f293e1a868daa363415d70cc8afb200e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 1603868,
"upload_time": "2025-07-12T09:46:53",
"upload_time_iso_8601": "2025-07-12T09:46:53.950355Z",
"url": "https://files.pythonhosted.org/packages/36/94/314f4ef0968d9b7fce12f8f74ba15c7fe5feec9ba40459507ecdcc9ac5d7/tcod-19.1.0-cp310-abi3-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "77f01607588dc3bd754b753dde3085223835d92b842c855feeac73a113366796",
"md5": "019f51148ac1e819168c861c47bdeda3",
"sha256": "c55f32305f5fc03a014e2f8276fb3d522a5d702de5d13d009b6ac0380ba8511b"
},
"downloads": -1,
"filename": "tcod-19.1.0-cp310-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "019f51148ac1e819168c861c47bdeda3",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 1898650,
"upload_time": "2025-07-12T09:46:55",
"upload_time_iso_8601": "2025-07-12T09:46:55.769858Z",
"url": "https://files.pythonhosted.org/packages/77/f0/1607588dc3bd754b753dde3085223835d92b842c855feeac73a113366796/tcod-19.1.0-cp310-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e257b6d00c953aaab0bbd0d40db0dd77fd5e5b222480e8f8eaccaf012270faa9",
"md5": "767aaf7a78a4748caee3c567a4edcbdf",
"sha256": "9b0411f8df9680e5d03d6f1c6dab260fe024f0b6cff125002082dcc11ecaa140"
},
"downloads": -1,
"filename": "tcod-19.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl",
"has_sig": false,
"md5_digest": "767aaf7a78a4748caee3c567a4edcbdf",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 2723577,
"upload_time": "2025-07-12T09:46:57",
"upload_time_iso_8601": "2025-07-12T09:46:57.381354Z",
"url": "https://files.pythonhosted.org/packages/e2/57/b6d00c953aaab0bbd0d40db0dd77fd5e5b222480e8f8eaccaf012270faa9/tcod-19.1.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ddde6a09f1c4559929925112fef771e8b69dd9fa8e4ea6129f824a9a21ff2114",
"md5": "9d57cb7773ddb72bbe0d0ed977aa3927",
"sha256": "f70d28932d377142b3c2952279574c98bbe95471b9b756ad116bff13f41db88c"
},
"downloads": -1,
"filename": "tcod-19.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "9d57cb7773ddb72bbe0d0ed977aa3927",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 2684296,
"upload_time": "2025-07-12T09:46:59",
"upload_time_iso_8601": "2025-07-12T09:46:59.171270Z",
"url": "https://files.pythonhosted.org/packages/dd/de/6a09f1c4559929925112fef771e8b69dd9fa8e4ea6129f824a9a21ff2114/tcod-19.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ce838113b80f7a0b8af9e179ae339fedfe5e4eae220341d70baf06290cd91a2f",
"md5": "1e01b7c716f9071f8122ae4ce38f3bba",
"sha256": "33ba264e501f04e0c8388609fbaddf2c35a99abf6851fc62ce18472932b70e85"
},
"downloads": -1,
"filename": "tcod-19.1.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "1e01b7c716f9071f8122ae4ce38f3bba",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 6887966,
"upload_time": "2025-07-12T09:47:01",
"upload_time_iso_8601": "2025-07-12T09:47:01.182280Z",
"url": "https://files.pythonhosted.org/packages/ce/83/8113b80f7a0b8af9e179ae339fedfe5e4eae220341d70baf06290cd91a2f/tcod-19.1.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "404209b8e660c9228be9c04b33cc52a1fac653e968b51a3623d013e7c426e1eb",
"md5": "2d117b36de1e758a196ff589065b205b",
"sha256": "30bbdc1eb9d4da93637d8d68072aa5cb575f3428e00d815c8da1c5eb5c489749"
},
"downloads": -1,
"filename": "tcod-19.1.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "2d117b36de1e758a196ff589065b205b",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 7168076,
"upload_time": "2025-07-12T09:47:03",
"upload_time_iso_8601": "2025-07-12T09:47:03.339283Z",
"url": "https://files.pythonhosted.org/packages/40/42/09b8e660c9228be9c04b33cc52a1fac653e968b51a3623d013e7c426e1eb/tcod-19.1.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bfd26b22fe2e37fcf016e548c4a8ce1f66b49612512552e75461ca7df881c58c",
"md5": "059875930007bfef6443cd6b291494b8",
"sha256": "e70274fe05063399008608952fe30f8411dd5f1b453a038c8aa795d92134f0ec"
},
"downloads": -1,
"filename": "tcod-19.1.0-pp310-pypy310_pp73-win_amd64.whl",
"has_sig": false,
"md5_digest": "059875930007bfef6443cd6b291494b8",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 1658625,
"upload_time": "2025-07-12T09:47:05",
"upload_time_iso_8601": "2025-07-12T09:47:05.013149Z",
"url": "https://files.pythonhosted.org/packages/bf/d2/6b22fe2e37fcf016e548c4a8ce1f66b49612512552e75461ca7df881c58c/tcod-19.1.0-pp310-pypy310_pp73-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fd7e47e6a7ee07531953ff55e2f0c946d226e26678e79ff896bdecb5ac46842f",
"md5": "62688b250cefd0d6319cad0771960f9a",
"sha256": "ec91f145dc62ce2a126e0169ef915b441289d1821bdfe9b98958663636175ee5"
},
"downloads": -1,
"filename": "tcod-19.1.0.tar.gz",
"has_sig": false,
"md5_digest": "62688b250cefd0d6319cad0771960f9a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 846943,
"upload_time": "2025-07-12T09:47:07",
"upload_time_iso_8601": "2025-07-12T09:47:07.011368Z",
"url": "https://files.pythonhosted.org/packages/fd/7e/47e6a7ee07531953ff55e2f0c946d226e26678e79ff896bdecb5ac46842f/tcod-19.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-12 09:47:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "libtcod",
"github_project": "python-tcod",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "attrs",
"specs": [
[
">=",
"23.1.0"
]
]
},
{
"name": "cffi",
"specs": [
[
">=",
"1.15"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.21.4"
]
]
},
{
"name": "pycparser",
"specs": [
[
">=",
"2.14"
]
]
},
{
"name": "requests",
"specs": [
[
">=",
"2.28.1"
]
]
},
{
"name": "setuptools",
"specs": [
[
">=",
"80.8.0"
]
]
},
{
"name": "types-cffi",
"specs": []
},
{
"name": "types-requests",
"specs": []
},
{
"name": "types-Pillow",
"specs": []
},
{
"name": "types-setuptools",
"specs": []
},
{
"name": "types-tabulate",
"specs": []
},
{
"name": "typing_extensions",
"specs": []
},
{
"name": "pcpp",
"specs": [
[
"==",
"1.30"
]
]
}
],
"tox": true,
"lcname": "tcod"
}