|
8 | 8 | fromsetuptoolsimportsetup,find_packages,__version__assetuptools_version |
9 | 9 | frompkg_resourcesimportparse_version |
10 | 10 |
|
11 | | -ifparse_version(setuptools_version)<parse_version("18.5"): |
12 | | -print("html5lib requires setuptools version 18.5 or above; " |
13 | | -"please upgrade before installing (you have %s)"%setuptools_version) |
14 | | -sys.exit(1) |
| 11 | +importpkg_resources |
| 12 | + |
| 13 | +try: |
| 14 | +import_markerlib.markers |
| 15 | +exceptImportError: |
| 16 | +_markerlib=None |
| 17 | + |
| 18 | + |
| 19 | +# _markerlib.default_environment() obtains its data from _VARS |
| 20 | +# and wraps it in another dict, but _markerlib_evaluate writes |
| 21 | +# to the dict while it is iterating the keys, causing an error |
| 22 | +# on Python 3 only. |
| 23 | +# Replace _markerlib.default_environment to return a custom dict |
| 24 | +# that has all the necessary markers, and ignores any writes. |
| 25 | + |
| 26 | +classPython3MarkerDict(dict): |
| 27 | + |
| 28 | +def__setitem__(self,key,value): |
| 29 | +pass |
| 30 | + |
| 31 | +defpop(self,i=-1): |
| 32 | +returnself[i] |
| 33 | + |
| 34 | + |
| 35 | +if_markerlibandsys.version_info[0]==3: |
| 36 | +env=_markerlib.markers._VARS |
| 37 | +forkeyinlist(env.keys()): |
| 38 | +new_key=key.replace('.','_') |
| 39 | +ifnew_key!=key: |
| 40 | +env[new_key]=env[key] |
| 41 | + |
| 42 | +_markerlib.markers._VARS=Python3MarkerDict(env) |
| 43 | + |
| 44 | +defdefault_environment(): |
| 45 | +return_markerlib.markers._VARS |
| 46 | + |
| 47 | +_markerlib.default_environment=default_environment |
| 48 | + |
| 49 | +# Avoid the very buggy pkg_resources.parser, which doesnt consistently |
| 50 | +# recognise the markers needed by this setup.py |
| 51 | +# Change this to setuptools 20.10.0 to support all markers. |
| 52 | +ifpkg_resources: |
| 53 | +ifparse_version(setuptools_version)<parse_version('18.5'): |
| 54 | +MarkerEvaluation=pkg_resources.MarkerEvaluation |
| 55 | + |
| 56 | +delpkg_resources.parser |
| 57 | +pkg_resources.evaluate_marker=MarkerEvaluation._markerlib_evaluate |
| 58 | +MarkerEvaluation.evaluate_marker=MarkerEvaluation._markerlib_evaluate |
15 | 59 |
|
16 | 60 | classifiers= [ |
17 | 61 | 'Development Status :: 5 - Production/Stable', |
|
60 | 104 | install_requires=[ |
61 | 105 | 'six', |
62 | 106 | 'webencodings', |
63 | | -'setuptools>=18.5' |
64 | 107 | ], |
65 | 108 | extras_require={ |
66 | 109 | # A empty extra that only has a conditional marker will be |
|