tackle
tackle is an experimental DSL built as a fork of cookiecutter written in documents such as json, yaml, or toml with primitives of a general purpose programming language including functions, structs, methods, and types with rich control flow. It turns a config file into self documenting CLI in a concise declarative syntax.
Core to the language is the notion of a hook which is a pydantic BaseModel under the hood. These hooks can be created, called, or combined in documents and / or python with inheritance and composition. Tackle ships with over 100 native hooks to perform rudimentary tasks from prompting users for CLI inputs, reading / manipulating / writing data to and from files, to rendering templates for code generation / schema translations.
Major syntax changes will be made before the language is officially released and thus using the language is discouraged without reaching out first by leaving issues in this repo. A formal spec is under active development but has sort of taken the back seat while Rob is working on sudoblock.
=< v0.6.0
greeter(target str = 'world')<-:
->: print Hello {{target}}
Future
def greeter(target str = 'world'):
=: print Hello {{target}}
When the syntax is stable, this project will be formally released. Please reach out via discord if you want to talk directly about it in the meantime.
Code of Conduct
Everyone interacting in the tackle project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the PyPA Code of Conduct.
Credit
Special thanks to audreyfeldroy for creating cookiecutter, the basis for this project. Would not have been possible without it and other core dependencies like pydantic and jinja.
Metadata
Release files for tackle 0.7.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tackle-0.7.6.tar.gz | 262.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tackle-0.7.6-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 558.7 kB
Release files / tackle-0.7.6.tar.gz
| Download URL | tackle-0.7.6.tar.gz |
|---|---|
| Size | 262.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fa307f7a496111a235ea62da6e83ec41dff4874523c64cc3bd47431da4d3d520
|
|
BLAKE2b-256 checksum How to use checksums |
66fa76db2131062a521925b4bcee7bcd37f6806ff05cb589fb4024ac76472479
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|
Release files / tackle-0.7.6-py2.py3-none-any.whl
| Download URL | tackle-0.7.6-py2.py3-none-any.whl |
|---|---|
| Size | 296.4 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
34767576b6153114206afba967aae3446030737e072a1e38d5319775852c768b
|
|
BLAKE2b-256 checksum How to use checksums |
eee1d104babe24767cf3537518e9438b102b01a29098ae6414103c126108d670
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.19
|