py2app


Namepy2app JSON
Version 0.28.8 PyPI version JSON
download
home_pagehttp://github.com/ronaldoussoren/py2app
SummaryCreate standalone Mac OS X applications with Python
upload_time2024-05-25 16:39:52
maintainerRonald Oussoren
docs_urlhttps://pythonhosted.org/py2app/
authorRonald Oussoren
requires_pythonNone
licenseMIT or PSF License
keywords .app standalone
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
py2app is a Python setuptools command which will allow
you to make standalone Mac OS X application bundles
and plugins from Python scripts.

py2app is similar in purpose and design to py2exe for
Windows.

NOTE: py2app must be used on macOS to build applications,
it cannot create Mac applications on other platforms.

Project links
-------------

* `Documentation <https://py2app.readthedocs.io/en/latest/>`_

* `Issue Tracker <https://github.com/ronaldoussoren/py2app/issues>`_

* `Repository <https://github.com/ronaldoussoren/py2app/>`_

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

py2app 0.28.8
-------------

* #525: Fix breakage with setuptools 70.

* Add support for python 3.13

py2app 0.28.7
-------------

* Introduce support for Python 3.12

py2app 0.28.6
-------------

* Fix support for Python 2.7

  These are best-effort changes, I no longer have a setup where I
  can perform a good test run for Python 2.7.


py2app 0.28.5
-------------

* #476: Update black recipe

  The black recipe no longer worked with recent versions of black
  due to relying on a metadata file from the "egg" spec that's not
  included by black's current build tool.

  The recipe now scans the python code that's next to the mypyc
  compiled extension modules for dependencies and uses that to update
  the dependency graph. This should ensure that new dependencies of
  black will be automaticly detected in the future.

* Update wheel dependencies

py2app 0.28.4
-------------

* Fix incompatibility with Python 3.11

py2app 0.28.3
-------------

* #453: Fix crash in py2applet when specifying a directory to
  include in the application bundle.

py2app 0.28.2
-------------

* Fix incompatibility with recent setuptools

py2app 0.28.1
-------------

* #448: Fix typo in qt6 recipe

* #444: Fix issue where the standard output and standard error streams
  are set to non-blocking when using py2app.

  For some reason the "ibtool" command (part of Xcode) sets these streams
  to non-blocking when compiling NIB files. I've added a context manager that
  resets the non-blocking status of these streams.

* PR #446: Fix Qt5 recipe for newer versions of PyQt5

  PR by kangi.

* #447: Fix error when using ``py2applet --help``

  Bug was introduced in the fix for #414


py2app 0.28
-----------

.. note::

   This is the last version of py2app with compatibility with
   Python 2.7. Future versions will require Python 3.6 or later.

* PR #410: Fix typo in NamedTemporyFile call

  PR by MAKOMO

* #414 Workaround for autodiscovery in setuptools 61.0

  Setuptools 61.0 introduces autodiscovery of distribution
  attributes, and that broke py2app. This version introduces
  a ``setuptools.finalize_distribution_options`` entrypoint
  in py2app that will set the distributions's *name* and
  *py_modules* attributes in a way that is compatible with
  the main code of py2app when they are not yet set (before
  autodiscovery kicks in).

  In older versions of py2app buildin an app can fail in two
  ways with setuptools 61.0 or later:

  - The name of the generated application is not based on
    the script name, but some other value.

  - Calling ``python setup.py py2app`` results in an error
    mentioning ``Multiple top-level modules discovered``.


* PR #418: Add recipe for black

  PR by mrclary

* #417: Also include package dist-info for editable installs

* The qt5 and qt6 recipes used dodge logic to detect
  if the Qt library itself is inside the python package,
  resulting in duplicate copies of Qt.

* #406: Fix incompatibility with python 2.7

  py2app 0.24 accidently broke compatibility with Python 2.7, and
  this release fixes this.

  This is the last release with Python 2.7 support, the next
  release will contain package metadata that ensures it can
  only be installed on Python 3.

* #413: Find dist-info in included pythonXX.zip

  By default the ``working_set`` of pkg_resources does not contain
  distribution information from packages included in zip files, such
  as the zipped-up stdlib + site-pakckages in py2app bundles.

  Add some monkey patching to apps using ``pkg_resources`` to fix this.

* Fix hard crash in "rtree" recipe when the package contents doesn't
  match the recipe expectations.

* #408: Add definition of ``site.PREFIXES``

* #412: Fix incompatibility with setuptools 60.8.1

  The setuptools recipe did not recoginize all vendored dependencies
  in ``pkg_resources`` and that breaks app bundles that use ``pkg_resoures``.

* PR #388: Add builtin definitions for 'quit' and 'exit' in site.py

  PR by mcclary

* PR #388: Set "ENABLE_USER_SITE=False" in site.py

  PR by mcclary

* PR #396: Update pygame recipe to remove missing icon

  PR by glyph

py2app 0.27
-----------

* #377: The qt5 and qt6 recipes caused a py2app crash when
  the PyQt5 or PyQt6 is not installed.

* #401: Fix incompatibility with setuptools 60.7 and later

* #391: Drop usage of tempfile.mktemp

* #387: Add ``site.ENABLE_USER_SITE`` in the site.py file
  for applications (value is always ``False``).


py2app 0.26.1
-------------

* #374: Actually ship the "old" stub executables introduced in version 0.26


py2app 0.26
-----------

* Stub executables were recompiled on macOS 11

  This means support for light mode/dark mode should now work out of the
  box.

  The old stub executables are still used when detecting that Tkinter
  is used with an old build of Tk.

* #1: Include ".egg-info" and ".dist-info" information in the bundled application

  This fixes any python package that uses ``pkg_resources`` to look for
  specific distributions.

* ``py2app.filters.not_stdlib_filter`` now knows about Python's "venv"

* #368: Add recipe "detect_dunder_file"

  This recipe will ensure that a Python package is stored outside
  of site-packages.zip when a module in that package uses the
  ``__file__`` variable.

  This variable is most commonly used to load resources stored in
  the package (instead of the newer ``importlib.resources`` and ``pkg_resources``
  libraries).

* #339: Add recipe for pydantic

  The recipe is needed because pydantic uses Cython to compile
  all sources (including the package ``__init__``) and therefore
  hides imports from the dependency analyzer.

* #338: Add "imageio_ffmpeg" to autopackages

* PR367: Add recipes for pandas, pylsp, and zmq

* PR367: Add docutils and pylint to autopackages

  PR by Ryan Clary (mrclary on GitHub)

* #344: Invocation of codesign on the whole bundle sometimes fails

  Py2app will now try this a number of times before giving up. This
  is at best a workaround for and doesn't completely fix the problem.

* #370: py2app now works with Python 3.10

  Python 3.10 no longer exports a (private) symbol used by the py2app
  stub executable. Switched to a public API to accomplish the same task where
  available.

* #110: Add recipe for SQLAlchemy

  The recipe includes all dialects and connectors, including implicit
  dependencies, because SQLAlchemy uses ``__import__`` to load dependencies.

* #328: Add recipe for gcloud

* #195: Add ``USER_BASE``, ``getuserbase()`` and ``getusersitepackages()``  to
  py2app's version of ``site.py``.

* #184: Add recipe for 'ssl'

  This recipe is only used for Python 3.4 or later and ensures that the
  CA bundle used by Python's ssl module is included in the app bundle and OpenSSL
  is configured to look for that bundle in the application bundle.

* #371: change default error message on launch problems

  The default error message shown when the application cannot be launched is now
  slightly more useful and refers the
  `py2app debug page <https://py2app.readthedocs.io/en/latest/debugging.html>`_.

* #345, #169: Adjust qt5 and qt6 recipes for non-PyPI installations

  The qt5 and qt6 recipes now should work when the Qt installation prefix
  is outside of the PyQt package, for example when PyQt was installed through
  homebrew.

  I've tested this for PyQt5 and made the same change to the PyQt6 recipe, although
  I haven't tested that change.

py2app 0.25
-----------

* #358: Add recipe for multiprocessing

* PR363: Add recipe for platformdirs

  PR by Ryan Clary (mrclary on GitHub)

* PR353: Add recipe for sphinx

  PR by Ryan Clary (mrclary on GitHub)

* PR352: Fix for using ipython

  PR by Ryan Clary (mrclary on GitHub)

* PR351: Tweak the matplotlib recipe

  PR by Ryan Clary (mrclary on GitHub)

* PR348: Fix for checking for dead symlinks links in py2app

  PR by Oliver Cordes (ocordes on GitHub)

* #354: Fix buggy "autopackages" and "automissing" recipes

* #350: Add sentencepiece to the autopackages list

* #359: Add recipe for PyQt6

* #349: Add recipe for OpenCV (opencv-python, ``import cv2``)

* PR365: Add RTree recipe

  PR by Ryan Clary (mrclary on GitHub)

py2app 0.24
-----------

* Consolidate recipes that just include a package
  as is into a single recipe to reduce code complexity.

* Consolidate recipes that just mark imports as expected
  missing into a single recipe to reduce code complexity.

* #334: Include binary stubs for Universal 2 and arm64 binaries in the archives

  The files were in the repository, but were excluded from the source
  and wheel archives.

py2app 0.23
-----------

* #315: Stub executables have an LC_RPATH that points to the Frameworks folder

  PR by Aleksandar Topuzović (atopuzov)

* #322: Port wxPython examples to 4.0

  PR by Hamish Mcintyre-Bhatty (hamishmb)

* #314: Don't use Image.DEBUG in the PIL recipy, that attribute is not longer valid

  PR by Aleksandar Topuzović

* #320: Process "@loader_path" in load commands

  A popular pattern in C extensions with bindins to C library on PyPI is to
  copy those C libraries into the wheel and reference those using
  an "@loader_path" linker command in the C extension. Until this release
  py2app could not process those linker commands correctly.

* #298: Add recipe for pycryptodome

* #282: Add recipe for h5py

* #283: Add recipe for tensorflow

  The recipe just includes the entire package into the generated app bundle,
  I haven't checked yet if there is a way to reduce the size of this
  package (which is rather huge).


py2app 0.22
-----------

* #319: Add ad-hoc signature for application bundles

  ARM64 binaries on macOS 11 must be signed, even if it is only an ad-hoc signature.
  py2app will now add an ad-hoc code signature.

* #300: Add support for ARM64 and Universal 2 binaries

  .. note:: Support is highly experimental, these stubs have not been tested yet.

* #299: Fix build error when building with the copy of Python 3 shipped
  with Xcode.

* #281: Generated bundle doesn't work on macOS 10.9 and 10.10.

py2app 0.21
-----------

* PR 277 (Christian Clauss): Fix some Python 3 issues

* #276: Rebuilt the binary stubs on a 10.12 machine to fix launching

py2app 0.20
-----------

* Migrate to GitHub

* #274: Fix an issue in the PyQt5 recipe

* Fix issue with emulate-shell-environment option on macOS 10.15 (Catalina)

* #269: Py2app didn't work with Python 3.8

py2app 0.19
-----------

* #251: Add recipe for "botocore"

* #253: "python setup.py py2app -A" creates invalid bundle from "venv" virtual environments

* Updated recipe for PySide2 and new recipe for Shiboken2

  Patch by Alberto Sottile.

py2app 0.18
-----------

* #250: Add recipe for "six.moves", which also works when the six
  library is vendored by other packages

py2app 0.17
-----------

* #247: The new tkinter recipe didn't work properly for installations
  that do use a framework install of Tcl/Tk.

py2app 0.16
-----------

* #244: Copy the Tcl/Tk support libraries into the application bundle for
  Python builds using a classic unix install of Tcl/Tk instead of a framework
  build.

  This results in working app bundles when a Python.org installation that
  includes Tcl/Tk (such as Python 3.7).

* Don't copy numpy into application just because the application uses
  Pillow.

* Add recipe for Pyside

  Patch by Alberto Sottile

py2app 0.15
-----------

