-
Notifications
You must be signed in to change notification settings - Fork 34
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
Limit dependencies to strictly necessary packages. #383
Limit dependencies to strictly necessary packages. #383
Conversation
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #383 +/- ##
==========================================
+ Coverage 76.84% 77.52% +0.67%
==========================================
Files 78 81 +3
Lines 6974 7096 +122
==========================================
+ Hits 5359 5501 +142
+ Misses 1615 1595 -20 ☔ View full report in Codecov by Sentry. |
Cannot build the docs. Sphinx crashes with the traceback: Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/cmd/build.py", line 298, in build_main
app.build(args.force_all, args.filenames)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/application.py", line 355, in build
self.builder.build_update()
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 293, in build_update
self.build(to_build,
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 313, in build
updated_docnames = set(self.read())
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 420, in read
self._read_serial(docnames)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 441, in _read_serial
self.read_doc(docname)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/builders/__init__.py", line 498, in read_doc
publisher.publish()
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/core.py", line 234, in publish
self.document = self.reader.read(self.source, self.parser,
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/io.py", line 105, in read
self.parse()
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/readers/__init__.py", line 76, in parse
self.parser.parse(self.input, document)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/sphinx/parsers.py", line 81, in parse
self.statemachine.run(inputlines, document, inliner=self.inliner)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 169, in run
results = StateMachineWS.run(self, input_lines, input_offset,
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/statemachine.py", line 233, in run
context, next_state, result = self.check_line(
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/statemachine.py", line 445, in check_line
return method(match, context, next_state)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2785, in underline
self.section(title, source, style, lineno - 1, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 325, in section
self.new_subsection(title, lineno, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 391, in new_subsection
newabsoffset = self.nested_parse(
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 279, in nested_parse
state_machine.run(block, input_offset, memo=self.memo,
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 195, in run
results = StateMachineWS.run(self, input_lines, input_offset)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/statemachine.py", line 233, in run
context, next_state, result = self.check_line(
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/statemachine.py", line 445, in check_line
return method(match, context, next_state)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2785, in underline
self.section(title, source, style, lineno - 1, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 325, in section
self.new_subsection(title, lineno, messages)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 391, in new_subsection
newabsoffset = self.nested_parse(
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 279, in nested_parse
state_machine.run(block, input_offset, memo=self.memo,
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 195, in run
results = StateMachineWS.run(self, input_lines, input_offset)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/statemachine.py", line 233, in run
context, next_state, result = self.check_line(
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/statemachine.py", line 445, in check_line
return method(match, context, next_state)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2355, in explicit_markup
nodelist, blank_finish = self.explicit_construct(match)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2367, in explicit_construct
return method(self, expmatch)
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2104, in directive
return self.run_directive(
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/parsers/rst/states.py", line 2154, in run_directive
result = directive_instance.run()
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/pytest_doctestplus/sphinx/doctestplus.py", line 23, in run
if re.match('win32', self.content[0]):
File "/home/docs/checkouts/readthedocs.org/user_builds/sbpy/envs/383/lib/python3.10/site-packages/docutils/statemachine.py", line 1136, in __getitem__
return self.data[i]
IndexError: list index out of range which doesn't mean anything to me. I can build ffa5115, so it is definitely something I changed with sbpy. I will look into this some more. Meanwhile, the rest of the checks are good. |
Resolving the documentation build error is pending some more information on the problem via scientific-python/pytest-doctestplus#219 |
@jianyangli Remote tests are also passing locally with and without |
sbpy/units/tests/test_core.py
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have a general question about how to set up the test in the case when the functions being called inside a function depend on an optional package.
For example, function a
doesn't directly uses synphot
, but a
calls function b
, and b
uses synphot
. Should we leave everything (check the availability of a module, test) about optional packages to the functions that directly use the module, and don't do this check for higher level functions or classes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess just consider the user experience for each? But also consider what happens if function b is later revised and no longer needs synphot. I guess then the requirement on a will be obsolete and might be difficult to find. So, best to leave it to the point the package is actually used?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree.
Edited the related decorators to use them.
* Mark additional doctests with required packages: synphot, scipy * Rename utils.requires and utils.optional to utils.required_packages and utils.optional_packages * Rename utils.decorators.optional to utils.decorators.optionally_uses * Prefer use of unittest.mock.patch to test optional behavior when a package is available to the testing environment
a458867
to
e342b89
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see any obvious problems or questions now. I think it's ready to deploy.
Thanks, @jianyangli ! |
Make scipy, ads, astroquery, and synphot optional packages, limiting the required packages to numpy and astropy.
To do:
Update documentation so that it can be built without optional packages?Addresses #382