Closed regro-cf-autotick-bot closed 2 years ago
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.
Seeing Python 3.7 failures here with
AttributeError: module 'scipy.sparse' has no attribute 'coo_array'
These seem to be a problem with incompatible versions of networkx
and scipy
being chosen and does not seem to be a problem with scikit-image itself. Specifically, the issue seems to be that the version of networkx
that was chosen (2.7.1) requires scipy>=1.8.0
but SciPy 1.7.3 was installed in the failing case I looked at.
pinging @rossbar and @jarrodmillman for visibility. Seems like something that may require constraints to be added to the networkx
package
Specifically, the issue seems to be that the version of networkx that was chosen (2.7.1) requires scipy>=1.8.0 but SciPy 1.7.3 was installed in the failing case I looked at.
Yes, this is indeed the case. NetworkX has chosen to be an early adopter for the scipy.sparse array interface, thus the requirement of a relatively recent scipy version. Note however that scipy
is a soft dependency for networkx, meaning that only a subset of functionality depends on scipy. So if scikit-image is using networkx functions that in turn depend on scipy, the dependency pinning will have to be done in scikit-image
. The two options that come to mind are:
requirements/default.txt
for the version of networkx you wish to support (e.g. 2.7, as shown).I think another option is adding run_constrained with scipy >=1.8 to NetworkX, but could be mistaken.
@hmaarrfk : any opinion on what the best option here is?
Why isn't conda finding this relatively recent version of scopy?
if you are going to add a run consgraint on scipy you might as well bump the requirent outright.
you could specofy a minimum version of scipy during the testing phase.
Why isn't conda finding this relatively recent version of scopy?
It is except for the Python 3.7 cases. That is because SciPy 1.8 is built only for Python >= 3.8 (there is a skip here)
if you are going to add a run consgraint on scipy you might as well bump the requirent outright.
I meant whether it should be added to the networkx package which does not list SciPy at all currently since it is an optional dependency there. Likely we still need to apply some fix here in the meantime.
something like the following may work here in the meantime?
networkx >=2.2,<2.7 # [py<=37]
networkx >=2.2 # [py>37]
I think another option is adding run_constrained with scipy >=1.8 to NetworkX, but could be mistaken.
You should make that case on the networkx feedstock.we could release an other build of scikit image if that is accepted.
Okay, that pinning seems to have fixed the networkx-related errors. There is a single test failure with one of the x86 PyPy runs:
____________________________ test_wrap_around[3-0] _____________________________
ndim = 3, axis = 0
@skipif(sys.version_info[:2] == (3, 4),
reason="Doesn't work with python 3.4. See issue #3079")
@testing.parametrize("ndim, axis", dim_axis)
def test_wrap_around(ndim, axis):
> check_wrap_around(ndim, axis)
../_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_pla/site-packages/skimage/restoration/tests/test_unwrap.py:121:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
ndim = 3, axis = 0
def check_wrap_around(ndim, axis):
# create a ramp, but with the last pixel along axis equalling the first
elements = 100
ramp = np.linspace(0, 12 * np.pi, elements)
ramp[-1] = ramp[0]
image = ramp.reshape(tuple([elements if n == axis else 1
for n in range(ndim)]))
image_wrapped = np.angle(np.exp(1j * image))
index_first = tuple([0] * ndim)
index_last = tuple([-1 if n == axis else 0 for n in range(ndim)])
# unwrap the image without wrap around
# We do not want warnings about length 1 dimensions
with expected_warnings([r'Image has a length 1 dimension|\A\Z']):
image_unwrap_no_wrap_around = unwrap_phase(image_wrapped, seed=0)
print('endpoints without wrap_around:',
image_unwrap_no_wrap_around[index_first],
image_unwrap_no_wrap_around[index_last])
# without wrap around, the endpoints of the image should differ
assert_(abs(image_unwrap_no_wrap_around[index_first] -
image_unwrap_no_wrap_around[index_last]) > np.pi)
# unwrap the image with wrap around
wrap_around = [n == axis for n in range(ndim)]
# We do not want warnings about length 1 dimensions
with expected_warnings([r'Image has a length 1 dimension.|\A\Z']):
image_unwrap_wrap_around = unwrap_phase(image_wrapped, wrap_around,
seed=0)
print('endpoints with wrap_around:',
image_unwrap_wrap_around[index_first],
image_unwrap_wrap_around[index_last])
# with wrap around, the endpoints of the image should be equal
assert_almost_equal(image_unwrap_wrap_around[index_first],
> image_unwrap_wrap_around[index_last])
E AssertionError:
E Arrays are not almost equal to 7 decimals
E ACTUAL: -6.283185307179586
E DESIRED: 31.41592653589793
Should we merge this as-is despite the PyPy-related test failure? (can open a separate issue related to that)
@conda-forge-admin please restart cis
i skipped the test, so hopefully things will pass. I don't think it is worth "not supporting pypy" for one feature.
i skipped the test, so hopefully things will pass. I don't think it is worth "not supporting pypy" for one feature.
Yeah, I agree this is better.
Hi! This is the friendly conda-forge automerge bot!
I considered the following status checks when analyzing this PR:
Thus the PR was passing and merged! Have a great day!
Hi! This is the friendly conda-forge automerge bot!
Commits were made to this PR after the automerge
label was added. For security reasons, I have disabled automerge by removing the automerge
label. Please add the automerge
label again (or ask a maintainer to do so) if you'd like to enable automerge again!
@conda-forge-admin please rerender
woot woot!
Thanks @hmaarrfk !
It is very likely that the current package version for this feedstock is out of date.
Checklist before merging this PR:
license_file
is packagedInformation about this PR:
please add bot automerge
in the title and merge the resulting PR. This command will add our bot automerge feature to your feedstock.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 code>@<space/conda-forge-admin, please rerun bot in a PR comment to have theconda-forge-admin
add it for you.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 yourconda-forge.yml
. If you encounter issues with this feature please ping the bot teamconda-forge/bot
.Analysis by source code inspection shows a discrepancy between it and the the package's stated requirements in the meta.yaml.
Packages found by source code inspection but not in the meta.yaml:
Packages found in the meta.yaml but not found by source code inspection:
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. 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/2484627973, please use this URL for debugging.