stan-dev / pystan

PyStan, a Python interface to Stan, a platform for statistical modeling. Documentation: https://pystan.readthedocs.io
ISC License
342 stars 59 forks source link

Add multi-platform builds to pystan #372

Closed thechopkins closed 2 years ago

thechopkins commented 2 years ago

Motivation

This updates the pystan wheel build process to be multi-architecture compatible. With more usage of this library outside of standard linux platforms, each usage requires a full rebuild from source, by introducing multiplatform wheels, we significantly reduce build times for other packages that depend on pystan. A similar approach was used for a downstream of pystan prophet here.

Changes

This follows a similar pattern to the prophet changes. It introduces the following matrix of build dependencies:

The process first builds wheels (for each platform) and a sdist release seperately and uploads them as artifacts using the actions/upload-artifact action.

We then condense them together into a single dist and upload that to pypi as a final step.

ahartikainen commented 2 years ago

Hi, pystan wheels are os agnostic

https://pypi.org/project/pystan/#files

These changes need to go under httpstan or httpstan-wheels

That being said, prophet currently uses cmdstanpy, not pystan.

thechopkins commented 2 years ago

Hi, pystan wheels are os agnostic

https://pypi.org/project/pystan/#files

These changes need to go under httpstan or httpstan-wheels

That being said, prophet currently uses cmdstanpy, not pystan.

Thanks. Was looking at this because of the dependency pulled in by orbit-ml, though it looks like that also proves the agnostic wheels so I guess i'll look into why they're not being used.