Project

Profile

Help

Pulp Python Roadmap » History » Sprint/Milestone 13

bizhang, 12/11/2017 07:20 PM

1 1 dalley
# Pulp Python Roadmap
2
3 8 dalley
~~~
4 9 dalley
This is a living document that is moving towards a long term plan to develop pulp_python 3.0 and beyond.
5 8 dalley
~~~
6 6 dalley
7 1 dalley
## Pulp Python Use Cases
8
9 3 dalley
### \[3.0\] Synced Package Index use case:
10 1 dalley
11 10 bizhang
> As a user, I can configure an importer to sync a list of projects \[#2884\]
12 2 dalley
>
13
>> Syncing a project includes all releases  
14 13 bizhang
>> Syncing a release includes all distribution packages (all types)  
15
>> Synced packages can be verfied based on digest (md5 from pypi, sha512 Pulp)  
16
>> I can specify sync mode to be either additive or mirror
17 2 dalley
>
18
> As a user, I can publish a repository:
19
>
20 12 amacdona@redhat.com
>> Published Python Content Units are consumable by pip \[#2885\]  
21 10 bizhang
>> Published projects are consumable by other Pulps \[#2886\]  
22 2 dalley
>> Published projects will include all releases and distributions
23 1 dalley
24 2 dalley
### Upload Use Case:
25 1 dalley
26 10 bizhang
> **\[3.0\]** As a user, I can upload individual distribution packages (name, version, platform) \[#2887\]
27 2 dalley
>
28
>> As a user I can upload an egg  
29
>> As a user I can upload a wheel  
30
>> As a user I can upload a sdist
31
>
32 4 dalley
> **\[3.1+\]** A twine user can publish a distribution package to Pulp
33 1 dalley
34 4 dalley
### **\[3.1+\]** Granular Sync
35 1 dalley
36 2 dalley
> Blacklist: As a user, I can disinclude some content of a project
37
>
38
>> By specifying (release, distribution package)  
39
>> I can disinclude content by distribution type
40
>
41
> Whitelist (Curated Package index Use Case) As a user, I can sync packages that reproduce a specific environment
42
>
43
>> From the output of pip freeze (loose use case)  
44
>> With the name, exact versions, and distribution type (tight use case)
45 1 dalley
46 4 dalley
### **\[3.1+\]** PyPI Publish use case
47 1 dalley
48 2 dalley
> As a user, I can publish a release to a remote package index
49 1 dalley
>
50 2 dalley
>> As a user, I can configure Pulp to publish to PyPI with my auth credentials
51 1 dalley
52 4 dalley
### **\[3.1+\]** Cache Use Case:
53 1 dalley
54 2 dalley
> As a user, I can use Pulp as a PyPI cache.
55 1 dalley
56 11 bizhang
### **\[3.1+\]** Migrations:
57
58
> As a user, I can migrate Pulp2 packages to Pulp3 in-place. \[#2888\]
59
60 1 dalley
## 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 2 dalley
> A repository of distributions with a web interface to automate package discovery and consumption. (this should align to a pulp repo). A Package Index is assumed to implement the PyPI APIs
70 1 dalley
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 5 dalley
> "Distribution" for short. If we mean linux, we will say "distro"  
79
> 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".
80 1 dalley
81
## Relevant PEPs:
82
83
  - https://www.python.org/dev/peps/pep-0241/ Final (Original Metadata)
84
  - https://www.python.org/dev/peps/pep-0301/ Final (HTTP API)
85
  - https://www.python.org/dev/peps/pep-0314/ Final (Metadata 1.1)
86
  - https://www.python.org/dev/peps/pep-0345/ Accepted (Metadata 1.2)
87
  - https://www.python.org/dev/peps/pep-0427/ Accepted (Wheel 1.0) 
88
  - https://www.python.org/dev/peps/pep-0491/ Draft (Wheel 1.9)
89
  - https://www.python.org/dev/peps/pep-0426/ Deferred (Metadata 2.0)
90
  - https://www.python.org/dev/peps/pep-0459/ Deferred (Standard Metadata Extensions)
91
  - https://www.python.org/dev/peps/pep-0503/ Accepted (Simple API)
92
  - https://www.python.org/dev/peps/pep-0508/ Active (Dep specification)