# 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