From a41d5e7d32a7a17c3aec3c7358e97ad374062e23 Mon Sep 17 00:00:00 2001 From: Ryan Daniels <31715811+rkdan@users.noreply.github.com> Date: Wed, 13 Nov 2024 11:14:25 +0000 Subject: [PATCH] Misc updates to website --- docs/1_setting_up.md | 8 + docs/4_Testing.md | 2 + docs/CICD/documentation.md | 52 ++++- docs/CICD/precommit.md | 4 + docs/CICD/publishing.md | 292 ++++++++++++-------------- docs/CICD/testing.md | 30 ++- docs/Poetry/3_poetry.md | 105 +-------- docs/Poetry/CLI.md | 2 + docs/imgs/tests.png | Bin 0 -> 173530 bytes docs/publishing_docs/documentation.md | 15 +- docs/publishing_docs/publishing.md | 20 +- docs/stylesheets/extra.css | 6 + 12 files changed, 250 insertions(+), 286 deletions(-) create mode 100644 docs/imgs/tests.png diff --git a/docs/1_setting_up.md b/docs/1_setting_up.md index bba40e57b..56f39b01a 100644 --- a/docs/1_setting_up.md +++ b/docs/1_setting_up.md @@ -79,6 +79,14 @@ This will automatically create and move over to a new branch called `dev`. The e In the source control tab, hit "Publish Branch". +When you see this symbol: + +
+![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
+ +it means that you should commit and push your changes to the repository. They indicate key checkpoints in the workshop. + ## Further reading
diff --git a/docs/4_Testing.md b/docs/4_Testing.md index b7f8005ae..401c79733 100644 --- a/docs/4_Testing.md +++ b/docs/4_Testing.md @@ -95,7 +95,9 @@ OK You can try changing part of the test code to force them to fail, and check the output. Now that the tests have run succesfully, it's time to commit and push the changes. +
![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
!!! note diff --git a/docs/CICD/documentation.md b/docs/CICD/documentation.md index ade896675..0e1641680 100644 --- a/docs/CICD/documentation.md +++ b/docs/CICD/documentation.md @@ -5,31 +5,61 @@ Here is the workflow for this: name: documentation on: push: - branches: - - main + tags: + - 'v*' jobs: build-docs: needs: tests if: github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest + steps: - # Set up dependencies - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Verify tag is on main + run: | + # Get the branch containing this tag + BRANCH=$(git branch -r --contains ${{ github.ref }} | grep 'main' || true) + + # Check if the tag is on main + if [ -z "$BRANCH" ]; then + echo "Error: Tag must be created on main branch" + exit 1 + fi + + - name: Install Poetry + run: pipx install poetry + + - uses: actions/setup-python@v5 with: - python-version: '3.10' - cache: 'pip' - - run: python3 -m pip install mkdocs==1.4.2 mkdocstrings==0.21.2 "mkdocstrings[python]>=0.18" + python-version: '3.12' + cache: 'poetry' + + - name: Install dependencies with dev group + run: poetry install --with dev # Deploy docs - name: Deploy documentation - run: mkdocs gh-deploy --force + run: | + poetry run mkdocs gh-deploy --force ``` -This simply says: when a push is made to main, publish the documentation. +Most of this is the same as for publishing the package to PyPi. The main difference is that we are running `mkdocs gh-deploy --force` to deploy the documentation to GitHub Pages. This will create a new branch called `gh-pages` which will contain the documentation. + +You should now be able to navigate to `https://.github.io/` and see your documentation! + +!!! tip + + This is a great tool to make personal websites for your work. You can add images, links, and even videos to your documentation. It is a great way to showcase your research. + + This website was made using MkDocs and the Material theme! Check out the Material website [here](https://squidfunk.github.io/mkdocs-material/). + + For more details on how our websites are made, then you can browse through the folders in the github repo by clicking the GitHub icon at the top left of the page. -In addition, since we are using some tools, we should let everyone know! So we can add the following to our `README.md` file: +In addition, since we are using some tools, we should let everyone know! So we can add the following to our `README.md` file (just be sure to replace the links with the correct ones): ```html
diff --git a/docs/CICD/precommit.md b/docs/CICD/precommit.md index ff71731d5..5de638c76 100644 --- a/docs/CICD/precommit.md +++ b/docs/CICD/precommit.md @@ -152,6 +152,10 @@ Found 4 errors in 1 file (checked 7 source files) isort....................................................................Passed ``` +
+![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
+ ## Further reading
diff --git a/docs/CICD/publishing.md b/docs/CICD/publishing.md index b4e042928..ff74dc3f9 100644 --- a/docs/CICD/publishing.md +++ b/docs/CICD/publishing.md @@ -1,126 +1,99 @@ Finally, we will automate the publishing of our package to PyPI and the release of the documentation. -## Publishing - -### Pull requests +## Pull requests When do we want to publish our package and documentation? We don't want to publish when we push changes to `dev`, because there might be some experimental changes that we've made that could break our package. Instead we should restrict publishing only when there are pushes made to `main`. However, we don't just want to push changes to main directly. Head over to the repo and submit a pull request. It should look something like this: ![](../imgs/PR.png) -You should make sure that the `compare` branch is `dev` and the `base` branch is `main`. There are no conflicts so I can merge these branches without any issues. If there are conflicts you must manually go through them and decide whether you want to keep the `base` changes or the `compare` changes. Hit Create pull request and give it a title and description, and hit Create pull request again. You should come through to a page that looks somewhat like the image below. +You should make sure that the `compare` branch is `dev` and the `base` branch is `main`. + +!!! warning + + If you are working on a fork, you should be comparing your forked repo with your forked repo base, not your forked repo with the upstream repo base. + +There are no conflicts so I can merge these branches without any issues. If there are conflicts you must manually go through them and decide whether you want to keep the `base` changes or the `compare` changes. Hit Create pull request and give it a title and description, and hit Create pull request again. You should come through to a page that looks somewhat like the image below. ![](../imgs/PR_next.png) -Notice that there are some checks happening. We want to avoid hitting that Merge pull request button as long as those checks have not passed. We can actually enforce this, but for now we can just manually make sure that the checks have passed. When the PR is merged, a new release will be made. So how do we do this? +Notice that there are some checks happening. We want to avoid hitting that Merge pull request button as long as those checks have not passed. We can actually enforce this, but for now we can just manually make sure that the checks have passed. + +Now head over to the Code tab and click on the branches. Delete the `dev` branch. We don't need it anymore. When you head back into codespaces, checkout the `main` branch and pull any changes by running these commands: + +```bash +git checkout main +git pull origin main +``` + +We will create a new branch for adding our publishing workflow: + +```bash +git checkout -b build-and-publish +``` + +## The workflow To demonstrate the process, create a new workflow called `build-and-publish.yml`. It looks like this: ```yaml -name: Build and Publish +name: build-and-publish on: - pull_request: - branches: - - main push: - branches: - - main + tags: + - 'v*' jobs: - pre-commit: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Install poetry - run: pipx install poetry - - uses: actions/setup-python@v5 - with: - python-version: '3.10' - cache: 'poetry' - - run: poetry install - - name: Run pre-commit checks - run: | - poetry run pre-commit run --all-files - - tests: - needs: pre-commit - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Install poetry - run: pipx install poetry - - uses: actions/setup-python@v5 - with: - python-version: '3.10' - cache: 'poetry' - - run: poetry install - - name: Run tests - run: | - poetry run python -m unittest discover tests/ - release: - needs: tests - if: github.event_name == 'push' && github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - token: ${{ secrets.GITHUB_TOKEN }} + + - name: Verify tag is on main + run: | + # Get the branch containing this tag + BRANCH=$(git branch -r --contains ${{ github.ref }} | grep 'main' || true) + + # Check if the tag is on main + if [ -z "$BRANCH" ]; then + echo "Error: Tag must be created on main branch" + exit 1 + fi + - name: Install Poetry run: pipx install poetry + - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' cache: 'poetry' + - name: Install dependencies run: poetry install - - name: Bump version - run: | - git config user.name github-actions - git config user.email github-actions@github.com - - # Get the commit message - commit_message=$(git log -1 --pretty=%B) - - # Determine the version bump type based on the commit message - if echo "$commit_message" | grep -q -i -E '^(break|major)\b'; then - version_type="major" - elif echo "$commit_message" | grep -q -i -E '^(feat|minor)\b'; then - version_type="minor" - else - version_type="patch" - fi - - # Bump the version using Poetry - poetry version $version_type - version=$(poetry version -s) - - git add pyproject.toml - git commit -m "Bump version to $version" - git push + - name: Build package run: poetry build - - name: Get version from pyproject.toml + + - name: Get version from tag id: get_version - run: | - version=$(poetry version -s) - echo "::set-output name=version::$version" + run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT + - name: Create Release - id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tag_name: v${{ steps.get_version.outputs.version }} + tag_name: ${{ github.ref }} release_name: Release ${{ steps.get_version.outputs.version }} body: Release ${{ steps.get_version.outputs.version }} + draft: false + prerelease: false + - name: Publish to TestPyPI env: POETRY_REPOSITORIES_TEST_PYPI_URL: https://test.pypi.org/legacy/ @@ -129,70 +102,45 @@ jobs: poetry publish -r test-pypi -u __token__ -p ${{ secrets.TEST_PYPI_API_TOKEN }} ``` -This is quite a bit longer than the one we did for only testing! Notice we have three jobs: the pre-commit (again), the tests (again) and the release. Why do we do all these checks? This seems insane. We'll talk about this later. For now, let's have a look at what is going on. +This is a bit longer than the one we did for only testing! Let's have a look at what is going on. ### Run conditions ```yaml -name: Build and Publish +name: build-and-publish on: - pull_request: - branches: - - main push: - branches: - - main + tags: + - 'v*' ``` -As before, we name the workflow. Now though, we run on two occasions: when a PR is submitted targeting `main`, and when a push is made to `main` +As before, we name the workflow. Now though, we have a peculiar `#!yaml tag` condition. This is saying that the workflow will only run when a tag is pushed to the repo. The tag must start with a `v`. This is a common convention for versioning software. For example, if you want to release version 1.0.0, you would tag it with `v1.0.0`. + +### The Release Job +The main job here is the `#!yaml release`. We look at some key components -### The Jobs -The first two jobs are the same. The next job `#!yaml release` requires the first two jobs to pass, and in addition we have this line: ```yaml -if: github.event_name == 'push' && github.ref == 'refs/heads/main' +- name: Verify tag is on main + run: | + # Get the branch containing this tag + BRANCH=$(git branch -r --contains ${{ github.ref }} | grep 'main' || true) + + # Check if the tag is on main + if [ -z "$BRANCH" ]; then + echo "Error: Tag must be created on main branch" + exit 1 + fi ``` -This is saying that the `#!yaml release` job will only run when there is a push to main. In other words, when someone submits a PR only, this section of code will NOT run. +This does exactly what you think it does! It checks if the tag is on the `main` branch. If it is not, it will throw an error and the workflow will stop. The next interesting part is ```yaml -- name: Bump version - run: | - git config user.name github-actions - git config user.email github-actions@github.com - - # Get the commit message - commit_message=$(git log -1 --pretty=%B) - - # Determine the version bump type based on the commit message - if echo "$commit_message" | grep -q -i -E '^(break|major)\b'; then - version_type="major" - elif echo "$commit_message" | grep -q -i -E '^(feat|minor)\b'; then - version_type="minor" - else - version_type="patch" - fi - - # Bump the version using Poetry - poetry version $version_type - version=$(poetry version -s) - - git add pyproject.toml - git commit -m "Bump version to $version" - git push -``` - -This part is responsible for bumping the version number in the `pyproject.toml` file. First we set some conditions on our commit messages. I can have three different types of commit message: - -```bash -patch: -minor: # (1)! -major: # (2)! +- name: Get version from tag + id: get_version + run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT ``` -1. You can also substitute `minor` for `feat` -2. You can also substitute `major` for `break` - -The type of changes you make will depend on which number in the version gets changed according to standard semantic versioning rules. The idea of semantic versioning is to use 3-part version numbers, *major.minor.patch*, where the project author increments: +This is responsible for finding out the version of our package. The type of changes you make will depend on which number in the version gets changed according to standard semantic versioning rules. The idea of semantic versioning is to use 3-part version numbers, *major.minor.patch*, where the project author increments: - major when they make incompatible API changes, - minor when they add functionality in a backwards-compatible manner, and @@ -200,51 +148,77 @@ The type of changes you make will depend on which number in the version gets cha We then allow the GitHub bot to alter the version in the `pyproject.toml` file, and commit and push the changes. Obviously this push does not trigger the workflow again, otherwise that would result in an endless loop. In order for this to work, you need to give the GitHub Bot permission to write to your repo. Head to Settings -> Actions -> General. Look for Workflow permissions, and click Read and write permissions, and save. -The final section builds the package and releases it to GitHub and to Test PyPI. In order for this to work, you have to give GitHub your API key. Head to the repo Settings -> Secrets and variables -> Actions. Add a new repository secret and call it `TEST_PYPI_API_TOKEN`. +```yaml +- name: Create Release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ steps.get_version.outputs.version }} + body: Release ${{ steps.get_version.outputs.version }} + draft: false + prerelease: false + +- name: Publish to TestPyPI + env: + POETRY_REPOSITORIES_TEST_PYPI_URL: https://test.pypi.org/legacy/ + run: | + poetry config repositories.test-pypi https://test.pypi.org/legacy/ + poetry publish -r test-pypi -u __token__ -p ${{ secrets.TEST_PYPI_API_TOKEN }} +``` -## Why so many checks? -For the most part, all of these checks are for demonstration purposes and to increase exposure to different basic workflows. But what if you are the maintainer of a piece of software that has two or three other PhD students working on it, and you like total control? You might have three rounds of checks. +The final section builds the package and releases it to GitHub and to Test PyPI. In order for this to work, you have to give GitHub your API key. Head to the repo Settings -> Secrets and variables -> Actions. Add a new repository secret and call it `TEST_PYPI_API_TOKEN`. You will need to paste in your API token from Test PyPI, which you have hopefully kept in your `.env` file. -__Check 1 - push to `dev`__: -```mermaid -graph LR; - A[pre-commit checks]-->B[fast tests]; -``` +
+![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
-__Check 2 - PR to `main`__: -```mermaid -graph LR; - A[pre-commit checks]-->B[fast tests]; - B[fast tests]-->C[slow tests]; -``` +## Different approaches to Git management +There are two main schools of development on git: Git Flow, and trunk-based development. -__Check 3 - PR merge to `main`__: -```mermaid -graph LR; - A[pre-commit checks]-->B[fast tests]; - B[fast tests]-->C[slow tests]; - C[slow tests]-->D[build]; - D[build]-->E[publish] -``` +#### Git Flow +In Git Flow you have two long-running branches `main` and `dev`. Workers will usually branch off of `dev`, make some feature change, then submit a PR. The PR is accepted (or not) and merged to `dev`. When we are happy, we create a release branch, do some tests, and then merge this branch into `main` and tag it with a release. This style is very suitable to open-source projects, where you can't trust random people trying to make changes to your code. + +#### Trunk +In Trunk-based development, you work from a single `main` branch. Usually you work from it directly, and make short changes, and make small `feature` branches. Development is fast and continuous. When you are happy, you create a separate `release` branch which is pushed to PyPI (or wherever). This is a great option for small, speedy projects, and is the approach that we use here. -Your PhD students will run the pre-commit and do some quick test checks locally, and then their code will get automatically tested when they do a push to their development branch, which will then do the same thing, perhaps on a variety of operating systems or with python versions. They will then submit a PR, whereupon the same tests occur, and perhaps some additional slower more comprehensive tests. You will then see the outcome of these tests and decide to merge the changes to main. All tests are conducted again, and the software is built and released. +!!! tip -For a single person working on a project, and for most projects, this is overkill, and you can get away with significantly less. However in some key pieces of software with many people working on it, or where certain regulatory issues are present, having so many redundant checks provides multiple layers of protection from idiocy. If your project is open source, then you need strict control over who can contribute. + If you find yourself working on a feature, and somebody has made changes to the main branch, you can update yours by running + ```bash + git checkout dev + git merge origin/main + ``` + This will update your `dev` branch with the changes from `main`. -Typically you can now just delete the `dev` branch. When you want to make more changes, just create a new branch from main, make your changes, then merge back to main and release directly from main. Or you can keep your `dev` branch, but when you want to work on it again, you must remember to update your dev branch. You can do this with +## Actually publishing +Submit a PR, and merge the changes into main. If we've done everything correct, the workflow should not run. + +Back in Codespaces, checkout the `main` branch and pull any changes: + +```bash +git checkout main +git pull origin main ``` -git checkout dev -git merge origin/main + +Bump the version (because if we try to push this versoin again, it will fail), and push the changes: + +```bash +poetry version patch +git add pyproject.toml +git commit -m "Bump version to $(poetry version -s)" +git push origin main ``` -### Different approaches to CI/CD -There are two main schools of development on git: Git Flow, and trunk-based development. +Now, create a new tag and push it: -#### Git Flow -In Git Flow you have two long-running branches `main` and `dev`. Workers will usually branch off of `dev`, make some feature change, then submit a PR. The PR is accepted (or not) and merged to `dev`. When we are happy, we create a release branch, do some tests, and then merge this branch into `main` and tag it with a release. This style is very suitable to open-source projects, where you can't trust random people trying to make changes to your code. +```bash +git tag v$(poetry version -s) +git push origin v$(poetry version -s) +``` -#### Trunk -In Trunk-based development, you work from a single `main` branch. Usually you work from it directly, and make short changes, and make small `feature` branches. Development is fast and continuous. When you are happy, you create a separate `release` branch which is pushed to PyPI (or wherever). This is a great option for small, speedy projects. +Now when we head back to the repo, we should see the workflow running. If it fails, you can check the logs to see what went wrong. If it passes, you can check the releases tab and see your new release! And you can also head to Test PyPI and see your package there too! ## Further reading diff --git a/docs/CICD/testing.md b/docs/CICD/testing.md index fa149a389..2fa47e393 100644 --- a/docs/CICD/testing.md +++ b/docs/CICD/testing.md @@ -2,9 +2,12 @@ The process of automated testing is a little more involved, and we now introduce ## The testing workflow Create a new directory +```bash +mkdir -p .github/workflows # (1)! ``` -mkdir .github/workflows -``` + +1. The `-p` flag creates the entire directory structure if it does not exist. + and add a file in this directory called `tests.yml`. Now add the following @@ -13,7 +16,8 @@ name: Run Tests on: push: - branches: [dev] + branches-ignore: + - main jobs: pre-commit: @@ -25,7 +29,7 @@ jobs: run: pipx install poetry - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' cache: 'poetry' - run: poetry install - name: Run pre-commit checks @@ -42,7 +46,7 @@ jobs: run: pipx install poetry - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' cache: 'poetry' - run: poetry install - name: Run tests @@ -58,10 +62,11 @@ name: Run Tests on: push: - branches: [dev] + branches-ignore: + - main ``` -We give the workflow a name `Run Tests`. Then we say, whenever a push is made to `dev`, run this workflow. +We give the workflow a name `Run Tests`. Then we say, whenever a push is made to any branch other than `main`, run this workflow. ### The jobs Next, we define what `jobs` we want to run. In this case we have two: the `pre-commit`, and the `tests`. @@ -77,7 +82,7 @@ pre-commit: run: pipx install poetry - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' cache: 'poetry' - run: poetry install - name: Run pre-commit checks @@ -105,7 +110,7 @@ steps: run: pipx install poetry - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.12' cache: 'poetry' - run: poetry install - name: Run tests @@ -138,6 +143,13 @@ We then install poetry and python again, and run the unittests. So now, everytim The world of GitHub Actions workflows is complex and full of danger. My advice is to keep it simple. +
+![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
+ +Now that we have our tests set up, let's try pushing these changes to our remote. You can head over to the `Actions` tab on your GitHub repository to see the workflow in action. + +![GitHub Actions](../imgs/tests.png "GitHub Actions") ## Further reading
diff --git a/docs/Poetry/3_poetry.md b/docs/Poetry/3_poetry.md index 870f2ac90..26474616b 100644 --- a/docs/Poetry/3_poetry.md +++ b/docs/Poetry/3_poetry.md @@ -5,7 +5,7 @@ pipx install poetry ``` Your experience doing this with other operating systems may vary. Further details about installation can be found [here](https://python-poetry.org/docs/#installing-with-pipx). -Don't do this now, but you can initialize a new project with poetry from scratch: +_**Don't do this**_, but you can initialize a new project with poetry from scratch: ```bash poetry new my-project-name ``` @@ -15,7 +15,7 @@ Or you might have some existing work and an environment that you might want to c ```bash poetry init ``` -Since we already have some code, we use the later option for this project. Running `poetry init` will involve having to run through some basic setup steps to define out config file. +Since we already have some code, we use the later option for this project. Running `poetry init` will involve having to run through some basic setup steps to define out config file. Replace all instances of `crsid` with _your own CRSID_. ``` Package name [packaging-publishing]: cancer-prediction-crsid @@ -85,103 +85,8 @@ poetry add streamlit Notice that now `streamlit` has appeared in `pyproject.toml`! Poetry has also created a file called `poetry.lock`. This file essentially locks in all of your dependencies so someone external can recreate your environment. It is somewhat analogous to the conda `environment.yml` file. Generally, we never alter this file manually. -When you see this symbol: - +
![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
-it means that you should commit and push your changes to the repository. They indicate key checkpoints in the workshop. - -## Implement the CLI entry point -Notice that the CLI will still not work in the way that we want it to. In order for the CLI to work, we have to make two alterations. - -!!! tip - - There are a few different libraries that will help you handle CLI. In this project, we use `typer`, but `argparse` is also a very popular one. - -### Additions to the code -At this point it is worth quickly going through the code for the `app.py` script. Click the arrows to find out what the code does. - -``` python -import sys - -import typer -from cancer_prediction import streamlit_app # (1)! -from streamlit.web import cli as stcli - -app = typer.Typer() # (2)! - -@app.command() # (3)! -def __version__(): - typer.echo("0.1.0") - -@app.command() # (4)! -def run(): - sys.argv = ["streamlit", "run", "cancer_prediction/streamlit_app.py"] - sys.exit(stcli.main()) - - -if __name__ == "__main__": - app() -``` - -1. Since this depends on the `streamlit_app.py` script, we have to import it here -2. Initialize the typer app -3. A command that prints out the version of the app -4. A command that essentially mimics the `streamlit run cancer_prediction/streamlit_app.py` command that we used earlier - -We create a new folder inside `cancer_prediction` called `cli`. We also create a new `__init__.py` file and copy over the `app.py` file. The init file should contain only: -```python -from .app import app - -__all__ = ["app"] -``` - -We also need to add the `typer` library. Since this is a main dependancy, we can add it using the regular `poetry add` command. - -### Additions to the `.toml` file -We want someone to be able to do: -```bash -pip install cancer-prediction -``` - -and then -``` -cancer-prediction run -``` - -We have defined our `run` command, but your bash terminal will not recognize the command `cancer-prediction`! To do this, we first need to define an entry point. We add the following line to `pyproject.toml` below the readme: -```toml -packages = [{include = "cancer_prediction"}] -``` - -Then we add the following lines -``` -[tool.poetry.scripts] -cancer-prediction = "cancer_prediction.cli:app" -``` - -This provides us with an entry point to the `cli/app.py` file. What is essentially says is: "When I type the command `cancer-prediction` into my command line, what I really mean is execute this app." - -We then install a local copy of our package which mimics a pip installation: -```bash -poetry install -``` - -We can now try it out by running -```bash -cancer-prediction run -``` - -and the streamlit app should open! You should be able to play around with the app in the browser. In general, streamlit is a great way to prototype new applications. Try training a model using the training data - give it a name like `cancer_model_v2`. Then try running inference on this model with the testing data. - -![Dark Souls Bonfire](imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } - -## Further reading -
- -- :fontawesome-solid-book-open:{ .lg .middle } [__Poetry resources__](resources/references.md#poetry) - - --- - Information on Poetry, toml files, and licensing - -
\ No newline at end of file +Now let's implement the command line interface (CLI). \ No newline at end of file diff --git a/docs/Poetry/CLI.md b/docs/Poetry/CLI.md index 6899fb6d0..19ac860e7 100644 --- a/docs/Poetry/CLI.md +++ b/docs/Poetry/CLI.md @@ -81,7 +81,9 @@ cancer-prediction run and the streamlit app should open! You should be able to play around with the app in the browser. In general, streamlit is a great way to prototype new applications. Try training a model using the training data - give it a name like `cancer_model_v2`. Then try running inference on this model with the testing data. +
![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
## Further reading
diff --git a/docs/imgs/tests.png b/docs/imgs/tests.png new file mode 100644 index 0000000000000000000000000000000000000000..aa63b7547638156f444a604fd899f7883e4f6e7b GIT binary patch literal 173530 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 literal 0 HcmV?d00001 diff --git a/docs/publishing_docs/documentation.md b/docs/publishing_docs/documentation.md index fe6c1f3fa..d946af4a6 100644 --- a/docs/publishing_docs/documentation.md +++ b/docs/publishing_docs/documentation.md @@ -156,9 +156,9 @@ It is now up to us to fill in summary and descriptions. If you have GitHub Copil There are a few other functions and methods without type hints or docstrings, so feel free to complete them. ## Setting up MkDocs -Perhaps surprisingly, MkDocs can automatically parse your docstring information and produce documentation! We must first install mkdocs and mkdocstrings +Perhaps surprisingly, MkDocs can automatically parse your docstring information and produce documentation! We must first install mkdocs and mkdocstrings to the dev group (because users won't need these packages to run the code): ``` -poetry add mkdocs mkdocstrings mkdocstrings[python] +poetry add --group dev mkdocs mkdocstrings mkdocstrings[python] ``` We now run @@ -170,8 +170,7 @@ This will generate a `mkdocs.yml` file in your root directory, and a `docs` fold ``` ## Documentation -- [cancer-prediction-](cancer-prediction-/config.md): documentation for functions and classes. -- [Code](https://github.com//cancer-prediction-) +Welcome to the documentation for the cancer prediction project. Here you will find information on the cancer model and the streamlit app. ``` Now we want to mimic the structure of our source file directory, so we create a new folder within `docs` called `cancer-prediction`, and within, we create two files: `cancer_model.md` and `streamlit_app.md`. So your documentation directory should be something like: @@ -200,8 +199,8 @@ This tells MkDocs where to look for the docstring information. The final thing l ```yaml site_name: Cancer Prediction -site_url: https://github.com//cancer-prediction- -repo_url: https://github.com//cancer-prediction- +site_url: https://github.com//cancer-prediction- +repo_url: https://github.com//cancer-prediction- nav: - Home: index.md - cancer-prediction: @@ -226,6 +225,10 @@ and if you click the "cancer model" tab on the sidebar, you should see something And that's about it. +
+![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
+ ## Further reading
diff --git a/docs/publishing_docs/publishing.md b/docs/publishing_docs/publishing.md index 8fb9c8ccc..601db1228 100644 --- a/docs/publishing_docs/publishing.md +++ b/docs/publishing_docs/publishing.md @@ -1,10 +1,24 @@ In this course, we will only publish to Test PyPI, but the process is broadly the same for PyPI. ## Create PyPI Account -Head to [Test PyPI](https://test.pypi.org/). Register for a new account. You will probably need to set up Two Factor Authentication (2FA). This is easiest using an app such as Google Authenticator. +Head to [Test PyPI](https://test.pypi.org/). Register for a new account. You will probably need to set up Two Factor Authentication (2FA). This is easiest using an app such as Google or Microsoft Authenticator. Note that you will need to use this app when you log in to Test PyPI or PyPI in the future. And given that MFA is prevalent across the university, you should be familiar with this process. + +Make sure you also save your recovery codes in a safe place. If you lose access to your 2FA app, you will need these codes to regain access to your account. + +!!! note + + At this time, we recommend the use of Google Authenticator, as it allows the transfer of 2FA codes between different operating systems (e.g. Android to iOS). Microsoft Authenticator does not have this feature. Go to 'Account settings', scroll down to Api Tokens, and click on 'Add API Token'. Leave this page open for now, because you will need this token shortly. +!!! tip + + Create a new file in the root of your project called `.env`, and add the following line to this file: + ``` + TESTPY_API_TOKEN="your-token" + ``` + Then add `.env` to your `.gitignore` file. This will ensure that your API token is not uploaded to GitHub. + ## Build your package Back in VSCode, run ``` @@ -64,6 +78,10 @@ Now install your new package using `pip`- copy the command from the Test PyPI pa It really is that simple. Like Poetry. +
+![Dark Souls Bonfire](../imgs/dark-souls-bonfire.gif "Commit your changes and rest, weary traveller"){ width="50" .center } +
+ !!! tip What happens when we try to publish to PyPI for a second time? We will need to increment the version number in the `pyproject.toml` file. This is because PyPI will not allow you to upload the same version of a package twice. diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 6f2e74ca6..29d6c7116 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -1,4 +1,10 @@ .center { display: block; margin: 0 auto; +} + +.md-typeset .admonition:has(img[width="50"]) { + width: fit-content; + margin: 0 auto; + min-width: 150px; } \ No newline at end of file