What changed in version 6.0

Upgrading

To upgrade a production system, install the new system in a new virtualenv, then migrate your database:

reahl migratedb etc

Doing “away with” .reahlproject

The .reahlproject file is one aspect of a home-grown way we use internally to develop Reahl itself: Reahl comprises several individually distributed components and this requires some scaffolding to help us deal with all of these components together. This scaffolding lives in reahl-dev, and is controlled by the .reahlproject file.

We also needed to store other metadata for our flavour of component as implemented by reahl-component, and to do that we used (and later on over-used) the entry points mechanism of setuptools for storing this metadata. Writing a plain setup.cfg or setup.py with all this data crammed into entry points eventually became too cumbersome to explain, which is why we continued up to now to use .reahlproject which hid that from its users.

We have now changed how we store extra metadata:

You now should package a Reahl component using setuptools in a PEP517 compliant way without using our homegrown .reahlproject.

The .reahlproject and some of its accompanying scaffolding does not go away: its use is now optional and what it can do has shrunk. We really intend for it to be used internally only at this point, and it will be removed entirely in the near future since it relies on executing setuptools.setup() – a practice which is deprecated.

If you are currently using a .reahlproject, you will have to migrate now to using a setup.cfg.

Migrating old .reahlproject files

If you have a project with a .reahlproject file, first run inside of its root directory:

reahl migratereahlproject

This creates a setup.cfg file with all the information you used to have in the .reahlproject.

Note however that it will put hardcoded lists of things like packages etc. So the idea is that you then edit the setup.cfg to your liking, removing such hardcoded values where needed.

Secondly, create a pyproject.toml file next to your setup.cfg in which you list both setuptools and the newly minted reahl-component-metadata as build dependencies, for example:

[build-system]
requires = ["setuptools >= 51.0.0", "wheel","setuptools-git >= 1.1", "pytest-runner", "toml", "reahl-component-metadata"]
build-backend = "setuptools.build_meta"

New habits

Whenever you used to run:

reahl setup develop -N  # which is the equivalent of python setup.py develop -N

You will from now on install packages in development mode by running:

python -m pip install --no-deps -e .

Some of our packages are not Reahl components anymore

In order to simplify usage where we can, some of our packages are now normal PyPI distributions, and not Reahl components themselves:

  • reahl-browsertools

  • reahl-stubble

Updated dependencies

Some dependencies on thirdparty python packages have been loosened to include a higher max version: - setuptools should now be 51.0.0 or higher