-
-
Save huonw/504ef2a5d44efdc2c2df290c0ce5df16 to your computer and use it in GitHub Desktop.
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
python_requirement(name="cryptography", requirements=["cryptography==38.0.3"]) | |
python_sources(name="src") | |
file(name="platform", source="complete_platform.json") | |
python_awslambda(name="lambda", handler="file.py:handler", complete_platforms=[":platform"]) |
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
{ | |
"path": "/var/lang/bin/python3.9", | |
"compatible_tags": [ | |
"cp39-cp39-manylinux_2_26_x86_64", | |
"cp39-cp39-manylinux_2_25_x86_64", | |
"cp39-cp39-manylinux_2_24_x86_64", | |
"cp39-cp39-manylinux_2_23_x86_64", | |
"cp39-cp39-manylinux_2_22_x86_64", | |
"cp39-cp39-manylinux_2_21_x86_64", | |
"cp39-cp39-manylinux_2_20_x86_64", | |
"cp39-cp39-manylinux_2_19_x86_64", | |
"cp39-cp39-manylinux_2_18_x86_64", | |
"cp39-cp39-manylinux_2_17_x86_64", | |
"cp39-cp39-manylinux2014_x86_64", | |
"cp39-cp39-manylinux_2_16_x86_64", | |
"cp39-cp39-manylinux_2_15_x86_64", | |
"cp39-cp39-manylinux_2_14_x86_64", | |
"cp39-cp39-manylinux_2_13_x86_64", | |
"cp39-cp39-manylinux_2_12_x86_64", | |
"cp39-cp39-manylinux2010_x86_64", | |
"cp39-cp39-manylinux_2_11_x86_64", | |
"cp39-cp39-manylinux_2_10_x86_64", | |
"cp39-cp39-manylinux_2_9_x86_64", | |
"cp39-cp39-manylinux_2_8_x86_64", | |
"cp39-cp39-manylinux_2_7_x86_64", | |
"cp39-cp39-manylinux_2_6_x86_64", | |
"cp39-cp39-manylinux_2_5_x86_64", | |
"cp39-cp39-manylinux1_x86_64", | |
"cp39-cp39-linux_x86_64", | |
"cp39-abi3-manylinux_2_26_x86_64", | |
"cp39-abi3-manylinux_2_25_x86_64", | |
"cp39-abi3-manylinux_2_24_x86_64", | |
"cp39-abi3-manylinux_2_23_x86_64", | |
"cp39-abi3-manylinux_2_22_x86_64", | |
"cp39-abi3-manylinux_2_21_x86_64", | |
"cp39-abi3-manylinux_2_20_x86_64", | |
"cp39-abi3-manylinux_2_19_x86_64", | |
"cp39-abi3-manylinux_2_18_x86_64", | |
"cp39-abi3-manylinux_2_17_x86_64", | |
"cp39-abi3-manylinux2014_x86_64", | |
"cp39-abi3-manylinux_2_16_x86_64", | |
"cp39-abi3-manylinux_2_15_x86_64", | |
"cp39-abi3-manylinux_2_14_x86_64", | |
"cp39-abi3-manylinux_2_13_x86_64", | |
"cp39-abi3-manylinux_2_12_x86_64", | |
"cp39-abi3-manylinux2010_x86_64", | |
"cp39-abi3-manylinux_2_11_x86_64", | |
"cp39-abi3-manylinux_2_10_x86_64", | |
"cp39-abi3-manylinux_2_9_x86_64", | |
"cp39-abi3-manylinux_2_8_x86_64", | |
"cp39-abi3-manylinux_2_7_x86_64", | |
"cp39-abi3-manylinux_2_6_x86_64", | |
"cp39-abi3-manylinux_2_5_x86_64", | |
"cp39-abi3-manylinux1_x86_64", | |
"cp39-abi3-linux_x86_64", | |
"cp39-none-manylinux_2_26_x86_64", | |
"cp39-none-manylinux_2_25_x86_64", | |
"cp39-none-manylinux_2_24_x86_64", | |
"cp39-none-manylinux_2_23_x86_64", | |
"cp39-none-manylinux_2_22_x86_64", | |
"cp39-none-manylinux_2_21_x86_64", | |
"cp39-none-manylinux_2_20_x86_64", | |
"cp39-none-manylinux_2_19_x86_64", | |
"cp39-none-manylinux_2_18_x86_64", | |
"cp39-none-manylinux_2_17_x86_64", | |
"cp39-none-manylinux2014_x86_64", | |
"cp39-none-manylinux_2_16_x86_64", | |
"cp39-none-manylinux_2_15_x86_64", | |
"cp39-none-manylinux_2_14_x86_64", | |
"cp39-none-manylinux_2_13_x86_64", | |
"cp39-none-manylinux_2_12_x86_64", | |
"cp39-none-manylinux2010_x86_64", | |
"cp39-none-manylinux_2_11_x86_64", | |
"cp39-none-manylinux_2_10_x86_64", | |
"cp39-none-manylinux_2_9_x86_64", | |
"cp39-none-manylinux_2_8_x86_64", | |
"cp39-none-manylinux_2_7_x86_64", | |
"cp39-none-manylinux_2_6_x86_64", | |
"cp39-none-manylinux_2_5_x86_64", | |
"cp39-none-manylinux1_x86_64", | |
"cp39-none-linux_x86_64", | |
"cp38-abi3-manylinux_2_26_x86_64", | |
"cp38-abi3-manylinux_2_25_x86_64", | |
"cp38-abi3-manylinux_2_24_x86_64", | |
"cp38-abi3-manylinux_2_23_x86_64", | |
"cp38-abi3-manylinux_2_22_x86_64", | |
"cp38-abi3-manylinux_2_21_x86_64", | |
"cp38-abi3-manylinux_2_20_x86_64", | |
"cp38-abi3-manylinux_2_19_x86_64", | |
"cp38-abi3-manylinux_2_18_x86_64", | |
"cp38-abi3-manylinux_2_17_x86_64", | |
"cp38-abi3-manylinux2014_x86_64", | |
"cp38-abi3-manylinux_2_16_x86_64", | |
"cp38-abi3-manylinux_2_15_x86_64", | |
"cp38-abi3-manylinux_2_14_x86_64", | |
"cp38-abi3-manylinux_2_13_x86_64", | |
"cp38-abi3-manylinux_2_12_x86_64", | |
"cp38-abi3-manylinux2010_x86_64", | |
"cp38-abi3-manylinux_2_11_x86_64", | |
"cp38-abi3-manylinux_2_10_x86_64", | |
"cp38-abi3-manylinux_2_9_x86_64", | |
"cp38-abi3-manylinux_2_8_x86_64", | |
"cp38-abi3-manylinux_2_7_x86_64", | |
"cp38-abi3-manylinux_2_6_x86_64", | |
"cp38-abi3-manylinux_2_5_x86_64", | |
"cp38-abi3-manylinux1_x86_64", | |
"cp38-abi3-linux_x86_64", | |
"cp37-abi3-manylinux_2_26_x86_64", | |
"cp37-abi3-manylinux_2_25_x86_64", | |
"cp37-abi3-manylinux_2_24_x86_64", | |
"cp37-abi3-manylinux_2_23_x86_64", | |
"cp37-abi3-manylinux_2_22_x86_64", | |
"cp37-abi3-manylinux_2_21_x86_64", | |
"cp37-abi3-manylinux_2_20_x86_64", | |
"cp37-abi3-manylinux_2_19_x86_64", | |
"cp37-abi3-manylinux_2_18_x86_64", | |
"cp37-abi3-manylinux_2_17_x86_64", | |
"cp37-abi3-manylinux2014_x86_64", | |
"cp37-abi3-manylinux_2_16_x86_64", | |
"cp37-abi3-manylinux_2_15_x86_64", | |
"cp37-abi3-manylinux_2_14_x86_64", | |
"cp37-abi3-manylinux_2_13_x86_64", | |
"cp37-abi3-manylinux_2_12_x86_64", | |
"cp37-abi3-manylinux2010_x86_64", | |
"cp37-abi3-manylinux_2_11_x86_64", | |
"cp37-abi3-manylinux_2_10_x86_64", | |
"cp37-abi3-manylinux_2_9_x86_64", | |
"cp37-abi3-manylinux_2_8_x86_64", | |
"cp37-abi3-manylinux_2_7_x86_64", | |
"cp37-abi3-manylinux_2_6_x86_64", | |
"cp37-abi3-manylinux_2_5_x86_64", | |
"cp37-abi3-manylinux1_x86_64", | |
"cp37-abi3-linux_x86_64", | |
"cp36-abi3-manylinux_2_26_x86_64", | |
"cp36-abi3-manylinux_2_25_x86_64", | |
"cp36-abi3-manylinux_2_24_x86_64", | |
"cp36-abi3-manylinux_2_23_x86_64", | |
"cp36-abi3-manylinux_2_22_x86_64", | |
"cp36-abi3-manylinux_2_21_x86_64", | |
"cp36-abi3-manylinux_2_20_x86_64", | |
"cp36-abi3-manylinux_2_19_x86_64", | |
"cp36-abi3-manylinux_2_18_x86_64", | |
"cp36-abi3-manylinux_2_17_x86_64", | |
"cp36-abi3-manylinux2014_x86_64", | |
"cp36-abi3-manylinux_2_16_x86_64", | |
"cp36-abi3-manylinux_2_15_x86_64", | |
"cp36-abi3-manylinux_2_14_x86_64", | |
"cp36-abi3-manylinux_2_13_x86_64", | |
"cp36-abi3-manylinux_2_12_x86_64", | |
"cp36-abi3-manylinux2010_x86_64", | |
"cp36-abi3-manylinux_2_11_x86_64", | |
"cp36-abi3-manylinux_2_10_x86_64", | |
"cp36-abi3-manylinux_2_9_x86_64", | |
"cp36-abi3-manylinux_2_8_x86_64", | |
"cp36-abi3-manylinux_2_7_x86_64", | |
"cp36-abi3-manylinux_2_6_x86_64", | |
"cp36-abi3-manylinux_2_5_x86_64", | |
"cp36-abi3-manylinux1_x86_64", | |
"cp36-abi3-linux_x86_64", | |
"cp35-abi3-manylinux_2_26_x86_64", | |
"cp35-abi3-manylinux_2_25_x86_64", | |
"cp35-abi3-manylinux_2_24_x86_64", | |
"cp35-abi3-manylinux_2_23_x86_64", | |
"cp35-abi3-manylinux_2_22_x86_64", | |
"cp35-abi3-manylinux_2_21_x86_64", | |
"cp35-abi3-manylinux_2_20_x86_64", | |
"cp35-abi3-manylinux_2_19_x86_64", | |
"cp35-abi3-manylinux_2_18_x86_64", | |
"cp35-abi3-manylinux_2_17_x86_64", | |
"cp35-abi3-manylinux2014_x86_64", | |
"cp35-abi3-manylinux_2_16_x86_64", | |
"cp35-abi3-manylinux_2_15_x86_64", | |
"cp35-abi3-manylinux_2_14_x86_64", | |
"cp35-abi3-manylinux_2_13_x86_64", | |
"cp35-abi3-manylinux_2_12_x86_64", | |
"cp35-abi3-manylinux2010_x86_64", | |
"cp35-abi3-manylinux_2_11_x86_64", | |
"cp35-abi3-manylinux_2_10_x86_64", | |
"cp35-abi3-manylinux_2_9_x86_64", | |
"cp35-abi3-manylinux_2_8_x86_64", | |
"cp35-abi3-manylinux_2_7_x86_64", | |
"cp35-abi3-manylinux_2_6_x86_64", | |
"cp35-abi3-manylinux_2_5_x86_64", | |
"cp35-abi3-manylinux1_x86_64", | |
"cp35-abi3-linux_x86_64", | |
"cp34-abi3-manylinux_2_26_x86_64", | |
"cp34-abi3-manylinux_2_25_x86_64", | |
"cp34-abi3-manylinux_2_24_x86_64", | |
"cp34-abi3-manylinux_2_23_x86_64", | |
"cp34-abi3-manylinux_2_22_x86_64", | |
"cp34-abi3-manylinux_2_21_x86_64", | |
"cp34-abi3-manylinux_2_20_x86_64", | |
"cp34-abi3-manylinux_2_19_x86_64", | |
"cp34-abi3-manylinux_2_18_x86_64", | |
"cp34-abi3-manylinux_2_17_x86_64", | |
"cp34-abi3-manylinux2014_x86_64", | |
"cp34-abi3-manylinux_2_16_x86_64", | |
"cp34-abi3-manylinux_2_15_x86_64", | |
"cp34-abi3-manylinux_2_14_x86_64", | |
"cp34-abi3-manylinux_2_13_x86_64", | |
"cp34-abi3-manylinux_2_12_x86_64", | |
"cp34-abi3-manylinux2010_x86_64", | |
"cp34-abi3-manylinux_2_11_x86_64", | |
"cp34-abi3-manylinux_2_10_x86_64", | |
"cp34-abi3-manylinux_2_9_x86_64", | |
"cp34-abi3-manylinux_2_8_x86_64", | |
"cp34-abi3-manylinux_2_7_x86_64", | |
"cp34-abi3-manylinux_2_6_x86_64", | |
"cp34-abi3-manylinux_2_5_x86_64", | |
"cp34-abi3-manylinux1_x86_64", | |
"cp34-abi3-linux_x86_64", | |
"cp33-abi3-manylinux_2_26_x86_64", | |
"cp33-abi3-manylinux_2_25_x86_64", | |
"cp33-abi3-manylinux_2_24_x86_64", | |
"cp33-abi3-manylinux_2_23_x86_64", | |
"cp33-abi3-manylinux_2_22_x86_64", | |
"cp33-abi3-manylinux_2_21_x86_64", | |
"cp33-abi3-manylinux_2_20_x86_64", | |
"cp33-abi3-manylinux_2_19_x86_64", | |
"cp33-abi3-manylinux_2_18_x86_64", | |
"cp33-abi3-manylinux_2_17_x86_64", | |
"cp33-abi3-manylinux2014_x86_64", | |
"cp33-abi3-manylinux_2_16_x86_64", | |
"cp33-abi3-manylinux_2_15_x86_64", | |
"cp33-abi3-manylinux_2_14_x86_64", | |
"cp33-abi3-manylinux_2_13_x86_64", | |
"cp33-abi3-manylinux_2_12_x86_64", | |
"cp33-abi3-manylinux2010_x86_64", | |
"cp33-abi3-manylinux_2_11_x86_64", | |
"cp33-abi3-manylinux_2_10_x86_64", | |
"cp33-abi3-manylinux_2_9_x86_64", | |
"cp33-abi3-manylinux_2_8_x86_64", | |
"cp33-abi3-manylinux_2_7_x86_64", | |
"cp33-abi3-manylinux_2_6_x86_64", | |
"cp33-abi3-manylinux_2_5_x86_64", | |
"cp33-abi3-manylinux1_x86_64", | |
"cp33-abi3-linux_x86_64", | |
"cp32-abi3-manylinux_2_26_x86_64", | |
"cp32-abi3-manylinux_2_25_x86_64", | |
"cp32-abi3-manylinux_2_24_x86_64", | |
"cp32-abi3-manylinux_2_23_x86_64", | |
"cp32-abi3-manylinux_2_22_x86_64", | |
"cp32-abi3-manylinux_2_21_x86_64", | |
"cp32-abi3-manylinux_2_20_x86_64", | |
"cp32-abi3-manylinux_2_19_x86_64", | |
"cp32-abi3-manylinux_2_18_x86_64", | |
"cp32-abi3-manylinux_2_17_x86_64", | |
"cp32-abi3-manylinux2014_x86_64", | |
"cp32-abi3-manylinux_2_16_x86_64", | |
"cp32-abi3-manylinux_2_15_x86_64", | |
"cp32-abi3-manylinux_2_14_x86_64", | |
"cp32-abi3-manylinux_2_13_x86_64", | |
"cp32-abi3-manylinux_2_12_x86_64", | |
"cp32-abi3-manylinux2010_x86_64", | |
"cp32-abi3-manylinux_2_11_x86_64", | |
"cp32-abi3-manylinux_2_10_x86_64", | |
"cp32-abi3-manylinux_2_9_x86_64", | |
"cp32-abi3-manylinux_2_8_x86_64", | |
"cp32-abi3-manylinux_2_7_x86_64", | |
"cp32-abi3-manylinux_2_6_x86_64", | |
"cp32-abi3-manylinux_2_5_x86_64", | |
"cp32-abi3-manylinux1_x86_64", | |
"cp32-abi3-linux_x86_64", | |
"py39-none-manylinux_2_26_x86_64", | |
"py39-none-manylinux_2_25_x86_64", | |
"py39-none-manylinux_2_24_x86_64", | |
"py39-none-manylinux_2_23_x86_64", | |
"py39-none-manylinux_2_22_x86_64", | |
"py39-none-manylinux_2_21_x86_64", | |
"py39-none-manylinux_2_20_x86_64", | |
"py39-none-manylinux_2_19_x86_64", | |
"py39-none-manylinux_2_18_x86_64", | |
"py39-none-manylinux_2_17_x86_64", | |
"py39-none-manylinux2014_x86_64", | |
"py39-none-manylinux_2_16_x86_64", | |
"py39-none-manylinux_2_15_x86_64", | |
"py39-none-manylinux_2_14_x86_64", | |
"py39-none-manylinux_2_13_x86_64", | |
"py39-none-manylinux_2_12_x86_64", | |
"py39-none-manylinux2010_x86_64", | |
"py39-none-manylinux_2_11_x86_64", | |
"py39-none-manylinux_2_10_x86_64", | |
"py39-none-manylinux_2_9_x86_64", | |
"py39-none-manylinux_2_8_x86_64", | |
"py39-none-manylinux_2_7_x86_64", | |
"py39-none-manylinux_2_6_x86_64", | |
"py39-none-manylinux_2_5_x86_64", | |
"py39-none-manylinux1_x86_64", | |
"py39-none-linux_x86_64", | |
"py3-none-manylinux_2_26_x86_64", | |
"py3-none-manylinux_2_25_x86_64", | |
"py3-none-manylinux_2_24_x86_64", | |
"py3-none-manylinux_2_23_x86_64", | |
"py3-none-manylinux_2_22_x86_64", | |
"py3-none-manylinux_2_21_x86_64", | |
"py3-none-manylinux_2_20_x86_64", | |
"py3-none-manylinux_2_19_x86_64", | |
"py3-none-manylinux_2_18_x86_64", | |
"py3-none-manylinux_2_17_x86_64", | |
"py3-none-manylinux2014_x86_64", | |
"py3-none-manylinux_2_16_x86_64", | |
"py3-none-manylinux_2_15_x86_64", | |
"py3-none-manylinux_2_14_x86_64", | |
"py3-none-manylinux_2_13_x86_64", | |
"py3-none-manylinux_2_12_x86_64", | |
"py3-none-manylinux2010_x86_64", | |
"py3-none-manylinux_2_11_x86_64", | |
"py3-none-manylinux_2_10_x86_64", | |
"py3-none-manylinux_2_9_x86_64", | |
"py3-none-manylinux_2_8_x86_64", | |
"py3-none-manylinux_2_7_x86_64", | |
"py3-none-manylinux_2_6_x86_64", | |
"py3-none-manylinux_2_5_x86_64", | |
"py3-none-manylinux1_x86_64", | |
"py3-none-linux_x86_64", | |
"py38-none-manylinux_2_26_x86_64", | |
"py38-none-manylinux_2_25_x86_64", | |
"py38-none-manylinux_2_24_x86_64", | |
"py38-none-manylinux_2_23_x86_64", | |
"py38-none-manylinux_2_22_x86_64", | |
"py38-none-manylinux_2_21_x86_64", | |
"py38-none-manylinux_2_20_x86_64", | |
"py38-none-manylinux_2_19_x86_64", | |
"py38-none-manylinux_2_18_x86_64", | |
"py38-none-manylinux_2_17_x86_64", | |
"py38-none-manylinux2014_x86_64", | |
"py38-none-manylinux_2_16_x86_64", | |
"py38-none-manylinux_2_15_x86_64", | |
"py38-none-manylinux_2_14_x86_64", | |
"py38-none-manylinux_2_13_x86_64", | |
"py38-none-manylinux_2_12_x86_64", | |
"py38-none-manylinux2010_x86_64", | |
"py38-none-manylinux_2_11_x86_64", | |
"py38-none-manylinux_2_10_x86_64", | |
"py38-none-manylinux_2_9_x86_64", | |
"py38-none-manylinux_2_8_x86_64", | |
"py38-none-manylinux_2_7_x86_64", | |
"py38-none-manylinux_2_6_x86_64", | |
"py38-none-manylinux_2_5_x86_64", | |
"py38-none-manylinux1_x86_64", | |
"py38-none-linux_x86_64", | |
"py37-none-manylinux_2_26_x86_64", | |
"py37-none-manylinux_2_25_x86_64", | |
"py37-none-manylinux_2_24_x86_64", | |
"py37-none-manylinux_2_23_x86_64", | |
"py37-none-manylinux_2_22_x86_64", | |
"py37-none-manylinux_2_21_x86_64", | |
"py37-none-manylinux_2_20_x86_64", | |
"py37-none-manylinux_2_19_x86_64", | |
"py37-none-manylinux_2_18_x86_64", | |
"py37-none-manylinux_2_17_x86_64", | |
"py37-none-manylinux2014_x86_64", | |
"py37-none-manylinux_2_16_x86_64", | |
"py37-none-manylinux_2_15_x86_64", | |
"py37-none-manylinux_2_14_x86_64", | |
"py37-none-manylinux_2_13_x86_64", | |
"py37-none-manylinux_2_12_x86_64", | |
"py37-none-manylinux2010_x86_64", | |
"py37-none-manylinux_2_11_x86_64", | |
"py37-none-manylinux_2_10_x86_64", | |
"py37-none-manylinux_2_9_x86_64", | |
"py37-none-manylinux_2_8_x86_64", | |
"py37-none-manylinux_2_7_x86_64", | |
"py37-none-manylinux_2_6_x86_64", | |
"py37-none-manylinux_2_5_x86_64", | |
"py37-none-manylinux1_x86_64", | |
"py37-none-linux_x86_64", | |
"py36-none-manylinux_2_26_x86_64", | |
"py36-none-manylinux_2_25_x86_64", | |
"py36-none-manylinux_2_24_x86_64", | |
"py36-none-manylinux_2_23_x86_64", | |
"py36-none-manylinux_2_22_x86_64", | |
"py36-none-manylinux_2_21_x86_64", | |
"py36-none-manylinux_2_20_x86_64", | |
"py36-none-manylinux_2_19_x86_64", | |
"py36-none-manylinux_2_18_x86_64", | |
"py36-none-manylinux_2_17_x86_64", | |
"py36-none-manylinux2014_x86_64", | |
"py36-none-manylinux_2_16_x86_64", | |
"py36-none-manylinux_2_15_x86_64", | |
"py36-none-manylinux_2_14_x86_64", | |
"py36-none-manylinux_2_13_x86_64", | |
"py36-none-manylinux_2_12_x86_64", | |
"py36-none-manylinux2010_x86_64", | |
"py36-none-manylinux_2_11_x86_64", | |
"py36-none-manylinux_2_10_x86_64", | |
"py36-none-manylinux_2_9_x86_64", | |
"py36-none-manylinux_2_8_x86_64", | |
"py36-none-manylinux_2_7_x86_64", | |
"py36-none-manylinux_2_6_x86_64", | |
"py36-none-manylinux_2_5_x86_64", | |
"py36-none-manylinux1_x86_64", | |
"py36-none-linux_x86_64", | |
"py35-none-manylinux_2_26_x86_64", | |
"py35-none-manylinux_2_25_x86_64", | |
"py35-none-manylinux_2_24_x86_64", | |
"py35-none-manylinux_2_23_x86_64", | |
"py35-none-manylinux_2_22_x86_64", | |
"py35-none-manylinux_2_21_x86_64", | |
"py35-none-manylinux_2_20_x86_64", | |
"py35-none-manylinux_2_19_x86_64", | |
"py35-none-manylinux_2_18_x86_64", | |
"py35-none-manylinux_2_17_x86_64", | |
"py35-none-manylinux2014_x86_64", | |
"py35-none-manylinux_2_16_x86_64", | |
"py35-none-manylinux_2_15_x86_64", | |
"py35-none-manylinux_2_14_x86_64", | |
"py35-none-manylinux_2_13_x86_64", | |
"py35-none-manylinux_2_12_x86_64", | |
"py35-none-manylinux2010_x86_64", | |
"py35-none-manylinux_2_11_x86_64", | |
"py35-none-manylinux_2_10_x86_64", | |
"py35-none-manylinux_2_9_x86_64", | |
"py35-none-manylinux_2_8_x86_64", | |
"py35-none-manylinux_2_7_x86_64", | |
"py35-none-manylinux_2_6_x86_64", | |
"py35-none-manylinux_2_5_x86_64", | |
"py35-none-manylinux1_x86_64", | |
"py35-none-linux_x86_64", | |
"py34-none-manylinux_2_26_x86_64", | |
"py34-none-manylinux_2_25_x86_64", | |
"py34-none-manylinux_2_24_x86_64", | |
"py34-none-manylinux_2_23_x86_64", | |
"py34-none-manylinux_2_22_x86_64", | |
"py34-none-manylinux_2_21_x86_64", | |
"py34-none-manylinux_2_20_x86_64", | |
"py34-none-manylinux_2_19_x86_64", | |
"py34-none-manylinux_2_18_x86_64", | |
"py34-none-manylinux_2_17_x86_64", | |
"py34-none-manylinux2014_x86_64", | |
"py34-none-manylinux_2_16_x86_64", | |
"py34-none-manylinux_2_15_x86_64", | |
"py34-none-manylinux_2_14_x86_64", | |
"py34-none-manylinux_2_13_x86_64", | |
"py34-none-manylinux_2_12_x86_64", | |
"py34-none-manylinux2010_x86_64", | |
"py34-none-manylinux_2_11_x86_64", | |
"py34-none-manylinux_2_10_x86_64", | |
"py34-none-manylinux_2_9_x86_64", | |
"py34-none-manylinux_2_8_x86_64", | |
"py34-none-manylinux_2_7_x86_64", | |
"py34-none-manylinux_2_6_x86_64", | |
"py34-none-manylinux_2_5_x86_64", | |
"py34-none-manylinux1_x86_64", | |
"py34-none-linux_x86_64", | |
"py33-none-manylinux_2_26_x86_64", | |
"py33-none-manylinux_2_25_x86_64", | |
"py33-none-manylinux_2_24_x86_64", | |
"py33-none-manylinux_2_23_x86_64", | |
"py33-none-manylinux_2_22_x86_64", | |
"py33-none-manylinux_2_21_x86_64", | |
"py33-none-manylinux_2_20_x86_64", | |
"py33-none-manylinux_2_19_x86_64", | |
"py33-none-manylinux_2_18_x86_64", | |
"py33-none-manylinux_2_17_x86_64", | |
"py33-none-manylinux2014_x86_64", | |
"py33-none-manylinux_2_16_x86_64", | |
"py33-none-manylinux_2_15_x86_64", | |
"py33-none-manylinux_2_14_x86_64", | |
"py33-none-manylinux_2_13_x86_64", | |
"py33-none-manylinux_2_12_x86_64", | |
"py33-none-manylinux2010_x86_64", | |
"py33-none-manylinux_2_11_x86_64", | |
"py33-none-manylinux_2_10_x86_64", | |
"py33-none-manylinux_2_9_x86_64", | |
"py33-none-manylinux_2_8_x86_64", | |
"py33-none-manylinux_2_7_x86_64", | |
"py33-none-manylinux_2_6_x86_64", | |
"py33-none-manylinux_2_5_x86_64", | |
"py33-none-manylinux1_x86_64", | |
"py33-none-linux_x86_64", | |
"py32-none-manylinux_2_26_x86_64", | |
"py32-none-manylinux_2_25_x86_64", | |
"py32-none-manylinux_2_24_x86_64", | |
"py32-none-manylinux_2_23_x86_64", | |
"py32-none-manylinux_2_22_x86_64", | |
"py32-none-manylinux_2_21_x86_64", | |
"py32-none-manylinux_2_20_x86_64", | |
"py32-none-manylinux_2_19_x86_64", | |
"py32-none-manylinux_2_18_x86_64", | |
"py32-none-manylinux_2_17_x86_64", | |
"py32-none-manylinux2014_x86_64", | |
"py32-none-manylinux_2_16_x86_64", | |
"py32-none-manylinux_2_15_x86_64", | |
"py32-none-manylinux_2_14_x86_64", | |
"py32-none-manylinux_2_13_x86_64", | |
"py32-none-manylinux_2_12_x86_64", | |
"py32-none-manylinux2010_x86_64", | |
"py32-none-manylinux_2_11_x86_64", | |
"py32-none-manylinux_2_10_x86_64", | |
"py32-none-manylinux_2_9_x86_64", | |
"py32-none-manylinux_2_8_x86_64", | |
"py32-none-manylinux_2_7_x86_64", | |
"py32-none-manylinux_2_6_x86_64", | |
"py32-none-manylinux_2_5_x86_64", | |
"py32-none-manylinux1_x86_64", | |
"py32-none-linux_x86_64", | |
"py31-none-manylinux_2_26_x86_64", | |
"py31-none-manylinux_2_25_x86_64", | |
"py31-none-manylinux_2_24_x86_64", | |
"py31-none-manylinux_2_23_x86_64", | |
"py31-none-manylinux_2_22_x86_64", | |
"py31-none-manylinux_2_21_x86_64", | |
"py31-none-manylinux_2_20_x86_64", | |
"py31-none-manylinux_2_19_x86_64", | |
"py31-none-manylinux_2_18_x86_64", | |
"py31-none-manylinux_2_17_x86_64", | |
"py31-none-manylinux2014_x86_64", | |
"py31-none-manylinux_2_16_x86_64", | |
"py31-none-manylinux_2_15_x86_64", | |
"py31-none-manylinux_2_14_x86_64", | |
"py31-none-manylinux_2_13_x86_64", | |
"py31-none-manylinux_2_12_x86_64", | |
"py31-none-manylinux2010_x86_64", | |
"py31-none-manylinux_2_11_x86_64", | |
"py31-none-manylinux_2_10_x86_64", | |
"py31-none-manylinux_2_9_x86_64", | |
"py31-none-manylinux_2_8_x86_64", | |
"py31-none-manylinux_2_7_x86_64", | |
"py31-none-manylinux_2_6_x86_64", | |
"py31-none-manylinux_2_5_x86_64", | |
"py31-none-manylinux1_x86_64", | |
"py31-none-linux_x86_64", | |
"py30-none-manylinux_2_26_x86_64", | |
"py30-none-manylinux_2_25_x86_64", | |
"py30-none-manylinux_2_24_x86_64", | |
"py30-none-manylinux_2_23_x86_64", | |
"py30-none-manylinux_2_22_x86_64", | |
"py30-none-manylinux_2_21_x86_64", | |
"py30-none-manylinux_2_20_x86_64", | |
"py30-none-manylinux_2_19_x86_64", | |
"py30-none-manylinux_2_18_x86_64", | |
"py30-none-manylinux_2_17_x86_64", | |
"py30-none-manylinux2014_x86_64", | |
"py30-none-manylinux_2_16_x86_64", | |
"py30-none-manylinux_2_15_x86_64", | |
"py30-none-manylinux_2_14_x86_64", | |
"py30-none-manylinux_2_13_x86_64", | |
"py30-none-manylinux_2_12_x86_64", | |
"py30-none-manylinux2010_x86_64", | |
"py30-none-manylinux_2_11_x86_64", | |
"py30-none-manylinux_2_10_x86_64", | |
"py30-none-manylinux_2_9_x86_64", | |
"py30-none-manylinux_2_8_x86_64", | |
"py30-none-manylinux_2_7_x86_64", | |
"py30-none-manylinux_2_6_x86_64", | |
"py30-none-manylinux_2_5_x86_64", | |
"py30-none-manylinux1_x86_64", | |
"py30-none-linux_x86_64", | |
"py39-none-any", | |
"py3-none-any", | |
"py38-none-any", | |
"py37-none-any", | |
"py36-none-any", | |
"py35-none-any", | |
"py34-none-any", | |
"py33-none-any", | |
"py32-none-any", | |
"py31-none-any", | |
"py30-none-any" | |
], | |
"marker_environment": { | |
"implementation_name": "cpython", | |
"implementation_version": "3.9.11", | |
"os_name": "posix", | |
"platform_machine": "x86_64", | |
"platform_python_implementation": "CPython", | |
"platform_release": "4.14.255-273-220.498.amzn2.x86_64", | |
"platform_system": "Linux", | |
"platform_version": "#1 SMP Tue Mar 29 00:40:11 UTC 2022", | |
"python_full_version": "3.9.11", | |
"python_version": "3.9", | |
"sys_platform": "linux" | |
} | |
} |
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
import cryptography | |
def handler(e, c): | |
pass |
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
#!/usr/bin/env bash | |
# Copyright 2020 Pants project contributors (see CONTRIBUTORS.md). | |
# Licensed under the Apache License, Version 2.0 (see LICENSE). | |
# =============================== NOTE =============================== | |
# This ./pants bootstrap script comes from the pantsbuild/setup | |
# project. It is intended to be checked into your code repository so | |
# that other developers have the same setup. | |
# | |
# Learn more here: https://www.pantsbuild.org/docs/installation | |
# ==================================================================== | |
set -eou pipefail | |
# an arbitrary number: bump when there's a change that someone might want to query for | |
# (e.g. checking $(PANTS_BOOTSTRAP_TOOLS=1 ./pants version) >= ...) | |
SCRIPT_VERSION=1 | |
# Source any custom bootstrap settings for Pants from PANTS_BOOTSTRAP if it exists. | |
: ${PANTS_BOOTSTRAP:=".pants.bootstrap"} | |
if [[ -f "${PANTS_BOOTSTRAP}" ]]; then | |
source "${PANTS_BOOTSTRAP}" | |
fi | |
# NOTE: To use an unreleased version of Pants from the pantsbuild/pants main branch, | |
# locate the main branch SHA, set PANTS_SHA=<SHA> in the environment, and run this script as usual. | |
# | |
# E.g., PANTS_SHA=725fdaf504237190f6787dda3d72c39010a4c574 ./pants --version | |
# | |
# You can also use PANTS_VERSION=<VERSION> to override the config version that is in the pants.toml file. | |
# | |
# E.g., PANTS_VERSION=2.13.0 ./pants --version | |
PYTHON_BIN_NAME="${PYTHON:-unspecified}" | |
# Set this to specify a non-standard location for this script to read the Pants version from. | |
# NB: This will *not* cause Pants itself to use this location as a config file. | |
# You can use PANTS_CONFIG_FILES or --pants-config-files to do so. | |
PANTS_TOML=${PANTS_TOML:-pants.toml} | |
PANTS_BIN_NAME="${PANTS_BIN_NAME:-$0}" | |
PANTS_SETUP_CACHE="${PANTS_SETUP_CACHE:-${XDG_CACHE_HOME:-$HOME/.cache}/pants/setup}" | |
# If given a relative path, we fix it to be absolute. | |
if [[ "$PANTS_SETUP_CACHE" != /* ]]; then | |
PANTS_SETUP_CACHE="${PWD}/${PANTS_SETUP_CACHE}" | |
fi | |
PANTS_BOOTSTRAP="${PANTS_SETUP_CACHE}/bootstrap-$(uname -s)-$(uname -m)" | |
_PEX_VERSION=2.1.103 | |
_PEX_URL="https://github.com/pantsbuild/pex/releases/download/v${_PEX_VERSION}/pex" | |
_PEX_EXPECTED_SHA256="4d45336511484100ae4e2bab24542a8b86b12c8cb89230463593c60d08c4b8d3" | |
VIRTUALENV_VERSION=20.4.7 | |
VIRTUALENV_REQUIREMENTS=$( | |
cat << EOF | |
virtualenv==${VIRTUALENV_VERSION} --hash sha256:2b0126166ea7c9c3661f5b8e06773d28f83322de7a3ff7d06f0aed18c9de6a76 | |
filelock==3.0.12 --hash sha256:929b7d63ec5b7d6b71b0fa5ac14e030b3f70b75747cef1b10da9b879fef15836 | |
six==1.16.0 --hash sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 | |
distlib==0.3.2 --hash sha256:23e223426b28491b1ced97dc3bbe183027419dfc7982b4fa2f05d5f3ff10711c | |
appdirs==1.4.4 --hash sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128 | |
importlib-resources==5.1.4; python_version < "3.7" --hash sha256:e962bff7440364183203d179d7ae9ad90cb1f2b74dcb84300e88ecc42dca3351 | |
importlib-metadata==4.5.0; python_version < "3.8" --hash sha256:833b26fb89d5de469b24a390e9df088d4e52e4ba33b01dc5e0e4f41b81a16c00 | |
zipp==3.4.1; python_version < "3.10" --hash sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098 | |
typing-extensions==3.10.0.0; python_version < "3.8" --hash sha256:779383f6086d90c99ae41cf0ff39aac8a7937a9283ce0a414e5dd782f4c94a84 | |
EOF | |
) | |
COLOR_RED="\x1b[31m" | |
COLOR_GREEN="\x1b[32m" | |
COLOR_YELLOW="\x1b[33m" | |
COLOR_RESET="\x1b[0m" | |
INSTALL_URL="https://www.pantsbuild.org/docs/installation" | |
function log() { | |
echo -e "$@" 1>&2 | |
} | |
function die() { | |
(($# > 0)) && log "${COLOR_RED}$*${COLOR_RESET}" | |
exit 1 | |
} | |
function green() { | |
(($# > 0)) && log "${COLOR_GREEN}$*${COLOR_RESET}" | |
} | |
function warn() { | |
(($# > 0)) && log "${COLOR_YELLOW}$*${COLOR_RESET}" | |
} | |
function tempdir { | |
mkdir -p "$1" | |
mktemp -d "$1"/pants.XXXXXX | |
} | |
function get_exe_path_or_die { | |
local exe="$1" | |
if ! command -v "${exe}"; then | |
die "Could not find ${exe}. Please ensure ${exe} is on your PATH." | |
fi | |
} | |
function get_pants_config_string_value { | |
local config_key="$1" | |
local optional_space="[[:space:]]*" | |
local prefix="^${config_key}${optional_space}=${optional_space}" | |
local raw_value | |
raw_value="$(sed -ne "/${prefix}/ s|${prefix}||p" "${PANTS_TOML}")" | |
local optional_suffix="${optional_space}(#.*)?$" | |
echo "${raw_value}" \ | |
| sed -E \ | |
-e "s|^'([^']*)'${optional_suffix}|\1|" \ | |
-e 's|^"([^"]*)"'"${optional_suffix}"'$|\1|' \ | |
&& return 0 | |
return 0 | |
} | |
function get_python_major_minor_version { | |
local python_exe="$1" | |
"$python_exe" <<EOF | |
import sys | |
major_minor_version = ''.join(str(version_num) for version_num in sys.version_info[0:2]) | |
print(major_minor_version) | |
EOF | |
} | |
# The high-level flow: | |
# | |
# 1.) Resolve the Pants version from config so that we know what interpreters we can use, what to name the venv, | |
# and what to install via pip. | |
# 2.) Resolve the Python interpreter, first reading from the env var $PYTHON, then using a default based on the Pants | |
# version. | |
# 3.) Check if the venv already exists via a naming convention, and create the venv if not found. | |
# 4.) Execute Pants with the resolved Python interpreter and venv. | |
# | |
# After that, Pants itself will handle making sure any requested plugins | |
# are installed and up to date. | |
function determine_pants_version { | |
if [ -n "${PANTS_SHA:-}" ]; then | |
# get_version_for_sha will echo the version, thus "returning" it from this function. | |
get_version_for_sha "$PANTS_SHA" | |
return | |
fi | |
if [ -n "${PANTS_VERSION:-}" ]; then | |
echo "${PANTS_VERSION}" | |
return | |
fi | |
pants_version="$(get_pants_config_string_value 'pants_version')" | |
if [[ -z "${pants_version}" ]]; then | |
die "Please explicitly specify the \`pants_version\` in your \`pants.toml\` under the \`[GLOBAL]\` scope. | |
See https://pypi.org/project/pantsbuild.pants/#history for all released versions | |
and ${INSTALL_URL} for more instructions." | |
fi | |
pants_major_version="$(echo "${pants_version}" | cut -d '.' -f1)" | |
pants_minor_version="$(echo "${pants_version}" | cut -d '.' -f2)" | |
# 1.26 is the first version to support `pants.toml`, so we fail eagerly if using an outdated version. | |
if [[ "${pants_major_version}" -eq 1 && "${pants_minor_version}" -le 25 ]]; then | |
die "This version of the \`./pants\` script does not work with Pants <= 1.25.0 (and it also requires using \`pants.toml\`, | |
rather than \`pants.ini\`). Instead, either upgrade your \`pants_version\` or use the version of the \`./pants\` script | |
at https://raw.githubusercontent.com/Eric-Arellano/setup/0d445edef57cb89fd830db70810e38f050b0a268/pants." | |
fi | |
echo "${pants_version}" | |
} | |
function set_supported_python_versions { | |
local pants_version="$1" | |
local pants_major_version | |
local pants_minor_version | |
pants_major_version="$(echo "${pants_version}" | cut -d '.' -f1)" | |
pants_minor_version="$(echo "${pants_version}" | cut -d '.' -f2)" | |
if [[ "${pants_major_version}" -eq 1 ]]; then | |
supported_python_versions_decimal=('3.6' '3.7' '3.8') | |
supported_python_versions_int=('36' '37' '38') | |
supported_message='3.6, 3.7, or 3.8' | |
elif [[ "${pants_major_version}" -eq 2 && "${pants_minor_version}" -eq 0 ]]; then | |
supported_python_versions_decimal=('3.6' '3.7' '3.8') | |
supported_python_versions_int=('36' '37' '38') | |
supported_message='3.6, 3.7, or 3.8' | |
elif [[ "${pants_major_version}" -eq 2 && "${pants_minor_version}" -eq 1 ]]; then | |
supported_python_versions_decimal=('3.7' '3.8' '3.6') | |
supported_python_versions_int=('37' '38' '36') | |
supported_message='3.7, 3.8, or 3.6 (deprecated)' | |
elif [[ "${pants_major_version}" -eq 2 && "${pants_minor_version}" -lt 5 ]]; then | |
supported_python_versions_decimal=('3.8' '3.7') | |
supported_python_versions_int=('38' '37') | |
supported_message='3.7 or 3.8' | |
else | |
# We put 3.9 first because Apple Silicon only works properly with Python 3.9, even though it's possible to have | |
# older Pythons installed. This makes it more likely that Pants will work out-of-the-box. | |
supported_python_versions_decimal=('3.9' '3.8' '3.7') | |
supported_python_versions_int=('39' '38' '37') | |
supported_message='3.7, 3.8, or 3.9' | |
fi | |
} | |
function check_python_exe_compatible_version { | |
local python_exe="$1" | |
local major_minor_version | |
major_minor_version="$(get_python_major_minor_version "${python_exe}")" | |
for valid_version in "${supported_python_versions_int[@]}"; do | |
if [[ "${major_minor_version}" == "${valid_version}" ]]; then | |
echo "${python_exe}" && return 0 | |
fi | |
done | |
} | |
function determine_default_python_exe { | |
for version in "${supported_python_versions_decimal[@]}" "3" ""; do | |
local interpreter_path | |
interpreter_path="$(command -v "python${version}")" | |
if [[ -z "${interpreter_path}" ]]; then | |
continue | |
fi | |
# Check if a version is shimmed by pyenv or asdf but not configured. | |
if ! "${interpreter_path}" --version >/dev/null 2>&1; then | |
continue | |
fi | |
if [[ -n "$(check_python_exe_compatible_version "${interpreter_path}")" ]]; then | |
echo "${interpreter_path}" && return 0 | |
fi | |
done | |
} | |
function determine_python_exe { | |
local pants_version="$1" | |
set_supported_python_versions "${pants_version}" | |
local requirement_str="For \`pants_version = \"${pants_version}\"\`, Pants requires Python ${supported_message} to run." | |
local python_exe | |
if [[ "${PYTHON_BIN_NAME}" != 'unspecified' ]]; then | |
python_exe="$(get_exe_path_or_die "${PYTHON_BIN_NAME}")" || exit 1 | |
if [[ -z "$(check_python_exe_compatible_version "${python_exe}")" ]]; then | |
die "Invalid Python interpreter version for ${python_exe}. ${requirement_str}" | |
fi | |
else | |
python_exe="$(determine_default_python_exe)" | |
if [[ -z "${python_exe}" ]]; then | |
die "No valid Python interpreter found. ${requirement_str} Please check that a valid interpreter is installed and on your \$PATH." | |
fi | |
fi | |
echo "${python_exe}" | |
} | |
function compute_sha256 { | |
local python="$1" | |
local path="$2" | |
"$python" <<EOF | |
import hashlib | |
hasher = hashlib.sha256() | |
with open('${path}', 'rb') as fp: | |
buf = fp.read() | |
hasher.update(buf) | |
print(hasher.hexdigest()) | |
EOF | |
} | |
# TODO(John Sirois): GC race loser tmp dirs leftover from bootstrap_XXX | |
# functions. Any tmp dir w/o a symlink pointing to it can go. | |
function bootstrap_pex { | |
local python="$1" | |
local bootstrapped="${PANTS_BOOTSTRAP}/pex-${_PEX_VERSION}/pex" | |
if [[ ! -f "${bootstrapped}" ]]; then | |
( | |
green "Downloading the Pex PEX." | |
mkdir -p "${PANTS_BOOTSTRAP}" | |
local staging_dir | |
staging_dir=$(tempdir "${PANTS_BOOTSTRAP}") | |
curl --proto "=https" \ | |
--tlsv1.2 \ | |
--silent \ | |
--location \ | |
-o "${staging_dir}/pex" \ | |
"${_PEX_URL}" | |
fingerprint="$(compute_sha256 "${python}" "${staging_dir}/pex")" | |
if [[ "${_PEX_EXPECTED_SHA256}" != "${fingerprint}" ]]; then | |
die "SHA256 of ${_PEX_URL} is not as expected. Aborting." | |
fi | |
green "SHA256 fingerprint of ${_PEX_URL} verified." | |
mkdir -p "$(dirname "${bootstrapped}")" | |
mv -f "${staging_dir}/pex" "${bootstrapped}" | |
rmdir "${staging_dir}" | |
) 1>&2 || exit 1 | |
fi | |
echo "${bootstrapped}" | |
} | |
function scrub_env_vars { | |
# Ensure the virtualenv PEX runs as shrink-wrapped. | |
# See: https://github.com/pantsbuild/setup/issues/105 | |
local -r pex_env_vars=(${!PEX_@}) | |
if [[ ! ${#pex_env_vars[@]} -eq 0 ]]; then | |
local -r pex_env_vars_to_scrub="${pex_env_vars[@]/PEX_ROOT}" | |
if [[ -n "${pex_env_vars_to_scrub[@]}" ]]; then | |
warn "Scrubbing ${pex_env_vars_to_scrub[@]}" | |
unset ${pex_env_vars_to_scrub[@]} | |
fi | |
fi | |
# Also ensure pip doesn't think packages on PYTHONPATH | |
# are already installed. | |
if [ -n "${PYTHONPATH:-}" ]; then | |
warn "Scrubbing PYTHONPATH" | |
unset PYTHONPATH | |
fi | |
} | |
function bootstrap_virtualenv { | |
local python="$1" | |
local bootstrapped="${PANTS_BOOTSTRAP}/virtualenv-${VIRTUALENV_VERSION}/virtualenv.pex" | |
if [[ ! -f "${bootstrapped}" ]]; then | |
( | |
green "Creating the virtualenv PEX." | |
pex_path="$(bootstrap_pex "${python}")" || exit 1 | |
mkdir -p "${PANTS_BOOTSTRAP}" | |
local staging_dir | |
staging_dir=$(tempdir "${PANTS_BOOTSTRAP}") | |
echo "${VIRTUALENV_REQUIREMENTS}" > "${staging_dir}/requirements.txt" | |
( | |
scrub_env_vars | |
"${python}" "${pex_path}" -r "${staging_dir}/requirements.txt" -c virtualenv -o "${staging_dir}/virtualenv.pex" | |
) | |
mkdir -p "$(dirname "${bootstrapped}")" | |
mv -f "${staging_dir}/virtualenv.pex" "${bootstrapped}" | |
rm -rf "${staging_dir}" | |
) 1>&2 || exit 1 | |
fi | |
echo "${bootstrapped}" | |
} | |
function find_links_url { | |
local pants_version="$1" | |
local pants_sha="$2" | |
echo -n "https://binaries.pantsbuild.org/wheels/pantsbuild.pants/${pants_sha}/${pants_version/+/%2B}/index.html" | |
} | |
function get_version_for_sha { | |
local sha="$1" | |
# Retrieve the Pants version associated with this commit. | |
local pants_version | |
pants_version="$(curl --proto "=https" \ | |
--tlsv1.2 \ | |
--fail \ | |
--silent \ | |
--location \ | |
"https://raw.githubusercontent.com/pantsbuild/pants/${sha}/src/python/pants/VERSION")" | |
# Construct the version as the release version from src/python/pants/VERSION, plus the string `+gitXXXXXXXX`, | |
# where the XXXXXXXX is the first 8 characters of the SHA. | |
echo "${pants_version}+git${sha:0:8}" | |
} | |
function bootstrap_pants { | |
local pants_version="$1" | |
local python="$2" | |
local pants_sha="${3:-}" | |
local pants_requirement="pantsbuild.pants==${pants_version}" | |
local maybe_find_links | |
if [[ -z "${pants_sha}" ]]; then | |
maybe_find_links="" | |
else | |
maybe_find_links="--find-links=$(find_links_url "${pants_version}" "${pants_sha}")" | |
fi | |
local python_major_minor_version | |
python_major_minor_version="$(get_python_major_minor_version "${python}")" | |
local target_folder_name="${pants_version}_py${python_major_minor_version}" | |
local bootstrapped="${PANTS_BOOTSTRAP}/${target_folder_name}" | |
if [[ ! -d "${bootstrapped}" ]]; then | |
( | |
green "Bootstrapping Pants using ${python}" | |
local staging_dir | |
staging_dir=$(tempdir "${PANTS_BOOTSTRAP}") | |
local virtualenv_path | |
virtualenv_path="$(bootstrap_virtualenv "${python}")" || exit 1 | |
green "Installing ${pants_requirement} into a virtual environment at ${bootstrapped}" | |
( | |
scrub_env_vars | |
# shellcheck disable=SC2086 | |
"${python}" "${virtualenv_path}" --quiet --no-download "${staging_dir}/install" && \ | |
# Grab the latest pip, but don't advance setuptools past 58 which drops support for the | |
# `setup` kwarg `use_2to3` which Pants 1.x sdist dependencies (pystache) use. | |
"${staging_dir}/install/bin/pip" install --quiet -U pip "setuptools<58" && \ | |
"${staging_dir}/install/bin/pip" install ${maybe_find_links} --quiet --progress-bar off "${pants_requirement}" | |
) && \ | |
ln -s "${staging_dir}/install" "${staging_dir}/${target_folder_name}" && \ | |
mv "${staging_dir}/${target_folder_name}" "${bootstrapped}" && \ | |
green "New virtual environment successfully created at ${bootstrapped}." | |
) 1>&2 || exit 1 | |
fi | |
echo "${bootstrapped}" | |
} | |
function run_bootstrap_tools { | |
# functionality for introspecting the bootstrapping process, without actually doing it | |
if [[ "${PANTS_BOOTSTRAP_TOOLS}" -gt "${SCRIPT_VERSION}" ]]; then | |
die "$0 script (bootstrap version ${SCRIPT_VERSION}) is too old for this invocation (with PANTS_BOOTSTRAP_TOOLS=${PANTS_BOOTSTRAP_TOOLS}). | |
Please update it by following ${INSTALL_URL}" | |
fi | |
case "${1:-}" in | |
bootstrap-cache-key) | |
local pants_version=$(determine_pants_version) | |
local python="$(determine_python_exe "${pants_version}")" | |
# the python above may be a shim (e.g. pyenv or homebrew), so let's get an estimate of the | |
# actual path, as will be symlinked in the virtualenv. (NB. virtualenv does more complicated | |
# things, but we at least emulate the symlink-resolution that it does.) | |
local python_executable_path="$("${python}" -c 'import os, sys; print(os.path.realpath(sys.executable))')" | |
local requirements_file="$(mktemp)" | |
echo "${VIRTUALENV_REQUIREMENTS}" > "${requirements_file}" | |
local virtualenv_requirements_sha256="$(compute_sha256 "${python}" "${requirements_file}")" | |
rm "${requirements_file}" | |
local parts=( | |
"os_name=$(uname -s)" | |
"arch=$(uname -m)" | |
"python_path=${python}" | |
"python_executable_path=${python_executable_path}" | |
# the full interpreter information, for maximum compatibility | |
"python_version=$("$python" --version)" | |
"pex_version=${_PEX_VERSION}" | |
"virtualenv_requirements_sha256=${virtualenv_requirements_sha256}" | |
"pants_version=${pants_version}" | |
) | |
echo "${parts[*]}" | |
;; | |
bootstrap-version) | |
echo "${SCRIPT_VERSION}" | |
;; | |
help|"") | |
cat <<EOF | |
Usage: PANTS_BOOTSTRAP_TOOLS=1 $0 ... | |
Subcommands: | |
bootstrap-cache-key | |
Print an opaque that can be used as a key for accurate and safe caching of | |
the pants bootstrap directories. | |
(Added in bootstrap version 1.) | |
bootstrap-version | |
Print a version number for the bootstrap script itself. | |
Distributed scripts (such as reusable CI formulae) that use these bootstrap | |
tools should set PANTS_BOOTSTRAP_TOOLS to the minimum script version for the | |
features they require. For example, if 'some-tool' was added in version 123: | |
PANTS_BOOTSTRAP_TOOLS=123 ./pants some-tool | |
(Added in bootstrap version 1.) | |
EOF | |
;; | |
*) | |
die "Unknown subcommand for bootstrap tools: $1. Do you mean to run without PANTS_BOOTSTRAP_TOOLS=1? Or, update this script ($INSTALL_URL)?" | |
esac | |
} | |
if [[ "${PANTS_BOOTSTRAP_TOOLS:-}" -gt 0 ]]; then | |
run_bootstrap_tools "$@" | |
exit 0 | |
fi | |
# Ensure we operate from the context of the ./pants buildroot. | |
cd "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" | |
pants_version="$(determine_pants_version)" | |
python="$(determine_python_exe "${pants_version}")" | |
pants_dir="$(bootstrap_pants "${pants_version}" "${python}" "${PANTS_SHA:-}")" || exit 1 | |
pants_python="${pants_dir}/bin/python" | |
pants_binary="${pants_dir}/bin/pants" | |
pants_extra_args="" | |
if [[ -n "${PANTS_SHA:-}" ]]; then | |
pants_extra_args="${pants_extra_args} --python-repos-repos=$(find_links_url "$pants_version" "$PANTS_SHA")" | |
fi | |
# shellcheck disable=SC2086 | |
exec "${pants_python}" "${pants_binary}" ${pants_extra_args} \ | |
--pants-bin-name="${PANTS_BIN_NAME}" --pants-version=${pants_version} "$@" |
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
[GLOBAL] | |
pants_version = "2.14.0" | |
backend_packages = [ | |
"pants.backend.python", | |
"pants.backend.awslambda.python", | |
] | |
[python] | |
interpreter_constraints = ["CPython>=3.8.0"] | |
enable_resolves = true | |
[python.resolves] | |
python-default = "python-default.lock" | |
[anonymous-telemetry] | |
enabled = false |
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
// This lockfile was autogenerated by Pants. To regenerate, run: | |
// | |
// ./pants generate-lockfiles --resolve=python-default | |
// | |
// --- BEGIN PANTS LOCKFILE METADATA: DO NOT EDIT OR REMOVE --- | |
// { | |
// "version": 3, | |
// "valid_for_interpreter_constraints": [ | |
// "CPython>=3.8.0" | |
// ], | |
// "generated_with_requirements": [ | |
// "cryptography==38.0.3" | |
// ], | |
// "manylinux": "manylinux2014", | |
// "requirement_constraints": [], | |
// "only_binary": [], | |
// "no_binary": [] | |
// } | |
// --- END PANTS LOCKFILE METADATA --- | |
{ | |
"allow_builds": true, | |
"allow_prereleases": false, | |
"allow_wheels": true, | |
"build_isolation": true, | |
"constraints": [], | |
"locked_resolves": [ | |
{ | |
"locked_requirements": [ | |
{ | |
"artifacts": [ | |
{ | |
"algorithm": "sha256", | |
"hash": "98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3", | |
"url": "https://files.pythonhosted.org/packages/da/ff/ab939e2c7b3f40d851c0f7192c876f1910f3442080c9c846532993ec3cef/cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e", | |
"url": "https://files.pythonhosted.org/packages/0e/65/0d7b5dad821ced4dcd43f96a362905a68ce71e6b5f5cfd2fada867840582/cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9", | |
"url": "https://files.pythonhosted.org/packages/10/72/617ee266192223a38b67149c830bd9376b69cf3551e1477abc72ff23ef8e/cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585", | |
"url": "https://files.pythonhosted.org/packages/18/8f/5ff70c7458d61fa8a9752e5ee9c9984c601b0060aae0c619316a1e1f1ee5/cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a", | |
"url": "https://files.pythonhosted.org/packages/22/c6/df826563f55f7e9dd9a1d3617866282afa969fe0d57decffa1911f416ed8/cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac", | |
"url": "https://files.pythonhosted.org/packages/23/8b/2e8c2469eaf89f7273ac685164949a7e644cdfe5daf1c036564208c3d26b/cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9", | |
"url": "https://files.pythonhosted.org/packages/2b/a8/050ab4f0c3d4c1b8aaa805f70e26e84d0e27004907c5b8ecc1d31815f92a/cffi-1.15.1.tar.gz" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27", | |
"url": "https://files.pythonhosted.org/packages/2d/86/3ca57cddfa0419f6a95d1c8478f8f622ba597e3581fd501bbb915b20eb75/cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01", | |
"url": "https://files.pythonhosted.org/packages/32/bd/d0809593f7976828f06a492716fbcbbfb62798bbf60ea1f65200b8d49901/cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c", | |
"url": "https://files.pythonhosted.org/packages/37/5a/c37631a86be838bdd84cc0259130942bf7e6e32f70f4cab95f479847fb91/cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0", | |
"url": "https://files.pythonhosted.org/packages/3a/75/a162315adeaf47e94a3b7f886a8e31d77b9e525a387eef2d6f0efc96a7c8/cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325", | |
"url": "https://files.pythonhosted.org/packages/5d/4e/4e0bb5579b01fdbfd4388bd1eb9394a989e1336203a4b7f700d887b233c1/cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef", | |
"url": "https://files.pythonhosted.org/packages/71/d7/0fe0d91b0bbf610fb7254bb164fa8931596e660d62e90fb6289b7ee27b09/cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d", | |
"url": "https://files.pythonhosted.org/packages/77/b7/d3618d612be01e184033eab90006f8ca5b5edafd17bf247439ea4e167d8a/cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02", | |
"url": "https://files.pythonhosted.org/packages/79/4b/33494eb0adbcd884656c48f6db0c98ad8a5c678fb8fb5ed41ab546b04d8c/cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415", | |
"url": "https://files.pythonhosted.org/packages/85/1f/a3c533f8d377da5ca7edb4f580cc3edc1edbebc45fac8bb3ae60f1176629/cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3", | |
"url": "https://files.pythonhosted.org/packages/87/4b/64e8bd9d15d6b22b6cb11997094fbe61edf453ea0a97c8675cb7d1c3f06f/cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4", | |
"url": "https://files.pythonhosted.org/packages/88/89/c34caf63029fb7628ec2ebd5c88ae0c9bd17db98c812e4065a4d020ca41f/cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c", | |
"url": "https://files.pythonhosted.org/packages/91/bc/b7723c2fe7a22eee71d7edf2102cd43423d5f95ff3932ebaa2f82c7ec8d0/cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984", | |
"url": "https://files.pythonhosted.org/packages/a9/ba/e082df21ebaa9cb29f2c4e1d7e49a29b90fcd667d43632c6674a16d65382/cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e", | |
"url": "https://files.pythonhosted.org/packages/aa/02/ab15b3aa572759df752491d5fa0f74128cd14e002e8e3257c1ab1587810b/cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76", | |
"url": "https://files.pythonhosted.org/packages/ad/26/7b3a73ab7d82a64664c7c4ea470e4ec4a3c73bb4f02575c543a41e272de5/cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35", | |
"url": "https://files.pythonhosted.org/packages/af/cb/53b7bba75a18372d57113ba934b27d0734206c283c1dfcc172347fbd9f76/cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f", | |
"url": "https://files.pythonhosted.org/packages/af/da/9441d56d7dd19d07dcc40a2a5031a1f51c82a27cee3705edf53dadcac398/cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192", | |
"url": "https://files.pythonhosted.org/packages/b7/8b/06f30caa03b5b3ac006de4f93478dbd0239e2a16566d81a106c322dc4f79/cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5", | |
"url": "https://files.pythonhosted.org/packages/c1/25/16a082701378170559bb1d0e9ef2d293cece8dc62913d79351beb34c5ddf/cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8", | |
"url": "https://files.pythonhosted.org/packages/d3/56/3e94aa719ae96eeda8b68b3ec6e347e0a23168c6841dc276ccdcdadc9f32/cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca", | |
"url": "https://files.pythonhosted.org/packages/df/02/aef53d4aa43154b829e9707c8c60bab413cd21819c4a36b0d7aaa83e2a61/cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21", | |
"url": "https://files.pythonhosted.org/packages/e8/ff/c4b7a358526f231efa46a375c959506c87622fb4a2c5726e827c55e6adf2/cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185", | |
"url": "https://files.pythonhosted.org/packages/ea/be/c4ad40ad441ac847b67c7a37284ae3c58f39f3e638c6b0f85fb662233825/cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd", | |
"url": "https://files.pythonhosted.org/packages/ed/a3/c5f01988ddb70a187c3e6112152e01696188c9f8a4fa4c68aa330adbb179/cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc", | |
"url": "https://files.pythonhosted.org/packages/ef/41/19da352d341963d29a33bdb28433ba94c05672fb16155f794fad3fd907b0/cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83", | |
"url": "https://files.pythonhosted.org/packages/f9/96/fc9e118c47b7adc45a0676f413b4a47554e5f3b6c99b8607ec9726466ef1/cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl" | |
} | |
], | |
"project_name": "cffi", | |
"requires_dists": [ | |
"pycparser" | |
], | |
"requires_python": null, | |
"version": "1.15.1" | |
}, | |
{ | |
"artifacts": [ | |
{ | |
"algorithm": "sha256", | |
"hash": "8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548", | |
"url": "https://files.pythonhosted.org/packages/21/93/42b15190db404235240bcebc699627489dea2948c1fb7593f0bf0804742f/cryptography-38.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd", | |
"url": "https://files.pythonhosted.org/packages/13/dd/a9608b7aebe5d2dc0c98a4b2090a6b815628efa46cc1c046b89d8cd25f4c/cryptography-38.0.3.tar.gz" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f", | |
"url": "https://files.pythonhosted.org/packages/1e/da/7fcb7ac1caf8f7bb3f8099bf0075595ea681ab7c8fb82cfd2bd148cb3100/cryptography-38.0.3-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d", | |
"url": "https://files.pythonhosted.org/packages/33/f9/46f91a7540e1980e5875b7f3834b5374034ccc6a61a1e23e1f84f788ef1b/cryptography-38.0.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2", | |
"url": "https://files.pythonhosted.org/packages/37/19/234484df6fc7bdf4cf81cd4a89f600fce9f8f7a4bc1b307d7abbcd382b64/cryptography-38.0.3-cp36-abi3-manylinux_2_24_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7", | |
"url": "https://files.pythonhosted.org/packages/53/13/a591627202c23c5d067f615e825e56e838300ac525e0c90d1d04d48a45df/cryptography-38.0.3-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0", | |
"url": "https://files.pythonhosted.org/packages/57/68/5fe4461ce8c0611eb09452e613512e1ddf62afcafc1ef4003d26345b3efe/cryptography-38.0.3-cp36-abi3-manylinux_2_28_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748", | |
"url": "https://files.pythonhosted.org/packages/6a/a6/45d1b0bea677172e3d50e02566fa6c9df813306765e6bc71ca551b3d1432/cryptography-38.0.3-cp36-abi3-musllinux_1_1_aarch64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c", | |
"url": "https://files.pythonhosted.org/packages/6f/bd/c0459289c3ede4102ff65b6dda437c5b23833c360f0cf2b89a1c4a24f764/cryptography-38.0.3-cp36-abi3-manylinux_2_28_aarch64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249", | |
"url": "https://files.pythonhosted.org/packages/af/bf/f6cd81c30692f7c88689871fc57b961ba50d9d1294fa6b4dfa193375a626/cryptography-38.0.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0", | |
"url": "https://files.pythonhosted.org/packages/b9/51/668f9268a48927b2bc415167b3bf7476be9319d78c9f21c38c3b7ba8b4e8/cryptography-38.0.3-pp39-pypy39_pp73-macosx_10_10_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436", | |
"url": "https://files.pythonhosted.org/packages/b9/88/9f0999bb69731613319e26b4b2ba7d1c6a6b7f25291c0c1372bf110f6b14/cryptography-38.0.3-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959", | |
"url": "https://files.pythonhosted.org/packages/bd/b4/2f8532124bda7470af31b6d9322b5bbb74e3bde94030f9b3a88450f12c8e/cryptography-38.0.3-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146", | |
"url": "https://files.pythonhosted.org/packages/bf/96/bad32526aedc42309ef0eb5193a2802971dec3d088a49988d7fa326d7214/cryptography-38.0.3-cp36-abi3-musllinux_1_1_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8", | |
"url": "https://files.pythonhosted.org/packages/c0/90/1f9d8b11739dd43e2453ba7f733cbd2779f908da0eed1d64f9bbe90f3316/cryptography-38.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828", | |
"url": "https://files.pythonhosted.org/packages/c1/39/ff2c4dbddf50d79118a14eaba170ad80b65127201a566c359f76ffa34625/cryptography-38.0.3-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722", | |
"url": "https://files.pythonhosted.org/packages/da/d0/af5cb66a892ec8a39d3089801fd8333fef5c335c33277591ef956ee1eba9/cryptography-38.0.3-cp36-abi3-macosx_10_10_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36", | |
"url": "https://files.pythonhosted.org/packages/ee/a7/dfa6e33efa9f7448554560d4e7debf5cefbbdc9bc677c13824a0bc777d78/cryptography-38.0.3-pp38-pypy38_pp73-macosx_10_10_x86_64.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320", | |
"url": "https://files.pythonhosted.org/packages/fe/44/e5f4e5040491130f58d3ffbc3d21e917cced3e13faa126530109c18dee2e/cryptography-38.0.3-cp36-abi3-macosx_10_10_universal2.whl" | |
} | |
], | |
"project_name": "cryptography", | |
"requires_dists": [ | |
"bcrypt>=3.1.5; extra == \"ssh\"", | |
"black; extra == \"pep8test\"", | |
"cffi>=1.12", | |
"flake8-import-order; extra == \"pep8test\"", | |
"flake8; extra == \"pep8test\"", | |
"hypothesis!=3.79.2,>=1.11.4; extra == \"test\"", | |
"iso8601; extra == \"test\"", | |
"pep8-naming; extra == \"pep8test\"", | |
"pretend; extra == \"test\"", | |
"pyenchant>=1.6.11; extra == \"docstest\"", | |
"pytest-benchmark; extra == \"test\"", | |
"pytest-cov; extra == \"test\"", | |
"pytest-subtests; extra == \"test\"", | |
"pytest-xdist; extra == \"test\"", | |
"pytest>=6.2.0; extra == \"test\"", | |
"pytz; extra == \"test\"", | |
"setuptools-rust>=0.11.4; extra == \"sdist\"", | |
"sphinx!=1.8.0,!=3.1.0,!=3.1.1,>=1.6.5; extra == \"docs\"", | |
"sphinx-rtd-theme; extra == \"docs\"", | |
"sphinxcontrib-spelling>=4.0.1; extra == \"docstest\"", | |
"twine>=1.12.0; extra == \"docstest\"" | |
], | |
"requires_python": ">=3.6", | |
"version": "38.0.3" | |
}, | |
{ | |
"artifacts": [ | |
{ | |
"algorithm": "sha256", | |
"hash": "8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9", | |
"url": "https://files.pythonhosted.org/packages/62/d5/5f610ebe421e85889f2e55e33b7f9a6795bd982198517d912eb1c76e1a53/pycparser-2.21-py2.py3-none-any.whl" | |
}, | |
{ | |
"algorithm": "sha256", | |
"hash": "e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206", | |
"url": "https://files.pythonhosted.org/packages/5e/0b/95d387f5f4433cb0f53ff7ad859bd2c6051051cebbb564f139a999ab46de/pycparser-2.21.tar.gz" | |
} | |
], | |
"project_name": "pycparser", | |
"requires_dists": [], | |
"requires_python": "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7", | |
"version": "2.21" | |
} | |
], | |
"platform_tag": null | |
} | |
], | |
"path_mappings": {}, | |
"pex_version": "2.1.108", | |
"pip_version": "20.3.4-patched", | |
"prefer_older_binary": false, | |
"requirements": [ | |
"cryptography==38.0.3" | |
], | |
"requires_python": [ | |
">=3.8.0" | |
], | |
"resolver_version": "pip-2020-resolver", | |
"style": "universal", | |
"target_systems": [ | |
"linux", | |
"mac" | |
], | |
"transitive": true, | |
"use_pep517": null | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment