Skip to content
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: update imports in tests #29275

Merged
merged 2 commits into from
Oct 31, 2019
Merged

CLN: update imports in tests #29275

merged 2 commits into from
Oct 31, 2019

Conversation

jbrockmendel
Copy link
Member

Medium-term goal is to separate out tslibs-only parts of these tests to make sure we have sufficient coverage in isolation.

per1 - Period("2011-02", freq="M")

@pytest.mark.parametrize("n", [1, 2, 3, 4])
def test_sub_n_gt_1_ticks(self, tick_classes, n):
# GH 23878
p1 = pd.Period("19910905", freq=tick_classes(n))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think doing this will conflict with what @SaturnFromTitan is or will be doing in other PRs. I think better to keep as pd.Period

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We didn't agree on a solution for this yet - so I don't mind. For now, I'm only focussing on imports from pandas.util.testing

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As long as Period is already in the namespace, I think this is a strict improvement. If later this gets reverted to only-pd.Period I'm mostly fine with that too.

One reason I like the not-pd pattern is that I can look at imports and get an idea of what is tested in this module.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well i am +1 on not using the pd namespace except in a very few cases in tests (eg when we are actually testing the ls namespace)

we should simply use the

from pandas import Series...

pattern it is immediately obvious what is and what is not imported
and there is no confusion about what to use

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is getting into personal development preferences but as a counter argument I sometimes find these imports very annoying. When debugging the pd namespace is almost always available, yet when copy pasting blocks of code that use this import machinery you then have to go up and see what is imported from top of the module.

But that aside... the bigger point is that (beyond tests, where this probably doesn’t matter) the from ... imports cause circular references and we will never be able to enforce those consistently. We end up in a weird state like #29133 where there isn’t a good rhyme or reason to where we place imports except for the fact that we tried it at one point and it caused a circular ref, so when then moved it somewhere else.

Ultimately I hope we don’t have to think about imports or circular references at all

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it’s not personal preference but just like we avoid * imports
having a global space is a bad idea

explicit is always better than implicit

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ultimately I hope we don’t have to think about imports or circular references at all

+1. Fortunately that's not an issue for most of the tests.

Copy link
Member

@WillAyd WillAyd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds good. lgtm

@@ -15,6 +15,7 @@
import pytest

import pandas as pd
from pandas import Timestamp
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should these just stay pd. since already imported or did you want to remove the preceding import?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In a later step I'm looking to separate out the remaining pd.* usages into a separate not-just-tslibs test module

@jreback jreback added the Clean label Oct 30, 2019
@jreback jreback added this to the 1.0 milestone Oct 30, 2019
@jreback
Copy link
Contributor

jreback commented Oct 30, 2019

this is fine

@jorisvandenbossche
Copy link
Member

This is getting into personal development preferences but as a counter argument I sometimes find these imports very annoying. When debugging the pd namespace is almost always available, yet when copy pasting blocks of code that use this import machinery you then have to go up and see what is imported from top of the module.

+1 on what @WillAyd said here.
My personal preference is also to use pd. in tests when we are testing public things.

Copy link
Member

@WillAyd WillAyd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm. I think we as a team have some disagreements over import styles but OK to move forward with this for now and leave that resolution to a larger discussion

@jreback jreback merged commit e55e773 into pandas-dev:master Oct 31, 2019
@jreback
Copy link
Contributor

jreback commented Oct 31, 2019

thanks @jbrockmendel

@jorisvandenbossche
Copy link
Member

I think we as a team have some disagreements over import styles but OK to move forward with this for now and leave that resolution to a larger discussion

Yep, but maybe not do more of this PRs before having such discussion then?

@jbrockmendel jbrockmendel deleted the ztests branch October 31, 2019 14:43
Reksbril pushed a commit to Reksbril/pandas that referenced this pull request Nov 18, 2019
proost pushed a commit to proost/pandas that referenced this pull request Dec 19, 2019
proost pushed a commit to proost/pandas that referenced this pull request Dec 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants