Exercises - Packaging#
1) Package metadata#
In a number of places on our TestPyPI webpage, it says that no project description was provided
How could we edit our setup.py
file to include a description?
What other metadata would you add?
Hint: The setup() args
documentation might be useful.
2) Separating requirements#
As well as requirements_docs.txt
, developers often create a requirements_dev.txt
file to list packages that are not needed by the package’s users,
but are required for its development and testing.
Pull pytest
out of requirements.txt
and put it in a new requirements_dev.txt
file.
3) Software review#
The Journal of Open Source Software has a checklist that reviewers must follow when assessing a submitted software paper. Run through the checklist (skipping the criteria related to the software paper) and see how the Zipf’s Law package would rate on each criteria.
4) Packaging quotations#
Each chapter in this book opens with a quote from the British author Terry Pratchett.
This script quotes.py
contains a function random_quote
which prints a random Pratchett quote:
import random
quote_list = ["It's still magic even if you know how it's done.",
"Everything starts somewhere, "\
"though many physicists disagree.",
"Ninety percent of most magic merely consists "\
"of knowing one extra fact.",
"Wisdom comes from experience. "\
"Experience is often a result of lack of wisdom.",
"There isn't a way things should be. "\
"There's just what happens, and what we do.",
"Multiple exclamation marks are a sure sign "\
"of a diseased mind.",
"+++ Divide By Cucumber Error. "\
"Please Reinstall Universe And Reboot +++",
"It's got three keyboards and a hundred extra "\
"knobs, including twelve with ‘?' on them.",
]
def random_quote():
"""Print a random Pratchett quote."""
print(random.choice(quote_list))
Create a new conda
development environment called pratchett
and use pip
to install a new package called pratchett
into that environment.
The package should contain quotes.py
,
and once the package has been installed the user should be able to run:
from pratchett import quotes
quotes.random_quote()