-
-
Notifications
You must be signed in to change notification settings - Fork 18.5k
Remove clutter from ext_data #17555
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
Remove clutter from ext_data #17555
Conversation
Codecov Report
@@ Coverage Diff @@
## master #17555 +/- ##
==========================================
- Coverage 91.25% 91.23% -0.02%
==========================================
Files 163 163
Lines 49606 49617 +11
==========================================
+ Hits 45266 45268 +2
- Misses 4340 4349 +9
Continue to review full report at Codecov.
|
so try changing something in say util.pxd and see if this still builds. It should rebuild the correct files. |
@jbrockmendel - I'm pretty these I'm guessing part of #17478 may need reverted. |
Small change to util; does not appear to have broken anything. |
yeah we used to have this problem where a clean build would work, but changing only a small set of deps would fail. you can see this when you change branches and rebuild, way more things that are necessary are rebuilt. So we need some more testing to prove that this doesn't have bad side effects. |
how can you tell? this is NOT tested anywhere, rather is a development issue. |
You asked me to change something in util.pxd and see if the build breaks. The "all green" is the measure I'm using for build-doesn't-appear-broken. What measure would you prefer I use for this?
If I understand what you're saying correctly, then it seems like we're on the same page vis-a-vis the unreliability of the build being related to the under-specification of dependencies. |
no, this has to be done locally. The point is the dev tool chain breaks. The CI by-definition is a completely clean build, not a build, change, build one. |
The CI won't pick this up, the You will need to test locally - e.g. make an incompatible change to (edit: @jreback and I commented simultaneously, we're saying the exact the same thing) |
not sure what you are saying. I think changing these dependency chain actually DOES break things locally. We don't have a test for this on the CI, nor do I think we should actually do that. You need to assure that the development chain still works correctly. The point is to prevent over-compiling things; under specifying deps tends to do this. |
you can test each dep by changing what was there. e.g. if you change something in an algos pxi.in file, then algos.so should be recompiled, that is the case now. however a change in hashtable should also trigger the recompile. I don't think that is the case now (after #17478) |
Exactly what I was saying is now irrelevant, since the "if i understand correctly" clause is now clearly False. |
So... the CI doesn't test whether the build works, and you don't think that should be changed? |
So when you say "done locally", what does this entail? What I have been doing is roughly
|
of course it checks whether the build works. But its a clean build, which the entire point of CI. What I am talking about are incremental changes in development. Imagine you are in a branch and you make a change and you recompile, great. Then you switch to another branch, since the deps are not setup correctly, you have to either: a) recompile everything slow, or b) the recompile is not correct and you get weird errors. With incremental deps things just work. My point is that you can't simply change deps w/o testing them like this. Since we rarely change them this is generally not an issue. If you are going to try to change them you need a metric for whether your change is good or not, so that it works in dev & production (which is what we are basically testing on CI). not averse to adding some kind of incremental build for dev on CI, but I think its quite hard to do right. |
@jbrockmendel you are essentially running
(this runs setup.py) which is a clean build test. But not good enough for dependency checking. |
@jbrockmendel local builds should work without deleting anything (generally). So to test
|
I reverted #17478, so happy to re-incorporate useful bits here |
This may be approaching an answer to the question I asked the other day in #17519. So the So what about, say, Or how about |
so this is slightly different; include is a source file include, so whenever This is a similar pattern to
khash is a dep of almost everything that is a dep of hashtable (a couple of cases where it is used directly). So in that case if hashtable will change if khash changes, and deps of hashtable will also change.. So nothing actually needs to depend on khash directly, except for hashtable itself. |
The two of you have gone above-and-beyond today in explaining this, thanks. I'll go back to focusing on tslibs and not worry about this for a bit. |
I'm quite bothered by the lack of clarity in setup.py as to what is and is not required for the build. To demonstrate the issue, this PR removes a bunch of gee-I-thought-that-was-necessary clutter from the
Extension
kwargs.