# 007 Internal
Theme:
- introduction
- 10 Richard: What's a `#!` ?
- what is this thing on the logo?
- Turning any script to an executable
- #!python
- #!/usr/bin/env python
- #!make -f
- #!
- Next time: how to make a python scirpt suitable for this
- 15 Radovan: Distributing a Python package/script on PyPI
- https://github.com/bast/pypi-howto
- https://github.com/ResearchSoftwareHour/demo-pypi
- https://flit.readthedocs.io/ there is also Poetry
- using flit and github actions
- script
- README.md
- local test before upload
- `pip install --index-url https://test.pypi.org/simple/ your-package`
- test-pypi and dependencies
- "half-baked packages" because it's too easy to package
- comments
- think about your naming - don't take good names for throwaway packages
- is flit as stable as basic setup.py?
- so you have to have flit to install from git repo now?
- should requirements list
=== halftime===
- 10-15 Richard: packaging software for science
- how could we get the "latest" dependencies at a specific date in past
- 10 Richard: Blub paradox
- https://en.wikipedia.org/wiki/Paul_Graham_(programmer)#The_Blub_paradox
- Original source: http://www.paulgraham.com/avg.html
- Definition of the paradox
- When is it worth staying with the simpler solution?
- time investment
- number of contributors who can use it
- ecosystem
- When is it worth moving to more complex solutions?
- How do you learn complex solutions, if you just need to "get stuff done"?
- Examples:
- docker and containers
- moving from make to cmake
- moving from one language to another
- conclusion
- epilogue discussion
- Richard: commit messages starting with filename, opinions?
- github actions and on: [push, pull-request]
## Ideas
- What are our favorite Python packages that we use all the time and others perhaps don't know
- click
- tqdm
- tabulate
- flit
- Github actions: board game network finished
-
- board game networks example
- module -> script, __main__, argument parsing
- 5 minutes Radovan
- probably shows Cicero unless I get an inspiration