This Python module wraps the TK.MSTS.Tokens.dll library by Okrasa Ghia. The module allows you to compress and decompress MSTS files such as shape and world files.
Note: Only compression works on Linux and macOS.
The DLL fails internally for decompression when using the Mono runtime.
The TK.MSTS.Tokens.dll file itself can be downloaded separately as part of the TK_Utils package.
A Common Language Runtime (CLR) is required if you wish to compress and decompress files through this module. You can use the Mono runtime on Linux and macOS, or the .NET Framework on Windows.
The TK.MSTS.Tokens.dll library is not bundled with this Python module. It is available as part of the TK_Utils package from the-train.de.
See the Usage section for more details on how to compress and decompress shape and world files using the module.
Steps to install a CLR on your operating system:
sudo apt update
sudo apt install mono-completebrew install monoDownload and install the .NET Framework 4.0 or later from Microsoft.
The .NET Framework is typically already installed on most Windows systems.
pip install --upgrade pytkutilsIf you have downloaded a .whl file from the Releases page, install it with:
pip install path/to/pytkutils-<version>‑py3‑none‑any.whlReplace <version> with the actual version number in the filename. For example:
pip install path/to/pytkutils-0.1.1-py3-none-any.whlgit clone https://github.com/pgroenbaek/pytkutils.git
pip install --upgrade ./pytkutilsTo check whether a file on disk is compressed, you can use the is_compressed function. This function returns True if the file is compressed and False if it is not. If the file is empty or its state cannot be determined, the function will return None.
import pytkutils
compressed = pytkutils.is_compressed("./path/to/example.s")
if compressed is True:
print("Compressed")
elif compressed is False:
print("Uncompressed")
else:
print("Could not determine (possibly empty file)")The compression and decompression functions in this module use the TK.MSTS.Tokens.dll library by Okrasa Ghia. This library is not included with the Python module. You will also need a CLR installed to load this file.
See the Prerequisites section for instructions on how to obtain the TK.MSTS.Tokens.dll library and set up a CLR on your machine.
Alternatively, you can manually compress and decompress using other tools, such as ffeditc_unicode.exe through the Shape File Manager or the FFEDIT_Sub v1.2 utility by Ged Saunders.
import pytkutils
dll_path = "./path/to/TK.MSTS.Tokens.dll"
# Compress and decompress in-place.
pytkutils.compress(dll_path, "./path/to/example.s")
pytkutils.decompress(dll_path, "./path/to/example.s")
# Compress and decompress to an output file.
pytkutils.compress(dll_path, "./path/to/example.s", "./path/to/output.s")
pytkutils.decompress(dll_path, "./path/to/example.s", "./path/to/output.s")You can run tests manually or use tox to test across multiple Python versions.
First, install the required dependencies:
pip install pytest pytest-dependencyThen, run tests with:
pytesttox allows you to test across multiple Python environments.
pip install toxtoxThis will execute tests in all specified Python versions.
The tox.ini file should be in your project root:
[tox]
envlist = py36, py37, py38, py39, py310
[testenv]
deps = pytest
commands = pytestModify envlist to match the Python versions you want to support.
Only compression works on Linux and macOS. The DLL fails internally for decompression when using the Mono runtime.
This Python module was created by Peter Grønbæk Andersen and is licensed under GNU GPL v3.
Note: The
TK.MSTS.Tokens.dlllibrary itself comes with a different license by Okrasa Ghia. That license can be found in the TK_Utils package from the-train.de.