DOC: Fixing SS02 errors as per #25113
Some of the SS02 error mentioned are not because of methods but of docstring.
For example, in the first SS02 error pandas/tseries/offsets.py has no method named normalize.

- [X] Closes #25113 
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=h1) Report
> Merging [#25362](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/b90bcb59ec154a8ddb310759e47bd1c0b7a80657?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/25362/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=tree)

```diff
@@           Coverage Diff           @@
##           master   #25362   +/-   ##
=======================================
  Coverage   91.73%   91.73%           
=======================================
  Files         173      173           
  Lines       52839    52839           
=======================================
  Hits        48472    48472           
  Misses       4367     4367
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.29% <ø> (ø)` | :arrow_up: |
| #single | `41.72% <ø> (ø)` | :arrow_up: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/io/pytables.py](https://codecov.io/gh/pandas-dev/pandas/pull/25362/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL3B5dGFibGVzLnB5) | `90.2% <ø> (ø)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=footer). Last update [b90bcb5...dca54de](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 # [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=h1) Report
> Merging [#25362](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/f74aba614554d1de4d7986fef6296a4eda951ac9?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/25362/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #25362      +/-   ##
==========================================
+ Coverage   91.73%   91.73%   +<.01%     
==========================================
  Files         173      173              
  Lines       52839    52839              
==========================================
+ Hits        48472    48473       +1     
+ Misses       4367     4366       -1
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.29% <ø> (ø)` | :arrow_up: |
| #single | `41.71% <ø> (-0.01%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/io/pytables.py](https://codecov.io/gh/pandas-dev/pandas/pull/25362/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL3B5dGFibGVzLnB5) | `90.2% <ø> (ø)` | :arrow_up: |
| [pandas/util/testing.py](https://codecov.io/gh/pandas-dev/pandas/pull/25362/diff?src=pr&el=tree#diff-cGFuZGFzL3V0aWwvdGVzdGluZy5weQ==) | `87.66% <0%> (+0.09%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=footer). Last update [f74aba6...32f1584](https://codecov.io/gh/pandas-dev/pandas/pull/25362?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 @souvik3333 : Before we can close the issue, we will need to fix all the errors in the issue.  It looks like you only addressed some of them, unless you're planning to tackle the rest in this PR. Yes, I would like to tackle the rest errors, but rest of the error creating line numbers are not coming up and when I am trying to find the error in the mentioned file, the mentioned method in not in that file. One example for this issue is given in commit description. I need little help here. Can you please check it @gfyoung?  @souvik3333 : Can you update our doc checking script to enable `SS02` to see which errors you get?

> Yes, I would like to tackle the rest errors, but rest of the error creating line numbers are not coming up and when I am trying to find the error in the mentioned file, the mentioned method in not in that file.

cc @kynan @datapythonista  > @souvik3333 : Can you update our doc checking script to enable `SS02` to see which errors you get?

Can you explain bit more on what I have to do? 

 https://github.com/pandas-dev/pandas/blob/4be995c13452766da48a82f3ecd0b5a24e48f526/ci/code_checks.sh#L245

Add `SS02` at the end of the line shown above (comma-delimited). > Add `SS02` at the end of the line shown above (comma-delimited).

Nothing changed, Same errors are coming up.

 > Nothing changed, Same errors are coming up.

@souvik3333 : What I mean is: you need to add that to the script and push that change to your PR. I have updated the PR. Can you check @gfyoung what I need to do next? @souvik3333 : Have a look at the `SS02` failures here:

https://dev.azure.com/pandas-dev/pandas/_build/results?buildId=8520

(Click the `Checks_and_doc_job`)

Correct those errors, and I think this PR will be good to go!  I do realize that it may be difficult to verify since you were saying you had some trouble replicating all of the errors, but the error descriptions are pretty clear that you can figure out what to correct and push to the PR. > Correct those errors, and I think this PR will be good to go! I do realize that it may be difficult to verify since you were saying you had some trouble replicating all of the errors, but the error descriptions are pretty clear that you can figure out what to correct and push to the PR.

Yes, but I am facing problem finding the exact location of the error! Can you please show me how to find the error creating line for one error then I can try for the rest of them? > Can you please show me how to find the error creating line for one error then I can try for the rest of them?

cc @WillAyd @datapythonista : Would it be possible to provide line numbers and file paths instead of using the "dot" syntax for pointing to errors?  This seems to be a very valid concern

@souvik3333 : The errors should be located in the following files:

https://github.com/pandas-dev/pandas/blob/b2c751985ebd09b72d917d08dc06193dc0922018/pandas/_libs/tslibs/timestamps.pyx
https://github.com/pandas-dev/pandas/blob/b2c751985ebd09b72d917d08dc06193dc0922018/pandas/tseries/offsets.py

The last three around I think should be ignored.  `Panel` is being removed, so I think we should ignore those warnings, though I'm not sure what the right is to ignore them (or if we can)...

Save the `Panel` errors for last (i.e. separate commit after you fix the others).  If necessary, we'll tweak the code (https://github.com/pandas-dev/pandas/blob/590cb547d5ca19b7fbbfb26d6bfd44b00061fab3/pandas/core/generic.py#L264) that sets those docstrings if we need to. > cc @WillAyd @datapythonista : Would it be possible to provide line numbers and file paths instead of using the "dot" syntax for pointing to errors? This seems to be a very valid concern

@souvik3333 feel free to open an issue for this request if there's not already one out there - can be discussed further therein! Those `None(None)` are the file path and line number when we can guess where the docstring is defined. But there are limitations on that. For example, it's not trivial (or not possible) to know the file and line when the docstring is in a Cython file. Or when the docstring is created in a variable and then set to the `__doc__` attribute of the object.

I think for this case you'll have to try things like `grep -R "class Timstamp" *`, `grep -r "def ceil" *` until you find where those methods are defined. @souvik3333 can you update errors as mentioned above? > @souvik3333 can you update errors as mentioned above?

Yes, I need a little more time. I will update the PR once it's done. I was thinking of continuing the work for this pull request, by tracking down all the outstanding failures and fixing them.

@souvik3333 , I would keep your existing commits and build on top of them, so your work would be preserved.

Is there some way I can contribute commits here without creating a new pull request? > Is there some way I can contribute commits here without creating a new pull request?

I don't know but you can work on it as I am busy with my exams and it would take me some time before starting working on it again. @nmusolino if you'd like you can clone this and push to your own PR

@souvik3333 closing as stale given your latest comment. Thanks in any case!