Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
K
kedifa
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Aurel
kedifa
Commits
bdce9049
Commit
bdce9049
authored
Oct 23, 2020
by
Aurel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
futurize: stage2
parent
ae0c991a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
78 additions
and
55 deletions
+78
-55
kedifa/_version.py
kedifa/_version.py
+4
-1
kedifa/app.py
kedifa/app.py
+7
-2
kedifa/cli.py
kedifa/cli.py
+4
-2
kedifa/test.py
kedifa/test.py
+50
-45
kedifa/updater.py
kedifa/updater.py
+7
-4
versioneer.py
versioneer.py
+6
-1
No files found.
kedifa/_version.py
View file @
bdce9049
...
...
@@ -11,6 +11,9 @@
"""Git implementation of _version.py."""
from
__future__
import
print_function
from
builtins
import
str
from
builtins
import
range
from
builtins
import
object
import
errno
import
os
import
re
...
...
@@ -31,7 +34,7 @@ def get_keywords():
return
keywords
class
VersioneerConfig
:
class
VersioneerConfig
(
object
)
:
"""Container for Versioneer configuration parameters."""
...
...
kedifa/app.py
View file @
bdce9049
...
...
@@ -17,6 +17,11 @@
# See COPYING file for full licensing terms.
# See https://www.nexedi.com/licensing for rationale and options.
from
future
import
standard_library
standard_library
.
install_aliases
()
from
builtins
import
str
from
builtins
import
range
from
builtins
import
object
from
cryptography
import
x509
from
cryptography.hazmat.primitives.serialization
import
Encoding
from
threading
import
local
...
...
@@ -33,7 +38,7 @@ import signal
import
sqlite3
import
ssl
import
string
import
urlparse
import
url
lib.
parse
import
logging
import
logging.handlers
...
...
@@ -361,7 +366,7 @@ class Kedifa(object):
parameters
=
{}
if
qs
:
try
:
parameters
=
urlparse
.
parse_qs
(
qs
,
strict_parsing
=
True
)
parameters
=
url
lib
.
parse
.
parse_qs
(
qs
,
strict_parsing
=
True
)
except
ValueError
:
start_response
(
'400 Bad Request'
,
headers_text_plain
)
return
(
'Query string %r was not correct.'
%
(
qs
,
),)
...
...
kedifa/cli.py
View file @
bdce9049
...
...
@@ -19,8 +19,10 @@ from __future__ import absolute_import
# See COPYING file for full licensing terms.
# See https://www.nexedi.com/licensing for rationale and options.
from
future
import
standard_library
standard_library
.
install_aliases
()
import
argparse
import
http
lib
import
http
.client
import
requests
import
sys
...
...
@@ -125,7 +127,7 @@ def getter(*args):
print
(
'%r not downloaded, problem %s'
%
(
url
,
e
))
sys
.
exit
(
1
)
else
:
if
response
.
status_code
!=
http
lib
.
OK
:
if
response
.
status_code
!=
http
.
client
.
OK
:
print
(
'%r not downloaded, HTTP code %s'
%
(
url
,
response
.
status_code
))
sys
.
exit
(
1
)
...
...
kedifa/test.py
View file @
bdce9049
...
...
@@ -18,10 +18,15 @@ from __future__ import absolute_import
# See COPYING file for full licensing terms.
# See https://www.nexedi.com/licensing for rationale and options.
from
future
import
standard_library
standard_library
.
install_aliases
()
from
builtins
import
str
from
builtins
import
range
from
builtins
import
object
from
io
import
StringIO
import
contextlib
import
datetime
import
http
lib
import
http
.client
import
ipaddress
import
json
import
mock
...
...
@@ -80,7 +85,7 @@ class KedifaMixinCaucase(KedifaMixin):
format
=
serialization
.
PrivateFormat
.
TraditionalOpenSSL
,
encryption_algorithm
=
serialization
.
NoEncryption
()
)
return
key
,
key_pem
return
key
,
key_pem
.
decode
(
"ascii"
)
def
generateCSR
(
self
,
ip
):
key_pem_file
=
os
.
path
.
join
(
self
.
testdir
,
'%s-key.pem'
%
(
ip
,))
...
...
@@ -99,7 +104,7 @@ class KedifaMixinCaucase(KedifaMixin):
critical
=
False
,
).
sign
(
key
,
hashes
.
SHA256
(),
default_backend
())
with
open
(
csr_pem_file
,
'w'
)
as
out
:
with
open
(
csr_pem_file
,
'w
b
'
)
as
out
:
out
.
write
(
csr
.
public_bytes
(
serialization
.
Encoding
.
PEM
))
return
key_pem_file
,
csr_pem_file
...
...
@@ -189,7 +194,7 @@ class KedifaMixinCaucase(KedifaMixin):
)
self
.
cas
=
cas
.
split
()
kedifa_key_pem
,
csr_file
=
self
.
generateCSR
(
unicode
(
common_name
))
kedifa_key_pem
,
csr_file
=
self
.
generateCSR
(
str
(
common_name
))
out
=
StringIO
()
err
=
StringIO
()
caucase
.
cli
.
main
(
...
...
@@ -264,7 +269,7 @@ class KedifaMixinCaucase(KedifaMixin):
verify
=
self
.
ca_crt_pem
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
result
.
status_code
,
http
lib
.
CREATED
http
.
client
.
CREATED
)
location
=
result
.
headers
.
get
(
'Location'
,
''
)
self
.
assertRegexpMatches
(
...
...
@@ -369,7 +374,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
# KeDiFa does not support nothing on / so for now it just raises
# possibly in the future it will become self-describing interface
self
.
assertEqual
(
http
lib
.
BAD_REQUEST
,
http
.
client
.
BAD_REQUEST
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -381,7 +386,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
os
.
rename
(
self
.
logfile
,
self
.
logfile
+
'.rotated'
)
result
=
self
.
requests_get
(
self
.
kedifa_url
)
self
.
assertEqual
(
http
lib
.
BAD_REQUEST
,
http
.
client
.
BAD_REQUEST
,
result
.
status_code
)
self
.
assertLastLogEntry
(
'"GET / HTTP/1.1" 400'
)
...
...
@@ -390,7 +395,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
NOT_FOUND
,
http
.
client
.
NOT_FOUND
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -404,7 +409,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -460,7 +465,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
UNAUTHORIZED
,
result
.
status_code
)
self
.
assertEqual
(
http
.
client
.
UNAUTHORIZED
,
result
.
status_code
)
self
.
assertEqual
(
'transport'
,
result
.
headers
.
get
(
'WWW-Authenticate'
))
self
.
assertEqual
(
''
,
result
.
text
)
...
...
@@ -475,7 +480,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -500,7 +505,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -512,7 +517,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
self
.
put
()
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
)
self
.
assertEqual
(
http
lib
.
UNAUTHORIZED
,
http
.
client
.
UNAUTHORIZED
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -593,7 +598,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/1'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -605,7 +610,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/list'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -618,7 +623,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/list'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -631,7 +636,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/list'
)
self
.
assertEqual
(
http
lib
.
UNAUTHORIZED
,
http
.
client
.
UNAUTHORIZED
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -661,7 +666,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/list'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -672,7 +677,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -683,7 +688,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/2'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -694,7 +699,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/1'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -729,7 +734,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/list'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -740,7 +745,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -751,7 +756,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/2'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -762,7 +767,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/1'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
NOT_FOUND
,
http
.
client
.
NOT_FOUND
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -797,7 +802,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/list'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -808,7 +813,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -819,7 +824,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/2'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
OK
,
http
.
client
.
OK
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -830,7 +835,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/1'
,
cert
=
self
.
client_key_pem
)
self
.
assertEqual
(
http
lib
.
NOT_FOUND
,
http
.
client
.
NOT_FOUND
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -844,7 +849,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
reference
+
'/generateauth'
)
self
.
assertEqual
(
http
lib
.
CREATED
,
http
.
client
.
CREATED
,
result
.
status_code
)
return
result
.
text
...
...
@@ -860,7 +865,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
self
.
reference
+
'/generateauth'
)
self
.
assertEqual
(
http
lib
.
FORBIDDEN
,
http
.
client
.
FORBIDDEN
,
result
.
status_code
)
self
.
assertEqual
(
'Already exists'
,
result
.
text
)
...
...
@@ -870,7 +875,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result
=
self
.
requests_get
(
self
.
kedifa_url
+
key
+
'/generateauth'
)
self
.
assertEqual
(
http
lib
.
NOT_FOUND
,
http
.
client
.
NOT_FOUND
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -890,7 +895,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
'Content-Type'
:
'application/x-x509-ca-cert'
,
})
self
.
assertEqual
(
http
lib
.
CREATED
,
http
.
client
.
CREATED
,
result
.
status_code
)
self
.
assertEqual
(
...
...
@@ -937,7 +942,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference + '
?
auth
=%
s
' % (auth, )
result = self.requests_put(url, data=key_pem + certificate_pem)
self.assertEqual(
http
lib
.UNPROCESSABLE_ENTITY,
http
.client
.UNPROCESSABLE_ENTITY,
result.status_code
)
self.assertEqual(
...
...
@@ -954,7 +959,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference + '
?
auth
=%
s
' % (auth, )
result = self.requests_put(url, data=key_pem + certificate_pem)
self.assertEqual(
http
lib
.UNPROCESSABLE_ENTITY,
http
.client
.UNPROCESSABLE_ENTITY,
result.status_code
)
self.assertEqual(
...
...
@@ -968,7 +973,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference + '
?
auth
=%
s
' % (auth, )
result = self.requests_put(url, data=key_pem + certificate_pem)
self.assertEqual(
http
lib
.CREATED,
http
.client
.CREATED,
result.status_code
)
self.assertEqual(
...
...
@@ -982,7 +987,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference + '
?
auth
=%
s
' % (auth, )
result = self.requests_put(url, data=key_pem)
self.assertEqual(
http
lib
.UNPROCESSABLE_ENTITY,
http
.client
.UNPROCESSABLE_ENTITY,
result.status_code
)
self.assertEqual(
...
...
@@ -996,7 +1001,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference + '
?
auth
=%
s
' % (auth, )
result = self.requests_put(url, data=certificate_pem)
self.assertEqual(
http
lib
.UNPROCESSABLE_ENTITY,
http
.client
.UNPROCESSABLE_ENTITY,
result.status_code
)
self.assertEqual(
...
...
@@ -1011,7 +1016,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference + '
?
auth
=%
s
' % (auth, )
result = self.requests_put(url, data=certificate_pem + key_pem)
self.assertEqual(
http
lib
.UNPROCESSABLE_ENTITY,
http
.client
.UNPROCESSABLE_ENTITY,
result.status_code
)
self.assertEqual(
...
...
@@ -1024,7 +1029,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference + '
?
auth
=%
s
' % (auth, )
result = self.requests_put(url, data='
badcert
')
self.assertEqual(
http
lib
.UNPROCESSABLE_ENTITY,
http
.client
.UNPROCESSABLE_ENTITY,
result.status_code
)
self.assertEqual(
...
...
@@ -1036,7 +1041,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference
result = self.requests_put(url, data=self.pem)
self.assertEqual(
http
lib
.BAD_REQUEST,
http
.client
.BAD_REQUEST,
result.status_code
)
self.assertEqual(
...
...
@@ -1048,7 +1053,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
url = self.kedifa_url + self.reference + '
?
auth
=
wrong
'
result = self.requests_put(url, data=self.pem)
self.assertEqual(
http
lib
.UNAUTHORIZED,
http
.client
.UNAUTHORIZED,
result.status_code
)
self.assertEqual(
...
...
@@ -1112,7 +1117,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
self.assertEqual(1, self._getDBCertificateCount())
self.assertEqual(
http
lib
.OK,
http
.client
.OK,
result.status_code
)
self.assertEqual(
...
...
@@ -1136,7 +1141,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
self.assertEqual(1, self._getDBCertificateCount())
self.assertEqual(
http
lib
.OK,
http
.client
.OK,
result.status_code
)
self.assertEqual(
...
...
@@ -1148,7 +1153,7 @@ class KedifaIntegrationTest(KedifaMixinCaucase, unittest.TestCase):
result = self.requests_get(self.kedifa_url + '
/
!?
&&==
')
self.assertEqual(
http
lib
.BAD_REQUEST,
http
.client
.BAD_REQUEST,
result.status_code
)
self.assertEqual(
...
...
kedifa/updater.py
View file @
bdce9049
from
__future__
import
print_function
import
httplib
from
future
import
standard_library
standard_library
.
install_aliases
()
from
builtins
import
object
import
http.client
import
json
import
os
import
requests
...
...
@@ -57,7 +60,7 @@ class Updater(object):
print
(
'Certificate %r: problem with %r not downloaded: %s'
%
(
certificate_file
,
url
,
e
))
else
:
if
response
.
status_code
!=
http
lib
.
OK
:
if
response
.
status_code
!=
http
.
client
.
OK
:
print
(
'Certificate %r: %r not downloaded, HTTP code %s'
%
(
certificate_file
,
url
,
response
.
status_code
))
else
:
...
...
@@ -146,7 +149,7 @@ class Updater(object):
self
.
master_certificate_file
):
master_content
=
open
(
self
.
master_certificate_file
,
'r'
).
read
()
for
certificate
,
(
_
,
fallback
)
in
prepare_mapping
.
items
(
):
for
certificate
,
(
_
,
fallback
)
in
list
(
prepare_mapping
.
items
()
):
if
os
.
path
.
exists
(
certificate
):
continue
if
fallback
and
os
.
path
.
exists
(
fallback
):
...
...
@@ -176,7 +179,7 @@ class Updater(object):
except
IOError
:
pass
for
certificate_file
in
self
.
mapping
.
keys
(
):
for
certificate_file
in
list
(
self
.
mapping
.
keys
()
):
if
self
.
updateCertificate
(
certificate_file
,
master_content
):
updated
=
True
...
...
versioneer.py
View file @
bdce9049
...
...
@@ -277,6 +277,11 @@ https://creativecommons.org/publicdomain/zero/1.0/ .
"""
from
__future__
import
print_function
from
future
import
standard_library
standard_library
.
install_aliases
()
from
builtins
import
str
from
builtins
import
range
from
builtins
import
object
try
:
import
configparser
except
ImportError
:
...
...
@@ -289,7 +294,7 @@ import subprocess
import
sys
class
VersioneerConfig
:
class
VersioneerConfig
(
object
)
:
"""Container for Versioneer configuration parameters."""
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment