{"id":37084511,"url":"https://github.com/palindromicity/dotifi","last_synced_at":"2026-01-14T10:21:38.571Z","repository":{"id":43392293,"uuid":"266450623","full_name":"palindromicity/dotifi","owner":"palindromicity","description":"dotifi is a python package for creating graphviz dot files and images from Apache NiFi canvases","archived":false,"fork":false,"pushed_at":"2022-12-08T07:36:36.000Z","size":450,"stargazers_count":7,"open_issues_count":24,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-01T14:37:26.043Z","etag":null,"topics":["dot","graphviz","nifi","nipyiapi","poetry","pre-commit","pytest-mock","python","yaml-configuration"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/palindromicity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-24T01:44:25.000Z","updated_at":"2021-05-25T11:50:09.000Z","dependencies_parsed_at":"2023-01-25T09:00:42.606Z","dependency_job_id":null,"html_url":"https://github.com/palindromicity/dotifi","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/palindromicity/dotifi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palindromicity%2Fdotifi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palindromicity%2Fdotifi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palindromicity%2Fdotifi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palindromicity%2Fdotifi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/palindromicity","download_url":"https://codeload.github.com/palindromicity/dotifi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palindromicity%2Fdotifi/sbom","scorecard":{"id":718346,"data":{"date":"2025-08-11","repo":{"name":"github.com/palindromicity/dotifi","commit":"d3f8ef8106664af3b81821217a623f01d9ea2dcc"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":1,"reason":"Found 2/16 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/palindromicity/dotifi/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/palindromicity/dotifi/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/palindromicity/dotifi/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/palindromicity/dotifi/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/palindromicity/dotifi/main.yml/main?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/main.yml:17","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"23 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-42986 / GHSA-43fp-rhv2-5gv8","Warn: Project is vulnerable to: PYSEC-2023-135 / GHSA-xqr8-7jwr-rhp7","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: PYSEC-2020-49 / GHSA-j66q-qmrc-89rx","Warn: Project is vulnerable to: GHSA-55x5-fj6c-h6m8","Warn: Project is vulnerable to: PYSEC-2021-19 / GHSA-jq4v-f5q6-mjqq","Warn: Project is vulnerable to: PYSEC-2020-62 / GHSA-pgww-xf46-h92r","Warn: Project is vulnerable to: PYSEC-2022-230 / GHSA-wrxv-2j5q-m38w","Warn: Project is vulnerable to: PYSEC-2020-92 / GHSA-hj5v-574p-mj7c","Warn: Project is vulnerable to: PYSEC-2022-42969","Warn: Project is vulnerable to: PYSEC-2021-112 / GHSA-hwfp-hg2m-9vr2","Warn: Project is vulnerable to: PYSEC-2021-142 / GHSA-8q59-q68h-6hv4","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2023-74 / GHSA-j8r2-6x86-q33q","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: PYSEC-2023-212 / GHSA-g4mx-q9vg-27p4","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: PYSEC-2021-108 / GHSA-q2q7-5pp4-w6pg","Warn: Project is vulnerable to: PYSEC-2023-192 / GHSA-v845-jxx5-vc9f","Warn: Project is vulnerable to: PYSEC-2024-187 / GHSA-rqc4-2hc7-8c8v","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T10:26:36.509Z","repository_id":43392293,"created_at":"2025-08-22T10:26:36.509Z","updated_at":"2025-08-22T10:26:36.509Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28416969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:18:03.274Z","status":"ssl_error","status_checked_at":"2026-01-14T10:16:11.865Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dot","graphviz","nifi","nipyiapi","poetry","pre-commit","pytest-mock","python","yaml-configuration"],"created_at":"2026-01-14T10:21:37.689Z","updated_at":"2026-01-14T10:21:38.560Z","avatar_url":"https://github.com/palindromicity.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dotifi\n\n![Tests](https://github.com/palindromicity/dotifi/workflows/Tests/badge.svg?branch=master) [![PyPI version](https://badge.fury.io/py/dotifi.svg)](https://badge.fury.io/py/dotifi) [![Downloads](https://pepy.tech/badge/dotifi)](https://pepy.tech/project/dotifi) [![Downloads](https://pepy.tech/badge/dotifi/month)](https://pepy.tech/project/dotifi/month) [![Downloads](https://pepy.tech/badge/dotifi/week)](https://pepy.tech/project/dotifi/week)\n\nA utility to generate [DOT](https://graphviz.org/doc/info/lang.html) files and images based on [graphviz](https://graphviz.org/documentation/) from the canvas of an [Apache NiFi](https://nifi.apache.org) instance.\n\ndotifi supports\n- connecting to Apache Nifi using [nipyapi](https://nipyapi.readthedocs.io/en/latest/index.html) in the background and generating a graph from the canvas items\n    - Process Groups\n    - Remote Process Groups\n    - Input and Output Ports\n    - Processors\n    - Connections\n- creating [DOT]() files using [Graphviz](https://graphviz.org) and [pygraphviz](http://pygraphviz.github.io/documentation/pygraphviz-1.5/index.html)\n- creating a graphic file in Graphviz supported formats\n- starting with an existing dot file as opposed to building from a live NiFi instance\n- starting from a specific process group\n- controlling the depth of recursion\n- supplying DOT files as templates for configuring\n    - the root graph ( and all children)\n    - Any process group by ID\n- supplying name value pairs ( in yaml configuration file) to override and set [attributes](https://graphviz.gitlab.io/_pages/doc/info/attrs.html)\n    - Processors by id\n    - Remote Process Groups by id\n- ssl, certificates, and auth-tokens\n\n## Install\n\n```bash\n\u003epip install dotifi\n```\n\u003e with python 3 as your default\n\u003e\n### Sample output\n\n`DOT`\n```\nstrict digraph \"nifi flow\" {\n\tgraph [compound=true,\n\t\tlabel=\"nifi flow\",\n\t\toutputorder=edgesfirst,\n\t\trankdir=LR,\n\t\tratio=1.0\n\t];\n\tnode [fixedsize=false,\n\t\tfontsize=8,\n\t\tlabel=\"\\N\",\n\t\tshape=rectangle,\n\t\tstyle=filled\n\t];\n\tedge [color=\"#1100FF\",\n\t\tstyle=\"setlinewidth(2)\"\n\t];\n\tsubgraph cluster_root_1 {\n\t\tgraph [id=\"351b1dbc-0172-1000-056d-ec78a003b493\",\n\t\t\tlabel=root_1\n\t\t];\n\t\tsubgraph cluster_remote_target {\n\t\t\tgraph [id=\"65f57b35-0172-1000-d805-dec5391bee7e\",\n\t\t\t\tlabel=remote_target\n\t\t\t];\n\t\t\t\"65f5b8db-0172-1000-407f-93e85d1d9f94\"\t[id=\"65f5b8db-0172-1000-407f-93e85d1d9f94\",\n\t\t\t\tlabel=\"Input 1 : INPUT_PORT\",\n\t\t\t\tpos=\"-768.000000,-768.000000\"];\n\t\t\t\"65f629b8-0172-1000-4ced-efa192c35536\"\t[id=\"65f629b8-0172-1000-4ced-efa192c35536\",\n\t\t\t\tlabel=\"log_remote_attributes : LogAttribute\",\n\t\t\t\tpos=\"-344.000000,-344.000000\"];\n\t\t\t\"65f5b8db-0172-1000-407f-93e85d1d9f94\" -\u003e \"65f629b8-0172-1000-4ced-efa192c35536\"\t[label=\"Input to Processor\"];\n\t\t}\n\t\tsubgraph cluster_root_1_1 {\n\t\t\tgraph [id=\"351dbb56-0172-1000-21fa-a4af9fc0dbb1\",\n\t\t\t\tlabel=root_1_1\n\t\t\t];\n\t\t\tsubgraph \"cluster_NiFi Flow\" {\n\t\t\t\tgraph [color=blue,\n\t\t\t\t\tfontcolor=white,\n\t\t\t\t\tid=\"65f8c7d5-0172-1000-a916-0e5562295e08\",\n\t\t\t\t\tlabel=\"http://localhost:8080/nifi : Remote Process Group\",\n\t\t\t\t\tstyle=filled\n\t\t\t\t];\n\t\t\t\t\"37b065f7-232b-30b9-a282-3ea28f75a2a2\"\t[id=\"37b065f7-232b-30b9-a282-3ea28f75a2a2\",\n\t\t\t\t\tlabel=\"Input 1 : INPUT_PORT\"];\n\t\t\t}\n\t\t\t\"b268f335-2a91-44e8-b567-c676c292fd55\"\t[id=\"b268f335-2a91-44e8-b567-c676c292fd55\",\n\t\t\t\tlabel=\"Reformat Date Column : ReplaceText\",\n\t\t\t\tpos=\"1259.009165,1259.009165\"];\n\t\t\t\"25b139c3-db89-4272-59c3-774ce58f0973\"\t[id=\"25b139c3-db89-4272-59c3-774ce58f0973\",\n\t\t\t\tlabel=\"No-Op Termination : UpdateAttribute\",\n\t\t\t\tpos=\"1265.009165,1265.009165\"];\n\t\t\t\"b268f335-2a91-44e8-b567-c676c292fd55\" -\u003e \"25b139c3-db89-4272-59c3-774ce58f0973\"\t[label=success];\n\t\t\t\"b268f335-2a91-44e8-b567-c676c292fd55\" -\u003e \"37b065f7-232b-30b9-a282-3ea28f75a2a2\"\t[label=success];\n\t\t\t\"67626c71-910a-4342-627d-e38cfcbcb924\"\t[id=\"67626c71-910a-4342-627d-e38cfcbcb924\",\n\t\t\t\tlabel=\"Set CSV Content : ReplaceText\",\n\t\t\t\tpos=\"408.000000,408.000000\"];\n\t\t\t\"67626c71-910a-4342-627d-e38cfcbcb924\" -\u003e \"b268f335-2a91-44e8-b567-c676c292fd55\"\t[label=success];\n\t\t\t\"bc3ad300-c93c-430b-fc94-3a32c3020f53\"\t[id=\"bc3ad300-c93c-430b-fc94-3a32c3020f53\",\n\t\t\t\tlabel=\"Generate Empty File : GenerateFlowFile\",\n\t\t\t\tpos=\"356.009165,356.009165\"];\n\t\t\t\"bc3ad300-c93c-430b-fc94-3a32c3020f53\" -\u003e \"67626c71-910a-4342-627d-e38cfcbcb924\"\t[label=success];\n\t\t}\n\t\t\"719d5fb9-cd96-4491-fe7c-e81b3f3bb555\"\t[id=\"719d5fb9-cd96-4491-fe7c-e81b3f3bb555\",\n\t\t\tlabel=\"q=nifi : UpdateAttribute\",\n\t\t\tpos=\"1242.304169,1242.304169\"];\n\t\t\"e829b880-ef17-432a-7c5c-1e3ecdcd690d\"\t[id=\"e829b880-ef17-432a-7c5c-1e3ecdcd690d\",\n\t\t\tlabel=\"Search Google : InvokeHTTP\",\n\t\t\tpos=\"1245.295837,1245.295837\"];\n\t\t\"719d5fb9-cd96-4491-fe7c-e81b3f3bb555\" -\u003e \"e829b880-ef17-432a-7c5c-1e3ecdcd690d\"\t[label=success];\n\t\t\"f96be8b1-78b2-42f2-6ba5-2579f4f6c411\"\t[id=\"f96be8b1-78b2-42f2-6ba5-2579f4f6c411\",\n\t\t\tlabel=\"Source : GenerateFlowFile\",\n\t\t\tpos=\"425.000000,425.000000\"];\n\t\t\"f96be8b1-78b2-42f2-6ba5-2579f4f6c411\" -\u003e \"719d5fb9-cd96-4491-fe7c-e81b3f3bb555\"\t[label=success];\n\t\t\"83ca901a-efe0-4d97-dbca-5c557cefbe6f\"\t[id=\"83ca901a-efe0-4d97-dbca-5c557cefbe6f\",\n\t\t\tlabel=\"HashContent : HashContent\",\n\t\t\tpos=\"1264.422387,1264.422387\"];\n\t\t\"ffcc8819-75f5-4811-e906-434e71a31f26\"\t[id=\"ffcc8819-75f5-4811-e906-434e71a31f26\",\n\t\t\tlabel=\"Route On Status Code : RouteOnAttribute\",\n\t\t\tpos=\"1242.078949,1242.078949\"];\n\t\t\"ffcc8819-75f5-4811-e906-434e71a31f26\" -\u003e \"83ca901a-efe0-4d97-dbca-5c557cefbe6f\"\t[label=200];\n\t\t\"e829b880-ef17-432a-7c5c-1e3ecdcd690d\" -\u003e \"ffcc8819-75f5-4811-e906-434e71a31f26\"\t[label=Original];\n\t\t\"e829b880-ef17-432a-7c5c-1e3ecdcd690d\" -\u003e \"e829b880-ef17-432a-7c5c-1e3ecdcd690d\"\t[label=Retry];\n\t}\n}\n\n```\n`PNG`\n![nifi-canvas.png](sample_output/nifi-canvas.png)\n### poetry\n\ndotifi is maintained using [poetry](https://python-poetry.org/docs/) for dependency management and packaging.\n\n### Getting started for development\n- Install [Graphviz](https://graphviz.org)\n- Clone, fork, or download the [source](https://github.com/palindromicity/dotifi)\n- Install [poetry](https://python-poetry.org/docs/)\n- If required setup [pyenv](https://github.com/pyenv/pyenv) or your preference to get a python 3.8 environment, as poetry will use whatever the current python is.\n    - for example setup pyenv local to the project directory\n- In the source route directory run `poetry install`, this will install all the dependencies\n- Run `peotry run pytest -v` to run the tests and ensure things are working\n- Run `poetry build` then `poetry install` then `poetry run dotifi` with any options to run\n\n#### Setting up [Jetbrains PyCharm](https://www.jetbrains.com/pycharm/) with your virtual python environment\n- see [this reddit answer](https://www.reddit.com/r/pycharm/comments/elga2z/using_pycharm_for_poetrybased_projects/fn1ix60?utm_source=share\u0026utm_medium=web2x)\n\n## Configuration\ndotifi uses [confuse](https://confuse.readthedocs.io/en/latest/) for it's configuration management.\ndotifi will take most of its configuration:\n\n - from commandline parameters\n - from a yaml configuration file specified with the --with-conf-file parameter\n - some combination of the two\n\nIf a configuration file _is_ present, and some configuration value is set both from the commandline and in the configuration,\nthen the commandline is treated as an override for the configuration file.\n\nString values in the configuration file may be entered as shell environment variables, such as $PATH.  Variables are expanded using\n[os.path.expandvars](https://docs.python.org/3/library/os.path.html#os.path.expandvars).\n\n\n```bash\nusage: dotifi [-h] [--with-existing-dot-file WITH_EXISTING_DOT_FILE]\n              [--with-conf-file WITH_CONF_FILE]\n              [--output-dot-file OUTPUT_DOT_FILE]\n              [--output-graphviz-format {canon,cmap,cmapx,cmapx_np,dia,dot,fig,gd,gd2,gif,hpgl,imap,imap_np,ismap,jpe,jpeg,jpg,mif,mp,pcl,pdf,pic,plain,plain-ext,png,ps,ps2,svg,svgz,vml,vmlz,vrml,vtx,wbmp,xdot,xlib}]\n              [--output-graphviz-program {neato,dot,twopi,circo,fdp,nop}]\n              [--output-graphviz-file OUTPUT_GRAPHVIZ_FILE]\n              [--start-at-pg START_AT_PG] [--depth DEPTH]\n              [--nifi-url NIFI_URL] [--using-ssl] [--using-user-pw]\n              [--ca-file CA_FILE] [--client-cert-file CLIENT_CERT_FILE]\n              [--client-key-file CLIENT_KEY_FILE]\n              [--client-key-password CLIENT_KEY_PASSWORD]\n              [--auth-token AUTH_TOKEN]\n              [--auth-token-api-field AUTH_TOKEN_API_FIELD]\n              [--nifi-username NIFI_USERNAME]\n              [--nifi-user-password NIFI_USER_PASSWORD] [--verbose]\n              [--generate-mock-data] [--mock-data-file MOCK_DATA_FILE]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --with-existing-dot-file WITH_EXISTING_DOT_FILE, -w WITH_EXISTING_DOT_FILE\n                        Output will be based on an existing DOT graph\n                        definition as opposed to being built from NiFi\n  --with-conf-file WITH_CONF_FILE, -c WITH_CONF_FILE\n                        Path to the .yaml file with the configuration. All\n                        options can be set in the configuration, with\n  --output-dot-file OUTPUT_DOT_FILE, -o OUTPUT_DOT_FILE\n                        Path to the gv file to store the dot results to.\n  --output-graphviz-format {canon,cmap,cmapx,cmapx_np,dia,dot,fig,gd,gd2,gif,hpgl,imap,imap_np,ismap,jpe,jpeg,jpg,mif,mp,pcl,pdf,pic,plain,plain-ext,png,ps,ps2,svg,svgz,vml,vmlz,vrml,vtx,wbmp,xdot,xlib}, -f {canon,cmap,cmapx,cmapx_np,dia,dot,fig,gd,gd2,gif,hpgl,imap,imap_np,ismap,jpe,jpeg,jpg,mif,mp,pcl,pdf,pic,plain,plain-ext,png,ps,ps2,svg,svgz,vml,vmlz,vrml,vtx,wbmp,xdot,xlib}\n                        The format of the graphviz generated file. Formats\n                        (not all may be available on every system depending on\n                        how Graphviz was built)\n  --output-graphviz-program {neato,dot,twopi,circo,fdp,nop}\n                        Graphviz layout method to use.\n  --output-graphviz-file OUTPUT_GRAPHVIZ_FILE, -g OUTPUT_GRAPHVIZ_FILE\n                        Path to the graphical file to store the graphviz\n                        results to. Results will be saved with the extension\n                        of the --output-graphviz-format option\n  --start-at-pg START_AT_PG, -s START_AT_PG\n                        The id of the process group to start at. This will be\n                        a uuid. When set the output will start with this\n                        process and it's descendents based on the depth\n                        setting\n  --depth DEPTH, -d DEPTH\n                        The depth to descend to within nested process groups.\n                        Note that the top level canvas is the root process\n                        group. As such a depth of 0 will only output items in\n                        the root canvas and not any process groups it\n                        contains. A value of -1 means unlimited.\n  --nifi-url NIFI_URL, -n NIFI_URL\n                        The url of the NiFi instance to connect to. This is\n                        used if --with-existing is not set.\n  --using-ssl           Flag, when specified it signals that the NiFi\n                        connection requires SSL\n  --using-user-pw       Flag, when specified it signals that the NiFi\n                        connection requires a username and password\n  --ca-file CA_FILE     A PEM file containing certs for the root CA(s) for the\n                        NiFi server\n  --client-cert-file CLIENT_CERT_FILE\n                        A PEM file containing the public certificates for the\n                        user / client identity\n  --client-key-file CLIENT_KEY_FILE\n                        An encrypted (password -protected PEM file containing\n                        the client's secret key\n  --client-key-password CLIENT_KEY_PASSWORD\n                        The password to decrypt the client_key_file\n  --auth-token AUTH_TOKEN\n                        Authorization token string\n  --auth-token-api-field AUTH_TOKEN_API_FIELD\n                        the api_key field name to set the token to. Defaults\n                        to 'tokenAuth'\n  --nifi-username NIFI_USERNAME\n                        The NiFi user name\n  --nifi-user-password NIFI_USER_PASSWORD\n                        The NiFi user password\n  --verbose, -v         Sets the logging level to verbose\n  --generate-mock-data  Generates mock data\n  --mock-data-file MOCK_DATA_FILE\n                        When --generate-mock-data is specified, it will be\n                        written to this file\n```\n\nA sample of the yaml configuration is [here](configurations/sample.yaml)\n\n```yaml\n# All string values in this configuration may be replaced using\n# environmental variables in the form of $VARIABLENAME\n#\n# the version of this configuration\nconfiguration_version : 1\n\n\n#  Flag to set logging to verbose ( debugging level )\nverbose:\n#  Path to an existing DOT graph definition as opposed to being built from NiFi\nwith_existing_dot_file:\n# Path to the dot file to store the dot results to\noutput_dot_file:\n\n#  The format of the graphviz generated file. Formats (not all may be available on every system\n#  depending on how Graphviz was built\n#  \"canon\", \"cmap\", \"cmapx\", \"cmapx_np\", \"dia\", \"dot\", \"fig\", \"gd\", \"gd2\", \"gif\",\n#  \"hpgl\", \"imap\", \"imap_np\", \"ismap\", \"jpe\", \"jpeg\", \"jpg\", \"mif\", \"mp\", \"pcl\", \"pdf\",\n#  \"pic\", \"plain\", \"plain_ext\", \"png\", \"ps\", \"ps2\", \"svg\", \"svgz\", \"vml\", \"vmlz\", \"vrml\",\n#  \"vtx\", \"wbmp\", \"xdot\", \"xlib\"\noutput_graphviz_format:\n\n#  The Graphviz layout to use\n# ‘neato’|’dot’|’twopi’|’circo’|’fdp’|’nop'\noutput_graphviz_program:\n\n#  Path to the dot file to store the graphviz results to. Results will be saved with the extension\n#  output_graphviz_format option\noutput_graphviz_file:\n\n#  The id of the process group to start at.  This will be a uuid.  When set the output will start\n#  with this process and it's decedents based on the depth setting\nstart_at_pg:\n\n#  The depth to descend to within nested process groups.  Note that the top level canvas\n#  is the root process group.  As such a depth of 0 will only output items in the root canvas and\n#  not any process groups it contains.  A value of _1 means unlimited\ndepth:\n\n# The url of the nifi instance to connect to.  This is used if with_existing is not set\nnifi_url:\n\n# Flag, when specified it signals that the NiFi connection requires SSL\nusing_ssl:\n\n# Flag, when specified it signals that the NiFi connection requires a username and password\nusing_user_pw:\n\n# A PEM file containing certs for the root CA(s) for the NiFi serve\nca_file:\n\n# A PEM file containing the public certificates for the user / client identity\nclient_cert_file:\n\n# An encrypted (password _protected PEM file containing the client's secret key\nclient_key_file:\n\n# The password to decrypt the client_key_file\nclient_key_password:\n\n# The NiFi user name\nnifi_user_name:\n\n# The NiFi user password\nnifi_user_password:\n\n# Options for the entire graph\ngraph:\n    # Path to a dot file that contains top level graph definition that sets the properties\n    # and attributes at a graph level\n    # see https://graphviz.org/documentation/ for information on the dot language\n    template: bar.dot\n# Options for specific process groups, by id\nprocess_groups:\n    # the uuid id of the process group\n    351b1dbc-0172-1000-056d-ec78a003b493:\n        # Path to a dot file the contains the graph definition that sets the properties\n        # and attributes at a graph level for this process group and it's descendents\n        template: foo.dot\n# Options for specific remote process groups, by id\n# these values will override or mix in with the defaults\nremote_process_groups:\n    # the uuid of the remote process group\n    35199793-0172-1000-02ea-52da1888a03d:\n        # NODE attributes\n        # see https://graphviz.gitlab.io/_pages/doc/info/attrs.html\n        color: grey\n# Options for specific processors, by id\nprocessors:\n    # the uuid of the processor\n    351b1dbc-0172-1000-056d-ec78a003b49:\n        # NODE attributes\n        # see https://graphviz.gitlab.io/_pages/doc/info/attrs.html\n        color: blue\n```\n\n\u003e command line parameters that are described as `flags` need only be specified without a value to be set to `True`.\n\u003e YAML configuration values however need to be explicitly set to `True` or `False`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalindromicity%2Fdotifi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalindromicity%2Fdotifi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalindromicity%2Fdotifi/lists"}