Skip to content

Instantly share code, notes, and snippets.

@huonw

huonw/BUILD Secret

Last active November 22, 2022 22:22
Show Gist options
  • Save huonw/504ef2a5d44efdc2c2df290c0ce5df16 to your computer and use it in GitHub Desktop.
Save huonw/504ef2a5d44efdc2c2df290c0ce5df16 to your computer and use it in GitHub Desktop.
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"])
{
"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"
}
}
import cryptography
def handler(e, c):
pass
#!/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} "$@"
[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 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