This repository has been archived by the owner on Feb 16, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update 'Lib/Legacy': branch 'main' is updated to bb396ee at 'Riversid…
…eValley/Fluid.Runtime.Legacy'
- Loading branch information
Showing
2,269 changed files
with
993,444 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
"""Record of phased-in incompatible language changes. | ||
Each line is of the form: | ||
FeatureName = "_Feature(" OptionalRelease "," MandatoryRelease "," | ||
CompilerFlag ")" | ||
where, normally, OptionalRelease < MandatoryRelease, and both are 5-tuples | ||
of the same form as sys.version_info: | ||
(PY_MAJOR_VERSION, # the 2 in 2.1.0a3; an int | ||
PY_MINOR_VERSION, # the 1; an int | ||
PY_MICRO_VERSION, # the 0; an int | ||
PY_RELEASE_LEVEL, # "alpha", "beta", "candidate" or "final"; string | ||
PY_RELEASE_SERIAL # the 3; an int | ||
) | ||
OptionalRelease records the first release in which | ||
from __future__ import FeatureName | ||
was accepted. | ||
In the case of MandatoryReleases that have not yet occurred, | ||
MandatoryRelease predicts the release in which the feature will become part | ||
of the language. | ||
Else MandatoryRelease records when the feature became part of the language; | ||
in releases at or after that, modules no longer need | ||
from __future__ import FeatureName | ||
to use the feature in question, but may continue to use such imports. | ||
MandatoryRelease may also be None, meaning that a planned feature got | ||
dropped or that the release version is undetermined. | ||
Instances of class _Feature have two corresponding methods, | ||
.getOptionalRelease() and .getMandatoryRelease(). | ||
CompilerFlag is the (bitfield) flag that should be passed in the fourth | ||
argument to the builtin function compile() to enable the feature in | ||
dynamically compiled code. This flag is stored in the .compiler_flag | ||
attribute on _Future instances. These values must match the appropriate | ||
#defines of CO_xxx flags in Include/cpython/compile.h. | ||
No feature line is ever to be deleted from this file. | ||
""" | ||
|
||
all_feature_names = [ | ||
"nested_scopes", | ||
"generators", | ||
"division", | ||
"absolute_import", | ||
"with_statement", | ||
"print_function", | ||
"unicode_literals", | ||
"barry_as_FLUFL", | ||
"generator_stop", | ||
"annotations", | ||
] | ||
|
||
__all__ = ["all_feature_names"] + all_feature_names | ||
|
||
# The CO_xxx symbols are defined here under the same names defined in | ||
# code.h and used by compile.h, so that an editor search will find them here. | ||
# However, they're not exported in __all__, because they don't really belong to | ||
# this module. | ||
CO_NESTED = 0x0010 # nested_scopes | ||
CO_GENERATOR_ALLOWED = 0 # generators (obsolete, was 0x1000) | ||
CO_FUTURE_DIVISION = 0x20000 # division | ||
CO_FUTURE_ABSOLUTE_IMPORT = 0x40000 # perform absolute imports by default | ||
CO_FUTURE_WITH_STATEMENT = 0x80000 # with statement | ||
CO_FUTURE_PRINT_FUNCTION = 0x100000 # print function | ||
CO_FUTURE_UNICODE_LITERALS = 0x200000 # unicode string literals | ||
CO_FUTURE_BARRY_AS_BDFL = 0x400000 | ||
CO_FUTURE_GENERATOR_STOP = 0x800000 # StopIteration becomes RuntimeError in generators | ||
CO_FUTURE_ANNOTATIONS = 0x1000000 # annotations become strings at runtime | ||
|
||
|
||
class _Feature: | ||
|
||
def __init__(self, optionalRelease, mandatoryRelease, compiler_flag): | ||
self.optional = optionalRelease | ||
self.mandatory = mandatoryRelease | ||
self.compiler_flag = compiler_flag | ||
|
||
def getOptionalRelease(self): | ||
"""Return first release in which this feature was recognized. | ||
This is a 5-tuple, of the same form as sys.version_info. | ||
""" | ||
return self.optional | ||
|
||
def getMandatoryRelease(self): | ||
"""Return release in which this feature will become mandatory. | ||
This is a 5-tuple, of the same form as sys.version_info, or, if | ||
the feature was dropped, or the release date is undetermined, is None. | ||
""" | ||
return self.mandatory | ||
|
||
def __repr__(self): | ||
return "_Feature" + repr((self.optional, | ||
self.mandatory, | ||
self.compiler_flag)) | ||
|
||
|
||
nested_scopes = _Feature((2, 1, 0, "beta", 1), | ||
(2, 2, 0, "alpha", 0), | ||
CO_NESTED) | ||
|
||
generators = _Feature((2, 2, 0, "alpha", 1), | ||
(2, 3, 0, "final", 0), | ||
CO_GENERATOR_ALLOWED) | ||
|
||
division = _Feature((2, 2, 0, "alpha", 2), | ||
(3, 0, 0, "alpha", 0), | ||
CO_FUTURE_DIVISION) | ||
|
||
absolute_import = _Feature((2, 5, 0, "alpha", 1), | ||
(3, 0, 0, "alpha", 0), | ||
CO_FUTURE_ABSOLUTE_IMPORT) | ||
|
||
with_statement = _Feature((2, 5, 0, "alpha", 1), | ||
(2, 6, 0, "alpha", 0), | ||
CO_FUTURE_WITH_STATEMENT) | ||
|
||
print_function = _Feature((2, 6, 0, "alpha", 2), | ||
(3, 0, 0, "alpha", 0), | ||
CO_FUTURE_PRINT_FUNCTION) | ||
|
||
unicode_literals = _Feature((2, 6, 0, "alpha", 2), | ||
(3, 0, 0, "alpha", 0), | ||
CO_FUTURE_UNICODE_LITERALS) | ||
|
||
barry_as_FLUFL = _Feature((3, 1, 0, "alpha", 2), | ||
(4, 0, 0, "alpha", 0), | ||
CO_FUTURE_BARRY_AS_BDFL) | ||
|
||
generator_stop = _Feature((3, 5, 0, "beta", 1), | ||
(3, 7, 0, "alpha", 0), | ||
CO_FUTURE_GENERATOR_STOP) | ||
|
||
annotations = _Feature((3, 7, 0, "beta", 1), | ||
None, | ||
CO_FUTURE_ANNOTATIONS) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
initialized = True | ||
|
||
class TestFrozenUtf8_1: | ||
"""\u00b6""" | ||
|
||
class TestFrozenUtf8_2: | ||
"""\u03c0""" | ||
|
||
class TestFrozenUtf8_4: | ||
"""\U0001f600""" | ||
|
||
def main(): | ||
print("Hello world!") | ||
|
||
if __name__ == '__main__': | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
initialized = True | ||
|
||
def main(): | ||
print("Hello world!") | ||
|
||
if __name__ == '__main__': | ||
main() |
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
initialized = True | ||
|
||
def main(): | ||
print("Hello world!") | ||
|
||
if __name__ == '__main__': | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
"""Shared AIX support functions.""" | ||
|
||
import sys | ||
import sysconfig | ||
|
||
|
||
# Taken from _osx_support _read_output function | ||
def _read_cmd_output(commandstring, capture_stderr=False): | ||
"""Output from successful command execution or None""" | ||
# Similar to os.popen(commandstring, "r").read(), | ||
# but without actually using os.popen because that | ||
# function is not usable during python bootstrap. | ||
import os | ||
import contextlib | ||
fp = open("/tmp/_aix_support.%s"%( | ||
os.getpid(),), "w+b") | ||
|
||
with contextlib.closing(fp) as fp: | ||
if capture_stderr: | ||
cmd = "%s >'%s' 2>&1" % (commandstring, fp.name) | ||
else: | ||
cmd = "%s 2>/dev/null >'%s'" % (commandstring, fp.name) | ||
return fp.read() if not os.system(cmd) else None | ||
|
||
|
||
def _aix_tag(vrtl, bd): | ||
# type: (List[int], int) -> str | ||
# Infer the ABI bitwidth from maxsize (assuming 64 bit as the default) | ||
_sz = 32 if sys.maxsize == (2**31-1) else 64 | ||
_bd = bd if bd != 0 else 9988 | ||
# vrtl[version, release, technology_level] | ||
return "aix-{:1x}{:1d}{:02d}-{:04d}-{}".format(vrtl[0], vrtl[1], vrtl[2], _bd, _sz) | ||
|
||
|
||
# extract version, release and technology level from a VRMF string | ||
def _aix_vrtl(vrmf): | ||
# type: (str) -> List[int] | ||
v, r, tl = vrmf.split(".")[:3] | ||
return [int(v[-1]), int(r), int(tl)] | ||
|
||
|
||
def _aix_bos_rte(): | ||
# type: () -> Tuple[str, int] | ||
""" | ||
Return a Tuple[str, int] e.g., ['7.1.4.34', 1806] | ||
The fileset bos.rte represents the current AIX run-time level. It's VRMF and | ||
builddate reflect the current ABI levels of the runtime environment. | ||
If no builddate is found give a value that will satisfy pep425 related queries | ||
""" | ||
# All AIX systems to have lslpp installed in this location | ||
# subprocess may not be available during python bootstrap | ||
try: | ||
import subprocess | ||
out = subprocess.check_output(["/usr/bin/lslpp", "-Lqc", "bos.rte"]) | ||
except ImportError: | ||
out = _read_cmd_output("/usr/bin/lslpp -Lqc bos.rte") | ||
out = out.decode("utf-8") | ||
out = out.strip().split(":") # type: ignore | ||
_bd = int(out[-1]) if out[-1] != '' else 9988 | ||
return (str(out[2]), _bd) | ||
|
||
|
||
def aix_platform(): | ||
# type: () -> str | ||
""" | ||
AIX filesets are identified by four decimal values: V.R.M.F. | ||
V (version) and R (release) can be retrieved using ``uname`` | ||
Since 2007, starting with AIX 5.3 TL7, the M value has been | ||
included with the fileset bos.rte and represents the Technology | ||
Level (TL) of AIX. The F (Fix) value also increases, but is not | ||
relevant for comparing releases and binary compatibility. | ||
For binary compatibility the so-called builddate is needed. | ||
Again, the builddate of an AIX release is associated with bos.rte. | ||
AIX ABI compatibility is described as guaranteed at: https://www.ibm.com/\ | ||
support/knowledgecenter/en/ssw_aix_72/install/binary_compatability.html | ||
For pep425 purposes the AIX platform tag becomes: | ||
"aix-{:1x}{:1d}{:02d}-{:04d}-{}".format(v, r, tl, builddate, bitsize) | ||
e.g., "aix-6107-1415-32" for AIX 6.1 TL7 bd 1415, 32-bit | ||
and, "aix-6107-1415-64" for AIX 6.1 TL7 bd 1415, 64-bit | ||
""" | ||
vrmf, bd = _aix_bos_rte() | ||
return _aix_tag(_aix_vrtl(vrmf), bd) | ||
|
||
|
||
# extract vrtl from the BUILD_GNU_TYPE as an int | ||
def _aix_bgt(): | ||
# type: () -> List[int] | ||
gnu_type = sysconfig.get_config_var("BUILD_GNU_TYPE") | ||
if not gnu_type: | ||
raise ValueError("BUILD_GNU_TYPE is not defined") | ||
return _aix_vrtl(vrmf=gnu_type) | ||
|
||
|
||
def aix_buildtag(): | ||
# type: () -> str | ||
""" | ||
Return the platform_tag of the system Python was built on. | ||
""" | ||
# AIX_BUILDDATE is defined by configure with: | ||
# lslpp -Lcq bos.rte | awk -F: '{ print $NF }' | ||
build_date = sysconfig.get_config_var("AIX_BUILDDATE") | ||
try: | ||
build_date = int(build_date) | ||
except (ValueError, TypeError): | ||
raise ValueError(f"AIX_BUILDDATE is not defined or invalid: " | ||
f"{build_date!r}") | ||
return _aix_tag(_aix_bgt(), build_date) |
Oops, something went wrong.