-
-
Notifications
You must be signed in to change notification settings - Fork 18.4k
[CLN] Excel Module Cleanups #25275
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
[CLN] Excel Module Cleanups #25275
Changes from 2 commits
7bbe910
c98f72e
bc074ed
62ce7db
5e49439
cf3c5bc
e42b10c
a82119a
7f81675
03bc237
f30ab5c
9ef747f
19160fa
bcf053e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,7 +7,8 @@ | |
|
||
from pandas.core import config | ||
|
||
_writer_extensions = ["xlsx", "xls", "xlsm"] | ||
# the following extensions are already registered in pandas/core/config_init.py | ||
_registered_writer_extensions = ["xlsx", "xls", "xlsm"] | ||
|
||
|
||
_writers = {} | ||
|
@@ -24,13 +25,15 @@ def register_writer(klass): | |
for ext in klass.supported_extensions: | ||
if ext.startswith('.'): | ||
ext = ext[1:] | ||
if ext not in _writer_extensions: | ||
if ext not in _registered_writer_extensions: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So do we even need this block or is this entirely a no-op? I don't think we have any reader support for things outside of the already registered extensions right? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As far as I can tell it is a no-op, but I can't judge the implications of removing it. The tests pass without this. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If it simplifies code and doesn't impact functionality (which I believe to be the case) then I'd say just delete There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I stand corrected, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What was the failure? On a quick look I think it's only failing because of the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So the test was added in 42e06a7, with no specific usecase in mind, just to "Make ExcelWriter more pluggable" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Right - I think your removal here is too aggressive. Should only need to remove the non-excel extension not the entire test There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe the test is about being able to register a custom excel writer with custom extensions. The PR as is now breaks the ability to register custom extensions, so I removed the test for that. I read a bit on excel extensions, apparently there is also the binary There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Keep in mind these mechanisms are private. We don't currently support xlsb in any fashion (you can search issue tracker for requests) so the reasoning for removal of the registration here is arguably that we've over-engineered this feature internally. The test case for a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ok, thanks for the backgrounds. The test is now failing for Windows py27_np121. I don't understand the error, I'm guessing it's just flakiness. Any way to rerun the a specific job? |
||
config.register_option("io.excel.{ext}.writer".format(ext=ext), | ||
engine_name, validator=str) | ||
_writer_extensions.append(ext) | ||
_registered_writer_extensions.append(ext) | ||
|
||
|
||
def _get_default_writer(ext): | ||
"""Return the default writer per extension. This default engine is used | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can you follow pandas docstring conventions here? You can run the |
||
unles another engine is explicitly defined.""" | ||
_default_writers = {'xlsx': 'openpyxl', 'xlsm': 'openpyxl', 'xls': 'xlwt'} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would make this a module level variable, but maybe needs a followup for this. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I could see this going either way, so agreed that a followup makes sense. |
||
try: | ||
import xlsxwriter # noqa | ||
|
@@ -230,8 +233,6 @@ def _fill_mi_header(row, control_row): | |
|
||
return _maybe_convert_to_string(row), control_row | ||
|
||
# fill blank if index_col not None | ||
|
||
|
||
def _pop_header_name(row, index_col): | ||
""" | ||
|
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.
So just to be clear this was never part of the public API hence why I think OK to remove. If a user in spite of that still registered a custom subclass with an extension outside of
.xls
,.xlsx
or.xlsm
then potentially it would have an impact, but that seems like such an edge case to me hence why I think OK to remove.cc @jreback in any case
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.
Hmm...I'm -0.5 on this. Discarding because it's an "edge case" does not seem like a strong argument for removing this code if we're in the business of robustness. Potentially there are better ways to implement this, but I wouldn't necessarily go as far as removing for now.
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.
My main point is that it's not part of the public API and is a no-op with current internal code
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.
True. I'm still a little on the fence on this though for the reason I gave earlier, so getting @jreback input would be helpful for this.
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.
this is ok i think