* Fixed issues for Python 3.7, in particular changes in the plistlib library
  (Issue #242, #239)

* Updated dependencies on macholib, altgraph and modulegraph

**Due to a bug in CPython 3.7.0 using -O does not work with that version of CPython**

py2app 0.14.1
-------------

* Updated dependencies

* Updated PyPI metadata

py2app 0.14
-----------

Features:

* Started using flake8 to improve coding style

Bug fixes:

* Issue #222: The fix for issue #179 broke the argv emulator

* Issue #226: Py2app could fail while reporting on possibly missing modules

* Issue #228: The python executable included in the app bundle as ``sys.exectuable`` was not executable


py2app 0.13
-----------

Bug fixes:

* Issue 185 in PyObjC's tracker: sysconfig using ``__import__`` in Python 3.6 or
  later, which confuses modulegraph.

* Pull request #17: Location of site-packages in the "--user" location has changed

  Patch by Matt Mukerjee

Features:

* (None yet)

py2app 0.12
-----------

* Pull request #15 by Armin Samii: Safer symlink and file copying

* Update recipes: a number of recipe names conflicted with toplevel
  modules imported by recipes. This causes problems on Python 2.7 (without
  absolute imports)

py2app 0.11
-----------

- Make sure the stdout/stderr streams of the main binary of the application
  are unbuffered.

  See `issue #177 in PyObjC's repository <https://github.com/ronaldoussoren/pyobjc/issues/177/on-python3-print-does-not-automatically>`_ for more information.

- Fix issue #201: py2app is not compatible with pyvenv virtualenvs

  With additional fix by Oskari Timperi.

- Fix issue #179: the stdout/stderr streams are no longer forwarded to console.app using ASL (by default),
  use "--redirect-stdout-to-asl" to enable the redirection functionality.

  Note that for unclear reasons the redirection doesn't work on OSX 10.12 at the moment.

- Fix issue #188: Troubles with lxml.isoschematron

  The package 'lxml.isoschematron' is not zip-safe and tries to load resources using the normal
  filesystem APIs, which doesn't work when the package is part of a zipfile.

- py2applet now longer uses "argv_emulation" by default, that results in too many problems.

- Issue #174: clean up the summary about missing modules by removing warnings about things that aren't modules.

  Also notes when an module is likely an alias for some other module. These changes should remove a lot
  of false postive warnings from the output of py2app.

- Fix issue #161: opengl recipe uses "file" function that isn't present on Python 3

- Add "qt5" recipe that does the right thing for the PyQt5 wheel on PyPI (tested with PyQt5 5.6)

- Add support for "@loader_path" in the link commands of C extension.

  This makes it possible to use wheels that were processed by `delocate-listdeps <https://github.com/matthew-brett/delocate>`_
  when building application bundles.

- Do not report imports that are expected to be missing

  Patch by Barry Scott.

py2app 0.10
-----------

- The recipe for virtualenv calls a modulegraph method that was made
  private in a recent release and hence no longer worked with py2app 0.9.

  Update the recipe to work around this.


py2app 0.9
----------

- issue #146, #147: The "python" binary in MyApp.app/Contents/MacOS was
  the small stub exetable from framework builds, instead of the actual
  command-line interpreter. The result is that you couldn't use
  ``sys.executable`` to start a new interpreter, which (amongst others)
  breaks multiprocessing.

- pull request #7: Add support for PyQt5 to the sip recipe. Patch by
  Mark Montague.

- pull request #4: Copying PySide plugins was broken due to bad
  indentation.

- pull request #5: py2app was broken for python versions that
  don't use _sysconfigdata.

- issue #135: Don't sleep for a second after compiling a XIB file

- issue #134: Remove target location before copying files into
  the bundle.

- issue #133: Ensure that the application's "Framework" folder
  is on the search path for ``ctypes.util.find_library``.

- issue #132: Depend on modulegraph 0.12 to avoid build errors
  when the python code contains references to compatibility modules
  that contain SyntaxErrors for the current python version.

- Explicitly report modules that cannot be found at the end of
  the run (for non-alias builds)

  Note: This is just a warning, missing modules are not necessarily
  a problem because modulegraph can detect imports for modules that
  aren't used on OSX (for example)

- Report modules that contain syntax errors at the end of
  the run (for non-alias builds)

  Note: This is just a warning, syntax errors be valid when the
  dependency tree contains modules for the other major release
  of python (e.g a compat_py2 module that contains compatibility
  code for Python 2 and contains code that isn't valid Python 3)

py2app 0.8.1
------------

- Loading scripts didn't work when --no-chdir was used

  Reported by Barry Scott in private mail.

py2app 0.8
-----------

py2app 0.8 is a feature release


- Fixed argv emulator on OSX 10.9, the way the code detected that the application
  was launched through the Finder didn't work on that OSX release.

- The launcher binary is now linked with Cocoa, that should avoid some problems
  with sandboxed applications (in particular: standard open panels don't seem
  to work properly in a sandboxed application when the main binary is not
  linked to AppKit)

- Don't copy Python's Makefile, Setup file and the like into a bundle when
  sysconfig and distutils.sysconfig don't need these files (basicly, when
  using any recent python version).

- Fix some issues with virtualenv support:

  * detection of system installs of Python didn't work properly when using
    a virtualenv. Because of this py2app did not create a "semi-standalone"
    bundle when using a virtualenv created with /usr/bin/python.

  * "semi-standalone" bundles created from a virtualenv included more files
    when they should (in particular bits of the stdlib)

- Issue #92: Add option '--force-system-tk' which ensures that the _tkinter
  extension (used by Tkinter) is linked against the Apple build of Tcl/Tk,
  even when it is linked to another framework in Python's std. library.

  This will cause a build error when tkinter is linked with a major version of
  Tcl/Tk that is not present in /System/Library/Frameworks.

- Issue #80: Add support for copying system plugins into the application
  bundle.

  Py2app now supports a new option *include_plugins*. The value of this
  is a list of paths to plugins that should be copied into the application
  bundle.

  Items in the list are either paths, or a tuple with the plugin type
  and the path::

      include_plugins=[
        "MyPlugins/MyDocument.qlgenerator",
        ("SystemConfiguration", "MyPlugins/MyConfig.plugin"),
      ]

  Py2app currently knows about the following plugin suffixes:
  ``.qlgenerator``, ``.mdimporter``, ``.xpc``, ``.service``,
  ``.prefPane``, ``.iaplugin`` and ``.action``. These plugins
  can be added without specifying the plugin type.

- Issue #83: Setup.py now refuses to install when the current
  platform is not Mac OS X.

  This makes it clear that the package is only supported on OSX and
  avoids confusing errors later on.

- Issue #39: It is now possible to have subpackages on
  in the "packages" option of py2app.

- Issue #37: Add recipe for pyEnchant

  ..note::

    The recipe only works for installations of pyEnchant
    where pyEnchant is stored in the installation (such
    as the binary eggs on PyPI), not for installations
    that either use the "PYENCHANT_LIBRARY_PATH" environment
    variable or MacPorts.

- Issue #90: Removed the 'email' recipe, but require a new enough version
  of modulegraph instead. Because of this py2app now requires modulegraph
  0.11 or later.

py2app 0.7.4
------------

- Issue #77: the stdout/stderr streams of application and plugin bundles did not
  end up in Console.app on OSX 10.8 (as they do on earlier releases of OSX). This
  is due to a change in OSX.

  With this version the application executable converts writes to the stdout
  and stderr streams to the ASL logging subsystem with the options needed to
  end up in the default view of Console.app.

  NOTE: The stdout and stderr streams of plugin bundles are not redirected, as it
  is rather bad form to change the global environment of the host application.

- The i386, x86_64 and intel stub binaries are now compiled with clang on OSX 10.8,
  instead of an older version of GCC. The other stub versions still are compiled
  on OSX 10.6.

- Issue #111: The site.py generated by py2app now contains a USER_SITE variable
  (with a default value of ``None``) because some software tries to import the
  value.

- Py2app didn't preserve timestamps for files copied into application bundles,
  and this can cause a bytecompiled file to appear older than the corresponding
  source file (for packages copied in the bundle using the 'packages' option).

  Related to issue #101

- Py2app also didn't copy file permissions for files copied into application
  bundles, which isn't a problem in general but did cause binaries to lose
  there executable permissions (as noted on Stackoverflow)

- Issue #101: Set "PYTHONDONTWRITEBYTECODE" in the environment before
  calling Py_Initialize to ensure that the interpreter won't try to
  write bytecode files (which can cause problems when using sandboxed
  applications).

- Issue #105: py2app can now create app and plugin bundles when the main script
  has an encoding other than ASCII, in particular for Python 3.

- Issue #106: Ensure that the PIL recipe works on Python 3. PIL itself isn't
  ported yet, but Pillow does work with Python 3.

- "python setup.py install" now fails unless the machine is running Mac OS X.

  I've seen a number of reports of users that try to use py2app on Windows
  or Linux to build OSX applications. That doesn't work, py2app now fails
  during installation do make this clear.

- Disabled the 'email' recipe for python 3.x as it isn't needed there.

- Issue #91: Added a recipe for `lxml <http://lxml.de/>`, needed because
  lxml performs a number of imports from an extension and those cannot
  be detected automaticly by modulegraph.

- Issue #94: The site-packages zipfile in the application bundle now contains
  zipfile entries for directories as well. This is needed to work around
  a bug in the zipimporter for Python 3.3: it won't consider 'pkg/foo.py' to be
  in namespace package 'pkg' unless there is a zipfile entry for the 'pkg'
  folder (or there is a 'pkg/__init__.py' entry).

- Issue #97: Fixes a problem with the pyside and sip recipes when the 'qt_plugins'
  option is used for 'image_plugins'.

- Issue #96: py2app should work with python 2.6 again (previous releases didn't
  work due to using the sysconfig module introduced in python 2.7)

- Issue #99: appstore requires a number of symlinks in embedded frameworks.

  (Version 0.7 already added a link Python.frameworks/Versions/Current, this
  versions also adds Python.framework/Python and Python.framework/Resources with
  the value required by the appstore upload tool).

- Py2app copied stdlib packages into the app bundle for semi-standalone builds
  when they are mentioned in the '--packages' option (either explicitly or
  by a recipe). This was unintentional, semi-standlone builds should rely on
  the external Python framework for the stdlib.

  .. note::

     Because of this bug parts of the stdlib of ``/usr/bin/python`` could be
     copied into app bundles created with py2app.

py2app 0.7.3
------------

py2app 0.7.3 is a bugfix release

- Issue #82: Remove debug print statement from py2app.util.LOADER that
  caused problems with Python 3.

- Issue #81: Py2app now fails with an error when trying to build a bundle
  for a unix-style shared library build of Python (``--enable-shared``) unless
  you are using a recent enough patchlevel of python (2.7.4, 3.2.3, 3.3.1,
  3.4.0, all of them are not released yet).

  The build failure was added to avoid a very confusing error when trying
  to start the generated application due to a bug in the way python reads
  the environment (for shared library builds on Mac OS X).

- Py2app will also give an error message when the python binary does not
  have a shared library (or framework) at all.

- Issue #87: Ignore '.git' and '.hg' directories while copying package data
  ('.svn' and 'CVS' were already ignored).

- Issue #65: the fix in 0.7 to avoid copying a symlinked library twice caused
  problems for some users because only one of the file names ended up in the
  application bundle. This release ensures that both names exist (one as a
  symbolic name to the other).

- Issue #88: Ensure that the fix for #65 won't try to create a symlink that
  points to itself. This could for example occur with homebrew, where the
  exposed lib directory contains symlinks to a cellar, while tye install_name
  does mention the "public" lib directory::

     $ ls -l /opt/homebrew/lib
     ...
     libglib-2.0.0.dylib -> ../Cellar/glib/2.32.4/lib/libglib-2.0.0.dylib
     ...

     $ otool -vL /opt/homebrew/lib/libglib-2.0.0.dylib
     /opt/homebrew/lib/libglib-2.0.0.dylib:
        /opt/homebrew/lib/libglib-2.0.0.dylib (compatibility version 3201.0.0, current version 3201.4.0)
        time stamp 1 Thu Jan  1 01:00:01 1970
     ...



py2app 0.7.2
------------

py2app 0.7.2 is a bugfix release

- Issue #75: Don't remove ``--dist-dir``, but only remove the old version
  of the objects we're trying to build (if that exists).

  This once again makes it possible to have a number of setup.py files that
  build plugins into the same target folder (such as the plugins folder
  of an application)

