comparison env/lib/python3.7/site-packages/networkx/release.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 """Release data for NetworkX.
2
3 When NetworkX is imported a number of steps are followed to determine
4 the version information.
5
6 1) If the release is not a development release (dev=False), then version
7 information is read from version.py, a file containing statically
8 defined version information. This file should exist on every
9 downloadable release of NetworkX since setup.py creates it during
10 packaging/installation. However, version.py might not exist if one
11 is running NetworkX from the mercurial repository. In the event that
12 version.py does not exist, then no vcs information will be available.
13
14 2) If the release is a development release, then version information
15 is read dynamically, when possible. If no dynamic information can be
16 read, then an attempt is made to read the information from version.py.
17 If version.py does not exist, then no vcs information will be available.
18
19 Clarification:
20 version.py is created only by setup.py
21
22 When setup.py creates version.py, it does so before packaging/installation.
23 So the created file is included in the source distribution. When a user
24 downloads a tar.gz file and extracts the files, the files will not be in a
25 live version control repository. So when the user runs setup.py to install
26 NetworkX, we must make sure write_versionfile() does not overwrite the
27 revision information contained in the version.py that was included in the
28 tar.gz file. This is why write_versionfile() includes an early escape.
29
30 """
31
32 # Copyright (C) 2004-2019 by
33 # Aric Hagberg <hagberg@lanl.gov>
34 # Dan Schult <dschult@colgate.edu>
35 # Pieter Swart <swart@lanl.gov>
36 # All rights reserved.
37 # BSD license.
38
39 import os
40 import sys
41 import time
42 import datetime
43
44 basedir = os.path.abspath(os.path.split(__file__)[0])
45
46
47 def write_versionfile():
48 """Creates a static file containing version information."""
49 versionfile = os.path.join(basedir, 'version.py')
50
51 text = '''"""
52 Version information for NetworkX, created during installation.
53
54 Do not add this file to the repository.
55
56 """
57
58 import datetime
59
60 version = %(version)r
61 date = %(date)r
62
63 # Was NetworkX built from a development version? If so, remember that the major
64 # and minor versions reference the "target" (rather than "current") release.
65 dev = %(dev)r
66
67 # Format: (name, major, min, revision)
68 version_info = %(version_info)r
69
70 # Format: a 'datetime.datetime' instance
71 date_info = %(date_info)r
72
73 # Format: (vcs, vcs_tuple)
74 vcs_info = %(vcs_info)r
75
76 '''
77
78 # Try to update all information
79 date, date_info, version, version_info, vcs_info = get_info(dynamic=True)
80
81 def writefile():
82 fh = open(versionfile, 'w')
83 subs = {
84 'dev': dev,
85 'version': version,
86 'version_info': version_info,
87 'date': date,
88 'date_info': date_info,
89 'vcs_info': vcs_info
90 }
91 fh.write(text % subs)
92 fh.close()
93
94 if vcs_info[0] == 'mercurial':
95 # Then, we want to update version.py.
96 writefile()
97 else:
98 if os.path.isfile(versionfile):
99 # This is *good*, and the most likely place users will be when
100 # running setup.py. We do not want to overwrite version.py.
101 # Grab the version so that setup can use it.
102 # sys.path.insert(0, basedir)
103 from version import version
104 # del sys.path[0]
105 else:
106 # This is *bad*. It means the user might have a tarball that
107 # does not include version.py. Let this error raise so we can
108 # fix the tarball.
109 # raise Exception('version.py not found!')
110
111 # We no longer require that prepared tarballs include a version.py
112 # So we use the possibly trunctated value from get_info()
113 # Then we write a new file.
114 writefile()
115
116 return version
117
118
119 def get_revision():
120 """Returns revision and vcs information, dynamically obtained."""
121 vcs, revision, tag = None, None, None
122
123 gitdir = os.path.join(basedir, '..', '.git')
124
125 if os.path.isdir(gitdir):
126 vcs = 'git'
127 # For now, we are not bothering with revision and tag.
128
129 vcs_info = (vcs, (revision, tag))
130
131 return revision, vcs_info
132
133
134 def get_info(dynamic=True):
135 # Date information
136 date_info = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
137 date = time.asctime(date_info.timetuple())
138
139 revision, version, version_info, vcs_info = None, None, None, None
140
141 import_failed = False
142 dynamic_failed = False
143
144 if dynamic:
145 revision, vcs_info = get_revision()
146 if revision is None:
147 dynamic_failed = True
148
149 if dynamic_failed or not dynamic:
150 # This is where most final releases of NetworkX will be.
151 # All info should come from version.py. If it does not exist, then
152 # no vcs information will be provided.
153 # sys.path.insert(0, basedir)
154 try:
155 from version import date, date_info, version, version_info, vcs_info
156 except ImportError:
157 import_failed = True
158 vcs_info = (None, (None, None))
159 else:
160 revision = vcs_info[1][0]
161 #del sys.path[0]
162
163 if import_failed or (dynamic and not dynamic_failed):
164 # We are here if:
165 # we failed to determine static versioning info, or
166 # we successfully obtained dynamic revision info
167 version = ''.join([str(major), '.', str(minor)])
168 if dev:
169 version += '.dev_' + date_info.strftime("%Y%m%d%H%M%S")
170 version_info = (name, major, minor, revision)
171
172 return date, date_info, version, version_info, vcs_info
173
174
175 # Version information
176 name = 'networkx'
177 major = "2"
178 minor = "4"
179
180
181 # Declare current release as a development release.
182 # Change to False before tagging a release; then change back.
183 dev = False
184
185
186 description = "Python package for creating and manipulating graphs and networks"
187 license = 'BSD'
188 authors = {'Hagberg': ('Aric Hagberg', 'hagberg@lanl.gov'),
189 'Schult': ('Dan Schult', 'dschult@colgate.edu'),
190 'Swart': ('Pieter Swart', 'swart@lanl.gov')}
191 maintainer = "NetworkX Developers"
192 maintainer_email = "networkx-discuss@googlegroups.com"
193 url = 'http://networkx.github.io/'
194 project_urls = {
195 "Bug Tracker": "https://github.com/networkx/networkx/issues",
196 "Documentation": "https://networkx.github.io/documentation/stable/",
197 "Source Code": "https://github.com/networkx/networkx",
198 }
199 platforms = ['Linux', 'Mac OSX', 'Windows', 'Unix']
200 keywords = ['Networks', 'Graph Theory', 'Mathematics',
201 'network', 'graph', 'discrete mathematics', 'math']
202 classifiers = [
203 'Development Status :: 5 - Production/Stable',
204 'Intended Audience :: Developers',
205 'Intended Audience :: Science/Research',
206 'License :: OSI Approved :: BSD License',
207 'Operating System :: OS Independent',
208 'Programming Language :: Python :: 3',
209 'Programming Language :: Python :: 3.5',
210 'Programming Language :: Python :: 3.6',
211 'Programming Language :: Python :: 3.7',
212 'Programming Language :: Python :: 3.8',
213 'Programming Language :: Python :: 3 :: Only',
214 'Topic :: Software Development :: Libraries :: Python Modules',
215 'Topic :: Scientific/Engineering :: Bio-Informatics',
216 'Topic :: Scientific/Engineering :: Information Analysis',
217 'Topic :: Scientific/Engineering :: Mathematics',
218 'Topic :: Scientific/Engineering :: Physics']
219
220 date, date_info, version, version_info, vcs_info = get_info()
221
222 if __name__ == '__main__':
223 # Write versionfile for nightly snapshots.
224 write_versionfile()