diff --git a/.travis.yml b/.travis.yml index 98826a2d9e115..7943ca370af1a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,8 @@ cache: env: global: + # Variable for test workers + - PYTEST_WORKERS="auto" # create a github personal access token # cd pandas-dev/pandas # travis encrypt 'PANDAS_GH_TOKEN=personal_access_token' -r pandas-dev/pandas @@ -38,6 +40,10 @@ matrix: - env: - JOB="3.7" ENV_FILE="ci/deps/travis-37.yaml" PATTERN="(not slow and not network and not clipboard)" + - arch: arm64 + env: + - JOB="3.7, arm64" PYTEST_WORKERS=8 ENV_FILE="ci/deps/travis-37-arm64.yaml" PATTERN="(not slow and not network and not clipboard)" + - env: - JOB="3.6, locale" ENV_FILE="ci/deps/travis-36-locale.yaml" PATTERN="((not slow and not network and not clipboard) or (single and db))" LOCALE_OVERRIDE="zh_CN.UTF-8" SQL="1" services: @@ -59,9 +65,12 @@ matrix: - mysql - postgresql allow_failures: - - dist: bionic - python: 3.9-dev - env: + - arch: arm64 + env: + - JOB="3.7, arm64" PYTEST_WORKERS=8 ENV_FILE="ci/deps/travis-37-arm64.yaml" PATTERN="(not slow and not network and not clipboard)" + - dist: bionic + python: 3.9-dev + env: - JOB="3.9-dev" PATTERN="(not slow and not network)" before_install: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d042bda77d4e8..e45cafc02cb61 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -5,6 +5,9 @@ trigger: pr: - master +variables: + PYTEST_WORKERS: auto + jobs: # Mac and Linux use the same template - template: ci/azure/posix.yml diff --git a/ci/deps/travis-37-arm64.yaml b/ci/deps/travis-37-arm64.yaml new file mode 100644 index 0000000000000..5cb53489be225 --- /dev/null +++ b/ci/deps/travis-37-arm64.yaml @@ -0,0 +1,21 @@ +name: pandas-dev +channels: + - defaults + - conda-forge +dependencies: + - python=3.7.* + + # tools + - cython>=0.29.13 + - pytest>=5.0.1 + - pytest-xdist>=1.21 + - hypothesis>=3.58.0 + + # pandas dependencies + - botocore>=1.11 + - numpy + - python-dateutil + - pytz + - pip + - pip: + - moto diff --git a/ci/run_tests.sh b/ci/run_tests.sh index dbd1046656d5a..fda2005ce7843 100755 --- a/ci/run_tests.sh +++ b/ci/run_tests.sh @@ -20,7 +20,7 @@ if [[ $(uname) == "Linux" && -z $DISPLAY ]]; then XVFB="xvfb-run " fi -PYTEST_CMD="${XVFB}pytest -m \"$PATTERN\" -n auto --dist=loadfile -s --strict --durations=30 --junitxml=test-data.xml $TEST_ARGS $COVERAGE pandas" +PYTEST_CMD="${XVFB}pytest -m \"$PATTERN\" -n $PYTEST_WORKERS --dist=loadfile -s --strict --durations=30 --junitxml=test-data.xml $TEST_ARGS $COVERAGE pandas" echo $PYTEST_CMD sh -c "$PYTEST_CMD" diff --git a/ci/setup_env.sh b/ci/setup_env.sh index 76f47b7ed3634..4d551294dbb21 100755 --- a/ci/setup_env.sh +++ b/ci/setup_env.sh @@ -41,9 +41,17 @@ else exit 1 fi -wget -q "https://repo.continuum.io/miniconda/Miniconda3-latest-$CONDA_OS.sh" -O miniconda.sh +if [ "${TRAVIS_CPU_ARCH}" == "arm64" ]; then + sudo apt-get -y install xvfb + CONDA_URL="https://github.com/conda-forge/miniforge/releases/download/4.8.2-1/Miniforge3-4.8.2-1-Linux-aarch64.sh" +else + CONDA_URL="https://repo.continuum.io/miniconda/Miniconda3-latest-$CONDA_OS.sh" +fi +wget -q $CONDA_URL -O miniconda.sh chmod +x miniconda.sh -./miniconda.sh -b + +# Installation path is required for ARM64 platform as miniforge script installs in path $HOME/miniforge3. +./miniconda.sh -b -p $MINICONDA_DIR export PATH=$MINICONDA_DIR/bin:$PATH diff --git a/pandas/_libs/src/ujson/lib/ultrajson.h b/pandas/_libs/src/ujson/lib/ultrajson.h index b40ac9856d6a6..acb66b668e8dc 100644 --- a/pandas/_libs/src/ujson/lib/ultrajson.h +++ b/pandas/_libs/src/ujson/lib/ultrajson.h @@ -108,7 +108,7 @@ typedef uint32_t JSUINT32; #define FASTCALL_MSVC -#if !defined __x86_64__ +#if !defined __x86_64__ && !defined __aarch64__ #define FASTCALL_ATTR __attribute__((fastcall)) #else #define FASTCALL_ATTR