Closed dependabot[bot] closed 1 week ago
The following labels could not be found: Maintenance
, Dependencies
.
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 84.47%. Comparing base (
7c1eb1e
) to head (43dc61c
). Report is 14 commits behind head on main.
minimum_requirements.txt
always poses me the dilemma.... Update the requirements in this file, yes or no.
The goal of this requirements file is to specify a set of minimal libraries you need in order to send commands to MAPDL. It does not include plotting capabilities (depends on Matplotlib and Pyvista), advanced post-processing (PyMAPDL-Reader, Pandas, etc), etc. Just the bare minimum in order to send commands and get back their text output.
If we understand the word minimum
as version dependent also... we should have then the minimum amount of libraries and the minimal version it works. We should use Numpy 1.22 instead of Numpy 2.0
If we understand the word minimum
as only the minimal libraries, we could update the requirements in this file as the dependabot requires.
It should be mentioned that we do have CICD in place that tests for these cases: https://github.com/ansys/pymapdl/actions/runs/9610408523/job/26507001246?pr=3197
As I'm writing this, I lean towards updating the minimum_requirements.txt
file. Just because the CICD tests this file and we should ensure compatibility with the newest versions. However I do not like to have such updates libraries in that file, when our pyproject.toml
is not that strict.
Pinging @koubaa for feedback. Pinging @ansys/pyansys-core for awareness/feedback if appropriate.
GitHubPythonic interface to MAPDL. Contribute to ansys/pymapdl development by creating an account on GitHub.
Hmm I see it like the two problems you pose...
ansys-api-mapdl==0.5.1
ansys-mapdl-reader==0.51.7
ansys-math-core==0.1.2
ansys-platform-instancemanagement==1.0.0
platformdirs==3.6.0
...
grpcio==1.30.0
...
numpy==1.14.0
...
Hope you get my point :)
GitHubA Python wrapper for Ansys Geometry Services. Contribute to ansys/pyansys-geometry development by creating an account on GitHub.
@RobPasMue thank a lot you for your comment.
Regarding your first point... the issue is that the minimal requirements are a subset of the pyproject dependencies. For instance, pyvista
is now part of the dependencies, but it is not actually needed to interact with MAPDL.
By convention, in the pyproject toml the dependencies are the minimal dependencies, then doc
or tests
groups are installed on top of that.
Following this approach, our dependencies should be the ones in minimal_requirements
, and then have something like a default
group which install the normal dependencies (pyvista, etc...). The issue is that you will have to install pymapdl as pip install 'ansys-mapdl-core[default]'
, which I dont really like to have to specify now a group.
Ideally, we should have another package ansys.mapd.minimal
or similar... where the pyproject is filled with the minimal requirement and then pymapdl will depend on that. But that's a lot of work, for little gains. Or, having ansys.mapdl.pymapdl
with all the libraries (pyvista
, etc) and leave ansys.mapdl.core
for the minimal. But again, big change.
Regarding your second point, I agree with that. But I'm not sure if it is reasonable to have pinned dependencies that never get updated.
I think that taking the feedback from @RobPasMue , we should probably have a mix in minimun_requirements
, which is having the minimal libraries and specify the minimal lower version that works:
ansys-api-mapdl==0.5.1
importlib-metadata>=4.0
numpy>=1.14.0
platformdirs>=3.6.0
psutil>=5.9.4
pyansys-tools-versioning>=0.3.3
The testing is going to be a bit "ramdon" because we are not enforcing any version, but I guess it is better than nothing?
Yeah I get it... but, let's think about it from a general software perspective, not a PyMAPDL pov.
By definition, your dependencies in your pyproject.toml file are the required dependencies to run your library - the ones you need to at least run it, full stop. Following that approach, you might need to reduce the dependencies you are listing there. For convenience you are introducing dependencies that might be optional or nice-to-have. But really, what happens when you install ansys-mapdl-core is that all those "nice to have" libs are getting installed. So they are no longer "optional" really. You can only avoid installing them if you pass the --no-deps
flag...
I would suggest that you have an all
, default
, extras
target where you install the additional deps that are not strictly required. And within your library you can also inform whether the user needs to install a certain target of the library or not. You wouldn't be the first library to have this... PyPrimeMesh has a graphics
target, PyAnsysGeometry has an all
target, PyFluent has an extras
target... What we should really do @ansys/pyansys-core is ask for homogeneity in that additional target 😄 another one for the bucket list.
The other approach you can take is to accept that your library has outgrown the minimal dependencies and pyvista is now a required dependency on your side. In that case, your current "dependencies" list would be fine but your minimum_requirements.txt file should include all of them.
I totally agree.. the whole dependencies thing is bad organised in PyMAPDL. Pyvista should not have not been part of the required dependencies.
I'm quite conflicted about what to do. If have another library, if remove packages from the required dependencies, consider pyvista and the rest as required depencies.... or not doing anything at all! xD But eventually, this will have to be addressed in the future.
Let's wait for @koubaa opinion.
. or not doing anything at all! xD
@RobPasMue @germa89
We should have called it minimal_requirements
. This is the minimal set of packages, not the minimum version of the full set of packages. The version numbers of the dependencies are not relevant here.
I'm open to some level of backwards incompatible changes at this stage to get this right, but I'm not sure what's best.
To my pymapdl
means a python client for mapdl, with all batteries included
.
One option is to change the pypi package name of pymapdl to pymapdl
and then ansys.mapdl.core
can become the minimal package. To me that is what the term core
already implies. Another option is to do a subpackage as German mentioned earlier.
It is settled then.
In this file, we only care about libraries. I will do a follow up PR.
Regarding library splitting, it is going to be on the queue because it is not priority. But eventually, we might need to work on it.
Bumps the minimal group with 2 updates in the / directory: importlib-metadata and psutil.
Updates
importlib-metadata
from 7.1.0 to 7.2.0Changelog
Sourced from importlib-metadata's changelog.
Commits
311cef4
Finalize963f643
gh-120801: Update fixtures.5eee2ff
Merge https://github.com/jaraco/skeletona595a0f
Rename extras to align with core metadata spec.e8f6869
Merge https://github.com/jaraco/skeleton67aab15
Revert "Allow macos on Python 3.8 to fail as GitHub CI has dropped support."42b4610
Merge https://github.com/jaraco/skeletonbcf8f07
Move project.urls to appear in the order that ini2toml generates it. Remove p...744cf2a
Allow macos on Python 3.8 to fail as GitHub CI has dropped support.d34801b
Migrated config to pyproject.toml using jaraco.develop.migrate-config and ini...Updates
psutil
from 5.9.8 to 6.0.0Changelog
Sourced from psutil's changelog.
... (truncated)
Commits
3d5522a
release5b30ef4
Add aarch64 manylinux wheels (#2425)1d092e7
test subprocesses: sleep() with an interval of 0.1 to make the test process m...5f80c12
Fix #2412, [macOS]: can't compile on macOS 10.4 PowerPC due to missingMNT_
...89b6096
process_iter(): use another global var to keep track of reused PIDs9421bf8
openbsd: skip test if cmdline() returns [] due to EBUSY4b1a054
Fix #2250 / NetBSD / cmdline: retry on EBUSY. (#2421)20be5ae
ruff: enable and fix 'unused variable' rule5530985
chore(ci): update actions (#2417)1c7cb0a
Don't build with limited API for 3.13 free-threaded build (#2402)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show