From 2f8b5c8265424ad99e6b6bd7768304b0ace790eb Mon Sep 17 00:00:00 2001 From: Seth House Date: Fri, 15 Jul 2011 10:44:23 -0600 Subject: [PATCH] Added presentation on setup.py --- upyug_2011-07-11_setup.py/cagedprompt.py | 55 ++++ .../foomatic/LICENSE.txt | 1 + upyug_2011-07-11_setup.py/foomatic/README.txt | 1 + .../foomatic/docs/conf.py | 0 .../foomatic/foomatic/__init__.py | 1 + .../foomatic/foomatic/foo.py | 2 + .../foomatic/scripts/runfoo | 10 + upyug_2011-07-11_setup.py/foomatic/setup.py | 13 + upyug_2011-07-11_setup.py/presentation.pdf | Bin 0 -> 168501 bytes upyug_2011-07-11_setup.py/presentation.rst | 288 ++++++++++++++++++ 10 files changed, 371 insertions(+) create mode 100644 upyug_2011-07-11_setup.py/cagedprompt.py create mode 100644 upyug_2011-07-11_setup.py/foomatic/LICENSE.txt create mode 100644 upyug_2011-07-11_setup.py/foomatic/README.txt create mode 100644 upyug_2011-07-11_setup.py/foomatic/docs/conf.py create mode 100644 upyug_2011-07-11_setup.py/foomatic/foomatic/__init__.py create mode 100644 upyug_2011-07-11_setup.py/foomatic/foomatic/foo.py create mode 100644 upyug_2011-07-11_setup.py/foomatic/scripts/runfoo create mode 100644 upyug_2011-07-11_setup.py/foomatic/setup.py create mode 100644 upyug_2011-07-11_setup.py/presentation.pdf create mode 100644 upyug_2011-07-11_setup.py/presentation.rst diff --git a/upyug_2011-07-11_setup.py/cagedprompt.py b/upyug_2011-07-11_setup.py/cagedprompt.py new file mode 100644 index 0000000..a335969 --- /dev/null +++ b/upyug_2011-07-11_setup.py/cagedprompt.py @@ -0,0 +1,55 @@ +"""A python prompt in a cage, for producing prompt sessions.""" +# http://nedbatchelder.com/blog/201107/caged_python.html + +import code +import cStringIO as StringIO +import sys +import textwrap + +class CagedPrompt(code.InteractiveConsole): + def __init__(self): + env = {'__name__': '__main__'} + code.InteractiveConsole.__init__(self, env) + self.out = StringIO.StringIO() + + def run(self, input): + self.inlines = textwrap.dedent(input).splitlines() + old_stdout = sys.stdout + sys.stdout = self.out + self.interact("Python " + sys.version.split("[")[0]) + sys.stdout = old_stdout + self.output = self.out.getvalue() + + def raw_input(self, prompt): + try: + line = self.inlines.pop(0) + except IndexError: + raise EOFError + if line or prompt == sys.ps2: + self.write("%s%s\n" % (prompt, line)) + else: + self.write("\n") + return line + + def write(self, data): + self.out.write(data) + +def prompt_session(input): + cp = CagedPrompt() + cp.run(input) + return cp.output + +if __name__ == '__main__': + TEST_INPUT = """\ + 2+2 + import random + random.random() + class Foo: + pass + + + f = Foo() + f + """ + + print prompt_session(TEST_INPUT) diff --git a/upyug_2011-07-11_setup.py/foomatic/LICENSE.txt b/upyug_2011-07-11_setup.py/foomatic/LICENSE.txt new file mode 100644 index 0000000..dce6fe5 --- /dev/null +++ b/upyug_2011-07-11_setup.py/foomatic/LICENSE.txt @@ -0,0 +1 @@ +This is a license diff --git a/upyug_2011-07-11_setup.py/foomatic/README.txt b/upyug_2011-07-11_setup.py/foomatic/README.txt new file mode 100644 index 0000000..24308cb --- /dev/null +++ b/upyug_2011-07-11_setup.py/foomatic/README.txt @@ -0,0 +1 @@ +This is a readme diff --git a/upyug_2011-07-11_setup.py/foomatic/docs/conf.py b/upyug_2011-07-11_setup.py/foomatic/docs/conf.py new file mode 100644 index 0000000..e69de29 diff --git a/upyug_2011-07-11_setup.py/foomatic/foomatic/__init__.py b/upyug_2011-07-11_setup.py/foomatic/foomatic/__init__.py new file mode 100644 index 0000000..562c3fb --- /dev/null +++ b/upyug_2011-07-11_setup.py/foomatic/foomatic/__init__.py @@ -0,0 +1 @@ +from foomatic.foo import main diff --git a/upyug_2011-07-11_setup.py/foomatic/foomatic/foo.py b/upyug_2011-07-11_setup.py/foomatic/foomatic/foo.py new file mode 100644 index 0000000..5fbcf97 --- /dev/null +++ b/upyug_2011-07-11_setup.py/foomatic/foomatic/foo.py @@ -0,0 +1,2 @@ +def main(): + print "Hello" diff --git a/upyug_2011-07-11_setup.py/foomatic/scripts/runfoo b/upyug_2011-07-11_setup.py/foomatic/scripts/runfoo new file mode 100644 index 0000000..c0da9ae --- /dev/null +++ b/upyug_2011-07-11_setup.py/foomatic/scripts/runfoo @@ -0,0 +1,10 @@ +#!/usr/bin/env python +if __name__ == '__main__': + import foomatic + raise SystemExit(foomatic.main()) + +import sys + +def main(): + print >> sys.stdout, "My name is %s" % __name__ + diff --git a/upyug_2011-07-11_setup.py/foomatic/setup.py b/upyug_2011-07-11_setup.py/foomatic/setup.py new file mode 100644 index 0000000..2a1de7b --- /dev/null +++ b/upyug_2011-07-11_setup.py/foomatic/setup.py @@ -0,0 +1,13 @@ +from distutils.core import setup +setup(name='foomatic', + version='1.0', + packages=['foomatic'], + description='Automating foo', + long_description="""\ + A multi-line string in reStructuredText + format. PyPI converts this to HTML.""", + classifiers=[ + 'Development Status :: 4 - Beta', + 'Programming Language :: Python'], + scripts=[ + 'scripts/runfoo']) diff --git a/upyug_2011-07-11_setup.py/presentation.pdf b/upyug_2011-07-11_setup.py/presentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bc351b70c990036101207fd54567682ef4580190 GIT binary patch literal 168501 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
5_ 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 +:Date: 2011-07-11 + +.. .. container:: r2b-simplecolumns + +.. role:: raw-latex(raw) + :format: latex + +Distutils +========= + +.. container:: r2b-note + + A Few Corrections To “On Packaging” + + Distribution + This is something-with-a-setup.py. Usually a distribution will have the + same name as a package. + package/module + This is something you import. + Setuptools The Distribution + This is what you install when you install Setuptools. + setuptools The Package + This is what you get when you do import setuptools. Setuptools largely + works by monkeypatching distutils + pkg_resources The Module + This is also included in Setuptools The Distribution. […] That provides + the ability to query what distributions are installed, metadata about + those distributions, information about the location where they are + installed + + — http://blog.ianbicking.org/2008/12/14/a-few-corrections-to-on-packaging/ + +Python distribution utilities (“Distutils”) + +setup.py +-------- + +.. container:: r2b-note + + Python Distribution Utilities (“Distutils”) + + As a developer, your responsibilities (apart from writing solid, + well-documented and well-tested code, of course!) are: + + * write a setup script (setup.py by convention) + * (optional) write a setup configuration file + * create a source distribution + * (optional) create one or more built (binary) distributions + + — http://docs.python.org/distutils/introduction.html + +“If all you want to do is distribute a module called foo, contained in a file +foo.py, then your setup script can be as simple as this:” + +.. code-block:: python + + from distutils.core import setup + setup(name='foo', + version='1.0', + py_modules=['foo']) + +Or: + +.. code-block:: python + + from distutils.core import setup + setup(name='foomatic', + version='1.0', + packages=['foomatic']) + +Create a source distribution +---------------------------- + +.. code-block:: bash + + % python setup.py sdist + % tar tf ./dist/foo-1.0.tar.gz + foo-1.0/ + foo-1.0/foo.py + foo-1.0/PKG-INFO + foo-1.0/setup.py + +Install the module +------------------ + +.. code-block:: bash + + % python setup.py install + +Required metadata +----------------- + +.. container:: r2b-note + + Metadata for Python software packages is defined in :pep:`314`. + Module version number recommendations are defined in :pep:`396`. + + The setup() function can take dozens of parameters. For the sanity of + everyone involved, you must use named arguments for every parameter. + This is not merely a convention; it’s a hard requirement. Your setup + script will crash if you try to call the setup() function with + non-named arguments. + + — http://diveintopython3.org/packaging.html + +.. code-block:: python + + setup(name='foomatic', + version='1.0', + author='Memyself Andi', + author_email='mandi@example.net', + url='http://example.net', + packages=['foomatic']) + +Recommended metadata +-------------------- + +.. code-block:: python + + setup(... + description='Automating foo', + long_description="""\ + A multi-line string in reStructuredText + format. PyPI converts this to HTML.""", + classifiers=[ + 'Development Status :: 4 - Beta', + 'Programming Language :: Python']) + +Requiring other packages +------------------------ + +.. container:: r2b-note + + “Any version after 1.0 and before 2.0 is compatible, except 1.5.1” + + — http://docs.python.org/distutils/setupscript.html + +Version specifiers:: + + < > == + <= >= != + +.. code-block:: python + + setup(... + requires=[ + 'bar==1.3', + 'meh>1.0, !=1.5.1, <2.0', + ]) + +Satisfying requirements +----------------------- + +.. code-block:: python + + setup(... + provides=[ + 'baz', + ]) + +Installing scripts +------------------ + +.. code-block:: python + + setup(... + scripts=[ + 'scripts/runfoo']) + +Grabbing the version +-------------------- + +.. code-block:: python + + import pkg_resources + version = pkg_resources.require( + "foomatic")[0].version + +Directory structure +------------------- + +.. container:: r2b-note + + Suggestions: + + To accomodate Windows users, your “read me” file should include a .txt + extension, and it should use Windows-style carriage returns. + + If your Python software is a single .py file, you should put it in the + root directory along with your “read me” file and your setup script. + + — http://diveintopython3.org/packaging.html + +:: + + foomatic/ + |- README.txt + |- LICENSE.txt + |- setup.py + |- docs/ + |- stuff + |- foomatic/ + |- __init__.py + |- foo.py + |- scripts/ + |- runfoo + +setuptools +========== + +setuptools + +setuptools +---------- + +.. container:: r2b-note + + setuptools is a collection of enhancements to the Python distutils (for + Python 2.3.5 and up on most platforms; 64-bit platforms require a minimum + of Python 2.4) that allow you to more easily build and distribute Python + packages, especially ones that have dependencies on other packages. + + Easy Install is a python module (easy_install) bundled with setuptools that + lets you automatically download, build, install, and manage Python + packages. + +.. code-block:: bash + + easy_install SomePackage + easy_install "SomePackage==2.0" + easy_install "SomePackage>2.0" + easy_install --upgrade SomePackage + easy_install http://example.com/ExamplePackage-2.0-py2.4.egg + +Distribute +---------- + +.. container:: r2b-note + + Distribute is a fork of the Setuptools project. + + Distribute is intended to replace Setuptools as the standard method for + working with Python module distributions. + + Distribute is a drop-in replacement for Setuptools. + +.. code-block:: bash + + % curl -O \ + http://python-distribute.org/distribute_setup.py + % python ./distribute_setup.py + ... + % easy_install --version + distribute 0.6.10 + +PyPI +==== + +The Python Package Index + +Register +-------- + +.. code-block:: bash + + python ./setup.py register + +Python 3 +======== + +Python 3 + +disutils2 is dead; long live packaging +-------------------------------------- + +.. container:: r2b-note + + PyCon 2011: Packaging, from Distutils to Distutils2: + + http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-packaging-from-distutils-to-distutils2-4898961 + +http://docs.python.org/dev/packaging/index.html