.. 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/56/0b/7515fc64c371cf1914307f25e8a2f3baf6c76d092bbf8182ae945c29ef55/tcod-19.6.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.6.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": "aec5273a572e875af8414a429a41cf4e814248e6b1056a445d7b6fd56ec76710",
"md5": "13e6cc458e9b5496fad753522112f9a8",
"sha256": "aa6022eb11bdd51ef96b862e2406f2e9a9b7a9dfbb725d6142000c79150f8dff"
},
"downloads": -1,
"filename": "tcod-19.6.0-cp310-abi3-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "13e6cc458e9b5496fad753522112f9a8",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3849835,
"upload_time": "2025-10-20T04:34:55",
"upload_time_iso_8601": "2025-10-20T04:34:55.066033Z",
"url": "https://files.pythonhosted.org/packages/ae/c5/273a572e875af8414a429a41cf4e814248e6b1056a445d7b6fd56ec76710/tcod-19.6.0-cp310-abi3-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c1a6c9946b220f2af8cd9c9ca92bf9702d7c9c0e336349b87d21c5fc77a5d87d",
"md5": "da1422577c203ae837c93d3b73447595",
"sha256": "e8fbf9b264d9fd7a7d488fbb8a7be1eb18549dbc994d78e1b85c276e8943025e"
},
"downloads": -1,
"filename": "tcod-19.6.0-cp310-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "da1422577c203ae837c93d3b73447595",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 8234313,
"upload_time": "2025-10-20T04:34:57",
"upload_time_iso_8601": "2025-10-20T04:34:57.429327Z",
"url": "https://files.pythonhosted.org/packages/c1/a6/c9946b220f2af8cd9c9ca92bf9702d7c9c0e336349b87d21c5fc77a5d87d/tcod-19.6.0-cp310-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e37ccc072bad88d1f16b8ad9b4168cd36a5d4447e524ac55c367a9360e559b1f",
"md5": "9d5d65b72b4bbe4cee131aaad304147b",
"sha256": "493ad399246ccd9be7863dd9b6905cd15a927a6d05bd7d20d294132eba4722da"
},
"downloads": -1,
"filename": "tcod-19.6.0-cp310-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "9d5d65b72b4bbe4cee131aaad304147b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 8572157,
"upload_time": "2025-10-20T04:34:59",
"upload_time_iso_8601": "2025-10-20T04:34:59.268683Z",
"url": "https://files.pythonhosted.org/packages/e3/7c/cc072bad88d1f16b8ad9b4168cd36a5d4447e524ac55c367a9360e559b1f/tcod-19.6.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": "37db350794864b8d38ca9f9352e67e5b9063f97f0ff39655e1471a1c6b4aef0c",
"md5": "05039404678775520ca7e887e91d315c",
"sha256": "77edb80ef3a52663e8a7753ac304afa764b71d443d319646582326ed2ac6ccd1"
},
"downloads": -1,
"filename": "tcod-19.6.0-cp310-abi3-win32.whl",
"has_sig": false,
"md5_digest": "05039404678775520ca7e887e91d315c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 1598483,
"upload_time": "2025-10-20T04:35:01",
"upload_time_iso_8601": "2025-10-20T04:35:01.914197Z",
"url": "https://files.pythonhosted.org/packages/37/db/350794864b8d38ca9f9352e67e5b9063f97f0ff39655e1471a1c6b4aef0c/tcod-19.6.0-cp310-abi3-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f6b6babfe1edfe9f6886d3ba556a217914a26d5d013e1db08c514b44e78e4ca0",
"md5": "3d3533abf5d1af1d75334edf8bcede43",
"sha256": "ca0e33678381c8364c2e50d30ad576e1b4c0bd78e6ebee866ab3ca5f314349b7"
},
"downloads": -1,
"filename": "tcod-19.6.0-cp310-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "3d3533abf5d1af1d75334edf8bcede43",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 1889209,
"upload_time": "2025-10-20T04:35:03",
"upload_time_iso_8601": "2025-10-20T04:35:03.177982Z",
"url": "https://files.pythonhosted.org/packages/f6/b6/babfe1edfe9f6886d3ba556a217914a26d5d013e1db08c514b44e78e4ca0/tcod-19.6.0-cp310-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "28e98f8932650b2c832bcf7cc64a07e1bd6862a915eb2c661d582b7d502fe670",
"md5": "b56c91e3d576ea06544c1673c1f587f9",
"sha256": "a6c69912b20f9e392fc307255500697b85c3feee033a04d5aab06878faefa208"
},
"downloads": -1,
"filename": "tcod-19.6.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl",
"has_sig": false,
"md5_digest": "b56c91e3d576ea06544c1673c1f587f9",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 2716983,
"upload_time": "2025-10-20T04:35:04",
"upload_time_iso_8601": "2025-10-20T04:35:04.712461Z",
"url": "https://files.pythonhosted.org/packages/28/e9/8f8932650b2c832bcf7cc64a07e1bd6862a915eb2c661d582b7d502fe670/tcod-19.6.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6e25cb1fcc89534652a296d4083981f350afbe3073e1ce2671ac4980d787035a",
"md5": "32373b0f1e612e22116aa32666622e66",
"sha256": "f3b4ce9fb2a0eabe517f1f4a2c46ef22d42ecfe5c74d951c8050d8c7c285be40"
},
"downloads": -1,
"filename": "tcod-19.6.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "32373b0f1e612e22116aa32666622e66",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 2677336,
"upload_time": "2025-10-20T04:35:06",
"upload_time_iso_8601": "2025-10-20T04:35:06.540300Z",
"url": "https://files.pythonhosted.org/packages/6e/25/cb1fcc89534652a296d4083981f350afbe3073e1ce2671ac4980d787035a/tcod-19.6.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "133e2dc98b3cd6c00c1b1be7687bde3aa7df1d6d236af220167ac2c728831e88",
"md5": "f244ce08655a1ada68fb2cacd6f7469b",
"sha256": "e74923663fd1546ef24ce1c30399e5b58ff45fbb7f331691cd8d1b3883d7e5a8"
},
"downloads": -1,
"filename": "tcod-19.6.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "f244ce08655a1ada68fb2cacd6f7469b",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 6874842,
"upload_time": "2025-10-20T04:35:07",
"upload_time_iso_8601": "2025-10-20T04:35:07.944125Z",
"url": "https://files.pythonhosted.org/packages/13/3e/2dc98b3cd6c00c1b1be7687bde3aa7df1d6d236af220167ac2c728831e88/tcod-19.6.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "862547bda5d0ac7384a14209eb6fbb72683a3b7954947c9aaf4553aa08e7f99a",
"md5": "5074c4c9a868d9adb844ac429e83ee89",
"sha256": "5b86715de2a4651d74865ae64d5c4196cab2555738f7463860ff6fa5e3cdfc7a"
},
"downloads": -1,
"filename": "tcod-19.6.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "5074c4c9a868d9adb844ac429e83ee89",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 7154412,
"upload_time": "2025-10-20T04:35:09",
"upload_time_iso_8601": "2025-10-20T04:35:09.986870Z",
"url": "https://files.pythonhosted.org/packages/86/25/47bda5d0ac7384a14209eb6fbb72683a3b7954947c9aaf4553aa08e7f99a/tcod-19.6.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": "12a6b2757b8627f7b4dcab896ac92e824337eb62e957f2f533d5360c01216e15",
"md5": "76fa22f834fcb6e22aacaaf21d3bf4df",
"sha256": "eab475a6025b2d6629b07a7c6677ba15036f146ce8fe20149915a35667025f61"
},
"downloads": -1,
"filename": "tcod-19.6.0-pp310-pypy310_pp73-win_amd64.whl",
"has_sig": false,
"md5_digest": "76fa22f834fcb6e22aacaaf21d3bf4df",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.10",
"size": 1654661,
"upload_time": "2025-10-20T04:35:11",
"upload_time_iso_8601": "2025-10-20T04:35:11.768049Z",
"url": "https://files.pythonhosted.org/packages/12/a6/b2757b8627f7b4dcab896ac92e824337eb62e957f2f533d5360c01216e15/tcod-19.6.0-pp310-pypy310_pp73-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "560b7515fc64c371cf1914307f25e8a2f3baf6c76d092bbf8182ae945c29ef55",
"md5": "fdf9d0df3d331e7043076d3d039cc32d",
"sha256": "ff3a7377d36e07683bc73b075d2941f60d8c738579f6b99af8e0347095d1d8e5"
},
"downloads": -1,
"filename": "tcod-19.6.0.tar.gz",
"has_sig": false,
"md5_digest": "fdf9d0df3d331e7043076d3d039cc32d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 846841,
"upload_time": "2025-10-20T04:35:13",
"upload_time_iso_8601": "2025-10-20T04:35:13.254232Z",
"url": "https://files.pythonhosted.org/packages/56/0b/7515fc64c371cf1914307f25e8a2f3baf6c76d092bbf8182ae945c29ef55/tcod-19.6.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-20 04:35:13",
"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"
}