Andrew Thompson delivered this talk at the January 2014 joint meeting of the PhillyPUG Python User's Group and the GeoPhilly GIS Meetup group. Topics covered include Rest APIs, API wrappers, Python documentation tools, and Python module packaging practices and the Python Package Index.
7. So that’s an API...What’s a Wrapper?
● Reese’s cups, like APIs, are filled with
awesome. Data! Peanut Butter!
● But the chocolate, like JSON and XML and
HTTP, will melt all over your fingers. It’s
messy.
● The wrapper keeps your hands clean so you
don’t have to deal with the messy stuff.
● You just program in Python.
9. Documentation is Important
● If you like Sphinx or
reStructuredText,
great.
● I don’t.
○ A bit large
○ A bit complicated,
build process, etc
○ Markdown is more
intuitive, to me
● Make docs, not
arguments
15. “The “Python Packaging User Guide” (PUG) aims to be the authoritative
resource on how to package and install distributions in Python using current
tools...”
https://python-packaging-user-guide.readthedocs.org/en/latest/index.html
17. What is a “package,” actually?
● Python Module:
○ Any single .py file.
○ Or, a multi-file module, which puts many .py files in a
directory with an __init__.py, which
■ Tells Python to treat that whole directory as one
module.
○ module
■ __init__.py
■ file1.py
■ file2.py
18. What is a “package,” actually?
● Python Package:
○ Often people use this word to describe a multi-file
module.
○ It's also a synonym for "distribution".
○ And it's also something in between the two.
○ And a verb.
19. What is a “package,” actually?
● Python Distribution:
○ "a versioned archive file that contains Python
packages, modules, and other resource files... The
distribution file is what an end-user will download
from the internet and install."
● Distributed to your users with pip and the
Python Package Index.
● But you rarely come across this word.
22. My “Official” Packaging Docs
● Our “root” package
○ (Yes, a package more than a module,
not yet a distribution)
●
●
●
●
●
●
●
docs
cicero_examples.py
CHANGES.txt
LICENSE.txt
README.rst
MANIFEST.in
setup.py
23. My “Official” Packaging Docs
● MANIFEST.in
○ The distributionmaking utilities
include some files by
default, but not all.
■ Like our docs! We
want to distribute
those too!
● The manifest file
describes what else
to include.
24. My Packaging Docs - setup.py
● You will use a
utility to:
○ “Package up” your
package's files
○ Register your
project with PyPi
○ Upload an archived
distribution file for
others to download.
25. My Packaging Docs - setup.py
● setup.py provides
that utility the info
it needs to
“package up” the
distribution and
submit it to PyPi.
○ name, version, url,
description,
classifiers, etc
26. More “Wat” to setup.py...
● Too many utilities!
○ Distutils,
Setuptools,
Distribute,
Distutils2
● Different
limitations!
● No guidance!
● More “wat”!
● When in doubt,
use Setuptools.