1. 01 Oct, 2024 4 commits
    • Xavier Thompson's avatar
      60a61ee6
    • Xavier Thompson's avatar
      [wkrd] Use pip install --editable --user · 4e97a2bc
      Xavier Thompson authored
      Prior to pip 21.1, pip install --editable --target fails because it
      results in wrong parameters being passed to setup.py develop by pip.
      
      Prior to setuptools 45.2.0, both pip install --editable --target and
      pip install --editable --prefix fail because the temporary install
      directory used internally by pip is not added to PYTHONPATH prior
      to pip calling setup.py develop. In later version setuptools emits a
      warning instead of an error.
      
      Temporarily override PYTHONUSERBASE to point to the target directory,
      so as to emulate --prefix=<dir> with PYTHONUSERBASE=<dir> and --user.
      
      Since pip's build isolation breaks python setup.py develop --user, as
      called by pip install --editable --user when the build backend of the
      project is setuptools, force --no-build-isolation in this case, even
      when allow-picked-versions is true.
      
      This is needed for Python2 because pip 21.1 and setuptools 45.2.0 are
      both Python3 only.
      4e97a2bc
    • Xavier Thompson's avatar
      [feat] Use pip install --editable in easy_install.develop · 64f61417
      Xavier Thompson authored
      Instead of running python setup.py develop directly. This will allow
      using zc.buildout.easy_install.develop on recent projects that have
      only a pyproject.toml. It also fixes develop leaving build artifacts
      in the source directory that caused later runs to do nothing, e.g.
      preventing develop-eggs to be rebuilt when a build dependency passed
      in setup-eggs option of zc.recipe.egg:develop changed.
      
      A verbosity parameter to tune verbosity of pip is added, with adjusted
      values for the case of buildout:develop and of zc.recipe.egg:develop,
      so as to remain close to the previous behavior with regards to logs.
      
      Technical details:
      
      For packages using PEP-660-style editable installs, supported by more
      recent versions of pip, pip will not delegate to `setup.py develop` -
      enabling editable installs for pure pyproject.toml projects - and will
      instead generate a .dist-info metadata folder but not a .egg-link.
      
      Since buildout currently requires a .egg-link, as it does not support
      PEP 660's mechanism that relies on having a sites-packages directory,
      we need to create this .egg-link after the fact. The tricky part is
      finding out where the .egg-link should point. For this we make use
      of importlib to extract info from the PEP-660-style install.
      
      Support namespace packages where `spec.submodule_search_locations` is
      a `_NamespacePath` object instead of a simple `list` and also support
      cases where the layout of the source project does not follow the same
      structure as the package tree - meaning some custom magic might be
      involved in making editable imports work as intended.
      
      Allow for entries in top_level.txt that are not actually packages,
      i.e. where importlib.util.find_spec().submodule_search_locations is
      None. A test is added for this case.
      64f61417
    • Xavier Thompson's avatar
      [tool] Gitignore *.dist-info · 7e9b8c93
      Xavier Thompson authored
      7e9b8c93
  2. 31 Jul, 2024 22 commits
  3. 03 Jun, 2024 2 commits
  4. 24 May, 2024 4 commits
  5. 20 May, 2024 8 commits