Skip to content

Conversation

@terencehonles
Copy link
Contributor

Adds support and testing for Python 3.9. I am looking for review as this change may have touched too many things, but I'm also looking to get the CI to test all the different environments.

H/T: @kou, the documentation and #5685 for helping me get this off the ground.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm assuming homebrew should be on the latest Python? It does look like it's available now https://formulae.brew.sh/formula/[email protected]

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if this still applies, but I figured it probably would

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about confirming it with CI?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me, thanks for kicking things off. I had also create voltrondata-labs/ursabot#205 to adjust buildbot since I realized 3.9 wasn't being built just by me creating this PR.

@github-actions
Copy link

github-actions bot commented Oct 7, 2020

@terencehonles
Copy link
Contributor Author

It looks like I "missed" the github workflows, but that might need to be done after the wheels are built and published as I haven't looked at what exactly are doing, and I kinda doubt they are building from source. I can open that up as a separate PR if that is helpful.

@kou
Copy link
Member

kou commented Oct 8, 2020

@github-actions crossbow submit -g conda -g wheel

@github-actions
Copy link

github-actions bot commented Oct 8, 2020

Revision: da52256400bb1cdde72fb6b0cdcf92b9142a5eeb

Submitted crossbow builds: ursa-labs/crossbow @ actions-616

Task Status
conda-clean Azure
conda-linux-gcc-py36-aarch64 Drone
conda-linux-gcc-py36-cpu Azure
conda-linux-gcc-py36-cuda Azure
conda-linux-gcc-py37-aarch64 Drone
conda-linux-gcc-py37-cpu Azure
conda-linux-gcc-py37-cuda Azure
conda-linux-gcc-py38-aarch64 Drone
conda-linux-gcc-py38-cpu Azure
conda-linux-gcc-py38-cuda Azure
conda-linux-gcc-py39-aarch64 Drone
conda-linux-gcc-py39-cpu Azure
conda-linux-gcc-py39-cuda Azure
conda-osx-clang-py36 Azure
conda-osx-clang-py37 Azure
conda-osx-clang-py38 Azure
conda-osx-clang-py39 Azure
conda-win-vs2017-py36 Azure
conda-win-vs2017-py37 Azure
conda-win-vs2017-py38 Azure
conda-win-vs2017-py39 Azure
wheel-manylinux1-cp35m Azure
wheel-manylinux1-cp36m Azure
wheel-manylinux1-cp37m Azure
wheel-manylinux1-cp38 Azure
wheel-manylinux1-cp39 Azure
wheel-manylinux2010-cp35m Azure
wheel-manylinux2010-cp36m Azure
wheel-manylinux2010-cp37m Azure
wheel-manylinux2010-cp38 Azure
wheel-manylinux2010-cp39 Azure
wheel-manylinux2014-cp35m Azure
wheel-manylinux2014-cp36m Azure
wheel-manylinux2014-cp37m Azure
wheel-manylinux2014-cp38 Azure
wheel-manylinux2014-cp39 Azure
wheel-osx-high-sierra-cp35m TravisCI
wheel-osx-high-sierra-cp36m TravisCI
wheel-osx-high-sierra-cp37m TravisCI
wheel-osx-high-sierra-cp38 TravisCI
wheel-osx-high-sierra-cp39 TravisCI
wheel-osx-mavericks-cp35m TravisCI
wheel-osx-mavericks-cp36m TravisCI
wheel-osx-mavericks-cp37m TravisCI
wheel-osx-mavericks-cp38 TravisCI
wheel-osx-mavericks-cp39 TravisCI
wheel-win-cp35m Appveyor
wheel-win-cp36m Appveyor
wheel-win-cp37m Appveyor
wheel-win-cp38 Appveyor
wheel-win-cp39 Appveyor

@terencehonles
Copy link
Contributor Author

It looks like cmake was already part of the quay.io/pypa/manylinux2014_x86_64:2020-10-06-b2ca7a1 and scripts/install_cmake.sh needed to be updated.

@kou
Copy link
Member

kou commented Oct 8, 2020

@github-actions crossbow submit -g conda -g wheel

@github-actions
Copy link

github-actions bot commented Oct 8, 2020

Revision: 59496cc5698070f4ddf7fb071d73239eff833a4c

Submitted crossbow builds: ursa-labs/crossbow @ actions-617

Task Status
conda-clean Azure
conda-linux-gcc-py36-aarch64 Drone
conda-linux-gcc-py36-cpu Azure
conda-linux-gcc-py36-cuda Azure
conda-linux-gcc-py37-aarch64 Drone
conda-linux-gcc-py37-cpu Azure
conda-linux-gcc-py37-cuda Azure
conda-linux-gcc-py38-aarch64 Drone
conda-linux-gcc-py38-cpu Azure
conda-linux-gcc-py38-cuda Azure
conda-linux-gcc-py39-aarch64 Drone
conda-linux-gcc-py39-cpu Azure
conda-linux-gcc-py39-cuda Azure
conda-osx-clang-py36 Azure
conda-osx-clang-py37 Azure
conda-osx-clang-py38 Azure
conda-osx-clang-py39 Azure
conda-win-vs2017-py36 Azure
conda-win-vs2017-py37 Azure
conda-win-vs2017-py38 Azure
conda-win-vs2017-py39 Azure
wheel-manylinux1-cp35m Azure
wheel-manylinux1-cp36m Azure
wheel-manylinux1-cp37m Azure
wheel-manylinux1-cp38 Azure
wheel-manylinux1-cp39 Azure
wheel-manylinux2010-cp35m Azure
wheel-manylinux2010-cp36m Azure
wheel-manylinux2010-cp37m Azure
wheel-manylinux2010-cp38 Azure
wheel-manylinux2010-cp39 Azure
wheel-manylinux2014-cp35m Azure
wheel-manylinux2014-cp36m Azure
wheel-manylinux2014-cp37m Azure
wheel-manylinux2014-cp38 Azure
wheel-manylinux2014-cp39 Azure
wheel-osx-high-sierra-cp35m TravisCI
wheel-osx-high-sierra-cp36m TravisCI
wheel-osx-high-sierra-cp37m TravisCI
wheel-osx-high-sierra-cp38 TravisCI
wheel-osx-high-sierra-cp39 TravisCI
wheel-osx-mavericks-cp35m TravisCI
wheel-osx-mavericks-cp36m TravisCI
wheel-osx-mavericks-cp37m TravisCI
wheel-osx-mavericks-cp38 TravisCI
wheel-osx-mavericks-cp39 TravisCI
wheel-win-cp35m Appveyor
wheel-win-cp36m Appveyor
wheel-win-cp37m Appveyor
wheel-win-cp38 Appveyor
wheel-win-cp39 Appveyor

@github-actions
Copy link

github-actions bot commented Oct 8, 2020

Revision: 59496cc5698070f4ddf7fb071d73239eff833a4c

Submitted crossbow builds: ursa-labs/crossbow @ actions-618

Task Status
conda-clean Azure
conda-linux-gcc-py36-aarch64 Drone
conda-linux-gcc-py36-cpu Azure
conda-linux-gcc-py36-cuda Azure
conda-linux-gcc-py37-aarch64 Drone
conda-linux-gcc-py37-cpu Azure
conda-linux-gcc-py37-cuda Azure
conda-linux-gcc-py38-aarch64 Drone
conda-linux-gcc-py38-cpu Azure
conda-linux-gcc-py38-cuda Azure
conda-linux-gcc-py39-aarch64 Drone
conda-linux-gcc-py39-cpu Azure
conda-linux-gcc-py39-cuda Azure
conda-osx-clang-py36 Azure
conda-osx-clang-py37 Azure
conda-osx-clang-py38 Azure
conda-osx-clang-py39 Azure
conda-win-vs2017-py36 Azure
conda-win-vs2017-py37 Azure
conda-win-vs2017-py38 Azure
conda-win-vs2017-py39 Azure
wheel-manylinux1-cp35m Azure
wheel-manylinux1-cp36m Azure
wheel-manylinux1-cp37m Azure
wheel-manylinux1-cp38 Azure
wheel-manylinux1-cp39 Azure
wheel-manylinux2010-cp35m Azure
wheel-manylinux2010-cp36m Azure
wheel-manylinux2010-cp37m Azure
wheel-manylinux2010-cp38 Azure
wheel-manylinux2010-cp39 Azure
wheel-manylinux2014-cp35m Azure
wheel-manylinux2014-cp36m Azure
wheel-manylinux2014-cp37m Azure
wheel-manylinux2014-cp38 Azure
wheel-manylinux2014-cp39 Azure
wheel-osx-high-sierra-cp35m TravisCI
wheel-osx-high-sierra-cp36m TravisCI
wheel-osx-high-sierra-cp37m TravisCI
wheel-osx-high-sierra-cp38 TravisCI
wheel-osx-high-sierra-cp39 TravisCI
wheel-osx-mavericks-cp35m TravisCI
wheel-osx-mavericks-cp36m TravisCI
wheel-osx-mavericks-cp37m TravisCI
wheel-osx-mavericks-cp38 TravisCI
wheel-osx-mavericks-cp39 TravisCI
wheel-win-cp35m Appveyor
wheel-win-cp36m Appveyor
wheel-win-cp37m Appveyor
wheel-win-cp38 Appveyor
wheel-win-cp39 Appveyor

