------------
This will be a major update to py2app, although I'm currently
primarily focused on cleaning up the code base. At this phase
in development I'm primarily working with Python 3.10 and 3.11,
the code might not work on older versions due to using newish APIs.
* The ``install_requires`` option in setup.py is now
ignored by py2app. Ensure that requirements are installed
before invoking py2app.
* Drop support for Python 3.5 or earlier, including
Python 2.7.
The wheel metadata now contains "python_requires>=3.6",
which means pip will install py2app 0.28 for users of older
version of Python.
* Drop the "prefer_ppc" option, use the "arch" option instead
But see below: py2app no longer ships with stub executables
that target PPC systems.
* Drop the "force_syste_tk" option
The system version of Tcl/Tk is deprecated, and is buggy enough
that it is never a good option to use for Python applications.
* Use the ``install_requires`` keyword in the ``setup()`` call
is deprecated and will be removed in a future version.
* Previous versions would try to ``eval()``
the ``app`` and ``plugin`` keyword arguments, with unspecified
values in the local and global namespaces e.g.:
.. sourcecode:: python
setup(
app="[{ 'script': 'foo.py' }]"
)
This undocumented behaviour was removed.
* 423: The code is now formatted with black.
This is enforced by pre-commit configuration.
* 425: Use pyupgrade to modernize some code patterns
This is enforced by the pre-commit configuration
* Use codespell to avoid common typos.
This is enforced by the pre-commit configuration
* 432: Switch from setuptools to flit for building wheels and sdists
* Add a "maybe_packages" option that lists packages that
should be excluded from the zipfile when they are found
by the dependency checker.
* flake8 status is enforced in the pre-commit configuration
* 426: Remove code that supports Python 3.5 or earlier
* Add 'isort' to pre-commit configuration
* 433: Py2app now only ships with stub executables for
arm64, x86_64 and "Universal 2" (fat binaries with x86_64 and arm64)
Stub executables for PowerPC and 32-bit Intel were removed.
* Code cleanup: Drop all code related to multiple apps or plugins
from py2app, the code was inactive because the configuration parsing
code actively checked for exactly one app or plugin.
* Code cleanup: Drop some deprecated internal functions from
``py2app.util``.
* Extracting the application version from the ``__version__`` attribute
of the main script now actually works.
* Fix ``PythonShortVersion`` key in ``Info.plist`` for Python 3.10 or later
* Changed the (undocumented) entrypoint for resource converters, the
name of the entrypoint should now be the file suffix (without leading
dot).
* Switch from plain prints and distutils.log to using rich for printing
progress information.
* Switch to ``importlib.metadata`` and ``importlib.resources`` from ``pkg_resources``
where possible. This is enforced by a pre-commit check.
* Drop support for ancient versions of Xcode
The code now assumes that the "xcrun" command exists and can be
used to find converter tools, and no longer contains hardcoded
paths for some of the tools for use with Xcode 3.
* Adding type annotations to the code base
This lead to some minor bugfixes (mostly due to typos). The type annotations
will improve over time, and also have some rough edges in recipes due to
missing annations for 3th-party projects.
The annotations are fairly rough at this point, will be cleaned up
during refactoring the code base.
* Parsing of arguments in the setuptools commands was rewritten and can be
more strict, although valid configuration should be accepted just as before.
Known incompatibilities:
- pyapp 0.28 accepted "prescripts" as an alias for "extra_scripts" in a
target definition (e.g. "``setup(app=[{"script": "main.py", "prescripts": [ ...])``").
This is no longer supported and will result in an error.
- Unsupported extra keys in a target definition are now an error.
As a side effect of this it is now possible to specify a target without
an enclosing list, e.g.:
.. sourcecode:: python
setup(
app="script.py",
...
)
* The "py2applet" script has been removed.
* Add reporting on the supported macOS versions and CPU architectures
for a build artefact.