A Python tool to maintain a modular package architecture.
Project description
Tach
a Python tool to enforce modular design, written in Rust.
Tach lets you define and enforce dependencies across Python packages in your project. A Python package is any directory that contains an __init__.py
.
This enforces a decoupled, modular architecture, which makes maintenance and development easier. If a package tries to import from another package that is not listed as a dependency, tach
will throw an exception.
Here's an example:
Tach is:
- 🌎 Open source
- 🐍 Installable via pip
- 🔧 Able to be adopted incrementally
- ⚡ Implemented with no runtime impact
- ♾️ Interoperable with your existing systems (cli, hooks, ci, etc.)
Getting Started
Installation
pip install tach
Setup
Tach allows you to configure where you want to place package boundaries in your project.
You can do this interactively! From the root of your python project, run:
tach pkg
# Up/Down: Navigate Ctrl + Up: Jump to parent Right: Expand Left: Collapse
# Ctrl + c: Exit without saving Ctrl + s: Save packages Enter: Mark/unmark package Ctrl + a: Mark/unmark all siblings
Mark and unmark each package with 'Enter' (or 'Ctrl + a' to mark all sibling directories as packages). You might want to include all of your Python source packages, or just a few packages which you want to isolate.
Once you have marked all the packages you want to enforce constraints between, run:
tach sync
This will create the root configuration for your project, tach.yml
, with the dependencies that currently exist between each package you've marked.
You can then see what Tach has found by viewing the tach.yml
's contents:
cat tach.yml
NOTE: Your 'project root' directory (the directory containing your tach.yml
) will implicitly be treated as a package boundary, and may show up in your dependency constraints as ''.
Enforcement
Tach comes with a simple cli command to enforce the boundaries that you just set up! From the root of your Python project, run:
tach check
You will see:
✅ All package dependencies validated!
You can validate that Tach is working by either commenting out an item in a depends_on
key in tach.yml
, or by adding an import between packages that didn't previously import from each other.
Give both a try and run tach check
again. This will generate an error:
❌ path/file.py[LNO]: Cannot import 'path.other'. Tags ['scope:other'] cannot depend on ['scope:file'].
Extras
If an error is generated that is an intended dependency, you can sync your actual dependencies with tach.yml
:
tach sync
After running this command, tach check
will always pass.
If your configuration is in a bad state, from the root of your python project you can run:
tach clean
This will wipe all the configuration generated and enforced by Tach.
Tach also supports:
More info in the docs. Tach logs anonymized usage statistics which are easily opted out of. If you have any feedback, we'd love to talk!
If you have any questions or run into any issues, let us know by either reaching out on Discord or submitting a Github Issue!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for tach-0.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd27f033ebf3596ce71a12e44bb8a80dbd92e47a8f446ad68346cee8cdaea239 |
|
MD5 | b4c06c9a459e70129fd5830dc4c3af4a |
|
BLAKE2b-256 | 7993a07f322a7760e0564b8da2fab433550f45f177244542c8cba4142e9a3b1e |
Hashes for tach-0.4.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb3a1f2d620cab4ab3c92e735bb9a6c035f7a4d5fff5f2553a131217882ce672 |
|
MD5 | 8e68c33b9acca7118fd890798dd20d79 |
|
BLAKE2b-256 | 303211c95675d5b3cc49b2fec6d8e5c7f23605e8ab0586fff7e36f68c8d9407a |
Hashes for tach-0.4.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09005036e2bcfeabe03bfc376552a48a8fce78af0648d3c36fa024b90b148594 |
|
MD5 | 1bc393d427b32a3ccb8fa0a0e28a1deb |
|
BLAKE2b-256 | 6796cbed6f499abe7a8e95f2fef712e30b92266ac3b28e0ac008c0222e5eeecd |
Hashes for tach-0.4.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9009836ba315368dc65dc3d99b23dbc3e3bd54d0ad9b12b7724647ee687fc50d |
|
MD5 | dba16a2015419bc968b653c23341aa91 |
|
BLAKE2b-256 | 60304ed81efa9162f24289d5c5004a1b8be285b222745eb63fd0fcca34115d44 |
Hashes for tach-0.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcd9dbd4de56fac6df9a772353102a6425f4bfc653fb67a9c4405933e2c1554e |
|
MD5 | ebdab5310dd88fe578c09b98180c190b |
|
BLAKE2b-256 | 3fcb7a410428c3b0058be85e23e2ee7e78dbe4419371ccf4a6673dfbb9487d25 |
Hashes for tach-0.4.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5399e84c95516d7bddc944d225325b02d1cd01fa8a1872a3392179f50e7fa51 |
|
MD5 | 50867f4da748b475b75cb797e51bc19d |
|
BLAKE2b-256 | d5ca8092202edebd9bdad9d434eb375e8b20b40fff04ca1dfbbbef25d420b620 |
Hashes for tach-0.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e522ae5b9b471224946c15af3a9c7b72b240353288fb46b510b14273abf68680 |
|
MD5 | 50bc5e2241dbbd1fe0e52da17a4860b9 |
|
BLAKE2b-256 | a54b35a9cd20d92a9228d2bb1b62fa3604d6ac60719d241085c38d67156f2faf |
Hashes for tach-0.4.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5eef9ea1ab8fdd628233c8526ea6ee1dccff2780bf1adbbd5285697548c0b4c |
|
MD5 | 5990f0f39ddedbea12a5a3b434c023ea |
|
BLAKE2b-256 | 2bc616cf5525344a0929d6a726dc65c96d0abc92e862b9c2b3c1c9242c7d0113 |
Hashes for tach-0.4.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa6d9f1c39a89d49afa3f201e0589022544fe1f6080fb451f2c2ee0fb4555ca3 |
|
MD5 | ac13cec2648af1e983bb6700c4525b47 |
|
BLAKE2b-256 | 44adca92a535584e18db568e4db055c5b8d62c030a67d226ca807ff656d20f78 |
Hashes for tach-0.4.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f9f1403ab6f878764dfa67f19310ea85b86c49acbf094096cca263b9c2cce38 |
|
MD5 | 2d73c14c54f231675dbe4fdcde429ed7 |
|
BLAKE2b-256 | 082cba4bdc0782fd319fa788710e4ffbb891f486dfc8bd08539aa2f17eaa545a |
Hashes for tach-0.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f8ee8f672d718cb6c18bd581e444cab009367156ce4a35c75b5bf6319d782ec |
|
MD5 | 505c32ffe5f4342e0eca0bba1803b26c |
|
BLAKE2b-256 | d770354a2a42fcd7497fd87b37c30bb082f5080fbf12025047ada805419452e5 |
Hashes for tach-0.4.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9e046475456716602fc29182941934424e7c778b1285c730e586b53d04267c7 |
|
MD5 | 99db2342d0ec2d89ce1831a2e8c1f344 |
|
BLAKE2b-256 | 91a16a84ba9d99877e2553878a30bc19f9994490bfe5a644bcf17573e930c85f |
Hashes for tach-0.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a43158030f1636846dad2c4085baa0533198f7433840ffb7ee516475ed8ee76c |
|
MD5 | e1e20b43210faf3a58f5d06ea72c93d8 |
|
BLAKE2b-256 | 9636fbbb601d2cfff9112b932ac2ff1bee660edd9bcdf29463a016ee2ba070e7 |
Hashes for tach-0.4.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7cb214555e4533f9c2470cf8be02dbd878589393c394f6c06863c4cd7538ab02 |
|
MD5 | c58d6791fb5ebaa3b85c92fa2b42ebf3 |
|
BLAKE2b-256 | 6b8dcc0083937179d8f29c3b970fe3d8b8ab821d9b93331da7fb42a182fad3c5 |
Hashes for tach-0.4.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6ec2d18af6746a8afa011936eaca6a00bf4e47f5f853c71bbf6c88e213a31ba |
|
MD5 | 44662641d261035484c8dce94bcd8135 |
|
BLAKE2b-256 | 86b901ebce61aa4faf59010c77a584317e52ee75c81fd5e73e617ba30605e04b |
Hashes for tach-0.4.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b807140571e7738d675e27d7492fe194862daacbc9f036780b56fab1339a415 |
|
MD5 | f17c815d50118b4c95298725145c0a95 |
|
BLAKE2b-256 | 3f095d470ff5d251982a752371194826024df6cd6ca82694c161feb9ce64a5cd |
Hashes for tach-0.4.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fa9c6b4f4ae87efa54b57a2c30d1f4e2e57c731058165f0a134b8da53a542152 |
|
MD5 | 845882f8215f79e1a0aa44c8f519cbc7 |
|
BLAKE2b-256 | ffdbe9263113cb5b925246f141b23f13ba24a6a394690367dc3489cda6e5ae57 |
Hashes for tach-0.4.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39bbcd34b22d468ebded73d1687d79514ead829f3c46dc320ac7bd87b55ad243 |
|
MD5 | 0a559fb8420b8ee3669d0b08e3cc5be3 |
|
BLAKE2b-256 | 9dd3fc4246f91d2aade5ab0318e8df85085cc8b8729f7428aa579c70dac52d7c |
Hashes for tach-0.4.0-cp312-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d7ab7d529f98d91aa39c2cc8cd2c0974d474a39c795b3e107430a7afef3cade |
|
MD5 | 61aac447ffe0958c71c10787d4689804 |
|
BLAKE2b-256 | 85d284dd87b559ddb8b10d9a85dc721ab86733e925a2231a79a13329a3d04767 |
Hashes for tach-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9b1a6ba900997616f24dfe14d52e9c6b136b76a0528ae4567ecb32c8c49f932b |
|
MD5 | 909bc128df164a0f6b1ad01ee94eaad8 |
|
BLAKE2b-256 | 6e34df2e00b6d4396a5ebd1e430841da2eef2499caadfa7af22e32b6bdbf9c80 |
Hashes for tach-0.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab0cb68c87fe5e730d632e2dce3b119a6965b8723a455d7b9a1d127ba0cd4af7 |
|
MD5 | 17380cb911227193bbd8bb6263d4e8e4 |
|
BLAKE2b-256 | 86f213072fcdbf4171f61dd69d2eabd81c56269b0059ca7b45b3a54eac0b2782 |
Hashes for tach-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02690aa9f52c6cbe0323165c723b0c21951916914673cbc89f76e603eb1626a0 |
|
MD5 | 3786d85e6fbde33bba020774b84adcfa |
|
BLAKE2b-256 | e4680bea108f4c2b96d8d32d37a40f460cc99192d735598a395fd49977dfd251 |
Hashes for tach-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55219fb88b5e187f17ac0539c3512ccb0d917a0d766e827c21ece6cb52aa1bb8 |
|
MD5 | 049ff99e6675db9c145b3da63f715653 |
|
BLAKE2b-256 | 7475b864949b4a15d2964d4a06de5ff3b73c6ee98631f9059a6cc86d2d05ba1d |
Hashes for tach-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96827c04f9b36375f7e44ba30b21416d395bb2ece14ea14a92bd5772c54915a7 |
|
MD5 | 18e6c4a991b263984d2abd4e648d8ba8 |
|
BLAKE2b-256 | ac77547676a94f59ed8d9951035b20a65c834f8e8d2e85fdcb81a63d3b258062 |
Hashes for tach-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 19d38f3d8e01179599d109c52969e5447649e8515b38b14bbb06a8fab3819caf |
|
MD5 | 4fa8e34c677017856f6930627f66fae3 |
|
BLAKE2b-256 | 44b9c2fd0ba7436fca3b4e038b3017d4cd482d3ed8057c9629221baddbc6dc92 |
Hashes for tach-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1fb3779477686d357639e3a308888631175ae15524c397f55cd42fa5a7c8f7f |
|
MD5 | b3e21a1522fad63750d9ba6efa1ae12b |
|
BLAKE2b-256 | bdaf3ef3ea3df24c366c0d681a6b84374aaac5390ab4b247653be082b213e43b |
Hashes for tach-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c359a1009ba3bccf516742780721402d8a8ad9f468a50ab8c50a385d66a19d1 |
|
MD5 | 1a55c9b64817f309b54719dfee62bf9a |
|
BLAKE2b-256 | 72ebf0f9a6cb297fa19555fb09fea80771c1927be6e9c25ce3f71ec3476613d9 |
Hashes for tach-0.4.0-cp311-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4831c7bba07827f9ae0590361c5273746748c3ebc967a9d11b452dc0dc7de5c3 |
|
MD5 | 063dfbb924b66f11e0962948813fb02e |
|
BLAKE2b-256 | f9102ebbc19dfc8637da261b03ede8aa4cb59fed7248d1f7c8acd92c39e85bbe |
Hashes for tach-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3d73eccb03e7daf8566810ae75647fbb37dcb12b8ed93caf375b0875499dd0f |
|
MD5 | 7c57c5b54a4434b3f3d313cf80e34509 |
|
BLAKE2b-256 | 3a5939e5f0fbf7b383f35f03fe9399a58a548fda44f03d832158198f54787eae |
Hashes for tach-0.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7273c9928d968d8f0e4de50ea66f7fcc13a6702ab871275dd0f32b10dbc63939 |
|
MD5 | 82f32ef63615f239f1938002a7a44595 |
|
BLAKE2b-256 | 99da5db8bb92d8be3d924cee5fd609b7c6ff080460c62ef9bd7f3956bfc1419d |
Hashes for tach-0.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d363d36f0f1efda67610dc2302a4302b0a353b89574b326636b19e9e51c1c715 |
|
MD5 | 32029d92a3d2569530945bd2c7741b17 |
|
BLAKE2b-256 | f2dcf02c4e89145b4c760704366aceeec6ac6f4bf57b986eaf4677eea775f146 |
Hashes for tach-0.4.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d94d6115bf03438a8df1fb3e3168fce48e3526b88bd56a8e65692b22f58af13 |
|
MD5 | 1ec86cb8b54027d4d54d931c88577c05 |
|
BLAKE2b-256 | 067cb4ddb19cd12fd1f895dd298dcf719d9e7af48e3e28b6fed77eeb8f1880f7 |
Hashes for tach-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 135eaa906c3ccdfa6da6f33256ac971aa8f11e037c90c6da4911587f63766fb5 |
|
MD5 | 78e3508398fe76e2a1ec1015ef266135 |
|
BLAKE2b-256 | 44192ad44e3aca66d236aeb95affaf3fa2cf9675d0375c03d816025b4cee4660 |
Hashes for tach-0.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 832ed621c2439629b81ffef28b08d8266b811576076bab05cb44d40115d7d618 |
|
MD5 | c37bd3ac71656499f2e769685681b2f6 |
|
BLAKE2b-256 | dd511548a36a921e768f0951747c80fa79c74b3c3b56f477ce3368a663b47456 |
Hashes for tach-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6000a85f14d1b88addb4607839b726a3e00477067f0871a7e3e99ee096e85c7c |
|
MD5 | 5e8f818991256ae4a6cf2cfd437d32c7 |
|
BLAKE2b-256 | 141c4ea3754f18b4db5fce60d86358e4adbfea4c2a840825c81e197437a81c2a |
Hashes for tach-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24895454bdf0ad337fcb383d318960ac9c76710ce4295b533528ec6505dcd3cb |
|
MD5 | aa72f869a5025b06fa95041ec9205fc9 |
|
BLAKE2b-256 | f3ad8a36c25285d33ae0408babb926aac8b23f2e0f0cc568a8706545489d5acc |
Hashes for tach-0.4.0-cp310-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84d204a0cebcae4c0b1ffd22da3ee873ddbb12cbb5c5f8dcee04e05fd6f2512b |
|
MD5 | eefd8d2f7e319f285491caa125212b16 |
|
BLAKE2b-256 | ac70da989a287799235cae7c682749f54b01dc7af3978bb9ca5ff96341f60094 |
Hashes for tach-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd2cc1bffb736457948bc7390f17fa7982321a1fdd64a611e6a2441e412b9601 |
|
MD5 | 28410529735aea25642c45e8da351d03 |
|
BLAKE2b-256 | 5dd2095c4492adc1a937617b2463910701e1fd74b8718da7e9dbf0156cd9c3c2 |
Hashes for tach-0.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28e088746464dcda67a28436a2a017d5f78c88feefb30f6c3550884d1442362c |
|
MD5 | bf74dc40734017d9359d99b1417ab2a3 |
|
BLAKE2b-256 | e3a1d33e8600c5fa0cfcccf4c3832b5f87ec508b7040ead50a2cb6e4f4d19670 |
Hashes for tach-0.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e1641a7eefbcd3f065c042762f03c716c130014d560d4e24664f3885faec2a8 |
|
MD5 | caf32ede1931ea4cf340daf1665152b8 |
|
BLAKE2b-256 | 09ea9d292370cf90c5136e2a49c665ad8ed2422ed19bec470e05ab6183228f59 |
Hashes for tach-0.4.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1358bf1099e4702f75e9b6118002d3bae7c78ce6ae650448101b86052d264603 |
|
MD5 | 45c60ef89399c8ead189db5b4e490271 |
|
BLAKE2b-256 | cc7a04713536bdfc26221d5fc25770988a1c7029c6be0b650022303d6fd508ce |
Hashes for tach-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d65f38b9766b08c520f3fe77472360823e56e0534297e3e2d609ff856246ba3 |
|
MD5 | 9eb2e6ef2a52905eef93532dc3aabb5a |
|
BLAKE2b-256 | 36933daaadf96e44dbd48f5323cdef3a2c4136853b6a896ae1eee7ddfdd7a532 |
Hashes for tach-0.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bcdd7c46bc1777b887ed868ce911d37bad8246069b0da11eba80244e63fd3d82 |
|
MD5 | eec2012aeae4ff1c6d8437962dcae267 |
|
BLAKE2b-256 | 30045f02a742725085e16e8fa72c90596224d8bc44ada0eee0e7aedbc9319667 |
Hashes for tach-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 639d3e3ae276e90d0d8d9e097c02d238062b81ffa1cd5a6a35968bbb164ebf96 |
|
MD5 | 6b8e554cabb25fb326e236e5dd7e4208 |
|
BLAKE2b-256 | fab3616c514e781e92398e7b57a6a874521f81dfe1fdadaea30836d67b16f25a |
Hashes for tach-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6af726da021f9d81412e6ba3112d743dd333162036a31008f9dcf2588e1eb57 |
|
MD5 | 2c4236e4c57a77fd0bedf7153f57bb41 |
|
BLAKE2b-256 | ecd9da56ed5d656c1544c65a968460622054552058fac3c3ff09a7bf428bd6c2 |
Hashes for tach-0.4.0-cp39-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e08c2476407a2626ffa82f774e807841f367fbe29aa3d3bf572f37eaa54cdf5 |
|
MD5 | 28b36c18cb9bd46f2fb1785e1a5bce0f |
|
BLAKE2b-256 | 412856f5a120e9215bcf16c3d461491dab7c0dccd602cd6f2dcc25b4041b3b73 |
Hashes for tach-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c51d929cc21065040f6703f481e064592c94899951e987bfaeb2aa5baf8e6076 |
|
MD5 | f03372000b238a32257e16bf16761818 |
|
BLAKE2b-256 | a661268e2bf8717c40c91560a809ec54a1ee143778e686cbba9f9fe65d4dcd11 |
Hashes for tach-0.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2ca6f18472405a8c705b2010df27e5e1e4bbaa94dc29da41b16fa2c7fa19b0d |
|
MD5 | 272b323a02010d09f2e7195cff6ec55e |
|
BLAKE2b-256 | e6d68e36c77181111d702f66a83066da702748898fc745dfc710b80298be88b5 |
Hashes for tach-0.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d27025b027e63dfad2beb88b327810f77641405dbd5b59b9b1ad01121b94952 |
|
MD5 | d094363a5505bfa3398962dbb1216f5e |
|
BLAKE2b-256 | 6da194cfed2badfff4186f000dc21e536ab2b7bed667c57ebba87952cced2fe6 |
Hashes for tach-0.4.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 61309777f10a8bc5f2de74271596eeb879b01c2aa9e191082a9377975bb7780a |
|
MD5 | 4fe1ba0f7762c44a39e4973fdba4efeb |
|
BLAKE2b-256 | c0d57993f111296eee62733b7ce2369f4152e6a2b796ba8843dd31095688e3d3 |
Hashes for tach-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b9fbef78cc3abff1da0e501c8a6909a28577b5b0e4c0218fa8ac3542ba608ae |
|
MD5 | 3abab96585eb2a5e9c5f6b8dc0c5192c |
|
BLAKE2b-256 | 48754f23aba74dec808947bed5117d41405fb4a3261372505da31783a1adfc6f |
Hashes for tach-0.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2d1e7cbebf674759df41663c088033154718fc3bfaf8d05aa95c4ad4f403400 |
|
MD5 | a19cdb8331971dfe3e518cff372e8822 |
|
BLAKE2b-256 | 3aa2d80629fbdce34998ab3f2d938ca5ebada051b7bbdf9df78fcb40e66f62dd |
Hashes for tach-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 680709e36e796c93ce58e6d78796fa9a1cecdc51e90be01391beec3fa5091c54 |
|
MD5 | becc0ef54a2236744b518a5e1c28f4b0 |
|
BLAKE2b-256 | c8f480a12fdca702b2838ffe8c2ea30ba3a803f2925e81d7e04cf6be9c8bb106 |
Hashes for tach-0.4.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 256cd080b6623fb4c41aeb25e89b39ff0492376dd80bfeb3a2cc71e452cc283d |
|
MD5 | bb13b4451650802cdeaf35624bb610b5 |
|
BLAKE2b-256 | e78c180d5576387fb865c1be6ba3f2d5d85aa0e659b0c6f9e13caa93f495bd04 |
Hashes for tach-0.4.0-cp38-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cdffb4b9dcbbdd6664af9c5b4dc01d5a19ed48b55a5bf985291e6d7adab1db8 |
|
MD5 | 5601e934f1e155fedccc4c6cdf8d4a71 |
|
BLAKE2b-256 | 0407c0c054c98d43e35baa1ec5fd43f1e40b50a9b1c0613da6e46e72c0474750 |
Hashes for tach-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b1ab2cabfade16431e54f67f74d21005dc4290cd90c98de361a6c76621bda04 |
|
MD5 | b9718db2633ba573ba7af06c6055ca77 |
|
BLAKE2b-256 | 22e38ae27351027038bd2d5fcf826964960b748416d9b3d4180262c9d28f50a3 |
Hashes for tach-0.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a089a4c3c948274b3cdbbe9c8577f7c9d7cae8b55e93dd573e67b989a97fa50 |
|
MD5 | 08bc0b8fd6edceae4e6e183f732d572b |
|
BLAKE2b-256 | 265a77d1f767ed1b3be045a301ef868d241d93ba5e6c293b4c210ec8a4ca9c71 |
Hashes for tach-0.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf5cc9d09c63d2dfc55c36fa1c767dddd54eac8ffd91a593cf6753ebcfe748b4 |
|
MD5 | 87739626e8b75a247502caf3ca3cbbc1 |
|
BLAKE2b-256 | 56072d41e22d1a2a05860b697ed15dd78190b3aa76b1cd7a794b7781b4257c09 |
Hashes for tach-0.4.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6233f2e48eff1c47360650501b8884163b0843fc134aff54c3a15514e1f5c511 |
|
MD5 | 139c6be1edf128dfc10181e8d755d5b4 |
|
BLAKE2b-256 | d7edc7cc3cf5fe80c2e214dfb361ae45a1e84219a5b9b58b0427c178b1f4256e |
Hashes for tach-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 766a4915a682835fb0b4b320a161afb64d97673c7baaee7501872c305c951832 |
|
MD5 | 9ede5d97731f50b5c9e26ebe92e12289 |
|
BLAKE2b-256 | fe7d1d12f71ba51b3f2fd3543832dfe6fec3bd32a7f5ac06f86f5befe6b1e60e |
Hashes for tach-0.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26847c5e2dcf85c2e21c8dfd1f8d45444b733523659ce4956beb0f0d2f5d2848 |
|
MD5 | bf6555b8c515ebfb90ec5cb045996da0 |
|
BLAKE2b-256 | c1f3030794043cf4d323583d18f177a3381c97f5f82ed8cf3ca3bd22be9789b2 |