@kou
Copy link
Member

kou commented Oct 8, 2020

(We need to wait a while until our comments are processed.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's possible Travis doesn't have Python 3.9 in it's homebrew cache, but I would expect a different error than it succeeds and then /usr/local/opt/[email protected]/libexec/bin/pip is just not found...

Nevermind! Apparently it's just a "warning" 😒 :

Warning: '[email protected]' formula is unreadable: No available formula with the name "[email protected]"

https://travis-ci.org/github/ursa-labs/crossbow/builds/733873746#L145

@terencehonles
Copy link
Contributor Author

I reverted some of the OS X changes. I'm not sure I actually needed to change Python 3.8 there since it looks like that travis file is templated out to all OS X wheels and it is still using Python 3.8 in all of them. That's either a bug or that there's something else that's using the python_version that's also specified in the travis jobs (more likely the latter).

@pitrou
Copy link
Member

pitrou commented Oct 8, 2020

Note that Numpy doesn't provide pre-compiled wheels for 3.9 currently.

@pitrou
Copy link
Member

pitrou commented Oct 8, 2020

Also, conda-forge doesn't seem to be ready either.

@terencehonles
Copy link
Contributor Author

terencehonles commented Oct 8, 2020

Note that Numpy doesn't provide pre-compiled wheels for 3.9 currently.

Also, conda-forge doesn't seem to be ready either.

Yeah, that's fine. I'm not really in a rush, I just wanted to help to get things in place that we could move forward as soon as all of the dependencies are met (and to identify where things are and what is still missing)

It does build, and I was able to install everything in the project I am working on and run the tests (and discover other things that need to be updated), so that's really mainly what I was looking for. I figured I'd do it in public on a PR and use the built wheels instead of just building/testing locally and not sharing my work 🙂

@xhochy
Copy link
Member

xhochy commented Oct 18, 2020

Also, conda-forge doesn't seem to be ready either.

Should be ready now.

@xhochy
Copy link
Member

xhochy commented Oct 18, 2020

@github-actions crossbow submit -g conda

@github-actions
Copy link

Revision: 9ee37df987105f9546914f034b4d23c08b491a4d

Submitted crossbow builds: ursa-labs/crossbow @ actions-651

Task Status
conda-clean Azure
conda-linux-gcc-py36-aarch64 Drone
conda-linux-gcc-py36-cpu Azure
conda-linux-gcc-py36-cuda Azure
conda-linux-gcc-py37-aarch64 Drone
conda-linux-gcc-py37-cpu Azure
conda-linux-gcc-py37-cuda Azure
conda-linux-gcc-py38-aarch64 Drone
conda-linux-gcc-py38-cpu Azure
conda-linux-gcc-py38-cuda Azure
conda-linux-gcc-py39-aarch64 Drone
conda-linux-gcc-py39-cpu Azure
conda-linux-gcc-py39-cuda Azure
conda-osx-clang-py36 Azure
conda-osx-clang-py37 Azure
conda-osx-clang-py38 Azure
conda-osx-clang-py39 Azure
conda-win-vs2017-py36 Azure
conda-win-vs2017-py37 Azure
conda-win-vs2017-py38 Azure
conda-win-vs2017-py39 Azure

@terencehonles

This comment has been minimized.

@terencehonles
Copy link
Contributor Author

I pinned semver to 2.10.2 since it looks like there is a breaking change for archery/release.py that was committed in the last few days. I can look to create a PR for that, but I figured it probably shouldn't be rolled into this PR.

@terencehonles

This comment has been minimized.

@github-actions
Copy link

Revision: 173d45e

Submitted crossbow builds: ursa-labs/crossbow @ actions-783

Task Status
conda-clean Azure
conda-linux-gcc-py36-aarch64 Drone
conda-linux-gcc-py36-cpu-r36 Azure
conda-linux-gcc-py36-cuda Azure
conda-linux-gcc-py37-aarch64 Drone
conda-linux-gcc-py37-cpu-r40 Azure
conda-linux-gcc-py37-cuda Azure
conda-linux-gcc-py38-aarch64 Drone
conda-linux-gcc-py38-cpu Azure
conda-linux-gcc-py38-cuda Azure
conda-linux-gcc-py39-aarch64 Drone
conda-linux-gcc-py39-cpu Azure
conda-linux-gcc-py39-cuda Azure
conda-osx-clang-py36-r36 Azure
conda-osx-clang-py37-r40 Azure
conda-osx-clang-py38 Azure
conda-win-vs2017-py36-r36 Azure
conda-win-vs2017-py37-r40 Azure
conda-win-vs2017-py38 Azure
wheel-manylinux1-cp36m Azure
wheel-manylinux1-cp37m Azure
wheel-manylinux1-cp38 Azure
wheel-manylinux1-cp39 Azure
wheel-manylinux2010-cp36m Azure
wheel-manylinux2010-cp37m Azure
wheel-manylinux2010-cp38 Azure
wheel-manylinux2010-cp39 Azure
wheel-manylinux2014-cp36m Azure
wheel-manylinux2014-cp37m Azure
wheel-manylinux2014-cp38 Azure
wheel-manylinux2014-cp39 Azure

Copy link
Member

@kou kou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

Thanks! I'll merge this.

Could you open JIRA issues for macOS wheel support and Windows wheel support?

@kou kou closed this in a2c732d Dec 13, 2020
@idanw206
Copy link

@kou When will the binaries be available in pypi? Thanks!

@kou
Copy link
Member

kou commented Dec 15, 2020

We'll release them in 2021-01.

@n8henrie
Copy link

@kou You're likely well aware, but if looking for e.g. manylinux2014 for 3.9:

$ curl -s 'https://api.github.com/repos/ursa-labs/crossbow/releases' | jq -r '.[]["assets"] | .[]["browser_download_url"]' | grep manylinux2014-cp39
https://github.com/ursa-labs/crossbow/releases/download/nightly-2020-12-18-0-azure-wheel-manylinux2014-cp39/pyarrow-2.1.0.dev412-cp39-cp39-manylinux2014_x86_64.whl
https://github.com/ursa-labs/crossbow/releases/download/nightly-2020-12-18-0-azure-wheel-manylinux2014-cp39/pyarrow-2.1.0.dev412.tar.gz

Looks like the api has a limit of 100 results per call, which doesn't go back far enough. Instead of dealing with pagination, it seems like gh may have a higher limit:

$ gh release list --repo=ursa-labs/crossbow --limit=1000 | grep manylinux2014-c
p39
nightly-2020-12-18-0-azure-wheel-manylinux2014-cp39             nightly-2020-12-18-0-azure-wheel-manylinux2014-cp39     2020-12-18T07:26:20Z
nightly-2020-12-17-0-azure-wheel-manylinux2014-cp39             nightly-2020-12-17-0-azure-wheel-manylinux2014-cp39     2020-12-17T07:33:01Z
actions-807-azure-wheel-manylinux2014-cp39              actions-807-azure-wheel-manylinux2014-cp39      2020-12-17T01:23:13Z
actions-804-azure-wheel-manylinux2014-cp39              actions-804-azure-wheel-manylinux2014-cp39      2020-12-16T23:00:37Z
actions-799-azure-wheel-manylinux2014-cp39              actions-799-azure-wheel-manylinux2014-cp39      2020-12-16T08:54:37Z
nightly-2020-12-16-0-azure-wheel-manylinux2014-cp39             nightly-2020-12-16-0-azure-wheel-manylinux2014-cp39     2020-12-16T06:58:23Z
actions-794-azure-wheel-manylinux2014-cp39              actions-794-azure-wheel-manylinux2014-cp39      2020-12-15T21:35:42Z
nightly-2020-12-15-0-azure-wheel-manylinux2014-cp39             nightly-2020-12-15-0-azure-wheel-manylinux2014-cp39     2020-12-15T06:22:33Z
nightly-2020-12-14-0-azure-wheel-manylinux2014-cp39             nightly-2020-12-14-0-azure-wheel-manylinux2014-cp39     2020-12-14T07:19:20Z
actions-783-azure-wheel-manylinux2014-cp39              actions-783-azure-wheel-manylinux2014-cp39      2020-12-12T22:57:41Z
actions-772-azure-wheel-manylinux2014-cp39              actions-772-azure-wheel-manylinux2014-cp39      2020-12-11T07:19:59Z
actions-767-azure-wheel-manylinux2014-cp39              actions-767-azure-wheel-manylinux2014-cp39      2020-12-10T20:02:41Z
actions-759-azure-wheel-manylinux2014-cp39              actions-759-azure-wheel-manylinux2014-cp39      2020-12-10T04:27:52Z
actions-758-azure-wheel-manylinux2014-cp39              actions-758-azure-wheel-manylinux2014-cp39      2020-12-09T23:30:31Z

From the name of the release you can construct the URL:

https://github.com/ursa-labs/crossbow/releases/actions-783-azure-wheel-manylinux2014-cp39

And from there you can find:

https://github.com/ursa-labs/crossbow/releases/download/actions-783-azure-wheel-manylinux2014-cp39/pyarrow-2.1.0.dev363-cp39-cp39-manylinux2014_x86_64.whl

From here you can install directly with pip:

$ python -m pip install https://github.com/ursa-labs/crossbow/releases/download/actions-783-azure-wheel-manylinux2014-cp39/pyarrow-2.1.0.dev363-cp39-cp39-manylinux2014_x86_64.whl

@terencehonles
Copy link
Contributor Author

Please be aware that's like running a nightly release, but if you are fine with that you can install a crossbow wheel. However, you probably want to just follow the instructions here https://arrow.apache.org/docs/python/install.html#installing-nightly-packages

TL;DR:

pip install --extra-index-url https://pypi.fury.io/arrow-nightlies/ \
    --pre pyarrow

@n8henrie
Copy link

n8henrie commented Dec 18, 2020 via email

@liyucheng09
Copy link

Using the command mentioned by @terencehonles doesn't work for me.

(.venv) liyucheng@liyuchengdeMacBook-Air comments_generation % pip install --extra-index-url https://pypi.fury.io/arrow-nightlies/ --no-cache-dir --pre pyarrow
Looking in indexes: https://mirrors.aliyun.com/pypi/simple/, https://pypi.fury.io/arrow-nightlies/
Collecting pyarrow
  Downloading https://mirrors.aliyun.com/pypi/packages/fd/b7/78115614c4b227796cc87fff907930f6ae6dd999c5000d3d6ae5c2e54582/pyarrow-2.0.0.tar.gz (58.9 MB)
     |████▍                           | 8.2 MB 788 kB/s eta 0:01:05^C

This line still looking for pyarrow from the default indexes.

@kou
Copy link
Member

kou commented Dec 30, 2020

Adding --verbose to pip command line may help you.

@liyucheng09
Copy link

@kou Thanks for your help. I think it may because the link https://pypi.fury.io/arrow-nightlies/ still lacks wheels for python3.9 on macos.

@kou
Copy link
Member

kou commented Dec 30, 2020

We're still working on it at #8915.

cameronraysmith added a commit to cameronraysmith/notebooks that referenced this pull request Jan 3, 2021
@terencehonles
Copy link
Contributor Author

@kou Thanks for your help. I think it may because the link https://pypi.fury.io/arrow-nightlies/ still lacks wheels for python3.9 on macos.

@liyucheng09 yes that's correct, if you're impatient and OK with using a crossbow build as @n8henrie was attempting you can use https://github.com/ursa-labs/crossbow/branches/all?query=actions-686 which built both mavericks and high sierra as you can see in #8386 (comment)

@liyucheng09
Copy link

@terencehonles Thanks a lot. I installed pyarrorw sucessfully.

I was just curious that when I type pip install pyarrow the error log shows that it was stopped during install numpy, which is already installed in my environment (maybe the version is too advanced?).

I thought that figure it out may help me to understand deeper about python package installing process.

@terencehonles
Copy link
Contributor Author

@terencehonles Thanks a lot. I installed pyarrorw sucessfully.

I was just curious that when I type pip install pyarrow the error log shows that it was stopped during install numpy, which is already installed in my environment (maybe the version is too advanced?).

I thought that figure it out may help me to understand deeper about python package installing process.

I'm assuming you mean trying to install the most recently released pyarrow before you installed via crossbow? That's because pyarrow has a source distribution and you're trying to build from source. Pip will not have installed numpy at install time and is working to make isolated installs the default, if you have numpy already installed the version you have may be an issue, but I think it's more likely it's too old not too new. You can try using the flag --no-use-pep517 when running pip install pyarrow to see if your system has all the dependencies needed to build pyarrow (likely not, and that's why the CI is building it). Optionally you can make pip more verbose with -v.

pyarrow is probably not the easiest to learn about Python's build process on, but you should read their documentation if you would like to actually be able to build it from source.

kou pushed a commit that referenced this pull request Jan 6, 2021
… wheels

Picking back up from #8386 in case I can handle this or someone else wants to work off of it.

Closes #8915 from terencehonles/arrow-10904

Authored-by: Terence D. Honles <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
adamchainz added a commit to adamchainz/arrow that referenced this pull request May 10, 2021
lidavidm pushed a commit that referenced this pull request May 10, 2021
Missed in #8386.

Closes #10286 from adamchainz/patch-1

Authored-by: Adam Johnson <[email protected]>
Signed-off-by: David Li <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.