forked from pulp/pulp_python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
66 lines (51 loc) · 2.43 KB
/
Copy pathutils.py
File metadata and controls
66 lines (51 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import json
def parse_project_metadata(project):
"""
Create a dictionary of python project metadata.
Args:
project (dict): Metadata relevant to the entire Python project
Returns:
dictionary: of python project metadata
"""
package = {}
package['name'] = project.get('name') or ""
package['metadata_version'] = project.get('metadata_version') or ""
package['summary'] = project.get('summary') or ""
package['description'] = project.get('description') or ""
package['keywords'] = project.get('keywords') or ""
package['home_page'] = project.get('home_page') or ""
package['download_url'] = project.get('download_url') or ""
package['author'] = project.get('author') or ""
package['author_email'] = project.get('author_email') or ""
package['maintainer'] = project.get('maintainer') or ""
package['maintainer_email'] = project.get('maintainer_email') or ""
package['license'] = project.get('license') or ""
package['requires_python'] = project.get('requires_python') or ""
package['project_url'] = project.get('project_url') or ""
package['platform'] = project.get('platform') or ""
package['supported_platform'] = project.get('supported_platform') or ""
package['requires_dist'] = json.dumps(project.get('requires_dist', []))
package['provides_dist'] = json.dumps(project.get('provides_dist', []))
package['obsoletes_dist'] = json.dumps(project.get('obsoletes_dist', []))
package['requires_external'] = json.dumps(project.get('requires_external', []))
return package
def parse_metadata(project, version, distribution):
"""
Extract metadata from a distribution.
Create a dictionary of metadata needed to create a PythonContentUnit from
the project, version, and distribution metadata.
Args:
project (dict): Metadata relevant to the entire Python project
version (string): Version of distribution
distribution (dict): Metadata of a single Python distribution
Returns:
dictionary: of useful python metadata
"""
package = {}
package['filename'] = distribution.get('filename') or ""
package['packagetype'] = distribution.get('packagetype') or ""
package['version'] = version
package['url'] = distribution.get('url') or ""
package['sha256_digest'] = distribution.get('digests', {}).get('sha256') or ""
package.update(parse_project_metadata(project))
return package