Project

Profile

Help

Pulp Python Roadmap » History » Sprint/Milestone 1

dalley, 10/18/2017 09:46 PM

1 1 dalley
# Pulp Python Roadmap
2
3
## Pulp Python Use Cases
4
5
### pulp_python can interact with any remote package index that supports the PyPI API:
6
7
  - As a user, I can sync individual distribution packages (name, version, platform)
8
9
>   - As a user I can sync an egg from a remote package index
10
>   - As a user I can sync an wheel from a remote package index
11
>   - As a user I can sync an sdist from a remote package index
12
13
  - As a user, I can sync a release and all its distributions packages (name, version)
14
  - As a user, I can sync all distributions in a project (name)
15
  - As a user, I can blacklist distributions
16
17
>   - from a repository
18
>   - globally
19
20
  - As a user, I can filter the distributions synced based on version (name, version qualifier)
21
  - As a user, I can reproduce my environment by syncing packages from the output of pip freeze (name, and exact versions)
22
  - As a user, I can publish a distribution package to a remote package index
23
  - As a user, I can configure Pulp to publish to PyPI with my auth credentials
24
25
###   
26
pulp_python can act as a package index that supports the PyPI API
27
28
  - I can upload a distribution package to Pulp (standard Pulp upload API)
29
  - A twine user can publish a distribution package to Pulp
30
  - As a pip user I can install a package from a Pulp publication
31
  - As a user, Pulp can cache PyPI packages
32
33
## Prioritized Use Cases
34
35
  - As a user, I can sync all distributions in a project (name)
36
  - As a pip user I can install a package from a Pulp publication
37
  - I can upload a distribution package to Pulp (standard Pulp upload API
38
  - As a user, Pulp can cache PyPI packages
39
  - As a user, I am in control of which packages are in my repositories:
40
41
>   - As a user, I can filter the distributions synced based on version (name, version qualifier)
42
>   - As a user, I can sync a release and all its distributions packages (name, version)
43
>   - As a user, I can sync individual distribution packages (name, version, platform)
44
>
45
>>   - As a user I can sync an egg from a remote package index
46
>>   - As a user I can sync an wheel from a remote package index
47
>>   - As a user I can sync an sdist from a remote package index
48
49
  - As a user, I can reproduce my environment by syncing packages from the output of pip freeze (name, and exact versions)
50
  - As a user, I can publish a distribution package to PyPI
51
52
>   - As a user, I can configure Pulp to publish to PyPI with my auth credentials
53
54
  - A twine user can publish a distribution package to Pulp
55
  - As a user, I can blacklist distributions
56
57
>   - from a repository
58
>   - globally
59
60
## Glossary:
61
62
### Project
63
64
> A library, framework, script, plugin, application, or collection of data or other resources, or some combination thereof that is intended to be packaged into a Distribution.  
65
> \[ https://packaging.python.org/glossary/#term-project \]
66
67
### Package Index:
68
69
> A repository of distributions with a web interface to automate package discovery and consumption. (this should align to a pulp repo)
70
71
### Release
72
73
> A snapshot of a Project at a particular point in time, denoted by a version identifier.  
74
> Making a release may entail the publishing of multiple Distributions. For example, if version 1.0 of a project was released, it could be available in both a source distribution format and a Windows installer distribution format.
75
76
### Distribution Package
77
78
> A versioned archive file that contains Python packages, modules, and other resource files that are used to distribute a Release. The archive file is what an end-user will download from the internet and install. A project may contain many releases, and releases may contain many distribution packages. Can be type sdist, bdist, etc. "Distribution package" is used instead of "package" to avoid confusion with "import packages" or linux "distributions".
79
80
## Relevant PEPs:
81
82
  - https://www.python.org/dev/peps/pep-0241/ Final (Original Metadata)
83
  - https://www.python.org/dev/peps/pep-0301/ Final (HTTP API)
84
  - https://www.python.org/dev/peps/pep-0314/ Final (Metadata 1.1)
85
  - https://www.python.org/dev/peps/pep-0345/ Accepted (Metadata 1.2)
86
  - https://www.python.org/dev/peps/pep-0427/ Accepted (Wheel 1.0) 
87
  - https://www.python.org/dev/peps/pep-0491/ Draft (Wheel 1.9)
88
  - https://www.python.org/dev/peps/pep-0426/ Deferred (Metadata 2.0)
89
  - https://www.python.org/dev/peps/pep-0459/ Deferred (Standard Metadata Extensions)
90
  - https://www.python.org/dev/peps/pep-0503/ Accepted (Simple API)
91
  - https://www.python.org/dev/peps/pep-0508/ Active (Dep specification)