Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perspective v0.6.2 #18

Conversation

regro-cf-autotick-bot
Copy link
Contributor

It is very likely that the current package version for this feedstock is out of date.
Notes for merging this PR:

  1. Feel free to push to the bot's branch to update this PR if needed.
  2. The bot will almost always only open one PR per version.
    Checklist before merging this PR:
  • Dependencies have been updated if changed: see upstream
  • Tests have passed
  • Updated license if changed and license_file is packaged

Note that the bot will stop issuing PRs if more than 3 Version bump PRs generated by the bot are open. If you don't want to package a particular version please close the PR.

NEW: If you want these PRs to be merged automatically, make an issue with @conda-forge-admin,please add bot automerge in the title and merge the resulting PR. This command will add our new bot automerge feature to your feedstock!

If this PR was opened in error or needs to be updated please add the bot-rerun label to this PR. The bot will close this PR and schedule another one. If you do not have permissions to add this label, you can use the phrase @conda-forge-admin, please rerun bot in a PR comment to have the conda-forge-admin add it for you.

This PR was created by the regro-cf-autotick-bot.
The regro-cf-autotick-bot is a service to automatically track the dependency graph, migrate packages, and propose package version updates for conda-forge. If you would like a local version of this bot, you might consider using rever. Rever is a tool for automating software releases and forms the backbone of the bot's conda-forge PRing capability. Rever is both conda (conda install -c conda-forge rever) and pip (pip install re-ver) installable.
Finally, feel free to drop us a line if there are any issues!
This PR was generated by https://github.com/regro/autotick-bot/actions/runs/596701519, please use this URL for debugging

Here is a list of all the pending dependencies (and their versions) for this repo. Please double check all dependencies before merging.

Name Upstream Version Current Version
cmake 3.19.6 Anaconda-Server Badge

Dependency Analysis

Please note that this analysis is highly experimental. The aim here is to make maintenance easier by inspecting the package's dependencies. Importantly this analysis does not support optional dependencies, please double check those before making changes. If you do not want hinting of this kind ever please add bot: inspection: false to your conda-forge.yml. If you encounter issues with this feature please ping the bot team conda-forge/bot.

Analysis of the source code shows a discrepancy between the library's imports and the package's stated requirements in the meta.yaml.

Packages found by inspection but not in the meta.yaml:

  • pytz
  • tornado

@conda-forge-linter
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@xhochy
Copy link
Member

xhochy commented Feb 25, 2021

@conda-forge-admin please rerender

conda-forge-linter and others added 2 commits February 25, 2021 19:59
@xhochy
Copy link
Member

xhochy commented Feb 26, 2021

@conda-forge/perspective This is ready for review.

@timkpaine
Copy link
Member

timkpaine commented Feb 26, 2021

I need to rewrite the meta now that we automatically download and statically link arrow , also need to see if we can expand onto win and Mac now that the build process is a bit more flexible.

@xhochy
Copy link
Member

xhochy commented Feb 26, 2021

From the Arrow developer perspective: Why do you need to statically include pyarrow in your distribution? Is there anything we can do to avoid that?

With the conda-forge hat: We don't want downloads inside the build. Could we somehow work around this in the conda setting to make the build offline-capable?

@timkpaine
Copy link
Member

timkpaine commented Feb 26, 2021

@xhochy for 1, at the end of the day it became too difficult to link against the arrow shared libraries in a reliable way. E.g. on windows making sure that our dlls could figure out arrow dlls meant either doing runtime nonsense against the hope of ../pyarrow/, or trying to find and copy dlls at build time. Lots of annoying rpath complexity across environments that often broke in virtualenvs. Melding CMake and python extensions is difficult enough without trying to leverage other C++ codebases embedded within other python libraries. A good summary is here: finos/perspective#1290

With this change, the complicated and admittedly brittle code we
have in place to deal with detecting PyArrow's install location,
managing PyArrow versions, copying Arrow DLLs (on Windows),
etc. can be removed, as Perspective's build no longer depends on
the existence and correct versioning of an asset we have little control over.

Additionally, users can install the newest version of PyArrow in order
to gain access to features/fixes without worrying about Perspective
compatibility beyond the binary format, which is expected to remain
stable and compatible between versions. Finally, the developer
experience should be improved for both source builds and configuring
the conda-forge build, which can unpin its PyArrow dependency.

For conda forge, our external dependencies are listed here (everything inside psp_build_dep):
https://github.com/finos/perspective/blob/master/cpp/perspective/CMakeLists.txt#L419

I think we're pretty done with making tweaks to this as is pretty frustrating across environments. If all of these libraries were available within conda forge in a standard way across all operating systems, we could modify the build dep function to first check if they exist already. But at the end of the day, these are all statically linked into the output libraries and only used as completely internally or for transport to/from the corresponding js libraries (as is the case for arrow). Nothing vendored is exposed anywhere externally.

@xhochy
Copy link
Member

xhochy commented Feb 26, 2021

Thanks for the information and the link 👍 I'm not here to block anything but just collecting feedback about these issues. Linking across Python package boundaries especially outside of conda-controlled environments is quite hard and it seems that every (py)arrow consumer found a different workaround. Hopefully, we can amalgamate that in future into a convenient and reliable solution.

Note that one workaround to do less vendoring on conda-forge but still give your uses a bit of flexibility in their pinnings is to simply build for multiple Arrow versions as we do in https://github.com/conda-forge/snowflake-connector-python-feedstock/blob/e9824ea18f606634ffd152a30d436514a4a7bd5a/recipe/conda_build_config.yaml#L1

@timkpaine
Copy link
Member

Thanks for the information and the link 👍 I'm not here to block anything but just collecting feedback about these issues. Linking across Python package boundaries especially outside of conda-controlled environments is quite hard and it seems that every (py)arrow consumer found a different workaround. Hopefully, we can amalgamate that in future into a convenient and reliable solution.

yep definitely

Note that one workaround to do less vendoring on conda-forge but still give your uses a bit of flexibility in their pinnings is to simply build for multiple Arrow versions as we do in https://github.com/conda-forge/snowflake-connector-python-feedstock/blob/e9824ea18f606634ffd152a30d436514a4a7bd5a/recipe/conda_build_config.yaml#L1

Its slightly more tricky (but a lot easier after arrow c stuff and protocol stabilization) because the arrow compiled on the python side must be compatible with the arrow compiled to webassembly on the JS side if you want to use the two together (as in the JupyterLab extension of the standalone examples like this one). But we'll keep this in mind, and I'll take a look at filling in some of the conda gaps on our C++ dependencies so that others can have an easier time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants