#
# Lists of the ptest in meta-python, sorted into two sets by the time they take
# Please keep these sorted in alphabetical order
#
# A first pass at getting all meta-python recipes which inherit ptest
# meta_python_ptest_recipes=$(bitbake-layers show-recipes --recipes-only --layer meta-python --inherits ptest --bare | tr '\n' ' ' | pcregrep -o1 '^NOTE:.+===(.+)$')
#
# ptests which take less than ~30s each
PTESTS_FAST_META_PYTHON = "\
    python3-a2wsgi \
    python3-appdirs \
    python3-ansicolors \
    python3-asgiref \
    python3-aspectlib \
    python3-betamax \
    python3-bleak \
    python3-blinker \
    python3-breathe \
    python3-cachetools \
    python3-cbor2 \
    python3-configobj \
    python3-click \
    python3-dasbus \
    python3-dominate \
    python3-dnspython \
    python3-evdev \
    python3-execnet \
    python3-fastjsonschema \
    python3-fastnumbers \
    python3-flask \
    python3-flexcache \
    python3-flexparser \
    python3-freezegun \
    python3-fsspec \
    python3-geojson \
    python3-google-auth-oauthlib \
    python3-gpiod \
    python3-gpt-image \
    python3-gunicorn \
    python3-html2text \
    python3-httptools \
    python3-inflection \
    python3-inotify \
    python3-intervals \
    python3-ipy \
    python3-iso3166 \
    python3-jdcal \
    python3-jsmin \
    python3-msgpack \
    python3-multidict \
    python3-netaddr \
    python3-objgraph \
    python3-ordered-set \
    python3-outcome \
    python3-parse \
    python3-parse-type \
    python3-platformdirs \
    python3-polyline \
    python3-portalocker \
    python3-portion \
    python3-precise-runner \
    python3-prettytable \
    python3-propcache \
    python3-pyais \
    python3-pydantic \
    python3-pydantic-core \
    python3-pylint \
    python3-python-multipart \
    python3-ptyprocess \
    python3-py-cpuinfo \
    python3-pyasn1-modules \
    python3-pyroute2 \
    python3-pyserial \
    python3-pytest-mock \
    python3-pytoml \
    python3-pyyaml-include \
    python3-pydbus \
    python3-pyzmq \
    python3-pyzstd \
    python3-rapidjson \
    python3-requests-file \
    python3-requests-toolbelt \
    python3-schedule \
    python3-semver \
    python3-serpent \
    python3-service-identity \
    python3-setproctitle \
    python3-simpleeval \
    python3-smpplib \
    python3-soupsieve \
    python3-sqlparse \
    python3-starlette \
    python3-tomli-w \
    python3-tomlkit \
    python3-trustme \
    python3-typeguard \
    python3-typing-inspection \
    python3-tzdata \
    python3-uinput \
    python3-ujson \
    python3-u-msgpack-python \
    python3-unidiff \
    python3-uritemplate \
    python3-validators \
    python3-wrapt \
    python3-wsproto \
    python3-xlrd \
    python3-xmltodict \
    python3-xxhash \
    python3-yarl \
"

PTESTS_SLOW_META_PYTHON = "\
    python3-arrow \
    python3-ecdsa \
    python3-google-auth \
    python3-lz4 \
    python3-marshmallow \
    python3-pillow \
    python3-pint \
    python3-pykickstart \
    python3-pytest-localserver \
    python3-scrypt \
    python3-traitlets \
    python3-typer \
    python3-yappi \
"

PTESTS_PROBLEMS_META_PYTHON = "\
    python3-pyasyncore \
    tftpy \
"
