{"id":21045010,"url":"https://github.com/quansight/qpub","last_synced_at":"2025-05-15T17:33:24.883Z","repository":{"id":54958358,"uuid":"312410330","full_name":"Quansight/qpub","owner":"Quansight","description":"deathbeds generalized automation framework","archived":false,"fork":false,"pushed_at":"2021-02-03T21:36:49.000Z","size":492,"stargazers_count":4,"open_issues_count":6,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-08T20:01:44.722Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Quansight.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-12T22:24:23.000Z","updated_at":"2021-01-30T11:48:20.000Z","dependencies_parsed_at":"2022-08-14T07:20:56.788Z","dependency_job_id":null,"html_url":"https://github.com/Quansight/qpub","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quansight%2Fqpub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quansight%2Fqpub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quansight%2Fqpub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quansight%2Fqpub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Quansight","download_url":"https://codeload.github.com/Quansight/qpub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254388429,"owners_count":22063053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-19T14:19:33.337Z","updated_at":"2025-05-15T17:33:24.628Z","avatar_url":"https://github.com/Quansight.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qpub - q(uick) publishing of python projects\n\n`qpub` is an opinioned collection of conventional tasks for distributing python packages, tests, and documentation. `qpub` is a consistent CLI for publishing different forms of content in different environments (e.g. local develop/install, Github Actions testing, publishing to Github Pages, deploying Binders). It encodes different opinions for building, installing, testing, and documenting applications. Tool churn is real challenge for open source python development. `qpub` tries to aggregate best present and future practices for publishing different code artifacts.\n\n`qpub` is good for small projects where content is :crown:. For existing projects, `qpub` may be a good test for transitioning old build chains to modern python conventions and for unifying testing and build frameworks across projects.\n\n## What does `qpub` do?\n\n`qpub` infers environment conditions using system variables and files in a git repo. From these partial initial conditions, `qpub` expands configuration files to aid in producing different forms of content. Content can include Python, RST, Markdown, or Jupyter Notebooks.\n\nsome features of `qpub` are:\n\nblog               infer the nikola blog documentation configuration.\nbuild              build the python project.\nconda              install conda requirements\nconfig             infer the jupyter_book documentation configuration.\ndevelop            install the project in development mode.\nenvironment_yaml   infer the project dependencies and write them to an environment.yaml\ninstall            install the packages into the sys.packages\njupyter_book       build the documentation with jupyter-book\njupytext           attach jupytext to the project to render python files.\nlint               lint and format the project with pre-commit\nmkdocs             build the documentation with mkdocs\nmkdocs_yml         infer the mkdocs documentation configuration.\nnikola             build the documentation with nikola\npip                install pip requirements\nprecommit          configure .pre-commit-config.yml for linting and formatting\npyproject          infer the pyproject.toml configuration for the project\nrequirements_txt   infer the project dependencies and write them to a requirements.txt\nsetup_cfg          infer the declarative setup.cfg configuration for the project\nsphinx             build the documentation with sphinx\ntest               test the project with pytest\ntoc                infer the table of contents for the jupyter_book documentation.\numl                generate a uml diagram for the project with pyreverse\n\n\n### extra configuration\n\n`qpub` will merge and append to existing configurations in smart ways. Extra configuration can be provided to any tool by seeding the correct configuration file with partial information.\n\n\n## requirements\n\n`qpub` requires a git repository with content.\n\n# development\n\nthe `nox` file encodes common development tasks.\n\nhttps://mozillascience.github.io/working-open-workshop/contributing/\nhttps://gist.github.com/bollwyvl/f6aac8d4e68e5594fad2ae7a3cacc74b\nhttps://gist.github.com/tonyfast/f74eb42f2a998d8e428a752ceb0cb1d1\n\nshould we pre install a bunch of different pytest opinions?\n\n[github actions]: #\n`\n\n\n# qpub - q(uick) publishing of python projects\n\n`qpub` is an opinioned collection of conventional tasks for distributing python packages, tests, and documentation. `qpub` is a consistent CLI for publishing different forms of content in different environments (eg. local develop/install, github actions testing, publishing to github pages, deploying binders). it encodes different opinions for building, installing, testing, and documenting applications. tool churn is real challenge for open source python development. `qpub` tries to aggregate best present and future practices for publishing different code artifacts.\n\n`qpub` is good for small project where content is :crown:. for older projects, `qpub` may be a good test for transitioning old build chains to modern python conventions.\n\n## what does `qpub` do?\n\n`qpub` infers environment conditions using system variables and files in a git repo. from these partial initial conditions `qpub` expands configuration files for different publishing to aid produces different forms of content. content can include python, rst, markdown, or notebooks.\n\nthe collected features of `qpub` are:\n\n```bash\nblog               infer the nikola blog documentation configuration.\nbuild              build the python project.\nconda              install conda requirements\nconfig             infer the jupyter_book documentation configuration.\ndevelop            install the project in development mode.\nenvironment_yaml   infer the project dependencies and write them to an environment.yaml\ninstall            install the packages into the sys.packages\njupyter_book       build the documentation with jupyter-book\njupytext           attach jupytext to the project to render python files.\nlint               lint and format the project with pre-commit\nmkdocs             build the documentation with mkdocs\nmkdocs_yml         infer the mkdocs documentation configuration.\nnikola             build the documentation with nikola\npip                install pip requirements\nprecommit          configure .pre-commit-config.yml for linting and formatting\npyproject          infer the pyproject.toml configuration for the project\nrequirements_txt   infer the project dependencies and write them to a requirements.txt\nsetup_cfg          infer the declarative setup.cfg configuration for the project\nsphinx             build the documentation with sphinx\ntest               test the project with pytest\ntoc                infer the table of contents for the jupyter_book documentation.\numl                generate a uml diagram for the project with pyreverse\n\n```\n\n### partial configuration\n\n`qpub` will merge and append to existing configurations in smart ways. extra configuration can be provided to any tool by seeding the correct configuration file with partial information.\n\n\n## requirements\n\n`qpub` requires a git repository with content.\n\n# development\n\nthe `nox` file encodes common development tasks.\n\nhttps://mozillascience.github.io/working-open-workshop/contributing/\nhttps://gist.github.com/bollwyvl/f6aac8d4e68e5594fad2ae7a3cacc74b\nhttps://gist.github.com/tonyfast/f74eb42f2a998d8e428a752ceb0cb1d1\n\nshould we pre install a bunch of different pytest opinions?\n\n[github actions]: #\n`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquansight%2Fqpub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquansight%2Fqpub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquansight%2Fqpub/lists"}