- Issue #78: Packages added using the ``--packages`` option didn't end up
  on ``sys.path`` for semi-standalone applications.

  Reported by Steve Strassmann

- Issue #76: Semi-standalone packages using extensions modules coudn't use
  extensions unless they also used the ``--site-packages`` option (and
  the extensions are in the site-packages directory).

  Fixes some problems with PyQt and wxWidgets when using the system installation
  of Python.

  Patch by Dan Horner.

- It is currently not possible to use a subpackage ("foo.bar") in the list
  of packages for the "packages" option. Py2app now explicitly checks for this
  and prints an error message instead of building an application that doesn't
  work.

  Issue: #39


py2app 0.7.1
------------

py2app 0.7.1 is a bugfix release

- Always include 'pkg_resources', this is needed to correctly work with
  setuptools namespace packages, the __init__.py files of those contain
  ``__import__('pkg_resources')`` and that call isn't recognized as an import
  by the bytecode scanner.

- Issue #67: py2applet didn't work with python 3 due to the use of 'raw_input'

  Reported by Andrew Barnert.

- Issue #68: the "extra-scripts" feature introduced in 0.7 couldn't copy scripts
  that aren't in the same directory as "setup.py".

  Reported by Andrew Barnert.

- For semi-standalone applications the "lib-dynload" directory inside the
  application was not on "sys.path", which resulted in launch failures
  when using an extension that is not in the stdlib.

- Issue #70: application fails to launch when script uses Windows line endings

  Reported by Luc Jean.

py2app 0.7
------------

py2app 0.7 is a bugfix release

- Issue #65: generated bundle would crash when two libraries linked to the
  same library using different names (one refering to the real name, the other
  to a symlink).

  An example if this is an application using wxWidgets when wxWidgets is installed
  using homebrew.

  Reported by "Bouke".

- Issue #13: It is now possible to add helper scripts to a bundle, for
  example for creating a GUI that starts a helper script in the background.

  This can be done by using the option "--extra-scripts", the value of which is a list
  of script files (".py" or ".pyw" files).

- Smarter matplotlib recipe, it is now possible to specify which backends should
  be included. Issue #44, reported by Adam Kovics.

  The argument to ``--matplotlib-backends`` (or 'matplotlib_backends' in setup.py)
  is a list of plugins to include. Use '-' to not include backends other than those
  found by the import statement analysis, and '*' to include all backends (without
  necessarily including all of matplotlib)

  As an example, use ``--matplotlib-backends=wxagg`` to include just the wxagg
  backend.

  Default is to include the entire matplotlib package.

- The packages included by a py2app recipe weren't processed by modulegraph and
  hence their dependencies were not always included.

- Fix virtualenv support: alias builds in a virtual environment failed to work.

  (There are still issues with semi-standalone and alias plugin bundles in
  a virtualenv environment).

- issue #18: improved PyQt and PySide support.

  Py2app now has a new option named "--qt-plugins" (or "qt_plugins" in setup.py),
  this option specify a list of plugins that should be included in the
  application bundle. The items of the list can have a number of forms:

  * "plugintype/libplugin.dylib"

    Specify one particular plugin

  * "plugintype/\*foo\*"

    Specify one or more plugins using a glob pattern

  * "plugintype"

    Include all plugins of a type, equivalent to "plugintype/\*".

  The plugins are copied into "Resources/qt_plugins" and py2app adds a "qt.conf"
  file that points to that location for plugins.

- issue #49: package data that is a zipfile is now correctly copied into
  the bundle instead of extracting the archive.

- issue #59: compile site.py to ensure that the generated bundle doesn't
  change on first run.

  This is nice to have in general, and essential when using code signing
  because the signature will break when a new file is added after signing.

  Reported by Michael McCracken.

- issue #60: recipe for "email" package was not loaded

  Reported by Chris Beaumont

- issue #46: py2app no longer warns about the Qt license. We don't warn about
  other possibly GPL licensed software either and py2app is not
  a license-enforcement tool.

  Reported by briank_in_la.

- Generated bundles always started with python optimization active
  (that is, as if running as 'python -O').

- Fix issue #53: py2app would crash if a data file happened to
  be a zipfile.

- py2app copies data files in the directory for a package into
  the application bundle. It also did this for directories that
  represent subpackages, which made it impossible to exclude
  subpackages.

- added recipe for wxPython because some subpackages of wxPython
  use ``__path__`` trickery that confuses modulegraph.

- recipes can now return a list of additional entries for the
  'includes' list.

- rewritten the recipe for matplotlib. The recipe no longer includes
  the entire package, but just the "mpl-data" directory.

  WARNING: This recipe has had limited testing.

