Release history
===============

py2app 0.6.4
------------

py2app 0.6.4 is a bugfix and minor feature release

- Issue #28: the argv emulator crashes in 64-bit mode on OSX 10.5

  Fixing this issue required yet another rewrite of the argv_emulator
  code.

- Added option '--arch=VALUE' which can be used to select the set of
  architectures for the main executable. This defaults to the set of
  architectures supported by the python interpreter and can be used to
  drop support for some architectures (for example when you're using a 
  python binary that supports both 32-bit and 64-bit code and use a
  GUI library that does not yet work in 64-bit mode).

  Valid values for the argument are archectures used in the list below
  and the following groups of architectures:

  * fat:        i386, ppc

  * fat3:       i386, x86_64, ppc

  * univeral:   i386, x86_64, ppc, ppc64

  * intel:      i386, x86_64



- Issue #32: fix crash when application uses PySide

  This is partially fixed in macholib (release 1.4.3)

- The '-O' flag of py2app now defaults to the python optimization level
  when using python 2.6 or later.

- Issue #31: honor optimze flag at runtime.

  Until now an application bundle created by py2app would also run without
  the "-O" flag, even when the user specified it should. This is now fixed.

- Issue #33: py2app's application bundle launcher now clears the environment
  variable ``PYOBJC_BUNDLE_ADDRESS``, avoids a crash when using PyObjC in an
  application launched from a py2app based plugin bundle.

- py2app's bundle launcher set the environment variable ``PYOBJC_BUNDLE_ADDRESS``,
  this variable is now deprecated. Use ``PYOBJC_BUNDLE_ADDRESS<PID>`` instead
  (replace ``<PID>`` by the process ID of the current process).

- When using the system python we now explicitly add Apple's additional packages
  (like PyObjC and Twisted) to ``sys.path``. 
  
  This fixes and issue reported by Sean Robinson: py2app used to create a non-working
  bundle when you used these packages because the packages didn't get included
  (as intented), but were not available on ``sys.path`` either.

- Fixed the recipe for sip, which in turn ensures that PyQt4 applications
  work.

  As before the SIP recipe is rather crude, it will include *all* SIP-based
  packages into your application bundle when it detects a module that uses
  SIP. 

- The 'Resources' folder is no longer on the python search path,
  it contains the scripts while Python modules and packages are located
  in the site-packages directory. This change is related to issue #30.

- The folder 'Resources/Python/site-packages' is no longer on the python
  search path. This folder is not used by py2app itself, but might by
  used by custom build scripts that wrap around py2app.

- Issue #30: py2app bundles failed to launch properly when the scriptfile
  has the same name as a python package used by the application.

- Issue #15: py2app now has an option to emulate the shell environment you
  get by opening a window in the Terminal.

  Usage: ``python setup.py py2app --emulate-shell-environment``

  This option is experimental, it is far from certain that the implementation
  works on all systems.

- Issue #16: ``--argv-emulation`` now works with Python 3.x and in 64-bit
  executables.

- Issue #17: py2applet script defaults 'argv_emulation' to False when your using
  a 64-bit build of python, because that option is not supported on
  such builds.

- py2app now clears the temporary directory in 'build' and the output directory
  in 'dist' before doing anything. This avoids unwanted interactions between
  results from a previous builds and the current build.

- Issue #22: py2app will give an error when the specified version is invalid,
  instead of causing a crash in the generated executable.

- Issue #23: py2app failed to work when an .egg directory was implictly added
  to ``sys.path`` by setuptools and the "-O" option was used (for example
  ``python setup.py py2app -O2``)
  
- Issue #26: py2app copied the wrong executable into the application bundle
  when using virtualenv with a framework build of Python.

py2app 0.6.3
------------

py2app 0.6.3 is a bugfix release

- py2app failed to compile .xib files
  (as reported on the pythonmac-sig mail-ing list).


py2app 0.6.2
------------

py2app 0.6.2 is a bugfix release

- py2app failed to copy the iconfile into application bundle
  (reported by Russel Owen)

- py2app failed to copy resources and data files as well
  (the ``resource`` key in the py2ap options dictionary and
  the ``data_files`` argument to the setup function).

  Issue #19, reported by bryon(at)spideroak.com.

