{"id":15074749,"url":"https://github.com/py-pkgs/py-pkgs","last_synced_at":"2026-01-17T08:29:56.069Z","repository":{"id":42172117,"uuid":"239843260","full_name":"py-pkgs/py-pkgs","owner":"py-pkgs","description":"Open source book about making Python packages.","archived":false,"fork":false,"pushed_at":"2026-01-01T01:20:03.000Z","size":58647,"stargazers_count":325,"open_issues_count":15,"forks_count":52,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-01-05T15:53:35.548Z","etag":null,"topics":["jupyter","jupyter-book","package","python","python-packages"],"latest_commit_sha":null,"homepage":"https://py-pkgs.org","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/py-pkgs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-11T19:12:08.000Z","updated_at":"2026-01-01T01:20:07.000Z","dependencies_parsed_at":"2024-04-11T00:27:56.630Z","dependency_job_id":"85c94fa2-d91d-4e18-8ae0-916a41e7d90f","html_url":"https://github.com/py-pkgs/py-pkgs","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/py-pkgs/py-pkgs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/py-pkgs%2Fpy-pkgs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/py-pkgs%2Fpy-pkgs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/py-pkgs%2Fpy-pkgs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/py-pkgs%2Fpy-pkgs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/py-pkgs","download_url":"https://codeload.github.com/py-pkgs/py-pkgs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/py-pkgs%2Fpy-pkgs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28504364,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: 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":["jupyter","jupyter-book","package","python","python-packages"],"created_at":"2024-09-25T03:47:46.135Z","updated_at":"2026-01-17T08:29:56.042Z","avatar_url":"https://github.com/py-pkgs.png","language":"Jupyter Notebook","readme":"# Python packages\n\n![Build](https://github.com/py-pkgs/py-pkgs/workflows/Build/badge.svg)\n[![Netlify Status](https://api.netlify.com/api/v1/badges/aedd3981-db10-4730-b21f-a762194129f9/deploy-status)](https://app.netlify.com/sites/zen-ptolemy-4bba7d/deploys)\n[![Website](https://img.shields.io/badge/Website-https://py--pkgs.org-blue)](https://py-pkgs.org/)\n\n[Tomas Beuzen](https://www.tomasbeuzen.com/) \u0026 [Tiffany Timbers](https://www.tiffanytimbers.com/)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"py-pkgs/images/py-pkgs-hex.png\" width=\"220\"\u003e\n\u003c/p\u003e\n\nPython packages are a core element of the Python programming language and are how you create organized, reusable, and shareable code in Python. *Python Packages* is an open source book that describes modern and efficient workflows for creating Python packages.\n\nYou can purchase the book at [CRC Press](https://www.routledge.com/Python-Packages/Beuzen-Timbers/p/book/9781032029443) or on [Amazon](https://www.amazon.com/Python-Packages-Chapman-Hall-Crc/dp/1032029447).\n\n## Building the book\n\n### Jupyter Book (HTML)\n\nIf you'd like develop and build the `py-pkgs` book to HTML:\n\n1. Clone this repository;\n2. Run `pip install -r requirements.txt` (it is recommended you do this within a virtual environment);\n3. Make any desired changes to source files;\n4. Build the book using the `build_jupybook.sh` script:\n\n  ```bash\n  $ cd py-pkgs\n  $ sh build_jupybook.sh\n  ```\n\nA fully-rendered HTML version of the book will be built in `py-pkgs/_build/html/`.\n\n### Bookdown (PDF)\n\nIf you'd like develop and build the `py-pkgs` book to PDF:\n\n1. Install [Docker](https://docs.docker.com/get-docker/);\n2. Pull the `pypkgs/bookdown` images: `docker pull pypkgs/bookdown`;\n3. Make any desired changes to source files;\n4. Build the book using the `build_bookdown.sh` script:\n\n  ```bash\n  $ cd py-pkgs\n  $ sh build_bookdown.sh\n  ```\n\nA fully-rendered PDF version of the book will be built in `py-pkgs/bookdown/_book/`.\n\n## Contributing\n\nContributions are welcome and greatly appreciated! If you're interested in contributing to this project, take a look at the [contributor guide](docs/CONTRIBUTING.md).\n\n## Colophon\n\nThis book was written in [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/index.html) and compiled using [Jupyter Book](https://jupyterbook.org/intro.html). The source is hosted on [GitHub](https://github.com/UBC-MDS/py-pkgs) and is deployed online at \u003chttps://py-pkgs.org\u003e with [Netlify](https://www.netlify.com/).\n\n## Acknowledgements\n\nWe'd like to thank everyone that has contributed to the development of [*Python Packages*](https://py-pkgs.org/). This is an open source book that began as supplementary material for the University of British Columbia's Master of Data Science program and was subsequently developed openly on GitHub where it has been read, revised, and supported by many students, educators, practitioners and hobbyists. Without you all, this book wouldn't be nearly as good as it is, and we are deeply grateful. A special thanks to those who have contributed to or provided feedback on the text via GitHub (in alphabetical order): `benjy765`, `Carreau`, `chendaniely`, `dcslagel`, `eliasdabbas`, `fegue`, `firasm`, `Kaszanas`, `Midnighter`, `mtkerbeR`, `NickleDave`, `SamEdwardes`, `tarensanders`, `wirthual`.\n\nThe scope and intent of this book was inspired by the fantastic [R Packages](https://r-pkgs.org) book written by Hadley Wickham and Jenny Bryan, a book that has been a significant resource for the R community over the years. We hope that *Python Packages* will eventually play a similar role in the Python community.\n","funding_links":[],"categories":["Python Packages"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpy-pkgs%2Fpy-pkgs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpy-pkgs%2Fpy-pkgs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpy-pkgs%2Fpy-pkgs/lists"}