- fix mixed indentation (tabs and spaces) in argv_emulation.py,
  which caused installation failures on python 3.x (issue #40)

- Issue #43: py2app now creates a symlink named "Current" in the
  'Versions' directory of the embedded Python framework to comply
  with a requirement for the Mac App-store.

- on some OSX releases the application receives both the
  "open application" and "open documents" Apple Events during startup,
  which broke an assumption in argv_emulation.py.

- py2app is more strict w.r.t. explictly closing files, this avoids
  ResourceWarnings for unclosed files.

- fix test issue with semi-standalone builds on Python 3.2

- added recipe for pyzmq

- Don't use the version information from Python.framework's Info.plist,
  but use ``sys.version_info``. This fixes a build problem with EPD.

- Ignore some more files when copying package data:

  - VIM swap files (``.foo.py.swp``)

  - Backup files for a number of tools: ``foo.orig`` and ``foo~``

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/

            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/ronaldoussoren/py2app",
    "name": "py2app",
    "maintainer": "Ronald Oussoren",
    "docs_url": "https://pythonhosted.org/py2app/",
    "requires_python": null,
    "maintainer_email": "ronaldoussoren@mac.com",
    "keywords": ".app, standalone",
    "author": "Ronald Oussoren",
    "author_email": "ronaldoussoren@mac.com",
    "download_url": "https://files.pythonhosted.org/packages/d1/d8/a81d296560df958e496a03e4373615db5157dacb388945110404cbd0879b/py2app-0.28.8.tar.gz",
    "platform": "MacOS X",
    "description": "\npy2app is a Python setuptools command which will allow\nyou to make standalone Mac OS X application bundles\nand plugins from Python scripts.\n\npy2app is similar in purpose and design to py2exe for\nWindows.\n\nNOTE: py2app must be used on macOS to build applications,\nit cannot create Mac applications on other platforms.\n\nProject links\n-------------\n\n* `Documentation <https://py2app.readthedocs.io/en/latest/>`_\n\n* `Issue Tracker <https://github.com/ronaldoussoren/py2app/issues>`_\n\n* `Repository <https://github.com/ronaldoussoren/py2app/>`_\n\nRelease history\n===============\n\npy2app 0.28.8\n-------------\n\n* #525: Fix breakage with setuptools 70.\n\n* Add support for python 3.13\n\npy2app 0.28.7\n-------------\n\n* Introduce support for Python 3.12\n\npy2app 0.28.6\n-------------\n\n* Fix support for Python 2.7\n\n  These are best-effort changes, I no longer have a setup where I\n  can perform a good test run for Python 2.7.\n\n\npy2app 0.28.5\n-------------\n\n* #476: Update black recipe\n\n  The black recipe no longer worked with recent versions of black\n  due to relying on a metadata file from the \"egg\" spec that's not\n  included by black's current build tool.\n\n  The recipe now scans the python code that's next to the mypyc\n  compiled extension modules for dependencies and uses that to update\n  the dependency graph. This should ensure that new dependencies of\n  black will be automaticly detected in the future.\n\n* Update wheel dependencies\n\npy2app 0.28.4\n-------------\n\n* Fix incompatibility with Python 3.11\n\npy2app 0.28.3\n-------------\n\n* #453: Fix crash in py2applet when specifying a directory to\n  include in the application bundle.\n\npy2app 0.28.2\n-------------\n\n* Fix incompatibility with recent setuptools\n\npy2app 0.28.1\n-------------\n\n* #448: Fix typo in qt6 recipe\n\n* #444: Fix issue where the standard output and standard error streams\n  are set to non-blocking when using py2app.\n\n  For some reason the \"ibtool\" command (part of Xcode) sets these streams\n  to non-blocking when compiling NIB files. I've added a context manager that\n  resets the non-blocking status of these streams.\n\n* PR #446: Fix Qt5 recipe for newer versions of PyQt5\n\n  PR by kangi.\n\n* #447: Fix error when using ``py2applet --help``\n\n  Bug was introduced in the fix for #414\n\n\npy2app 0.28\n-----------\n\n.. note::\n\n   This is the last version of py2app with compatibility with\n   Python 2.7. Future versions will require Python 3.6 or later.\n\n* PR #410: Fix typo in NamedTemporyFile call\n\n  PR by MAKOMO\n\n* #414 Workaround for autodiscovery in setuptools 61.0\n\n  Setuptools 61.0 introduces autodiscovery of distribution\n  attributes, and that broke py2app. This version introduces\n  a ``setuptools.finalize_distribution_options`` entrypoint\n  in py2app that will set the distributions's *name* and\n  *py_modules* attributes in a way that is compatible with\n  the main code of py2app when they are not yet set (before\n  autodiscovery kicks in).\n\n  In older versions of py2app buildin an app can fail in two\n  ways with setuptools 61.0 or later:\n\n  - The name of the generated application is not based on\n    the script name, but some other value.\n\n  - Calling ``python setup.py py2app`` results in an error\n    mentioning ``Multiple top-level modules discovered``.\n\n\n* PR #418: Add recipe for black\n\n  PR by mrclary\n\n* #417: Also include package dist-info for editable installs\n\n* The qt5 and qt6 recipes used dodge logic to detect\n  if the Qt library itself is inside the python package,\n  resulting in duplicate copies of Qt.\n\n* #406: Fix incompatibility with python 2.7\n\n  py2app 0.24 accidently broke compatibility with Python 2.7, and\n  this release fixes this.\n\n  This is the last release with Python 2.7 support, the next\n  release will contain package metadata that ensures it can\n  only be installed on Python 3.\n\n* #413: Find dist-info in included pythonXX.zip\n\n  By default the ``working_set`` of pkg_resources does not contain\n  distribution information from packages included in zip files, such\n  as the zipped-up stdlib + site-pakckages in py2app bundles.\n\n  Add some monkey patching to apps using ``pkg_resources`` to fix this.\n\n* Fix hard crash in \"rtree\" recipe when the package contents doesn't\n  match the recipe expectations.\n\n* #408: Add definition of ``site.PREFIXES``\n\n* #412: Fix incompatibility with setuptools 60.8.1\n\n  The setuptools recipe did not recoginize all vendored dependencies\n  in ``pkg_resources`` and that breaks app bundles that use ``pkg_resoures``.\n\n* PR #388: Add builtin definitions for 'quit' and 'exit' in site.py\n\n  PR by mcclary\n\n* PR #388: Set \"ENABLE_USER_SITE=False\" in site.py\n\n  PR by mcclary\n\n* PR #396: Update pygame recipe to remove missing icon\n\n  PR by glyph\n\npy2app 0.27\n-----------\n\n* #377: The qt5 and qt6 recipes caused a py2app crash when\n  the PyQt5 or PyQt6 is not installed.\n\n* #401: Fix incompatibility with setuptools 60.7 and later\n\n* #391: Drop usage of tempfile.mktemp\n\n* #387: Add ``site.ENABLE_USER_SITE`` in the site.py file\n  for applications (value is always ``False``).\n\n\npy2app 0.26.1\n-------------\n\n* #374: Actually ship the \"old\" stub executables introduced in version 0.26\n\n\npy2app 0.26\n-----------\n\n* Stub executables were recompiled on macOS 11\n\n  This means support for light mode/dark mode should now work out of the\n  box.\n\n  The old stub executables are still used when detecting that Tkinter\n  is used with an old build of Tk.\n\n* #1: Include \".egg-info\" and \".dist-info\" information in the bundled application\n\n  This fixes any python package that uses ``pkg_resources`` to look for\n  specific distributions.\n\n* ``py2app.filters.not_stdlib_filter`` now knows about Python's \"venv\"\n\n* #368: Add recipe \"detect_dunder_file\"\n\n  This recipe will ensure that a Python package is stored outside\n  of site-packages.zip when a module in that package uses the\n  ``__file__`` variable.\n\n  This variable is most commonly used to load resources stored in\n  the package (instead of the newer ``importlib.resources`` and ``pkg_resources``\n  libraries).\n\n* #339: Add recipe for pydantic\n\n  The recipe is needed because pydantic uses Cython to compile\n  all sources (including the package ``__init__``) and therefore\n  hides imports from the dependency analyzer.\n\n* #338: Add \"imageio_ffmpeg\" to autopackages\n\n* PR367: Add recipes for pandas, pylsp, and zmq\n\n* PR367: Add docutils and pylint to autopackages\n\n  PR by Ryan Clary (mrclary on GitHub)\n\n* #344: Invocation of codesign on the whole bundle sometimes fails\n\n  Py2app will now try this a number of times before giving up. This\n  is at best a workaround for and doesn't completely fix the problem.\n\n* #370: py2app now works with Python 3.10\n\n  Python 3.10 no longer exports a (private) symbol used by the py2app\n  stub executable. Switched to a public API to accomplish the same task where\n  available.\n\n* #110: Add recipe for SQLAlchemy\n\n  The recipe includes all dialects and connectors, including implicit\n  dependencies, because SQLAlchemy uses ``__import__`` to load dependencies.\n\n* #328: Add recipe for gcloud\n\n* #195: Add ``USER_BASE``, ``getuserbase()`` and ``getusersitepackages()``  to\n  py2app's version of ``site.py``.\n\n* #184: Add recipe for 'ssl'\n\n  This recipe is only used for Python 3.4 or later and ensures that the\n  CA bundle used by Python's ssl module is included in the app bundle and OpenSSL\n  is configured to look for that bundle in the application bundle.\n\n* #371: change default error message on launch problems\n\n  The default error message shown when the application cannot be launched is now\n  slightly more useful and refers the\n  `py2app debug page <https://py2app.readthedocs.io/en/latest/debugging.html>`_.\n\n* #345, #169: Adjust qt5 and qt6 recipes for non-PyPI installations\n\n  The qt5 and qt6 recipes now should work when the Qt installation prefix\n  is outside of the PyQt package, for example when PyQt was installed through\n  homebrew.\n\n  I've tested this for PyQt5 and made the same change to the PyQt6 recipe, although\n  I haven't tested that change.\n\npy2app 0.25\n-----------\n\n* #358: Add recipe for multiprocessing\n\n* PR363: Add recipe for platformdirs\n\n  PR by Ryan Clary (mrclary on GitHub)\n\n* PR353: Add recipe for sphinx\n\n  PR by Ryan Clary (mrclary on GitHub)\n\n* PR352: Fix for using ipython\n\n  PR by Ryan Clary (mrclary on GitHub)\n\n* PR351: Tweak the matplotlib recipe\n\n  PR by Ryan Clary (mrclary on GitHub)\n\n* PR348: Fix for checking for dead symlinks links in py2app\n\n  PR by Oliver Cordes (ocordes on GitHub)\n\n* #354: Fix buggy \"autopackages\" and \"automissing\" recipes\n\n* #350: Add sentencepiece to the autopackages list\n\n* #359: Add recipe for PyQt6\n\n* #349: Add recipe for OpenCV (opencv-python, ``import cv2``)\n\n* PR365: Add RTree recipe\n\n  PR by Ryan Clary (mrclary on GitHub)\n\npy2app 0.24\n-----------\n\n* Consolidate recipes that just include a package\n  as is into a single recipe to reduce code complexity.\n\n* Consolidate recipes that just mark imports as expected\n  missing into a single recipe to reduce code complexity.\n\n* #334: Include binary stubs for Universal 2 and arm64 binaries in the archives\n\n  The files were in the repository, but were excluded from the source\n  and wheel archives.\n\npy2app 0.23\n-----------\n\n* #315: Stub executables have an LC_RPATH that points to the Frameworks folder\n\n  PR by Aleksandar Topuzovi\u0107 (atopuzov)\n\n* #322: Port wxPython examples to 4.0\n\n  PR by Hamish Mcintyre-Bhatty (hamishmb)\n\n* #314: Don't use Image.DEBUG in the PIL recipy, that attribute is not longer valid\n\n  PR by Aleksandar Topuzovi\u0107\n\n* #320: Process \"@loader_path\" in load commands\n\n  A popular pattern in C extensions with bindins to C library on PyPI is to\n  copy those C libraries into the wheel and reference those using\n  an \"@loader_path\" linker command in the C extension. Until this release\n  py2app could not process those linker commands correctly.\n\n* #298: Add recipe for pycryptodome\n\n* #282: Add recipe for h5py\n\n* #283: Add recipe for tensorflow\n\n  The recipe just includes the entire package into the generated app bundle,\n  I haven't checked yet if there is a way to reduce the size of this\n  package (which is rather huge).\n\n\npy2app 0.22\n-----------\n\n* #319: Add ad-hoc signature for application bundles\n\n  ARM64 binaries on macOS 11 must be signed, even if it is only an ad-hoc signature.\n  py2app will now add an ad-hoc code signature.\n\n* #300: Add support for ARM64 and Universal 2 binaries\n\n  .. note:: Support is highly experimental, these stubs have not been tested yet.\n\n* #299: Fix build error when building with the copy of Python 3 shipped\n  with Xcode.\n\n* #281: Generated bundle doesn't work on macOS 10.9 and 10.10.\n\npy2app 0.21\n-----------\n\n* PR 277 (Christian Clauss): Fix some Python 3 issues\n\n* #276: Rebuilt the binary stubs on a 10.12 machine to fix launching\n\npy2app 0.20\n-----------\n\n* Migrate to GitHub\n\n* #274: Fix an issue in the PyQt5 recipe\n\n* Fix issue with emulate-shell-environment option on macOS 10.15 (Catalina)\n\n* #269: Py2app didn't work with Python 3.8\n\npy2app 0.19\n-----------\n\n* #251: Add recipe for \"botocore\"\n\n* #253: \"python setup.py py2app -A\" creates invalid bundle from \"venv\" virtual environments\n\n* Updated recipe for PySide2 and new recipe for Shiboken2\n\n  Patch by Alberto Sottile.\n\npy2app 0.18\n-----------\n\n* #250: Add recipe for \"six.moves\", which also works when the six\n  library is vendored by other packages\n\npy2app 0.17\n-----------\n\n* #247: The new tkinter recipe didn't work properly for installations\n  that do use a framework install of Tcl/Tk.\n\npy2app 0.16\n-----------\n\n* #244: Copy the Tcl/Tk support libraries into the application bundle for\n  Python builds using a classic unix install of Tcl/Tk instead of a framework\n  build.\n\n  This results in working app bundles when a Python.org installation that\n  includes Tcl/Tk (such as Python 3.7).\n\n* Don't copy numpy into application just because the application uses\n  Pillow.\n\n* Add recipe for Pyside\n\n  Patch by Alberto Sottile\n\npy2app 0.15\n-----------\n\n* Fixed issues for Python 3.7, in particular changes in the plistlib library\n  (Issue #242, #239)\n\n* Updated dependencies on macholib, altgraph and modulegraph\n\n**Due to a bug in CPython 3.7.0 using -O does not work with that version of CPython**\n\npy2app 0.14.1\n-------------\n\n* Updated dependencies\n\n* Updated PyPI metadata\n\npy2app 0.14\n-----------\n\nFeatures:\n\n* Started using flake8 to improve coding style\n\nBug fixes:\n\n* Issue #222: The fix for issue #179 broke the argv emulator\n\n* Issue #226: Py2app could fail while reporting on possibly missing modules\n\n* Issue #228: The python executable included in the app bundle as ``sys.exectuable`` was not executable\n\n\npy2app 0.13\n-----------\n\nBug fixes:\n\n* Issue 185 in PyObjC's tracker: sysconfig using ``__import__`` in Python 3.6 or\n  later, which confuses modulegraph.\n\n* Pull request #17: Location of site-packages in the \"--user\" location has changed\n\n  Patch by Matt Mukerjee\n\nFeatures:\n\n* (None yet)\n\npy2app 0.12\n-----------\n\n* Pull request #15 by Armin Samii: Safer symlink and file copying\n\n* Update recipes: a number of recipe names conflicted with toplevel\n  modules imported by recipes. This causes problems on Python 2.7 (without\n  absolute imports)\n\npy2app 0.11\n-----------\n\n- Make sure the stdout/stderr streams of the main binary of the application\n  are unbuffered.\n\n  See `issue #177 in PyObjC's repository <https://github.com/ronaldoussoren/pyobjc/issues/177/on-python3-print-does-not-automatically>`_ for more information.\n\n- Fix issue #201: py2app is not compatible with pyvenv virtualenvs\n\n  With additional fix by Oskari Timperi.\n\n- Fix issue #179: the stdout/stderr streams are no longer forwarded to console.app using ASL (by default),\n  use \"--redirect-stdout-to-asl\" to enable the redirection functionality.\n\n  Note that for unclear reasons the redirection doesn't work on OSX 10.12 at the moment.\n\n- Fix issue #188: Troubles with lxml.isoschematron\n\n  The package 'lxml.isoschematron' is not zip-safe and tries to load resources using the normal\n  filesystem APIs, which doesn't work when the package is part of a zipfile.\n\n- py2applet now longer uses \"argv_emulation\" by default, that results in too many problems.\n\n- Issue #174: clean up the summary about missing modules by removing warnings about things that aren't modules.\n\n  Also notes when an module is likely an alias for some other module. These changes should remove a lot\n  of false postive warnings from the output of py2app.\n\n- Fix issue #161: opengl recipe uses \"file\" function that isn't present on Python 3\n\n- Add \"qt5\" recipe that does the right thing for the PyQt5 wheel on PyPI (tested with PyQt5 5.6)\n\n- Add support for \"@loader_path\" in the link commands of C extension.\n\n  This makes it possible to use wheels that were processed by `delocate-listdeps <https://github.com/matthew-brett/delocate>`_\n  when building application bundles.\n\n- Do not report imports that are expected to be missing\n\n  Patch by Barry Scott.\n\npy2app 0.10\n-----------\n\n- The recipe for virtualenv calls a modulegraph method that was made\n  private in a recent release and hence no longer worked with py2app 0.9.\n\n  Update the recipe to work around this.\n\n\npy2app 0.9\n----------\n\n- issue #146, #147: The \"python\" binary in MyApp.app/Contents/MacOS was\n  the small stub exetable from framework builds, instead of the actual\n  command-line interpreter. The result is that you couldn't use\n  ``sys.executable`` to start a new interpreter, which (amongst others)\n  breaks multiprocessing.\n\n- pull request #7: Add support for PyQt5 to the sip recipe. Patch by\n  Mark Montague.\n\n- pull request #4: Copying PySide plugins was broken due to bad\n  indentation.\n\n- pull request #5: py2app was broken for python versions that\n  don't use _sysconfigdata.\n\n- issue #135: Don't sleep for a second after compiling a XIB file\n\n- issue #134: Remove target location before copying files into\n  the bundle.\n\n- issue #133: Ensure that the application's \"Framework\" folder\n  is on the search path for ``ctypes.util.find_library``.\n\n- issue #132: Depend on modulegraph 0.12 to avoid build errors\n  when the python code contains references to compatibility modules\n  that contain SyntaxErrors for the current python version.\n\n- Explicitly report modules that cannot be found at the end of\n  the run (for non-alias builds)\n\n  Note: This is just a warning, missing modules are not necessarily\n  a problem because modulegraph can detect imports for modules that\n  aren't used on OSX (for example)\n\n- Report modules that contain syntax errors at the end of\n  the run (for non-alias builds)\n\n  Note: This is just a warning, syntax errors be valid when the\n  dependency tree contains modules for the other major release\n  of python (e.g a compat_py2 module that contains compatibility\n  code for Python 2 and contains code that isn't valid Python 3)\n\npy2app 0.8.1\n------------\n\n- Loading scripts didn't work when --no-chdir was used\n\n  Reported by Barry Scott in private mail.\n\npy2app 0.8\n-----------\n\npy2app 0.8 is a feature release\n\n\n- Fixed argv emulator on OSX 10.9, the way the code detected that the application\n  was launched through the Finder didn't work on that OSX release.\n\n- The launcher binary is now linked with Cocoa, that should avoid some problems\n  with sandboxed applications (in particular: standard open panels don't seem\n  to work properly in a sandboxed application when the main binary is not\n  linked to AppKit)\n\n- Don't copy Python's Makefile, Setup file and the like into a bundle when\n  sysconfig and distutils.sysconfig don't need these files (basicly, when\n  using any recent python version).\n\n- Fix some issues with virtualenv support:\n\n  * detection of system installs of Python didn't work properly when using\n    a virtualenv. Because of this py2app did not create a \"semi-standalone\"\n    bundle when using a virtualenv created with /usr/bin/python.\n\n  * \"semi-standalone\" bundles created from a virtualenv included more files\n    when they should (in particular bits of the stdlib)\n\n- Issue #92: Add option '--force-system-tk' which ensures that the _tkinter\n  extension (used by Tkinter) is linked against the Apple build of Tcl/Tk,\n  even when it is linked to another framework in Python's std. library.\n\n  This will cause a build error when tkinter is linked with a major version of\n  Tcl/Tk that is not present in /System/Library/Frameworks.\n\n- Issue #80: Add support for copying system plugins into the application\n  bundle.\n\n  Py2app now supports a new option *include_plugins*. The value of this\n  is a list of paths to plugins that should be copied into the application\n  bundle.\n\n  Items in the list are either paths, or a tuple with the plugin type\n  and the path::\n\n      include_plugins=[\n        \"MyPlugins/MyDocument.qlgenerator\",\n        (\"SystemConfiguration\", \"MyPlugins/MyConfig.plugin\"),\n      ]\n\n  Py2app currently knows about the following plugin suffixes:\n  ``.qlgenerator``, ``.mdimporter``, ``.xpc``, ``.service``,\n  ``.prefPane``, ``.iaplugin`` and ``.action``. These plugins\n  can be added without specifying the plugin type.\n\n- Issue #83: Setup.py now refuses to install when the current\n  platform is not Mac OS X.\n\n  This makes it clear that the package is only supported on OSX and\n  avoids confusing errors later on.\n\n- Issue #39: It is now possible to have subpackages on\n  in the \"packages\" option of py2app.\n\n- Issue #37: Add recipe for pyEnchant\n\n  ..note::\n\n    The recipe only works for installations of pyEnchant\n    where pyEnchant is stored in the installation (such\n    as the binary eggs on PyPI), not for installations\n    that either use the \"PYENCHANT_LIBRARY_PATH\" environment\n    variable or MacPorts.\n\n- Issue #90: Removed the 'email' recipe, but require a new enough version\n  of modulegraph instead. Because of this py2app now requires modulegraph\n  0.11 or later.\n\npy2app 0.7.4\n------------\n\n- Issue #77: the stdout/stderr streams of application and plugin bundles did not\n  end up in Console.app on OSX 10.8 (as they do on earlier releases of OSX). This\n  is due to a change in OSX.\n\n  With this version the application executable converts writes to the stdout\n  and stderr streams to the ASL logging subsystem with the options needed to\n  end up in the default view of Console.app.\n\n  NOTE: The stdout and stderr streams of plugin bundles are not redirected, as it\n  is rather bad form to change the global environment of the host application.\n\n- The i386, x86_64 and intel stub binaries are now compiled with clang on OSX 10.8,\n  instead of an older version of GCC. The other stub versions still are compiled\n  on OSX 10.6.\n\n- Issue #111: The site.py generated by py2app now contains a USER_SITE variable\n  (with a default value of ``None``) because some software tries to import the\n  value.\n\n- Py2app didn't preserve timestamps for files copied into application bundles,\n  and this can cause a bytecompiled file to appear older than the corresponding\n  source file (for packages copied in the bundle using the 'packages' option).\n\n  Related to issue #101\n\n- Py2app also didn't copy file permissions for files copied into application\n  bundles, which isn't a problem in general but did cause binaries to lose\n  there executable permissions (as noted on Stackoverflow)\n\n- Issue #101: Set \"PYTHONDONTWRITEBYTECODE\" in the environment before\n  calling Py_Initialize to ensure that the interpreter won't try to\n  write bytecode files (which can cause problems when using sandboxed\n  applications).\n\n- Issue #105: py2app can now create app and plugin bundles when the main script\n  has an encoding other than ASCII, in particular for Python 3.\n\n- Issue #106: Ensure that the PIL recipe works on Python 3. PIL itself isn't\n  ported yet, but Pillow does work with Python 3.\n\n- \"python setup.py install\" now fails unless the machine is running Mac OS X.\n\n  I've seen a number of reports of users that try to use py2app on Windows\n  or Linux to build OSX applications. That doesn't work, py2app now fails\n  during installation do make this clear.\n\n- Disabled the 'email' recipe for python 3.x as it isn't needed there.\n\n- Issue #91: Added a recipe for `lxml <http://lxml.de/>`, needed because\n  lxml performs a number of imports from an extension and those cannot\n  be detected automaticly by modulegraph.\n\n- Issue #94: The site-packages zipfile in the application bundle now contains\n  zipfile entries for directories as well. This is needed to work around\n  a bug in the zipimporter for Python 3.3: it won't consider 'pkg/foo.py' to be\n  in namespace package 'pkg' unless there is a zipfile entry for the 'pkg'\n  folder (or there is a 'pkg/__init__.py' entry).\n\n- Issue #97: Fixes a problem with the pyside and sip recipes when the 'qt_plugins'\n  option is used for 'image_plugins'.\n\n- Issue #96: py2app should work with python 2.6 again (previous releases didn't\n  work due to using the sysconfig module introduced in python 2.7)\n\n- Issue #99: appstore requires a number of symlinks in embedded frameworks.\n\n  (Version 0.7 already added a link Python.frameworks/Versions/Current, this\n  versions also adds Python.framework/Python and Python.framework/Resources with\n  the value required by the appstore upload tool).\n\n- Py2app copied stdlib packages into the app bundle for semi-standalone builds\n  when they are mentioned in the '--packages' option (either explicitly or\n  by a recipe). This was unintentional, semi-standlone builds should rely on\n  the external Python framework for the stdlib.\n\n  .. note::\n\n     Because of this bug parts of the stdlib of ``/usr/bin/python`` could be\n     copied into app bundles created with py2app.\n\npy2app 0.7.3\n------------\n\npy2app 0.7.3 is a bugfix release\n\n- Issue #82: Remove debug print statement from py2app.util.LOADER that\n  caused problems with Python 3.\n\n- Issue #81: Py2app now fails with an error when trying to build a bundle\n  for a unix-style shared library build of Python (``--enable-shared``) unless\n  you are using a recent enough patchlevel of python (2.7.4, 3.2.3, 3.3.1,\n  3.4.0, all of them are not released yet).\n\n  The build failure was added to avoid a very confusing error when trying\n  to start the generated application due to a bug in the way python reads\n  the environment (for shared library builds on Mac OS X).\n\n- Py2app will also give an error message when the python binary does not\n  have a shared library (or framework) at all.\n\n- Issue #87: Ignore '.git' and '.hg' directories while copying package data\n  ('.svn' and 'CVS' were already ignored).\n\n- Issue #65: the fix in 0.7 to avoid copying a symlinked library twice caused\n  problems for some users because only one of the file names ended up in the\n  application bundle. This release ensures that both names exist (one as a\n  symbolic name to the other).\n\n- Issue #88: Ensure that the fix for #65 won't try to create a symlink that\n  points to itself. This could for example occur with homebrew, where the\n  exposed lib directory contains symlinks to a cellar, while tye install_name\n  does mention the \"public\" lib directory::\n\n     $ ls -l /opt/homebrew/lib\n     ...\n     libglib-2.0.0.dylib -> ../Cellar/glib/2.32.4/lib/libglib-2.0.0.dylib\n     ...\n\n     $ otool -vL /opt/homebrew/lib/libglib-2.0.0.dylib\n     /opt/homebrew/lib/libglib-2.0.0.dylib:\n        /opt/homebrew/lib/libglib-2.0.0.dylib (compatibility version 3201.0.0, current version 3201.4.0)\n        time stamp 1 Thu Jan  1 01:00:01 1970\n     ...\n\n\n\npy2app 0.7.2\n------------\n\npy2app 0.7.2 is a bugfix release\n\n- Issue #75: Don't remove ``--dist-dir``, but only remove the old version\n  of the objects we're trying to build (if that exists).\n\n  This once again makes it possible to have a number of setup.py files that\n  build plugins into the same target folder (such as the plugins folder\n  of an application)\n\n- Issue #78: Packages added using the ``--packages`` option didn't end up\n  on ``sys.path`` for semi-standalone applications.\n\n  Reported by Steve Strassmann\n\n- Issue #76: Semi-standalone packages using extensions modules coudn't use\n  extensions unless they also used the ``--site-packages`` option (and\n  the extensions are in the site-packages directory).\n\n  Fixes some problems with PyQt and wxWidgets when using the system installation\n  of Python.\n\n  Patch by Dan Horner.\n\n- It is currently not possible to use a subpackage (\"foo.bar\") in the list\n  of packages for the \"packages\" option. Py2app now explicitly checks for this\n  and prints an error message instead of building an application that doesn't\n  work.\n\n  Issue: #39\n\n\npy2app 0.7.1\n------------\n\npy2app 0.7.1 is a bugfix release\n\n- Always include 'pkg_resources', this is needed to correctly work with\n  setuptools namespace packages, the __init__.py files of those contain\n  ``__import__('pkg_resources')`` and that call isn't recognized as an import\n  by the bytecode scanner.\n\n- Issue #67: py2applet didn't work with python 3 due to the use of 'raw_input'\n\n  Reported by Andrew Barnert.\n\n- Issue #68: the \"extra-scripts\" feature introduced in 0.7 couldn't copy scripts\n  that aren't in the same directory as \"setup.py\".\n\n  Reported by Andrew Barnert.\n\n- For semi-standalone applications the \"lib-dynload\" directory inside the\n  application was not on \"sys.path\", which resulted in launch failures\n  when using an extension that is not in the stdlib.\n\n- Issue #70: application fails to launch when script uses Windows line endings\n\n  Reported by Luc Jean.\n\npy2app 0.7\n------------\n\npy2app 0.7 is a bugfix release\n\n- Issue #65: generated bundle would crash when two libraries linked to the\n  same library using different names (one refering to the real name, the other\n  to a symlink).\n\n  An example if this is an application using wxWidgets when wxWidgets is installed\n  using homebrew.\n\n  Reported by \"Bouke\".\n\n- Issue #13: It is now possible to add helper scripts to a bundle, for\n  example for creating a GUI that starts a helper script in the background.\n\n  This can be done by using the option \"--extra-scripts\", the value of which is a list\n  of script files (\".py\" or \".pyw\" files).\n\n- Smarter matplotlib recipe, it is now possible to specify which backends should\n  be included. Issue #44, reported by Adam Kovics.\n\n  The argument to ``--matplotlib-backends`` (or 'matplotlib_backends' in setup.py)\n  is a list of plugins to include. Use '-' to not include backends other than those\n  found by the import statement analysis, and '*' to include all backends (without\n  necessarily including all of matplotlib)\n\n  As an example, use ``--matplotlib-backends=wxagg`` to include just the wxagg\n  backend.\n\n  Default is to include the entire matplotlib package.\n\n- The packages included by a py2app recipe weren't processed by modulegraph and\n  hence their dependencies were not always included.\n\n- Fix virtualenv support: alias builds in a virtual environment failed to work.\n\n  (There are still issues with semi-standalone and alias plugin bundles in\n  a virtualenv environment).\n\n- issue #18: improved PyQt and PySide support.\n\n  Py2app now has a new option named \"--qt-plugins\" (or \"qt_plugins\" in setup.py),\n  this option specify a list of plugins that should be included in the\n  application bundle. The items of the list can have a number of forms:\n\n  * \"plugintype/libplugin.dylib\"\n\n    Specify one particular plugin\n\n  * \"plugintype/\\*foo\\*\"\n\n    Specify one or more plugins using a glob pattern\n\n  * \"plugintype\"\n\n    Include all plugins of a type, equivalent to \"plugintype/\\*\".\n\n  The plugins are copied into \"Resources/qt_plugins\" and py2app adds a \"qt.conf\"\n  file that points to that location for plugins.\n\n- issue #49: package data that is a zipfile is now correctly copied into\n  the bundle instead of extracting the archive.\n\n- issue #59: compile site.py to ensure that the generated bundle doesn't\n  change on first run.\n\n  This is nice to have in general, and essential when using code signing\n  because the signature will break when a new file is added after signing.\n\n  Reported by Michael McCracken.\n\n- issue #60: recipe for \"email\" package was not loaded\n\n  Reported by Chris Beaumont\n\n- issue #46: py2app no longer warns about the Qt license. We don't warn about\n  other possibly GPL licensed software either and py2app is not\n  a license-enforcement tool.\n\n  Reported by briank_in_la.\n\n- Generated bundles always started with python optimization active\n  (that is, as if running as 'python -O').\n\n- Fix issue #53: py2app would crash if a data file happened to\n  be a zipfile.\n\n- py2app copies data files in the directory for a package into\n  the application bundle. It also did this for directories that\n  represent subpackages, which made it impossible to exclude\n  subpackages.\n\n- added recipe for wxPython because some subpackages of wxPython\n  use ``__path__`` trickery that confuses modulegraph.\n\n- recipes can now return a list of additional entries for the\n  'includes' list.\n\n- rewritten the recipe for matplotlib. The recipe no longer includes\n  the entire package, but just the \"mpl-data\" directory.\n\n  WARNING: This recipe has had limited testing.\n\n- fix mixed indentation (tabs and spaces) in argv_emulation.py,\n  which caused installation failures on python 3.x (issue #40)\n\n- Issue #43: py2app now creates a symlink named \"Current\" in the\n  'Versions' directory of the embedded Python framework to comply\n  with a requirement for the Mac App-store.\n\n- on some OSX releases the application receives both the\n  \"open application\" and \"open documents\" Apple Events during startup,\n  which broke an assumption in argv_emulation.py.\n\n- py2app is more strict w.r.t. explictly closing files, this avoids\n  ResourceWarnings for unclosed files.\n\n- fix test issue with semi-standalone builds on Python 3.2\n\n- added recipe for pyzmq\n\n- Don't use the version information from Python.framework's Info.plist,\n  but use ``sys.version_info``. This fixes a build problem with EPD.\n\n- Ignore some more files when copying package data:\n\n  - VIM swap files (``.foo.py.swp``)\n\n  - Backup files for a number of tools: ``foo.orig`` and ``foo~``\n\npy2app 0.6.4\n------------\n\npy2app 0.6.4 is a bugfix and minor feature release\n\n- Issue #28: the argv emulator crashes in 64-bit mode on OSX 10.5\n\n  Fixing this issue required yet another rewrite of the argv_emulator\n  code.\n\n- Added option '--arch=VALUE' which can be used to select the set of\n  architectures for the main executable. This defaults to the set of\n  architectures supported by the python interpreter and can be used to\n  drop support for some architectures (for example when you're using a\n  python binary that supports both 32-bit and 64-bit code and use a\n  GUI library that does not yet work in 64-bit mode).\n\n  Valid values for the argument are archectures used in the list below\n  and the following groups of architectures:\n\n  * fat:        i386, ppc\n\n  * fat3:       i386, x86_64, ppc\n\n  * univeral:   i386, x86_64, ppc, ppc64\n\n  * intel:      i386, x86_64\n\n\n\n- Issue #32: fix crash when application uses PySide\n\n  This is partially fixed in macholib (release 1.4.3)\n\n- The '-O' flag of py2app now defaults to the python optimization level\n  when using python 2.6 or later.\n\n- Issue #31: honor optimze flag at runtime.\n\n  Until now an application bundle created by py2app would also run without\n  the \"-O\" flag, even when the user specified it should. This is now fixed.\n\n- Issue #33: py2app's application bundle launcher now clears the environment\n  variable ``PYOBJC_BUNDLE_ADDRESS``, avoids a crash when using PyObjC in an\n  application launched from a py2app based plugin bundle.\n\n- py2app's bundle launcher set the environment variable ``PYOBJC_BUNDLE_ADDRESS``,\n  this variable is now deprecated. Use ``PYOBJC_BUNDLE_ADDRESS<PID>`` instead\n  (replace ``<PID>`` by the process ID of the current process).\n\n- When using the system python we now explicitly add Apple's additional packages\n  (like PyObjC and Twisted) to ``sys.path``.\n\n  This fixes and issue reported by Sean Robinson: py2app used to create a non-working\n  bundle when you used these packages because the packages didn't get included\n  (as intented), but were not available on ``sys.path`` either.\n\n- Fixed the recipe for sip, which in turn ensures that PyQt4 applications\n  work.\n\n  As before the SIP recipe is rather crude, it will include *all* SIP-based\n  packages into your application bundle when it detects a module that uses\n  SIP.\n\n- The 'Resources' folder is no longer on the python search path,\n  it contains the scripts while Python modules and packages are located\n  in the site-packages directory. This change is related to issue #30.\n\n- The folder 'Resources/Python/site-packages' is no longer on the python\n  search path. This folder is not used by py2app itself, but might by\n  used by custom build scripts that wrap around py2app.\n\n- Issue #30: py2app bundles failed to launch properly when the scriptfile\n  has the same name as a python package used by the application.\n\n- Issue #15: py2app now has an option to emulate the shell environment you\n  get by opening a window in the Terminal.\n\n  Usage: ``python setup.py py2app --emulate-shell-environment``\n\n  This option is experimental, it is far from certain that the implementation\n  works on all systems.\n\n- Issue #16: ``--argv-emulation`` now works with Python 3.x and in 64-bit\n  executables.\n\n- Issue #17: py2applet script defaults 'argv_emulation' to False when your using\n  a 64-bit build of python, because that option is not supported on\n  such builds.\n\n- py2app now clears the temporary directory in 'build' and the output directory\n  in 'dist' before doing anything. This avoids unwanted interactions between\n  results from a previous builds and the current build.\n\n- Issue #22: py2app will give an error when the specified version is invalid,\n  instead of causing a crash in the generated executable.\n\n- Issue #23: py2app failed to work when an .egg directory was implictly added\n  to ``sys.path`` by setuptools and the \"-O\" option was used (for example\n  ``python setup.py py2app -O2``)\n\n- Issue #26: py2app copied the wrong executable into the application bundle\n  when using virtualenv with a framework build of Python.\n\npy2app 0.6.3\n------------\n\npy2app 0.6.3 is a bugfix release\n\n- py2app failed to compile .xib files\n  (as reported on the pythonmac-sig mail-ing list).\n\n\npy2app 0.6.2\n------------\n\npy2app 0.6.2 is a bugfix release\n\n- py2app failed to copy the iconfile into application bundle\n  (reported by Russel Owen)\n\n- py2app failed to copy resources and data files as well\n  (the ``resource`` key in the py2ap options dictionary and\n  the ``data_files`` argument to the setup function).\n\n  Issue #19, reported by bryon(at)spideroak.com.\n\n- py2app failed to build application bundles when using virtualenv\n  due to assumptions about the relation between ``sys.prefix`` and\n  ``sys.executable``.\n\n  Report and fix by Erik van Zijst.\n\n- Ensure that the 'examples' directory is included in the source\n  archive\n\npy2app 0.6.1\n------------\n\npy2app 0.6.1 is a bugfix release\n\nBugfixes:\n\n- py2app failed to build the bundle when python package contained\n  a zipfile with data.\n\n  This version solves most of that problem using a rough\n  workaround (the issue is fixed when the filename ends with '.zip').\n\n- The code that recreates the stub executables when they are\n  older than the source code now uses ``xcode-select`` to\n  find the root of SDKs.\n\n  This makes it possible to recreate these executables on machines\n  where both Xcode 3 and Xcode 4 are installed and Xcode 3 is\n  the default Xcode.\n\n- The stub executables were regenerated using Xcode 3\n\n  As a word of warning: Xcode 4 cannot be used to rebuild the\n  stub executables, in particular not those that have support\n  for the PPC architecture.\n\n- Don't rebuild the stub executables automaticly, that's\n  unsafe with Xcode 4 and could trigger accidently when\n  files are installed in a different order than expected.\n\n- Small tweaks to the testsuite to ensure that they work\n  on systems with both Xcode3 and Xcode4 (Xcode3 must be\n  the selected version).\n\n- Better cleanup in the testsuite when ``setupClass`` fails.\n\npy2app 0.6\n----------\n\npy2app 0.6 is a minor feature release\n\n\nFeatures:\n\n- it is now possible to specify which python distributions must\n  be availble when building the bundle by using the\n  \"install_requires\" argument of the ``setup()`` function::\n\n     setup(\n\n         ...\n\t install_requires = [\n\t \t\"pyobjc == 2.2\"\n\t ],\n     )\n\n- py2app can now package namespace packages that were installed\n  using `pip <http://pypi.python.org/pypi/pip>` or the\n  setuptools install option ``--single-version-externally-managed``.\n\n- the bundle template now supports python3, based on a patch\n  by Virgil Dupras.\n\n- alias builds no longer use Carbon Aliases and therefore are\n  supported with python3 as well (patch by Virgil Dupras)\n\n- argv emulation doesn't work in python 3, this release\n  will tell you abou this instead of silently failing to\n  build a working bundle.\n\n- add support for custom URLs to the argv emulation code\n  (patch by Brendan Simon).\n\n  You will have to add a \"CFBundleURLTypes\" key to your Info.plist to\n  use this, the argv emulation code will ensure that the URL\n  to open will end up in ``sys.argv``.\n\n- ``py2app.util`` contains a number of functions that are now\n  deprecated an will be removed in a future version, specifically:\n  ``os_path_islink``, ``os_path_isdir``, ``path_to_zip``,\n  ``get_zip_data``, ``get_mtime``,  and ``os_readlink``.\n\n- The module ``py2app.simpleio`` no longer exists, and should never\n  have been in the repository (it was part of a failed rewrite of\n  the I/O layer).\n\nBug fixes:\n\n- fix problem with symlinks in copied framework, as reported\n  by Dan Ross.\n\n- py2applet didn't work in python 3.x.\n\n- The ``--alias`` option didn't work when building a plugin\n  bundle (issue #10, fix by Virgil Dupras)\n\n- Avoid copying the __pycache__ directory in python versions\n  that implement PEP 3147 (Python 3.2 and later)\n\n- App bundles with Python 3 now work when the application is\n  stored in a directory with non-ASCII characters in the full\n  name.\n\n- Do not compile ``.nib`` files, it is not strictly needed and\n  breaks PyObjC projects that still use the NibClassBuilder code.\n\n- Better error messsages when trying to include a non-existing\n  file as a resource.\n\n- Don't drop into PDB when an exception occurs.\n\n- Issue #5: Avoid a possible stack overflow in the bundle executable\n\n- Issue #9: Work with python 3.2\n\n- Fix build issues with python 2.5 (due to usage of too modern distutils\n  command subclasses)\n\n- The source distribution didn't include all files that needed to be\n  it ever since switching to mercurial, I've added a MANIFEST.in\n  file rather than relying on setuptool's autoguessing of files to include.\n\n- Bundle template works again with semi-standalone builds (such as\n  when using a system python), this rewrites the fix for issue #10\n  mentioned earlier.\n\n- Ensure py2app works correctly when the sources are located in a\n  directory with non-ascii characters in its name.\n\n\npy2app 0.5.2\n------------\n\npy2app 0.5.2 is a bugfix release\n\nBug fixes:\n\n- Ensure that the right stub executable gets found when using\n  the system python 2.5\n\npy2app 0.5.1\n------------\n\npy2app 0.5.1 is a bugfix release\n\nBug fixes:\n\n- Ensure stub executables get included in the egg files\n\n- Fix name of the bundletemplate stub executable for 32-bit builds\n\n\n\npy2app 0.5\n----------\n\npy2app 0.5 is a minor feature release.\n\nFeatures:\n\n- Add support for the ``--with-framework-name`` option of Python's\n  configure script, that is: py2app now also works when the Python\n  framework is not named 'Python.framework'.\n\n- Add support for various build flavours of Python (32bit, 3-way, ...)\n\n- py2app now actually works for me (ronaldoussoren@mac.com) with a\n  python interpreter in a virtualenv environment.\n\n- Experimental support for python 3\n\nBug fixes:\n\n- Fix recipe for matplotlib: that recipe caused an exception with\n  current versions of matplotlib and pytz.\n\n- Use modern API's in the alias-build bootstrap code, without\n  this 'py2app -A' will result in broken bundles on a 64-bit build\n  of Python.\n  (Patch contributed by James R Eagan)\n\n- Try both 'import Image' and 'from PIL import Image' in the PIL\n  recipe.\n  (Patch contributed by Christopher Barker)\n\n- The stub executable now works for 64-bit application bundles\n\n- (Lowlevel) The application stub was rewritten to use\n  ``dlopen`` instead of ``dyld`` APIs. This removes deprecation\n  warnings during compilation.\n\npy2app 0.4.3\n------------\n\npy2app 0.4.3 is a bugfix release\n\nBug fixes:\n\n- A bad format string in build_app.py made it impossible to copy the\n  Python framework into an app bundle.\n\npy2app 0.4.2\n------------\n\npy2app 0.4.2 is a minor feature release\n\nFeatures:\n\n- When the '--strip' option is specified we now also remove '.dSYM'\n  directories from the bundle.\n\n- Remove dependency on a 'version.plist' file in the python framework\n\n- A new recipe for `PyQt`_ 4.x. This recipe was donated by Kevin Walzer.\n\n- A new recipe for `virtualenv`_, this allows you to use py2app from\n  a virtual environment.\n\n.. _`virtualenv`: http://pypi.python.org/pypi/virtualenv\n\n- Adds support for converting ``.xib`` files (NIB files for\n  Interface Builder 3)\n\n- Introduces an experimental plugin API for data converters.\n\n  A conversion plugin should be defined as an entry-point in the\n  ``py2app.converter`` group::\n\n       setup(\n         ...\n\t entry_points = {\n\t\t 'py2app.converter': [\n\t\t     \"label          = some_module:converter_function\",\n\t\t  ]\n\t  },\n\t  ...\n      )\n\n  The conversion function should be defined like this::\n\n      from py2app.decorators import converts\n\n      @converts('.png')\n      def optimze_png(source, proposed_destionation, dryrun=0):\n         # Copy 'source' to 'proposed_destination'\n\t # The conversion is allowed to change the proposed\n\t # destination to another name in the same directory.\n         pass\n\n.. `virtualenv`_: http://pypi.python.org/pypi/virtualenv\n\nBuf fixes:\n\n- This fixes an issue with copying a different version of Python over\n  to an app/plugin bundle than the one used to run py2app with.\n\n\npy2app 0.4.0\n------------\n\npy2app 0.4.0 is a minor feature release (and was never formally released).\n\nFeatures:\n\n- Support for CoreData mapping models (introduced in Mac OS X 10.5)\n\n- Support for python packages that are stored in zipfiles (such as ``zip_safe``\n  python eggs).\n\nBug fixes:\n\n- Fix incorrect symlink target creation with an alias bundle that has included\n  frameworks.\n\n- Stuffit tends to extract archives recursively, which results in unzipped\n  code archives inside py2app-created bundles. This version has a workaround\n  for this \"feature\" for Stuffit.\n\n- Be more carefull about passing non-constant strings as the template argumenti\n  of string formatting functions (in the app and bundle templates), to avoid\n  crashes under some conditions.\n\npy2app 0.3.6\n------------\n\npy2app 0.3.6 is a minor bugfix release.\n\nBug fixes:\n\n- Ensure that custom icons are copied into the output bundle\n\n- Solve compatibility problem with some haxies and inputmanager plugins\n\n\npy2app 0.3.5\n------------\n\npy2app 0.3.5 is a minor bugfix release.\n\nBug fixes:\n\n- Resolve disable_linecache issue\n\n- Fix Info.plist and Python path for plugins\n\n\npy2app 0.3.4\n------------\n\npy2app 0.3.4 is a minor bugfix release.\n\nBug fixes:\n\n- Fixed a typo in the py2applet script\n\n- Removed some, but not all, compiler warnings from the bundle template\n  (which is still probably broken anyway)\n\n\npy2app 0.3.3\n------------\n\npy2app 0.3.3 is a minor bugfix release.\n\nBug Fixes:\n\n- Fixed a typo in the argv emulation code\n\n- Removed the unnecessary py2app.install hack (setuptools does that already)\n\n\npy2app 0.3.2\n------------\n\npy2app 0.3.2 is a major bugfix release.\n\nFunctional changes:\n\n- Massively updated documentation\n\n- New prefer-ppc option\n\n- New recipes: numpy, scipy, matplotlib\n\n- Updated py2applet script to take options, provide --make-setup\n\nBug Fixes:\n\n- No longer defaults to LSPrefersPPC\n\n- Replaced stdlib usage of argvemulator to inline version for i386\n  compatibility\n\n\npy2app 0.3.1\n------------\n\npy2app 0.3.1 is a minor bugfix release.\n\nFunctional changes:\n\n- New EggInstaller example\n\nBug Fixes:\n\n- Now ensures that the executable is +x (when installed from egg this may not\n  be the case)\n\n\npy2app 0.3.0\n------------\n\npy2app 0.3.0 is a major feature enhancements release.\n\nFunctional changes:\n\n- New --xref (-x) option similar to py2exe's that produces\n  a list of modules and their interdependencies as a HTML\n  file\n\n- sys.executable now points to a regular Python interpreter\n  alongside the regular executable, so spawning sub-interpreters\n  should work much more reliably\n\n- Application bootstrap now detects paths containing \":\"\n  and will provide a \"friendly\" error message instead of just\n  crashing <http://python.org/sf/1507224>.\n\n- Application bootstrap now sets PYTHONHOME instead of\n  a large PYTHONPATH\n\n- Application bootstrap rewritten in C that links to\n  CoreFoundation and Cocoa dynamically as needed,\n  so it doesn't imply any particular version of the runtime.\n\n- Documentation and examples changed to use setuptools\n  instead of distutils.core, which removes the need for\n  the py2app import\n\n- Refactored to use setuptools, distributed as an egg.\n\n- macholib, bdist_mpkg, modulegraph, and altgraph are now\n  separately maintained packages available on PyPI as eggs\n\n- macholib now supports little endian architectures,\n  64-bit Mach-O headers, and reading/writing of\n  multiple headers per file (fat / universal binaries)\n\n\npy2app 0.2.1\n------------\n\npy2app 0.2.1 is a minor bug fix release.\n\nBug Fixes:\n\n- macholib.util.in_system_path understands SDKs now\n\n- DYLD_LIBRARY_PATH searching is fixed\n\n- Frameworks and excludes options should work again.\n\n\npy2app 0.2.0\n------------\n\npy2app 0.2.0 is a minor bug fix release.\n\nFunctional changes:\n\n- New datamodels option to support CoreData.  Compiles\n  .xcdatamodel files and places them in the Resources dir\n  (as .mom).\n\n- New use-pythonpath option.  The py2app application bootstrap\n  will no longer use entries from PYTHONPATH unless this option\n  is used.\n\n- py2app now persists information about the build environment\n  (python version, executable, build style, etc.) in the\n  Info.plist and will clean the executable before rebuilding\n  if anything at all has changed.\n\n- bdist_mpkg now builds packages with the full platform info,\n  so that installing a package for one platform combination\n  will not look like an upgrade to another platform combination.\n\nBug Fixes:\n\n- Fixed a bug in standalone building, where a rebuild could\n  cause an unlaunchable executable.\n\n- Plugin bootstrap should compile/link correctly\n  with gcc 4.\n\n- Plugin bootstrap no longer sets PYTHONHOME and will\n  restore PYTHONPATH after initialization.\n\n- Plugin bootstrap swaps out thread state upon plug-in\n  load if it is the first to initialize Python.  This\n  fixes threading issues.\n\npy2app 0.1.9\n------------\n\npy2app 0.1.9 is a minor bug fix release.\n\nBugs fixed:\n\n- bdist_mpkg now builds zip files that are correctly unzipped\n  by all known tools.\n\n- The behavior of the bootstrap has changed slightly such that\n  ``__file__`` should now point to your main script, rather than\n  the bootstrap.  The main script has also moved to ``Resources``,\n  from ``Resources/Python``, so that ``__file__`` relative resource\n  paths should still work.\n\npy2app 0.1.8\n------------\n\npy2app 0.1.8 is a major enhancements release:\n\nBugs fixed:\n\n- Symlinks in included frameworks should be preserved correctly\n  (fixes Tcl/Tk)\n\n- Fixes some minor issues with alias bundles\n\n- Removed implicit SpiderImagePlugin -> ImageTk reference in PIL\n  recipe\n\n- The ``--optimize`` option should work now\n\n- ``weakref`` is now included by default\n\n- ``anydbm``'s dynamic dependencies are now in the standard implies\n  list\n\n- Errors on app launch are brought to the front so the user does\n  not miss them\n\n- bdist_mpkg now compatible with pychecker (data_files had issues)\n\nOptions changed:\n\n- deprecated ``--strip``, it is now on by default\n\n- new ``--no-strip`` option to turn off stripping of executables\n\nNew features:\n\n- Looks for a hacked version of the PyOpenGL __init__.py so that\n  it doesn't have to include the whole package in order to get\n  at the stupid version file.\n\n- New ``loader_files`` key that a recipe can return in order to\n  ensure that non-code ends up in the .zip (the pygame recipe\n  uses this)\n\n- Now scans all files in the bundle and normalizes Mach-O load\n  commands, not just extensions.  This helps out when using the\n  ``--package`` option, when including frameworks that have plugins,\n  etc.\n\n- An embedded Python interpreter is now included in the executable\n  bundle (``sys.executable`` points to it), this currently only\n  works for framework builds of Python\n\n- New ``macho_standalone`` tool\n\n- New ``macho_find`` tool\n\n- Major enhancements to the way plugins are built\n\n- bdist_mpkg now has a ``--zipdist`` option to build zip files\n  from the built package\n\n- The bdist_mpkg \"Installed to:\" description is now based on the\n  package install root, rather than the build root\n\npy2app 0.1.7\n------------\n\n`py2app`_ 0.1.7 is a bug fix release:\n\n- The ``bdist_mpkg`` script will now set up sys.path properly, for setup scripts\n  that require local imports.\n\n- ``bdist_mpkg`` will now correctly accept ``ReadMe``, ``License``, ``Welcome``,\n  and ``background`` files by parameter.\n\n- ``bdist_mpkg`` can now display a custom background again (0.1.6 broke this).\n\n- ``bdist_mpkg`` now accepts a ``build-base=`` argument, to put build files in\n  an alternate location.\n\n- ``py2app`` will now accept main scripts with a ``.pyw`` extension.\n\n- ``py2app``'s not_stdlib_filter will now ignore a ``site-python`` directory as\n  well as ``site-packages``.\n\n- ``py2app``'s plugin bundle template no longer displays GUI dialogs by default,\n  but still links to ``AppKit``.\n\n- ``py2app`` now ensures that the directory of the main script is now added to\n  ``sys.path`` when scanning modules.\n\n- The ``py2app`` build command has been refactored such that it would be easier\n  to change its behavior by subclassing.\n\n- ``py2app`` alias bundles can now cope with editors that do atomic saves\n  (write new file, swap names with existing file).\n\n- ``macholib`` now has minimal support for fat binaries.  It still assumes big\n  endian and will not make any changes to a little endian header.\n\n- Add a warning message when using the ``install`` command rather than installing\n  from a package.\n\n- New ``simple/structured`` example that shows how you could package an\n  application that is organized into several folders.\n\n- New ``PyObjC/pbplugin`` Xcode Plug-In example.\n\npy2app 0.1.6\n------------\n\nSince I have been slacking and the last announcement was for 0.1.4, here are the\nchanges for the soft-launched releases 0.1.5 and 0.1.6:\n\n`py2app`_ 0.1.6 was a major feature enhancements release:\n\n- ``py2applet`` and ``bdist_mpkg`` scripts have been moved to Python modules\n  so that the functionality can be shared with the tools.\n\n- Generic graph-related functionality from ``py2app`` was moved to\n  ``altgraph.ObjectGraph`` and ``altgraph.GraphUtil``.\n\n- ``bdist_mpkg`` now outputs more specific plist requirements\n  (for future compatibility).\n\n- ``py2app`` can now create plugin bundles (MH_BUNDLE) as well as executables.\n  New recipe for supporting extensions built with `sip`_, such as `PyQt`_.  Note that\n  due to the way that `sip`_ works, when one sip-based extension is used, *all*\n  sip-based extensions are included in your application.  In practice, this means\n  anything provided by `Riverbank`_, I don't think anyone else uses `sip`_ (publicly).\n\n- New recipe for `PyOpenGL`_.  This is very naive and simply includes the whole\n  thing, rather than trying to monkeypatch their brain-dead\n  version acquisition routine in ``__init__``.\n\n- Bootstrap now sets ``ARGVZERO`` and ``EXECUTABLEPATH`` environment variables,\n  corresponding to the ``argv[0]`` and the ``_NSGetExecutablePath(...)`` that the\n  bundle saw.  This is only really useful if you need to relaunch your own\n  application.\n\n- More correct ``dyld`` search behavior.\n\n- Refactored ``macholib`` to use ``altgraph``, can now generate `GraphViz`_ graphs\n  and more complex analysis of dependencies can be done.\n\n- ``macholib`` was refactored to be easier to maintain, and the structure handling\n  has been optimized a bit.\n\n- The few tests that there are were refactored in `py.test`_ style.\n\n- New `PyQt`_ example.\n\n- New `PyOpenGL`_ example.\n\n\nSee also:\n\n- http://mail.python.org/pipermail/pythonmac-sig/2004-December/012272.html\n\n.. _`py.test`: http://codespeak.net/py/current/doc/test.html\n.. _`PyOpenGL`: http://pyopengl.sourceforge.net/\n.. _`Riverbank`: http://www.riverbankcomputing.co.uk/\n.. _`sip`: http://www.riverbankcomputing.co.uk/sip/index.php\n.. _`PyQt`: http://www.riverbankcomputing.co.uk/pyqt/index.php\n.. _`docutils`: http://docutils.sf.net/\n.. _`setuptools`: http://cvs.eby-sarna.com/PEAK/setuptools/\n\npy2app 0.1.5\n------------\n\n`py2app`_ 0.1.5 is a major feature enhancements release:\n\n- Added a ``bdist_mpkg`` distutils extension, for creating Installer\n  an metapackage from any distutils script.\n\n  - Includes PackageInstaller tool\n\n  - bdist_mpkg script\n\n  - setup.py enhancements to support bdist_mpkg functionality\n\n- Added a ``PackageInstaller`` tool, a droplet that performs the same function\n    as the ``bdist_mpkg`` script.\n\n- Create a custom ``bdist_mpkg`` subclass for `py2app`_'s setup script.\n\n- Source package now includes `PJE`_'s `setuptools`_ extension to distutils.\n\n- Added lots of metadata to the setup script.\n\n- ``py2app.modulegraph`` is now a top-level package, ``modulegraph``.\n\n- ``py2app.find_modules`` is now ``modulegraph.find_modules``.\n\n- Should now correctly handle paths (and application names) with unicode characters\n  in them.\n\n- New ``--strip`` option for ``py2app`` build command, strips all Mach-O files\n  in output application bundle.\n\n- New ``--bdist-base=`` option for ``py2app`` build command, allows an alternate\n  build directory to be specified.\n\n- New `docutils`_ recipe.\n  Support for non-framework Python, such as the one provided by `DarwinPorts`_.\n\nSee also:\n\n- http://mail.python.org/pipermail/pythonmac-sig/2004-October/011933.html\n\n.. _`py.test`: http://codespeak.net/py/current/doc/test.html\n.. _`GraphViz`: http://www.pixelglow.com/graphviz/\n.. _`PyOpenGL`: http://pyopengl.sourceforge.net/\n.. _`Riverbank`: http://www.riverbankcomputing.co.uk/\n.. _`sip`: http://www.riverbankcomputing.co.uk/sip/index.php\n.. _`PyQt`: http://www.riverbankcomputing.co.uk/pyqt/index.php\n.. _`DarwinPorts`: http://darwinports.opendarwin.org/\n.. _`setuptools`: http://cvs.eby-sarna.com/PEAK/setuptools/\n.. _`PJE`: http://dirtSimple.org/\n.. _`PyObjC`: http://pyobjc.sourceforge.net/\n\npy2app 0.1.4\n------------\n\n`py2app`_ 0.1.4 is a minor bugfix release:\n\n- The ``altgraph`` from 0.1.3 had a pretty nasty bug in it that prevented\n  filtering from working properly, so I fixed it and bumped to 0.1.4.\n\npy2app 0.1.3\n------------\n\n`py2app`_ 0.1.3 is a refactoring and new features release:\n\n- ``altgraph``, my fork of Istvan Albert's `graphlib`_, is now part of the\n  distribution\n\n- ``py2app.modulegraph`` has been refactored to use ``altgraph``\n\n- `py2app`_ can now create `GraphViz`_ DOT graphs with the ``-g`` option\n  (`TinyTinyEdit example`_)\n\n- Moved the filter stack into ``py2app.modulegraph``\n\n- Fixed a bug that may have been in 0.1.2 where explicitly included packages\n  would not be scanned by ``macholib``\n\n- ``py2app.apptemplate`` now contains a stripped down ``site`` module as\n  opposed to a ``sitecustomize``\n\n- Alias builds are now the only ones that contain the system and user\n  ``site-packages`` directory in ``sys.path``\n\n- The ``pydoc`` recipe has been beefed up to also exclude ``BaseHTTPServer``,\n  etc.\n\nKnown issues:\n\n- Commands marked with XXX in the help are not implemented\n\n- Includes *all* files from packages, it should be smart enough to strip\n  unused .py/.pyc/.pyo files (to save space, depending on which optimization\n  flag is used)\n\n- ``macholib`` should be refactored to use ``altgraph``\n\n- ``py2app.build_app`` and ``py2app.modulegraph`` should be refactored to\n  search for dependencies on a per-application basis\n\n.. _`graphlib`: http://www.personal.psu.edu/staff/i/u/iua1/python/graphlib/html/\n.. _`TinyTinyEdit example`: http://undefined.org/~bob/TinyTinyEdit.pdf\n\npy2app 0.1.2\n------------\n\n`py2app`_ 0.2 is primarily a bugfix release:\n\n- The encodings package now gets included in the zip file (saves space)\n\n- A copy of the Python interpreter is not included anymore in standalone\n  builds (saves space)\n\n- The executable bootstrap is now stripped by default (saves a little space)\n\n- ``sys.argv`` is set correctly now, it used to point to the executable, now\n  it points to the boot script.  This should enhance compatibility with some\n  applications.\n\n- Adds an \"Alias\" feature to modulegraph, so that ``sys.modules`` craziness\n  such as ``wxPython.wx -> wx`` can be accomodated (this particular craziness\n  is also now handled by default)\n\n- A ``sys.path`` alternative may be passed to ``find_modules`` now, though\n  this is not used yet\n\n- The ``Command`` instance is now passed to recipes instead of the\n  ``Distribution`` instance (though no recipes currently use either)\n\n- The post-filtering of modules and extensions is now generalized into a\n  stack and can be modified by recipes\n\n- A `wxPython`_ example demonstrating how to package `wxGlade`_ has been\n  added (this is a good example of how to write your own recipe, and how to\n  deal with complex applications that mix code and data files)\n\n- ``PyRuntimeLocations`` is now set to (only) the location of the current\n  interpreter's ``Python.framework`` for alias and semi-standalone build\n  modes (enhances compatibility with extensions built with an unpatched\n  Makefile with Mac OS X 10.3's Python 2.3.0)\n\nKnown issues:\n\n- Includes *all* files from packages, it should be smart enough to strip\n  unused .py/.pyc/.pyo files (to save space, depending on which optimization\n  flag is used).\n\n.. _`wxGlade`: http://wxglade.sourceforge.net/\n\npy2app 0.1.1\n------------\n\n`py2app`_ 0.1.1 is primarily a bugfix release:\n\n- Several problems related to Mac OS X 10.2 compatibility and standalone\n   building have been resolved\n\n- Scripts that are not in the same directory as setup.py now work\n\n- A new recipe has been added that removes the pydoc -> Tkinter dependency\n\n- A recipe has been added for `py2app`_ itself\n\n- a `wxPython`_ example (superdoodle) has been added.\n  Demonstrates not only how easy it is (finally!) to bundle\n  `wxPython`_ applications, but also how one setup.py can\n  deal with both `py2exe`_ and `py2app`_.\n\n- A new experimental tool, py2applet, has been added.\n  Once you've built it (``python setup.py py2app``, of course), you should\n  be able to build simple applications simply by dragging your main script\n  and optionally any packages, data files, Info.plist and icon it needs.\n\nKnown issues:\n\n- Includes *all* files from packages, it should be smart enough to strip\n  unused .py/.pyc/.pyo files (to save space, depending on which\n  optimization flag is used).\n\n- The default ``PyRuntimeLocations`` can cause problems on machines that\n  have a /Library/Frameworks/Python.framework installed.  Workaround is\n  to set a plist that has the following key:\n  ``PyRuntimeLocations=['/System/Library/Frameworks/Python.framework/Versions/2.3/Python']``\n  (this will be resolved soon)\n\n\npy2app 0.1\n----------\n\n(first public release)\n`py2app`_ is the bundlebuilder replacement we've all been waiting\nfor.  It is implemented as a distutils command, similar to `py2exe`_.\n\n.. _`wxPython`: http://www.wxpython.org/\n.. _`py2app`: http://undefined.org/python/#py2app\n.. _`py2exe`: http://starship.python.net/crew/theller/py2exe/\n",
    "bugtrack_url": null,
    "license": "MIT or PSF License",
    "summary": "Create standalone Mac OS X applications with Python",
    "version": "0.28.8",
    "project_urls": {
        "Documentation": "https://py2app.readthedocs.io/en/latest/",
        "Download": "http://pypi.python.org/pypi/py2app",
        "Homepage": "http://github.com/ronaldoussoren/py2app",
        "Issue tracker": "https://github.com/ronaldoussoren/py2app/issues",
        "Repository": "https://github.com/ronaldoussoren/py2app"
    },
    "split_keywords": [
        ".app",
        " standalone"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8312a0932851fe222d9cf9193e192f01d7f62c89d9690b17d731ef5385df4360",
                "md5": "7947263a2e06c4b323bdb8d8a812ad75",
                "sha256": "38b80f0c91f8d2dddb6396e6bbff8a84875f073c510f4f1a307e8ae44c7d73d8"
            },
            "downloads": -1,
            "filename": "py2app-0.28.8-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7947263a2e06c4b323bdb8d8a812ad75",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 835661,
            "upload_time": "2024-05-25T16:31:50",
            "upload_time_iso_8601": "2024-05-25T16:31:50.800398Z",
            "url": "https://files.pythonhosted.org/packages/83/12/a0932851fe222d9cf9193e192f01d7f62c89d9690b17d731ef5385df4360/py2app-0.28.8-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d1d8a81d296560df958e496a03e4373615db5157dacb388945110404cbd0879b",
                "md5": "d5f798f797ef433f46afd8b5e74e131a",
                "sha256": "cab7aec752a8b83e7c6cef7c15271dc720155275e44cbf610e3162e0807313ec"
            },
            "downloads": -1,
            "filename": "py2app-0.28.8.tar.gz",
            "has_sig": false,
            "md5_digest": "d5f798f797ef433f46afd8b5e74e131a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 1173004,
            "upload_time": "2024-05-25T16:39:52",
            "upload_time_iso_8601": "2024-05-25T16:39:52.409019Z",
            "url": "https://files.pythonhosted.org/packages/d1/d8/a81d296560df958e496a03e4373615db5157dacb388945110404cbd0879b/py2app-0.28.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-25 16:39:52",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ronaldoussoren",
    "github_project": "py2app",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "py2app"
}
        
Elapsed time: 0.22477s