- py2app failed to build application bundles when using virtualenv
  due to assumptions about the relation between ``sys.prefix`` and
  ``sys.executable``.

  Report and fix by Erik van Zijst.

- Ensure that the 'examples' directory is included in the source 
  archive

py2app 0.6.1
------------

py2app 0.6.1 is a bugfix release

Bugfixes:

- py2app failed to build the bundle when python package contained
  a zipfile with data.

  This version solves most of that problem using a rough
  workaround (the issue is fixed when the filename ends with '.zip').

- The code that recreates the stub executables when they are
  older than the source code now uses ``xcode-select`` to 
  find the root of SDKs.

  This makes it possible to recreate these executables on machines
  where both Xcode 3 and Xcode 4 are installed and Xcode 3 is
  the default Xcode.

- The stub executables were regenerated using Xcode 3

  As a word of warning: Xcode 4 cannot be used to rebuild the
  stub executables, in particular not those that have support
  for the PPC architecture.

- Don't rebuild the stub executables automaticly, that's 
  unsafe with Xcode 4 and could trigger accidently when
  files are installed in a different order than expected.

- Small tweaks to the testsuite to ensure that they work
  on systems with both Xcode3 and Xcode4 (Xcode3 must be
  the selected version).

- Better cleanup in the testsuite when ``setupClass`` fails.

py2app 0.6
----------

py2app 0.6 is a minor feature release


Features:

- it is now possible to specify which python distributions must
  be availble when building the bundle by using the 
  "install_requires" argument of the ``setup()`` function::

     setup(

         ...
	 install_requires = [
	 	"pyobjc == 2.2"
	 ],
     )

- py2app can now package namespace packages that were installed
  using `pip <http://pypi.python.org/pypi/pip>` or the
  setuptools install option ``--single-version-externally-managed``.

- the bundle template now supports python3, based on a patch
  by Virgil Dupras.

- alias builds no longer use Carbon Aliases and therefore are
  supported with python3 as well (patch by Virgil Dupras)

- argv emulation doesn't work in python 3, this release
  will tell you abou this instead of silently failing to 
  build a working bundle.

- add support for custom URLs to the argv emulation code
  (patch by Brendan Simon). 
  
  You will have to add a "CFBundleURLTypes" key to your Info.plist to 
  use this, the argv emulation code will ensure that the URL
  to open will end up in ``sys.argv``.

- ``py2app.util`` contains a number of functions that are now
  deprecated an will be removed in a future version, specifically:
  ``os_path_islink``, ``os_path_isdir``, ``path_to_zip``,
  ``get_zip_data``, ``get_mtime``,  and ``os_readlink``.

- The module ``py2app.simpleio`` no longer exists, and should never
  have been in the repository (it was part of a failed rewrite of
  the I/O layer).

Bug fixes:

- fix problem with symlinks in copied framework, as reported
  by Dan Ross.

- py2applet didn't work in python 3.x.

