Skip to main content

Tackle is a declarative DSL for building modular workflows and code generators. Tool is plugins based and can easily be extended by writing additional hooks or importing external providers that can be turned into a self documenting CLI, all out of yaml, json, toml.

Project description

tackle

pypi python codecov

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tackle-0.7.6.tar.gz (262.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tackle-0.7.6-py2.py3-none-any.whl (296.4 kB view details)

Uploaded Python 2Python 3

File details

Details for the file tackle-0.7.6.tar.gz.

File metadata

  • Download URL: tackle-0.7.6.tar.gz
  • Upload date:
  • Size: 262.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for tackle-0.7.6.tar.gz
Algorithm Hash digest
SHA256 fa307f7a496111a235ea62da6e83ec41dff4874523c64cc3bd47431da4d3d520
MD5 991490f841643cbc77348428c432b7df
BLAKE2b-256 66fa76db2131062a521925b4bcee7bcd37f6806ff05cb589fb4024ac76472479

See more details on using hashes here.

File details

Details for the file tackle-0.7.6-py2.py3-none-any.whl.

File metadata

  • Download URL: tackle-0.7.6-py2.py3-none-any.whl
  • Upload date:
  • Size: 296.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for tackle-0.7.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 34767576b6153114206afba967aae3446030737e072a1e38d5319775852c768b
MD5 baafec1de5dbfc47c21ac45a59432103
BLAKE2b-256 eee1d104babe24767cf3537518e9438b102b01a29098ae6414103c126108d670

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page