From Fedora Project Wiki

< Changes

Revision as of 17:50, 19 January 2018 by Ignatenkobrain (talk | contribs)

Enabling Python Generators

Summary

This change enables the ability to choose to use the Python module dependency generator for packages that provide Python Egg/Wheel metadata.

Owner

Current status

  • Targeted release: Fedora 28
  • Last updated: 2018-01-19
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

... For F28 this is opt-in, in F29 we plan to propose to make this opt-out.

Benefit to Fedora

  • Packagers do not need to specify runtime dependencies manually anymore
  • No more errors in runtime due to missing dependencies (see example below)

Packager of python-fasteners forgot to add Requires: python3-monotonic >= 0.1 so when anyone does "import fasteners", it fails with traceback:

Traceback (most recent call last):

 File "/builddir/build/BUILD/jenkins-job-builder-2.0.0/tests/yamlparser/test_yamlparser.py", line 42, in test_incorrect_template_dimensions
   reg = registry.ModuleRegistry(config)
 File "/builddir/build/BUILD/jenkins-job-builder-2.0.0/jenkins_jobs/registry.py", line 50, in __init__
   Mod = entrypoint.load()
 File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2407, in load
   self.require(*args, **kwargs)
 File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2430, in require
   items = working_set.resolve(reqs, env, installer, extras=self.extras)
 File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 870, in resolve
   raise DistributionNotFound(req, requirers)

pkg_resources.DistributionNotFound: The 'monotonic>=0.1' distribution was not found and is required by fasteners

With automatic dependency management this should never happen.

Scope

  • Proposal owners:
  • Other developers: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)

Packaging:Python Guidelines need to reference how to turn on the feature (simple variable override). FPC ticket.

  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

Some new dependencies might be automatically added, but this is rather good because it fixes real bugs.

N/A (not a System Wide Change)

How To Test

1. Remove all requires for python modules 2. Add following line to spec: %?python_enable_dependency_generator 3. Rebuild package

Every dependency mentioned in egg/wheel (e.g. generated by setuptools/distutils from setup.py) should be automatically added.

N/A (not a System Wide Change)

User Experience

N/A (not a System Wide Change)

Dependencies

N/A (not a System Wide Change)

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? product

Documentation

N/A (not a System Wide Change)

Release Notes