-
Notifications
You must be signed in to change notification settings - Fork 2
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
Future of pyctdev? Considering alternatives? How about our workflow? #104
Comments
I'll start answering my own questions :D
I do.
Yes mostly conda,
conda as much as possible. When I'm afraid it's gonna take too long to install, or don't want to bother to fiddle with channels, I use pip.
I currently have two dev environments, one dedicated to Param/Panel/Lumen and one to hvPlot/HoloViews/GeoViews. I created them using pyctdev. I don't run the tests with pyctdev, rather directly with pytest. If I had to create a new environment to build a site or a package locally, I would use pyctdev to create the environment, checking first the Github workflows files to see if they do specific things. I would build a package using pyctdev, I would build a site running nbsite directly. I wouldn't use pyctdev for anything else. |
Thanks for bringing this up @maximlt !!
Yes, for HoloViz projects I try to use pyctdev unless things get borked, in which case I just use whatever gets the job done
Yes, conda
Mostly conda, sometimes pip if conda is being difficult, sometimes mamba
Mostly just |
Only occasionally, if I am trying to precisely reproduce failures that occur in github CI.
Both. My default workflow is to use
When I very occasionally use it, I precisely follow the steps used in github CI. No doubt my experience is colored by my tendency to work at the bottom of the stack (e.g. As someone who works on other open source projects outside of holoviz, I am required for those projects to be familiar with both |
Not directly as I tend to rely on CI for testing, doc and package building etc.
I use conda to create, manage and install environments. I use pip in precisely three instances:
Options 1. and 2. can also apply when using anaconda project (using a
Both as described above, but I would love to have a conda only workflow (only resorting to pip if the package is only on PyPI).
See above! |
Not directly, only via CI. If we had a way to run GH Actions locally without involving GH, I'd be as happy to use that instead.
All my environments are conda environments.
I only use conda to install indirect dependencies, but I use Separately, I use anaconda-project to maintain minimal environments for particular projects. Those environments are always created from scratch based on the .yml spec, and I make sure they have no unneeded dependencies and don't normally include any editable installs. I only expect those separate environments to be reproducible. I don't currently have a good way to reproduce issues found by CI, which was a goal of pyctdev but largely has not worked out for me.
I only use ones that I've cut and pasted from the CI setup, usually of a failing job, often without success because they depend on other setup I didn't copy (e.g. special environments). |
I don't use it except on the CI. It gives an extra level of abstraction, which is fine if what you want is precisely what it provides, but if not, it is hard to make minor tweaks to the command. Most of the commands I need are pretty simple. I also think it is hard to find the "real" set of commands, like I don't know the best solution, but I'm leaning more toward a simpler approach, like scripts located in a folder that can both be called from github actions or locally (if the sets of commands have to follow a specific order).
I use mamba + conda-forge (no defaults).
Same as @jlstevens.
Same as @jbednar. |
Thanks for the great summary @maximlt I just setup holoviews dev env and encountered
It was also opaque to me since coming from
Keeps all dependencies in one place for dev env or building packages. However, I believe the tools that support this spec only work with pip (poetry is popular?)
Agreed but I would expect a learning curve on this for an alternative solution as well. You would still need to look up the
Newbie here but sharing the questions / thoughts that came to my mind.
I just started this process and only created a holoviews env. That seemed to have worked well but libmamba didn't work for some reason. In the end, the following worked well for me. Since I was only making 1 change I skipped
Some easy things to perhaps help improve our docs around this (seems holoviews has open issue # 4135 for it):
|
Oops - I forgot to answer the questions:
Yes - it took a little bit to understand how things work but worked well for setting up holoviews dev env.
Yes.
Mostly
Only for installing holoviews dev env. |
pyctdev is an interesting approach to project management, providing a unified interface to usual tasks (test, build packages, build docs, ...). Another interesting feature it has is providing a unified interface to managing a project dependencies with conda or pip. I follow discuss.python.org and see that standardizing common project tasks is something that is in the air (a project like VSCode would greatly benefit from this being standardized for instance), however, that's pretty difficult to standardize globally and will certainly not happen any time soon, if ever.
pyctdev isn't perfect yet and it feels sometimes it's getting in our way. I'll make some comments on why I think that:
doit test_lint
,doit test_flakes
, ...).doit test_unit
). However as a developer working on a bug fix or a new feature you would usually not run the whole test suite but instead run some specific files or even specific tests. So you need to find out which command is executed by pyctdev (that would be in tox.ini) and adapt it to your use case.Given all that, I think it's worth considering changing our workflow/pyctdev to improve the HoloViz developer experience, including for us and our contributors.
Some general questions we could ask ourselves would be:
pyctdev
being our front-facing develop CLI?conda
as the package manager?They are more and more projects in the Python environment that are dedicated to project management and running tasks. Here's a list of projects that might be interest to look at, as potential replacement or to draw some inspiration from:
doit
)It may also be wise having a look at how projects which manage multiple sub-projects handle that:
Finally I'd like to ask a few questions to the HoloViz developers, to see what's their experience with pyctdev and how they use it.
Do you use
pyctdev
? If not, what do you use instead?Do you use conda to create environments? If not, what do you use?
Do you use conda or pip or both to install your Python project dependencies?
If you do use
pyctdev
, which commands do you use? How often do you use them or in which case?Please @jbednar @philippjfr @jlstevens @hoxbro @ianthomas23 @droumis reply to these questions below.
The text was updated successfully, but these errors were encountered: