<p>
<a href="https://www.linkedin.com/in/alexandergbraun" rel="nofollow noreferrer">
<img src="https://www.gomezaparicio.com/wp-content/uploads/2012/03/linkedin-logo-1-150x150.png"
alt="linkedin" width="30px" height="30px"
>
</a>
<a href="https://github.com/theNewFlesh" rel="nofollow noreferrer">
<img src="https://tadeuzagallo.com/GithubPulse/assets/img/app-icon-github.png"
alt="github" width="30px" height="30px"
>
</a>
<a href="https://pypi.org/user/the-new-flesh" rel="nofollow noreferrer">
<img src="https://cdn.iconscout.com/icon/free/png-256/python-2-226051.png"
alt="pypi" width="30px" height="30px"
>
</a>
<a href="http://vimeo.com/user3965452" rel="nofollow noreferrer">
<img src="https://cdn.iconscout.com/icon/free/png-512/movie-52-151107.png?f=avif&w=512"
alt="vimeo" width="30px" height="30px"
>
</a>
<a href="http://www.alexgbraun.com" rel="nofollow noreferrer">
<img src="https://i.ibb.co/fvyMkpM/logo.png"
alt="alexgbraun" width="30px" height="30px"
>
</a>
</p>
<!-- <img id="logo" src="resources/logo.png" style="max-width: 717px"> -->
[![](https://img.shields.io/badge/License-MIT-F77E70.svg?style=for-the-badge)](https://github.com/theNewFlesh/rolling-pin/blob/master/LICENSE)
[![](https://img.shields.io/pypi/pyversions/rolling-pin?style=for-the-badge&label=Python&color=A0D17B&logo=python&logoColor=A0D17B)](https://github.com/theNewFlesh/rolling-pin/blob/master/docker/config/pyproject.toml)
[![](https://img.shields.io/pypi/v/rolling-pin?style=for-the-badge&label=PyPI&color=5F95DE&logo=pypi&logoColor=5F95DE)](https://pypi.org/project/rolling-pin/)
[![](https://img.shields.io/pypi/dm/rolling-pin?style=for-the-badge&label=Downloads&color=5F95DE)](https://pepy.tech/project/rolling-pin)
# Introduction
Rolling-pin is a library of generic tools for ETL work and visualization of JSON
blobs and python repositories
See [documentation](https://thenewflesh.github.io/rolling-pin/) for details.
On the documentation main page, under the *Architecture* section, is a
dynamically generated dependency graph of rolling-pin's current architecture.
It is generated using the RepoETL class.
If you look under the *Metrics* section you will find Radon code metric plots
and data of the rolling-pin source code, generated by the RadonETL class.
Also have a look at this
**[Jupyter notebook demo](https://github.com/theNewFlesh/rolling-pin/blob/master/notebooks/prototype_demo.ipynb)**
for a taste of what rolling-pin can do.
---
# Installation for Developers
### Docker
1. Install [docker-desktop](https://docs.docker.com/desktop/)
2. Ensure docker-desktop has at least 4 GB of memory allocated to it.
3. `git clone git@github.com:theNewFlesh/rolling-pin.git`
4. `cd rolling-pin`
5. `chmod +x bin/rolling-pin`
6. `bin/rolling-pin docker-start`
- If building on a M1 Mac run `export DOCKER_DEFAULT_PLATFORM=linux/amd64` first.
The service should take a few minutes to start up.
Run `bin/rolling-pin --help` for more help on the command line tool.
### ZSH Setup
1. `bin/rolling-pin` must be run from this repository's top level directory.
2. Therefore, if using zsh, it is recommended that you paste the following line
in your ~/.zshrc file:
- `alias rolling-pin="cd [parent dir]/rolling-pin; bin/rolling-pin"`
- Replace `[parent dir]` with the parent directory of this repository
3. Consider adding the following line to your ~/.zshrc if you are using a M1 Mac:
- `export DOCKER_DEFAULT_PLATFORM=linux/amd64`
4. Running the `zsh-complete` command will enable tab completions of the cli
commands, in the next shell session.
For example:
- `rolling-pin [tab]` will show you all the cli options, which you can press
tab to cycle through
- `rolling-pin docker-[tab]` will show you only the cli options that begin with
"docker-"
# Installation for Production
### Python
`pip install rolling-pin`
### Docker
1. Install [docker-desktop](https://docs.docker.com/desktop/)
2. `docker pull theNewFlesh/rolling-pin:[version]`
---
# Quickstart Guide
This repository contains a suite commands for the whole development process.
This includes everything from testing, to documentation generation and
publishing pip packages.
These commands can be accessed through:
- The VSCode task runner
- The VSCode task runner side bar
- A terminal running on the host OS
- A terminal within this repositories docker container
Running the `zsh-complete` command will enable tab completions of the CLI.
See the zsh setup section for more information.
### Command Groups
Development commands are grouped by one of 10 prefixes:
| Command | Description |
| ---------- | ---------------------------------------------------------------------------------- |
| build | Commands for building packages for testing and pip publishing |
| docker | Common docker commands such as build, start and stop |
| docs | Commands for generating documentation and code metrics |
| library | Commands for managing python package dependencies |
| session | Commands for starting interactive sessions such as jupyter lab and python |
| state | Command to display the current state of the repo and container |
| test | Commands for running tests, linter and type annotations |
| version | Commands for bumping project versions |
| quickstart | Display this quickstart guide |
| zsh | Commands for running a zsh session in the container and generating zsh completions |
### Common Commands
Here are some frequently used commands to get you started:
| Command | Description |
| ----------------- | --------------------------------------------------------- |
| docker-restart | Restart container |
| docker-start | Start container |
| docker-stop | Stop container |
| docs-full | Generate documentation, coverage report, diagram and code |
| library-add | Add a given package to a given dependency group |
| library-graph-dev | Graph dependencies in dev environment |
| library-remove | Remove a given package from a given dependency group |
| library-search | Search for pip packages |
| library-update | Update dev dependencies |
| session-lab | Run jupyter lab server |
| state | State of |
| test-dev | Run all tests |
| test-lint | Run linting and type checking |
| zsh | Run ZSH session inside container |
| zsh-complete | Generate ZSH completion script |
---
# Development CLI
bin/rolling-pin is a command line interface (defined in cli.py) that
works with any version of python 2.7 and above, as it has no dependencies.
Commands generally do not expect any arguments or flags.
Its usage pattern is: `bin/rolling-pin COMMAND [-a --args]=ARGS [-h --help] [--dryrun]`
### Commands
The following is a complete list of all available development commands:
| Command | Description |
| ----------------------- | ------------------------------------------------------------------- |
| build-package | Build production version of repo for publishing |
| build-prod | Publish pip package of repo to PyPi |
| build-publish | Run production tests first then publish pip package of repo to PyPi |
| build-test | Build test version of repo for prod testing |
| docker-build | Build Docker image |
| docker-build-from-cache | Build Docker image from cached image |
| docker-build-prod | Build production image |
| docker-container | Display the Docker container id |
| docker-destroy | Shutdown container and destroy its image |
| docker-destroy-prod | Shutdown production container and destroy its image |
| docker-image | Display the Docker image id |
| docker-prod | Start production container |
| docker-pull-dev | Pull development image from Docker registry |
| docker-pull-prod | Pull production image from Docker registry |
| docker-push-dev | Push development image to Docker registry |
| docker-push-dev-latest | Push development image to Docker registry with dev-latest tag |
| docker-push-prod | Push production image to Docker registry |
| docker-push-prod-latest | Push production image to Docker registry with prod-latest tag |
| docker-remove | Remove Docker image |
| docker-restart | Restart Docker container |
| docker-start | Start Docker container |
| docker-stop | Stop Docker container |
| docs | Generate sphinx documentation |
| docs-architecture | Generate architecture.svg diagram from all import statements |
| docs-full | Generate documentation, coverage report, diagram and code |
| docs-metrics | Generate code metrics report, plots and tables |
| library-add | Add a given package to a given dependency group |
| library-graph-dev | Graph dependencies in dev environment |
| library-graph-prod | Graph dependencies in prod environment |
| library-install-dev | Install all dependencies into dev environment |
| library-install-prod | Install all dependencies into prod environment |
| library-list-dev | List packages in dev environment |
| library-list-prod | List packages in prod environment |
| library-lock-dev | Resolve dev.lock file |
| library-lock-prod | Resolve prod.lock file |
| library-remove | Remove a given package from a given dependency group |
| library-search | Search for pip packages |
| library-sync-dev | Sync dev environment with packages listed in dev.lock |
| library-sync-prod | Sync prod environment with packages listed in prod.lock |
| library-update | Update dev dependencies |
| library-update-pdm | Update PDM |
| quickstart | Display quickstart guide |
| session-lab | Run jupyter lab server |
| session-python | Run python session with dev dependencies |
| session-server | Runn application server inside Docker container |
| state | State of repository and Docker container |
| test-coverage | Generate test coverage report |
| test-dev | Run all tests |
| test-fast | Test all code excepts tests marked with SKIP_SLOWS_TESTS decorator |
| test-lint | Run linting and type checking |
| test-prod | Run tests across all support python versions |
| version | Full resolution of repo: dependencies, linting, tests, docs, etc |
| version-bump-major | Bump pyproject major version |
| version-bump-minor | Bump pyproject minor version |
| version-bump-patch | Bump pyproject patch version |
| version-commit | Tag with version and commit changes to master |
| zsh | Run ZSH session inside Docker container |
| zsh-complete | Generate oh-my-zsh completions |
| zsh-root | Run ZSH session as root inside Docker container |
### Flags
| Short | Long | Description |
| ----- | --------- | ---------------------------------------------------- |
| -a | --args | Additional arguments, this can generally be ignored |
| -h | --help | Prints command help message to stdout |
| | --dryrun | Prints command that would otherwise be run to stdout |
---
# Production CLI
Rolling-pin comes with a command line interface defined in command.py.
Its usage pattern is: `rolling-pin COMMAND [ARGS] [FLAGS] [-h --help]`
## Commands
---
### bash-completion
Prints BASH completion code to be written to a _rolling-pin completion file
Usage: `rolling-pin bash-completion`
---
### zsh-completion
Prints ZSH completion code to be written to a _rolling-pin completion file
Usage: `rolling-pin zsh-completion`
---
### conform
Copies source files to target filepaths according to given conform file.
Usage: `rolling-pin conform [OPTIONS] SOURCE`
| Argument | Description |
| -------- | --------------------- |
| source | conform YAML filepath |
| Flag | Argument | Description | Default |
| --------- | -------- | ---------------------------------------------- | ------- |
| --groups | text | comma separated list of groups to be conformed | all |
| --dryrun | <p></p> | Print out conform table instead of run conform | <p></p> |
| --help | <p></p> | print help message | <p></p> |
---
### graph
Generate a dependency graph of a source repository and write it to a given filepath
Usage: `rolling-pin graph [OPTIONS] SOURCE TARGET`
| Argument | Description |
| -------- | --------------- |
| source | repository path |
| target | target filepath |
| Flag | Argument | Description | Default |
| --------- | -------- | ------------------------------------------- | --------- |
| --include | text | include files that match this regex pattern | .*\.py$' |
| --exclude | text | exclude files that match this regex pattern | test|mock |
| --orient | text | graph orientation | lr |
| --help | <p></p> | print help message | <p></p> |
---
### plot
Write radon metrics plots of given repository to given filepath.
Usage: `rolling-pin plot [OPTIONS] SOURCE TARGET`
| Argument | Description |
| -------- | --------------- |
| source | repository path |
| target | plot filepath |
| Flag | Description |
| ------ | ------------------ |
| --help | print help message |
---
### table
Write radon metrics tables of given repository to given directory.
Usage: `rolling-pin table [OPTIONS] SOURCE TARGET`
| Argument | Description |
| -------- | --------------- |
| source | repository path |
| target | table directory |
| Flag | Description |
| ------ | ------------------ |
| --help | print help message |
---
### toml
Generate a copy of a given TOML file with given edits indicated by flags. Flags
are evalauted in the following order: edit, delete, search. Flags may be
arbitrarily combined. Edit and delete flags may appear multiple times.
Usage: `rolling-pin toml [OPTIONS] SOURCE`
| Argument | Description |
| -------- | ------------- |
| source | TOML filepath |
| Flag | Argument | Description |
| --------- | -------- | ----------------------------------------------------------------------------------------- |
| --edit | text | replace key's value with given value, text is "=" separated key value pair in TOML format |
| --delete | text | delete keys that match this regular expression |
| --search | text | search for keys that match this regular expression |
| --target | text | target filepath to write to |
| --help | <p></p> | print help message |
#### *Example Usage*
**example file**
```
>>>cat example.toml
[root]
a = 1
b = 2
[root.foo.bar]
x = "y"
[world]
hello = true
```
**edit flag**
```
>>>rolling-pin toml foobar.toml --edit 'root.a=999'
[root]
a = 999
b = 2...
>>>rolling-pin toml foobar.toml \
--edit 'root.a=[1, 2]' \
--edit 'root.b="xxx"'
[root]
a = [
1,
2,
]
b = "xxx"...
>>>rolling-pin toml foobar.toml --edit 'root.foo.bar="baz"'
...
hello = true
[root.foo]
bar = "baz"...
```
**delete flag**
```
>>>rolling-pin toml foobar.toml \
--delete 'root.foo.bar' \
--delete 'root.a'
[root]
b = 2
[world]
hello = true
```
**search flag**
```
>>>rolling-pin toml foobar.toml --search 'root.foo|world'
[world]
hello = true
[root.foo.bar]
x = "y"
```
Raw data
{
"_id": null,
"home_page": null,
"name": "rolling-pin",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "ETL, blob, dependency, graph, svg, networkx, transform, code metrics, dependency diagram, build system",
"author": null,
"author_email": "Alex Braun <alexander.g.braun@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/78/d5/63d0d10e93322183b85f7167eeeae2a95eed92b010d545ff64e7d8da0d52/rolling-pin-0.10.1.tar.gz",
"platform": null,
"description": "<p>\n <a href=\"https://www.linkedin.com/in/alexandergbraun\" rel=\"nofollow noreferrer\">\n <img src=\"https://www.gomezaparicio.com/wp-content/uploads/2012/03/linkedin-logo-1-150x150.png\"\n alt=\"linkedin\" width=\"30px\" height=\"30px\"\n >\n </a>\n <a href=\"https://github.com/theNewFlesh\" rel=\"nofollow noreferrer\">\n <img src=\"https://tadeuzagallo.com/GithubPulse/assets/img/app-icon-github.png\"\n alt=\"github\" width=\"30px\" height=\"30px\"\n >\n </a>\n <a href=\"https://pypi.org/user/the-new-flesh\" rel=\"nofollow noreferrer\">\n <img src=\"https://cdn.iconscout.com/icon/free/png-256/python-2-226051.png\"\n alt=\"pypi\" width=\"30px\" height=\"30px\"\n >\n </a>\n <a href=\"http://vimeo.com/user3965452\" rel=\"nofollow noreferrer\">\n <img src=\"https://cdn.iconscout.com/icon/free/png-512/movie-52-151107.png?f=avif&w=512\"\n alt=\"vimeo\" width=\"30px\" height=\"30px\"\n >\n </a>\n <a href=\"http://www.alexgbraun.com\" rel=\"nofollow noreferrer\">\n <img src=\"https://i.ibb.co/fvyMkpM/logo.png\"\n alt=\"alexgbraun\" width=\"30px\" height=\"30px\"\n >\n </a>\n</p>\n\n<!-- <img id=\"logo\" src=\"resources/logo.png\" style=\"max-width: 717px\"> -->\n\n[![](https://img.shields.io/badge/License-MIT-F77E70.svg?style=for-the-badge)](https://github.com/theNewFlesh/rolling-pin/blob/master/LICENSE)\n[![](https://img.shields.io/pypi/pyversions/rolling-pin?style=for-the-badge&label=Python&color=A0D17B&logo=python&logoColor=A0D17B)](https://github.com/theNewFlesh/rolling-pin/blob/master/docker/config/pyproject.toml)\n[![](https://img.shields.io/pypi/v/rolling-pin?style=for-the-badge&label=PyPI&color=5F95DE&logo=pypi&logoColor=5F95DE)](https://pypi.org/project/rolling-pin/)\n[![](https://img.shields.io/pypi/dm/rolling-pin?style=for-the-badge&label=Downloads&color=5F95DE)](https://pepy.tech/project/rolling-pin)\n\n# Introduction\nRolling-pin is a library of generic tools for ETL work and visualization of JSON\nblobs and python repositories\n\nSee [documentation](https://thenewflesh.github.io/rolling-pin/) for details.\n\nOn the documentation main page, under the *Architecture* section, is a\ndynamically generated dependency graph of rolling-pin's current architecture.\nIt is generated using the RepoETL class.\n\nIf you look under the *Metrics* section you will find Radon code metric plots\nand data of the rolling-pin source code, generated by the RadonETL class.\n\nAlso have a look at this\n**[Jupyter notebook demo](https://github.com/theNewFlesh/rolling-pin/blob/master/notebooks/prototype_demo.ipynb)**\nfor a taste of what rolling-pin can do.\n\n---\n\n# Installation for Developers\n\n### Docker\n1. Install [docker-desktop](https://docs.docker.com/desktop/)\n2. Ensure docker-desktop has at least 4 GB of memory allocated to it.\n3. `git clone git@github.com:theNewFlesh/rolling-pin.git`\n4. `cd rolling-pin`\n5. `chmod +x bin/rolling-pin`\n6. `bin/rolling-pin docker-start`\n - If building on a M1 Mac run `export DOCKER_DEFAULT_PLATFORM=linux/amd64` first.\n\nThe service should take a few minutes to start up.\n\nRun `bin/rolling-pin --help` for more help on the command line tool.\n\n### ZSH Setup\n1. `bin/rolling-pin` must be run from this repository's top level directory.\n2. Therefore, if using zsh, it is recommended that you paste the following line\n in your ~/.zshrc file:\n - `alias rolling-pin=\"cd [parent dir]/rolling-pin; bin/rolling-pin\"`\n - Replace `[parent dir]` with the parent directory of this repository\n3. Consider adding the following line to your ~/.zshrc if you are using a M1 Mac:\n - `export DOCKER_DEFAULT_PLATFORM=linux/amd64`\n4. Running the `zsh-complete` command will enable tab completions of the cli\n commands, in the next shell session.\n\n For example:\n - `rolling-pin [tab]` will show you all the cli options, which you can press\n tab to cycle through\n - `rolling-pin docker-[tab]` will show you only the cli options that begin with\n \"docker-\"\n\n# Installation for Production\n\n### Python\n`pip install rolling-pin`\n\n### Docker\n1. Install [docker-desktop](https://docs.docker.com/desktop/)\n2. `docker pull theNewFlesh/rolling-pin:[version]`\n\n\n---\n\n# Quickstart Guide\nThis repository contains a suite commands for the whole development process.\nThis includes everything from testing, to documentation generation and\npublishing pip packages.\n\nThese commands can be accessed through:\n\n - The VSCode task runner\n - The VSCode task runner side bar\n - A terminal running on the host OS\n - A terminal within this repositories docker container\n\nRunning the `zsh-complete` command will enable tab completions of the CLI.\nSee the zsh setup section for more information.\n\n### Command Groups\n\nDevelopment commands are grouped by one of 10 prefixes:\n\n| Command | Description |\n| ---------- | ---------------------------------------------------------------------------------- |\n| build | Commands for building packages for testing and pip publishing |\n| docker | Common docker commands such as build, start and stop |\n| docs | Commands for generating documentation and code metrics |\n| library | Commands for managing python package dependencies |\n| session | Commands for starting interactive sessions such as jupyter lab and python |\n| state | Command to display the current state of the repo and container |\n| test | Commands for running tests, linter and type annotations |\n| version | Commands for bumping project versions |\n| quickstart | Display this quickstart guide |\n| zsh | Commands for running a zsh session in the container and generating zsh completions |\n\n### Common Commands\n\nHere are some frequently used commands to get you started:\n\n| Command | Description |\n| ----------------- | --------------------------------------------------------- |\n| docker-restart | Restart container |\n| docker-start | Start container |\n| docker-stop | Stop container |\n| docs-full | Generate documentation, coverage report, diagram and code |\n| library-add | Add a given package to a given dependency group |\n| library-graph-dev | Graph dependencies in dev environment |\n| library-remove | Remove a given package from a given dependency group |\n| library-search | Search for pip packages |\n| library-update | Update dev dependencies |\n| session-lab | Run jupyter lab server |\n| state | State of |\n| test-dev | Run all tests |\n| test-lint | Run linting and type checking |\n| zsh | Run ZSH session inside container |\n| zsh-complete | Generate ZSH completion script |\n\n---\n\n# Development CLI\nbin/rolling-pin is a command line interface (defined in cli.py) that\nworks with any version of python 2.7 and above, as it has no dependencies.\nCommands generally do not expect any arguments or flags.\n\nIts usage pattern is: `bin/rolling-pin COMMAND [-a --args]=ARGS [-h --help] [--dryrun]`\n\n### Commands\nThe following is a complete list of all available development commands:\n\n| Command | Description |\n| ----------------------- | ------------------------------------------------------------------- |\n| build-package | Build production version of repo for publishing |\n| build-prod | Publish pip package of repo to PyPi |\n| build-publish | Run production tests first then publish pip package of repo to PyPi |\n| build-test | Build test version of repo for prod testing |\n| docker-build | Build Docker image |\n| docker-build-from-cache | Build Docker image from cached image |\n| docker-build-prod | Build production image |\n| docker-container | Display the Docker container id |\n| docker-destroy | Shutdown container and destroy its image |\n| docker-destroy-prod | Shutdown production container and destroy its image |\n| docker-image | Display the Docker image id |\n| docker-prod | Start production container |\n| docker-pull-dev | Pull development image from Docker registry |\n| docker-pull-prod | Pull production image from Docker registry |\n| docker-push-dev | Push development image to Docker registry |\n| docker-push-dev-latest | Push development image to Docker registry with dev-latest tag |\n| docker-push-prod | Push production image to Docker registry |\n| docker-push-prod-latest | Push production image to Docker registry with prod-latest tag |\n| docker-remove | Remove Docker image |\n| docker-restart | Restart Docker container |\n| docker-start | Start Docker container |\n| docker-stop | Stop Docker container |\n| docs | Generate sphinx documentation |\n| docs-architecture | Generate architecture.svg diagram from all import statements |\n| docs-full | Generate documentation, coverage report, diagram and code |\n| docs-metrics | Generate code metrics report, plots and tables |\n| library-add | Add a given package to a given dependency group |\n| library-graph-dev | Graph dependencies in dev environment |\n| library-graph-prod | Graph dependencies in prod environment |\n| library-install-dev | Install all dependencies into dev environment |\n| library-install-prod | Install all dependencies into prod environment |\n| library-list-dev | List packages in dev environment |\n| library-list-prod | List packages in prod environment |\n| library-lock-dev | Resolve dev.lock file |\n| library-lock-prod | Resolve prod.lock file |\n| library-remove | Remove a given package from a given dependency group |\n| library-search | Search for pip packages |\n| library-sync-dev | Sync dev environment with packages listed in dev.lock |\n| library-sync-prod | Sync prod environment with packages listed in prod.lock |\n| library-update | Update dev dependencies |\n| library-update-pdm | Update PDM |\n| quickstart | Display quickstart guide |\n| session-lab | Run jupyter lab server |\n| session-python | Run python session with dev dependencies |\n| session-server | Runn application server inside Docker container |\n| state | State of repository and Docker container |\n| test-coverage | Generate test coverage report |\n| test-dev | Run all tests |\n| test-fast | Test all code excepts tests marked with SKIP_SLOWS_TESTS decorator |\n| test-lint | Run linting and type checking |\n| test-prod | Run tests across all support python versions |\n| version | Full resolution of repo: dependencies, linting, tests, docs, etc |\n| version-bump-major | Bump pyproject major version |\n| version-bump-minor | Bump pyproject minor version |\n| version-bump-patch | Bump pyproject patch version |\n| version-commit | Tag with version and commit changes to master |\n| zsh | Run ZSH session inside Docker container |\n| zsh-complete | Generate oh-my-zsh completions |\n| zsh-root | Run ZSH session as root inside Docker container |\n\n### Flags\n\n| Short | Long | Description |\n| ----- | --------- | ---------------------------------------------------- |\n| -a | --args | Additional arguments, this can generally be ignored |\n| -h | --help | Prints command help message to stdout |\n| | --dryrun | Prints command that would otherwise be run to stdout |\n\n---\n\n# Production CLI\n\nRolling-pin comes with a command line interface defined in command.py.\n\nIts usage pattern is: `rolling-pin COMMAND [ARGS] [FLAGS] [-h --help]`\n\n## Commands\n\n---\n\n### bash-completion\nPrints BASH completion code to be written to a _rolling-pin completion file\n\nUsage: `rolling-pin bash-completion`\n\n---\n\n### zsh-completion\nPrints ZSH completion code to be written to a _rolling-pin completion file\n\nUsage: `rolling-pin zsh-completion`\n\n---\n\n### conform\nCopies source files to target filepaths according to given conform file.\n\nUsage: `rolling-pin conform [OPTIONS] SOURCE`\n\n| Argument | Description |\n| -------- | --------------------- |\n| source | conform YAML filepath |\n\n| Flag | Argument | Description | Default |\n| --------- | -------- | ---------------------------------------------- | ------- |\n| --groups | text | comma separated list of groups to be conformed | all |\n| --dryrun | <p></p> | Print out conform table instead of run conform | <p></p> |\n| --help | <p></p> | print help message | <p></p> |\n\n---\n\n### graph\nGenerate a dependency graph of a source repository and write it to a given filepath\n\nUsage: `rolling-pin graph [OPTIONS] SOURCE TARGET`\n\n| Argument | Description |\n| -------- | --------------- |\n| source | repository path |\n| target | target filepath |\n\n| Flag | Argument | Description | Default |\n| --------- | -------- | ------------------------------------------- | --------- |\n| --include | text | include files that match this regex pattern | .*\\.py$' |\n| --exclude | text | exclude files that match this regex pattern | test|mock |\n| --orient | text | graph orientation | lr |\n| --help | <p></p> | print help message | <p></p> |\n\n---\n\n### plot\nWrite radon metrics plots of given repository to given filepath.\n\nUsage: `rolling-pin plot [OPTIONS] SOURCE TARGET`\n\n| Argument | Description |\n| -------- | --------------- |\n| source | repository path |\n| target | plot filepath |\n\n| Flag | Description |\n| ------ | ------------------ |\n| --help | print help message |\n\n---\n\n### table\nWrite radon metrics tables of given repository to given directory.\n\nUsage: `rolling-pin table [OPTIONS] SOURCE TARGET`\n\n| Argument | Description |\n| -------- | --------------- |\n| source | repository path |\n| target | table directory |\n\n| Flag | Description |\n| ------ | ------------------ |\n| --help | print help message |\n\n---\n\n### toml\nGenerate a copy of a given TOML file with given edits indicated by flags. Flags\nare evalauted in the following order: edit, delete, search. Flags may be\narbitrarily combined. Edit and delete flags may appear multiple times.\n\nUsage: `rolling-pin toml [OPTIONS] SOURCE`\n\n| Argument | Description |\n| -------- | ------------- |\n| source | TOML filepath |\n\n| Flag | Argument | Description |\n| --------- | -------- | ----------------------------------------------------------------------------------------- |\n| --edit | text | replace key's value with given value, text is \"=\" separated key value pair in TOML format |\n| --delete | text | delete keys that match this regular expression |\n| --search | text | search for keys that match this regular expression |\n| --target | text | target filepath to write to |\n| --help | <p></p> | print help message |\n\n#### *Example Usage*\n**example file**\n```\n>>>cat example.toml\n[root]\na = 1\nb = 2\n\n[root.foo.bar]\nx = \"y\"\n\n[world]\nhello = true\n```\n\n**edit flag**\n```\n>>>rolling-pin toml foobar.toml --edit 'root.a=999'\n[root]\na = 999\nb = 2...\n\n>>>rolling-pin toml foobar.toml \\\n --edit 'root.a=[1, 2]' \\\n --edit 'root.b=\"xxx\"'\n[root]\na = [\n 1,\n 2,\n]\nb = \"xxx\"...\n\n>>>rolling-pin toml foobar.toml --edit 'root.foo.bar=\"baz\"'\n...\nhello = true\n\n[root.foo]\nbar = \"baz\"...\n```\n\n**delete flag**\n```\n>>>rolling-pin toml foobar.toml \\\n --delete 'root.foo.bar' \\\n --delete 'root.a'\n[root]\nb = 2\n\n[world]\nhello = true\n```\n\n**search flag**\n```\n>>>rolling-pin toml foobar.toml --search 'root.foo|world'\n[world]\nhello = true\n\n[root.foo.bar]\nx = \"y\"\n```\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A library of generic tools for ETL work and visualization of JSON blobs and python repositories",
"version": "0.10.1",
"project_urls": {
"documentation": "https://thenewflesh.github.io/rolling-pin",
"repository": "https://github.com/theNewFlesh/rolling-pin"
},
"split_keywords": [
"etl",
" blob",
" dependency",
" graph",
" svg",
" networkx",
" transform",
" code metrics",
" dependency diagram",
" build system"
],
"urls": [
{
"comment_text": "Fixed pydot syntax bug",
"digests": {
"blake2b_256": "60374de883f548867b0cf331f41f35a84ec441bd33c81e33a141ccd11384ef09",
"md5": "68d2f0a4a69ea821aedc1e5e79b69dda",
"sha256": "a202feb77e855386f3d34565cdd208ceabe6c864f809df14519feab06b6fe18c"
},
"downloads": -1,
"filename": "rolling_pin-0.10.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "68d2f0a4a69ea821aedc1e5e79b69dda",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 34012,
"upload_time": "2024-07-20T03:29:39",
"upload_time_iso_8601": "2024-07-20T03:29:39.682410Z",
"url": "https://files.pythonhosted.org/packages/60/37/4de883f548867b0cf331f41f35a84ec441bd33c81e33a141ccd11384ef09/rolling_pin-0.10.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "Fixed pydot syntax bug",
"digests": {
"blake2b_256": "78d563d0d10e93322183b85f7167eeeae2a95eed92b010d545ff64e7d8da0d52",
"md5": "44e285c76cad48cee77dcc6528844d2d",
"sha256": "06eedf93b22572f2abc1b694e3a11221787f64734555da906d38200d4b54f8ee"
},
"downloads": -1,
"filename": "rolling-pin-0.10.1.tar.gz",
"has_sig": false,
"md5_digest": "44e285c76cad48cee77dcc6528844d2d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 33429,
"upload_time": "2024-07-20T03:29:41",
"upload_time_iso_8601": "2024-07-20T03:29:41.130201Z",
"url": "https://files.pythonhosted.org/packages/78/d5/63d0d10e93322183b85f7167eeeae2a95eed92b010d545ff64e7d8da0d52/rolling-pin-0.10.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-20 03:29:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "theNewFlesh",
"github_project": "rolling-pin",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "rolling-pin"
}