- The ``--alias`` option didn't work when building a plugin
  bundle (issue #10, fix by Virgil Dupras)

- Avoid copying the __pycache__ directory in python versions
  that implement PEP 3147 (Python 3.2 and later)

- App bundles with Python 3 now work when the application is 
  stored in a directory with non-ASCII characters in the full
  name.

- Do not compile ``.nib`` files, it is not strictly needed and
  breaks PyObjC projects that still use the NibClassBuilder code.

- Better error messsages when trying to include a non-existing
  file as a resource.

- Don't drop into PDB when an exception occurs.

- Issue #5: Avoid a possible stack overflow in the bundle executable

- Issue #9: Work with python 3.2

- Fix build issues with python 2.5 (due to usage of too modern distutils
  command subclasses)

- The source distribution didn't include all files that needed to be
  it ever since switching to mercurial, I've added a MANIFEST.in 
  file rather than relying on setuptool's autoguessing of files to include.

- Bundle template works again with semi-standalone builds (such as
  when using a system python), this rewrites the fix for issue #10
  mentioned earlier.

- Ensure py2app works correctly when the sources are located in a 
  directory with non-ascii characters in its name.


py2app 0.5.2
------------

py2app 0.5.2 is a bugfix release

Bug fixes:

- Ensure that the right stub executable gets found when using
  the system python 2.5

py2app 0.5.1
------------

py2app 0.5.1 is a bugfix release

Bug fixes:

- Ensure stub executables get included in the egg files

- Fix name of the bundletemplate stub executable for 32-bit builds



py2app 0.5
----------

py2app 0.5 is a minor feature release.

Features:

- Add support for the ``--with-framework-name`` option of Python's
  configure script, that is: py2app now also works when the Python
  framework is not named 'Python.framework'.

- Add support for various build flavours of Python (32bit, 3-way, ...)

- py2app now actually works for me (ronaldoussoren@mac.com) with a 
  python interpreter in a virtualenv environment.

- Experimental support for python 3

Bug fixes:

- Fix recipe for matplotlib: that recipe caused an exception with
  current versions of matplotlib and pytz.

- Use modern API's in the alias-build bootstrap code, without
  this 'py2app -A' will result in broken bundles on a 64-bit build
  of Python. 
  (Patch contributed by James R Eagan)

- Try both 'import Image' and 'from PIL import Image' in the PIL
  recipe.
  (Patch contributed by Christopher Barker)

- The stub executable now works for 64-bit application bundles

- (Lowlevel) The application stub was rewritten to use
  ``dlopen`` instead of ``dyld`` APIs. This removes deprecation
  warnings during compilation.

py2app 0.4.3
------------

py2app 0.4.3 is a bugfix release

Bug fixes:

- A bad format string in build_app.py made it impossible to copy the
  Python framework into an app bundle.

py2app 0.4.2
------------

py2app 0.4.2 is a minor feature release

Features:

- When the '--strip' option is specified we now also remove '.dSYM' 
  directories from the bundle.

- Remove dependency on a 'version.plist' file in the python framework

- A new recipe for `PyQt`_ 4.x. This recipe was donated by Kevin Walzer.

- A new recipe for `virtualenv`_, this allows you to use py2app from 
  a virtual environment.

.. _`virtualenv`: http://pypi.python.org/pypi/virtualenv

- Adds support for converting ``.xib`` files (NIB files for
  Interface Builder 3)

- Introduces an experimental plugin API for data converters. 

  A conversion plugin should be defined as an entry-point in the
  ``py2app.converter`` group::

       setup(
         ...
	 entry_points = {
		 'py2app.converter': [
		     "label          = some_module:converter_function",
		  ]
	  },
	  ...
      )

  The conversion function should be defined like this::

      from py2app.decorators import converts

      @converts('.png')
      def optimze_png(source, proposed_destionation, dryrun=0):
         # Copy 'source' to 'proposed_destination'
	 # The conversion is allowed to change the proposed
	 # destination to another name in the same directory.
         pass

.. `virtualenv`_: http://pypi.python.org/pypi/virtualenv

Buf fixes:

- This fixes an issue with copying a different version of Python over 
  to an app/plugin bundle than the one used to run py2app with.


py2app 0.4.0
------------

py2app 0.4.0 is a minor feature release (and was never formally released).

Features:

- Support for CoreData mapping models (introduced in Mac OS X 10.5)

- Support for python packages that are stored in zipfiles (such as ``zip_safe``
  python eggs). 

Bug fixes:

- Fix incorrect symlink target creation with an alias bundle that has included
  frameworks.

- Stuffit tends to extract archives recursively, which results in unzipped
  code archives inside py2app-created bundles. This version has a workaround
  for this "feature" for Stuffit.

- Be more carefull about passing non-constant strings as the template argumenti
  of string formatting functions (in the app and bundle templates), to avoid
  crashes under some conditions.

py2app 0.3.6
------------

py2app 0.3.6 is a minor bugfix release.

Bug fixes:

- Ensure that custom icons are copied into the output bundle

- Solve compatibility problem with some haxies and inputmanager plugins


py2app 0.3.5
------------

py2app 0.3.5 is a minor bugfix release.

Bug fixes:

- Resolve disable_linecache issue

- Fix Info.plist and Python path for plugins


py2app 0.3.4
------------

py2app 0.3.4 is a minor bugfix release.

Bug fixes:

- Fixed a typo in the py2applet script

- Removed some, but not all, compiler warnings from the bundle template
  (which is still probably broken anyway)


py2app 0.3.3
------------

py2app 0.3.3 is a minor bugfix release.

Bug Fixes:

- Fixed a typo in the argv emulation code

- Removed the unnecessary py2app.install hack (setuptools does that already)


py2app 0.3.2
------------

py2app 0.3.2 is a major bugfix release.

Functional changes:

- Massively updated documentation

- New prefer-ppc option

- New recipes: numpy, scipy, matplotlib

- Updated py2applet script to take options, provide --make-setup

Bug Fixes:

- No longer defaults to LSPrefersPPC

- Replaced stdlib usage of argvemulator to inline version for i386
  compatibility


py2app 0.3.1
------------

py2app 0.3.1 is a minor bugfix release.

Functional changes:

- New EggInstaller example

Bug Fixes:

- Now ensures that the executable is +x (when installed from egg this may not
  be the case)


py2app 0.3.0
------------

py2app 0.3.0 is a major feature enhancements release.

Functional changes:

- New --xref (-x) option similar to py2exe's that produces
  a list of modules and their interdependencies as a HTML
  file

- sys.executable now points to a regular Python interpreter
  alongside the regular executable, so spawning sub-interpreters
  should work much more reliably

- Application bootstrap now detects paths containing ":"
  and will provide a "friendly" error message instead of just
  crashing <http://python.org/sf/1507224>.

- Application bootstrap now sets PYTHONHOME instead of
  a large PYTHONPATH

- Application bootstrap rewritten in C that links to
  CoreFoundation and Cocoa dynamically as needed,
  so it doesn't imply any particular version of the runtime.

- Documentation and examples changed to use setuptools
  instead of distutils.core, which removes the need for
  the py2app import

- Refactored to use setuptools, distributed as an egg.

- macholib, bdist_mpkg, modulegraph, and altgraph are now
  separately maintained packages available on PyPI as eggs

- macholib now supports little endian architectures,
  64-bit Mach-O headers, and reading/writing of
  multiple headers per file (fat / universal binaries)


py2app 0.2.1
------------

py2app 0.2.1 is a minor bug fix release.

Bug Fixes:

- macholib.util.in_system_path understands SDKs now

- DYLD_LIBRARY_PATH searching is fixed

- Frameworks and excludes options should work again.


py2app 0.2.0
------------

py2app 0.2.0 is a minor bug fix release.

Functional changes:

- New datamodels option to support CoreData.  Compiles
  .xcdatamodel files and places them in the Resources dir
  (as .mom).

- New use-pythonpath option.  The py2app application bootstrap
  will no longer use entries from PYTHONPATH unless this option
  is used.

- py2app now persists information about the build environment
  (python version, executable, build style, etc.) in the
  Info.plist and will clean the executable before rebuilding
  if anything at all has changed.

- bdist_mpkg now builds packages with the full platform info,
  so that installing a package for one platform combination
  will not look like an upgrade to another platform combination.

Bug Fixes:

- Fixed a bug in standalone building, where a rebuild could
  cause an unlaunchable executable.

- Plugin bootstrap should compile/link correctly
  with gcc 4.

- Plugin bootstrap no longer sets PYTHONHOME and will
  restore PYTHONPATH after initialization.

- Plugin bootstrap swaps out thread state upon plug-in
  load if it is the first to initialize Python.  This
  fixes threading issues.

py2app 0.1.9
------------

py2app 0.1.9 is a minor bug fix release.

Bugs fixed:

- bdist_mpkg now builds zip files that are correctly unzipped
  by all known tools.

- The behavior of the bootstrap has changed slightly such that
  ``__file__`` should now point to your main script, rather than
  the bootstrap.  The main script has also moved to ``Resources``,
  from ``Resources/Python``, so that ``__file__`` relative resource
  paths should still work.

py2app 0.1.8
------------

py2app 0.1.8 is a major enhancements release:

Bugs fixed:

- Symlinks in included frameworks should be preserved correctly
  (fixes Tcl/Tk)

- Fixes some minor issues with alias bundles

- Removed implicit SpiderImagePlugin -> ImageTk reference in PIL
  recipe

- The ``--optimize`` option should work now

- ``weakref`` is now included by default

- ``anydbm``'s dynamic dependencies are now in the standard implies
  list

- Errors on app launch are brought to the front so the user does
  not miss them

- bdist_mpkg now compatible with pychecker (data_files had issues)

Options changed:

- deprecated ``--strip``, it is now on by default

- new ``--no-strip`` option to turn off stripping of executables

New features:

- Looks for a hacked version of the PyOpenGL __init__.py so that
  it doesn't have to include the whole package in order to get
  at the stupid version file.

- New ``loader_files`` key that a recipe can return in order to
  ensure that non-code ends up in the .zip (the pygame recipe
  uses this)

- Now scans all files in the bundle and normalizes Mach-O load
  commands, not just extensions.  This helps out when using the
  ``--package`` option, when including frameworks that have plugins,
  etc.

- An embedded Python interpreter is now included in the executable
  bundle (``sys.executable`` points to it), this currently only 
  works for framework builds of Python

- New ``macho_standalone`` tool

- New ``macho_find`` tool

- Major enhancements to the way plugins are built

- bdist_mpkg now has a ``--zipdist`` option to build zip files
  from the built package

- The bdist_mpkg "Installed to:" description is now based on the
  package install root, rather than the build root

py2app 0.1.7
------------

`py2app`_ 0.1.7 is a bug fix release:

- The ``bdist_mpkg`` script will now set up sys.path properly, for setup scripts
  that require local imports.

- ``bdist_mpkg`` will now correctly accept ``ReadMe``, ``License``, ``Welcome``,
  and ``background`` files by parameter.

- ``bdist_mpkg`` can now display a custom background again (0.1.6 broke this).

- ``bdist_mpkg`` now accepts a ``build-base=`` argument, to put build files in
  an alternate location.

- ``py2app`` will now accept main scripts with a ``.pyw`` extension.

- ``py2app``'s not_stdlib_filter will now ignore a ``site-python`` directory as
  well as ``site-packages``.

- ``py2app``'s plugin bundle template no longer displays GUI dialogs by default,
  but still links to ``AppKit``.

- ``py2app`` now ensures that the directory of the main script is now added to
  ``sys.path`` when scanning modules.

- The ``py2app`` build command has been refactored such that it would be easier
  to change its behavior by subclassing.

- ``py2app`` alias bundles can now cope with editors that do atomic saves
  (write new file, swap names with existing file).

- ``macholib`` now has minimal support for fat binaries.  It still assumes big
  endian and will not make any changes to a little endian header.

- Add a warning message when using the ``install`` command rather than installing
  from a package.

- New ``simple/structured`` example that shows how you could package an
  application that is organized into several folders.

- New ``PyObjC/pbplugin`` Xcode Plug-In example.

py2app 0.1.6
------------

Since I have been slacking and the last announcement was for 0.1.4, here are the 
changes for the soft-launched releases 0.1.5 and 0.1.6:

`py2app`_ 0.1.6 was a major feature enhancements release:

- ``py2applet`` and ``bdist_mpkg`` scripts have been moved to Python modules
  so that the functionality can be shared with the tools.

- Generic graph-related functionality from ``py2app`` was moved to
  ``altgraph.ObjectGraph`` and ``altgraph.GraphUtil``.

- ``bdist_mpkg`` now outputs more specific plist requirements
  (for future compatibility).

- ``py2app`` can now create plugin bundles (MH_BUNDLE) as well as executables.
  New recipe for supporting extensions built with `sip`_, such as `PyQt`_.  Note that
  due to the way that `sip`_ works, when one sip-based extension is used, *all*
  sip-based extensions are included in your application.  In practice, this means
  anything provided by `Riverbank`_, I don't think anyone else uses `sip`_ (publicly).

- New recipe for `PyOpenGL`_.  This is very naive and simply includes the whole
  thing, rather than trying to monkeypatch their brain-dead
  version acquisition routine in ``__init__``.

- Bootstrap now sets ``ARGVZERO`` and ``EXECUTABLEPATH`` environment variables,
  corresponding to the ``argv[0]`` and the ``_NSGetExecutablePath(...)`` that the
  bundle saw.  This is only really useful if you need to relaunch your own
  application.

- More correct ``dyld`` search behavior.

- Refactored ``macholib`` to use ``altgraph``, can now generate `GraphViz`_ graphs
  and more complex analysis of dependencies can be done.

- ``macholib`` was refactored to be easier to maintain, and the structure handling
  has been optimized a bit.

- The few tests that there are were refactored in `py.test`_ style.

- New `PyQt`_ example.

- New `PyOpenGL`_ example.


See also:

- http://mail.python.org/pipermail/pythonmac-sig/2004-December/012272.html

.. _`py.test`: http://codespeak.net/py/current/doc/test.html
.. _`PyOpenGL`: http://pyopengl.sourceforge.net/
.. _`Riverbank`: http://www.riverbankcomputing.co.uk/
.. _`sip`: http://www.riverbankcomputing.co.uk/sip/index.php
.. _`PyQt`: http://www.riverbankcomputing.co.uk/pyqt/index.php
.. _`docutils`: http://docutils.sf.net/
.. _`setuptools`: http://cvs.eby-sarna.com/PEAK/setuptools/

py2app 0.1.5
------------

`py2app`_ 0.1.5 is a major feature enhancements release:

- Added a ``bdist_mpkg`` distutils extension, for creating Installer 
  an metapackage from any distutils script.

  - Includes PackageInstaller tool

  - bdist_mpkg script

  - setup.py enhancements to support bdist_mpkg functionality

- Added a ``PackageInstaller`` tool, a droplet that performs the same function
    as the ``bdist_mpkg`` script.

- Create a custom ``bdist_mpkg`` subclass for `py2app`_'s setup script.

- Source package now includes `PJE`_'s `setuptools`_ extension to distutils.

- Added lots of metadata to the setup script.

- ``py2app.modulegraph`` is now a top-level package, ``modulegraph``.

- ``py2app.find_modules`` is now ``modulegraph.find_modules``.

- Should now correctly handle paths (and application names) with unicode characters
  in them.

- New ``--strip`` option for ``py2app`` build command, strips all Mach-O files 
  in output application bundle.

- New ``--bdist-base=`` option for ``py2app`` build command, allows an alternate
  build directory to be specified.

- New `docutils`_ recipe.
  Support for non-framework Python, such as the one provided by `DarwinPorts`_.

See also:

- http://mail.python.org/pipermail/pythonmac-sig/2004-October/011933.html

.. _`py.test`: http://codespeak.net/py/current/doc/test.html
.. _`GraphViz`: http://www.pixelglow.com/graphviz/
.. _`PyOpenGL`: http://pyopengl.sourceforge.net/
.. _`Riverbank`: http://www.riverbankcomputing.co.uk/
.. _`sip`: http://www.riverbankcomputing.co.uk/sip/index.php
.. _`PyQt`: http://www.riverbankcomputing.co.uk/pyqt/index.php
.. _`DarwinPorts`: http://darwinports.opendarwin.org/
.. _`setuptools`: http://cvs.eby-sarna.com/PEAK/setuptools/
.. _`PJE`: http://dirtSimple.org/
.. _`PyObjC`: http://pyobjc.sourceforge.net/

py2app 0.1.4
------------

`py2app`_ 0.1.4 is a minor bugfix release:

- The ``altgraph`` from 0.1.3 had a pretty nasty bug in it that prevented 
  filtering from working properly, so I fixed it and bumped to 0.1.4.

py2app 0.1.3
------------

`py2app`_ 0.1.3 is a refactoring and new features release:

- ``altgraph``, my fork of Istvan Albert's `graphlib`_, is now part of the
  distribution

- ``py2app.modulegraph`` has been refactored to use ``altgraph``

- `py2app`_ can now create `GraphViz`_ DOT graphs with the ``-g`` option
  (`TinyTinyEdit example`_)

- Moved the filter stack into ``py2app.modulegraph``

- Fixed a bug that may have been in 0.1.2 where explicitly included packages
  would not be scanned by ``macholib``

- ``py2app.apptemplate`` now contains a stripped down ``site`` module as 
  opposed to a ``sitecustomize``

- Alias builds are now the only ones that contain the system and user 
  ``site-packages`` directory in ``sys.path``

- The ``pydoc`` recipe has been beefed up to also exclude ``BaseHTTPServer``,
  etc.

Known issues:

- Commands marked with XXX in the help are not implemented

- Includes *all* files from packages, it should be smart enough to strip
  unused .py/.pyc/.pyo files (to save space, depending on which optimization
  flag is used)

- ``macholib`` should be refactored to use ``altgraph``

- ``py2app.build_app`` and ``py2app.modulegraph`` should be refactored to
  search for dependencies on a per-application basis

.. _`graphlib`: http://www.personal.psu.edu/staff/i/u/iua1/python/graphlib/html/
.. _`TinyTinyEdit example`: http://undefined.org/~bob/TinyTinyEdit.pdf

py2app 0.1.2
------------

`py2app`_ 0.2 is primarily a bugfix release:

- The encodings package now gets included in the zip file (saves space)

- A copy of the Python interpreter is not included anymore in standalone
  builds (saves space)

- The executable bootstrap is now stripped by default (saves a little space)

- ``sys.argv`` is set correctly now, it used to point to the executable, now
  it points to the boot script.  This should enhance compatibility with some
  applications.

- Adds an "Alias" feature to modulegraph, so that ``sys.modules`` craziness
  such as ``wxPython.wx -> wx`` can be accomodated (this particular craziness
  is also now handled by default)

- A ``sys.path`` alternative may be passed to ``find_modules`` now, though
  this is not used yet

- The ``Command`` instance is now passed to recipes instead of the
  ``Distribution`` instance (though no recipes currently use either)

- The post-filtering of modules and extensions is now generalized into a 
  stack and can be modified by recipes

- A `wxPython`_ example demonstrating how to package `wxGlade`_ has been 
  added (this is a good example of how to write your own recipe, and how to
  deal with complex applications that mix code and data files)

- ``PyRuntimeLocations`` is now set to (only) the location of the current
  interpreter's ``Python.framework`` for alias and semi-standalone build 
  modes (enhances compatibility with extensions built with an unpatched
  Makefile with Mac OS X 10.3's Python 2.3.0)

Known issues:

- Includes *all* files from packages, it should be smart enough to strip
  unused .py/.pyc/.pyo files (to save space, depending on which optimization
  flag is used).

.. _`wxGlade`: http://wxglade.sourceforge.net/

py2app 0.1.1
------------

`py2app`_ 0.1.1 is primarily a bugfix release:

- Several problems related to Mac OS X 10.2 compatibility and standalone 
   building have been resolved

- Scripts that are not in the same directory as setup.py now work

- A new recipe has been added that removes the pydoc -> Tkinter dependency

- A recipe has been added for `py2app`_ itself

- a `wxPython`_ example (superdoodle) has been added.  
  Demonstrates not only how easy it is (finally!) to bundle 
  `wxPython`_ applications, but also how one setup.py can 
  deal with both `py2exe`_ and `py2app`_.

- A new experimental tool, py2applet, has been added.  
  Once you've built it (``python setup.py py2app``, of course), you should
  be able to build simple applications simply by dragging your main script
  and optionally any packages, data files, Info.plist and icon it needs.

Known issues:

- Includes *all* files from packages, it should be smart enough to strip
  unused .py/.pyc/.pyo files (to save space, depending on which 
  optimization flag is used).

- The default ``PyRuntimeLocations`` can cause problems on machines that
  have a /Library/Frameworks/Python.framework installed.  Workaround is
  to set a plist that has the following key: 
  ``PyRuntimeLocations=['/System/Library/Frameworks/Python.framework/Versions/2.3/Python']``
  (this will be resolved soon)


py2app 0.1
----------

(first public release)
`py2app`_ is the bundlebuilder replacement we've all been waiting
for.  It is implemented as a distutils command, similar to `py2exe`_.

.. _`wxPython`: http://www.wxpython.org/
.. _`py2app`: http://undefined.org/python/#py2app
.. _`py2exe`: http://starship.python.net/crew/theller/py2exe/
