Skip to main content

ADD SHORT DESCRIPTION HERE

Project description

Template Github Repository

Build docscodecov

This is a template repository for python projects which use sphinx for documentation, github actions for building, pytest and codecov for test coverage.

Getting Started

  1. Choose a name for the new repository. Make sure it's available as a name on testPyPi and PyPi. Create a new directory with that chosen module name.

  2. Create a new repository on github with your chosen module name.

  3. Add this repositry to codecov: https://app.codecov.io/gh/edmundsj, and add the CODECOV_TOKEN secret to the github repository. You may need to login to codecov to refresh the repositories.

  4. Create a new authentication token on testPyPi and add it as a github secret named test_pypi_password*

  5. Create a new authentication token on PyPi and add it as a github secret named pypi_password*

  6. Clone this repository into your new directory

    git clone https://github.com/edmundsj/template.git <MODULE_NAME>

  7. Navigate into the cloned repository, and run the setup script. This will change all the names in the relevant setup files, using:

    python repo_setup.py

If this does not work, you will need to do the following manually:

6a. Change the git hooks location:

```git config core.hooksPath .hooks```

6b. Change this repository's name with

git remote set-url origin <NEW_REPO_URL> 6c. In the setup.py, .hooks/pre-commit, and .github/workflows/python-package-conda files, change all instances of "pytemplate" to "MODULE_NAME".

6d. Push to the new repository

```git push -u origin main```
  1. Set github pages to use the docs/ folder for github pages at the bottom of the "Settings" page
  2. Create a status badge from the '... -> Create Status Badge' in the github actions area separately for docs and build, and paste them in the README, as well as from codecov.
  3. If desired, once the build on the remote server finishes, replace the tokens from testPyPi and pyPi with ones that are restricted to this pyPi project.

Done! Your repository should be viewable on github pages: https://edmundsj.github.io/REPO_NAME/

  • Note - since the package does not already exist on pyPi or testPyPi you will need to create a token that has access to all your projects. This obviously isn't an optimal way of doing things, and this should really be changed. I may want to add a setup script which does all the renaming, changes github hooks, and does an initial deploy to pypi and testpypi. If you want after the first push, you can create a new token restricted to the newly-pushed project.

Features

  • Github actions unit test integration via pytest
  • Github actions package management with conda
  • Github actions documentation build using sphinx and reST/markdown, with auto self-push to repository after successful build
  • Github pages documentation hosting/integration
  • Local commits hooks run full test suite
  • Coverage uploaded automatically to codecov after successful build
  • [FUTURE] Auto-deploy to pyPi/testpyPi after successful build

Common Issues

  • Re-running builds on github actions will cause them to fail, as the build number deployed to PyPi depends on the github run number, which does not change if you restart a build.
  • Pypi deploy is failing due to swap files. not sure why.

How to Use

Adding Additional Unit Tests

  • Any time you want to add additional unit tests just add them to those in the tests/ directory and prepend with the name test. These will be automatically found by pytest and run during local commits and remote builds.

Writing the Documentation

  • The documentation source is located in docs/source and is written in restructured text (markdown is also available).

Building the Documentation

Simply run make html from the docs/ directory. This will compile the files in the docs/source/ directory, and place them in the main docs/ directory where github pages can find them.

Dependencies / Technologies Used

Acknowledgements

Thanks to all the great people on stack overflow and github, for their seemingly boundless tolerance to my and others' questions.

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

tabularasa-0.1.91.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

tabularasa-0.1.91-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file tabularasa-0.1.91.tar.gz.

File metadata

  • Download URL: tabularasa-0.1.91.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for tabularasa-0.1.91.tar.gz
Algorithm Hash digest
SHA256 75f84d046887ccbbc364179a1c1494e9885d882d612c7a53ccfb89f84a523dfb
MD5 80313e99827730400dd9622939fb82d4
BLAKE2b-256 8320a5980c3baf59c0be54128f8250fefedee1614a24709abef80e9de379d2af

See more details on using hashes here.

File details

Details for the file tabularasa-0.1.91-py3-none-any.whl.

File metadata

  • Download URL: tabularasa-0.1.91-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.1.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for tabularasa-0.1.91-py3-none-any.whl
Algorithm Hash digest
SHA256 827abe7e3042b86a597fb1bf1123a5ee2d646e4dc258810e8c8cac1503d095be
MD5 9eeee3f44caefbed755a70c9ae9dbd16
BLAKE2b-256 541df99be2fd3ef0e48bcc45e08bffd5961b9ec37a8a1dea21b52fc705c898a7

See more details on using hashes here.

Supported by

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