Repository: numpy/numpydoc

Issue:
How to specify that parameter can equal the string 'integer'?
Say I have the following:
```python
def foo(bar: str) -> None:
    """
    Parameters
    ----------
    bar : {'integer', 'float'}
        Some description.
    """
    if bar not in {'integer', 'float'}:
        raise ValueError('bar is neither "integer" nor "float"')
```

The parameter `bar` is a `str`, and can only take on the values `'integer'` and `'float'`. However, if I run `numpydoc` on it, it reports:
```console
$ python -m numpydoc t.foo --validate
t.foo:SS01:No summary found (a short summary in a single line should be present at the beginning of the docstring)
t.foo:ES01:No extended summary found
t.foo:PR06:Parameter "bar" type should use "int" instead of "integer"
t.foo:SA01:See Also section not found
t.foo:EX01:No examples section found
```
The first 2 and last 2 errors are expected, but the middle one (`PR06`) feels like a false positive.

Noticed when trying to validate `pandas.to_numeric` (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_numeric.html), which has a parameter `downcast` which can be equal to the string `'integer'`

Discussion:
larsoner: Seems like a reasonable solution, thanks @rossbar !

Patch:
diff --git a/numpydoc/validate.py b/numpydoc/validate.py
index 91aca6b..3675737 100644
--- a/numpydoc/validate.py
+++ b/numpydoc/validate.py
@@ -564,6 +564,10 @@ def validate(obj_name):
             else:
                 if doc.parameter_type(param)[-1] == ".":
                     errs.append(error("PR05", param_name=param))
+                # skip common_type_error checks when the param type is a set of
+                # options
+                if "{" in doc.parameter_type(param):
+                    continue
                 common_type_errors = [
                     ("integer", "int"),
                     ("boolean", "bool"),


Test patch:
diff --git a/numpydoc/tests/test_validate.py b/numpydoc/tests/test_validate.py
index ecbe703..60cebcd 100644
--- a/numpydoc/tests/test_validate.py
+++ b/numpydoc/tests/test_validate.py
@@ -458,6 +458,28 @@ class GoodDocStrings:
         """
         pass
 
+    def valid_options_in_parameter_description_sets(self, bar):
+        """
+        Ensure a PR06 error is not raised when type is member of a set.
+
+        Literal keywords like 'integer' are valid when specified in a set of
+        valid options for a keyword parameter.
+
+        Parameters
+        ----------
+        bar : {'integer', 'boolean'}
+            The literal values of 'integer' and 'boolean' are part of an
+            options set and thus should not be subject to PR06 warnings.
+
+        See Also
+        --------
+        related : Something related.
+
+        Examples
+        --------
+        >>> result = 1 + 1
+        """
+
 
 class BadGenericDocStrings:
     """Everything here has a bad docstring
@@ -1089,6 +1111,7 @@ class TestValidator:
             "multiple_variables_on_one_line",
             "other_parameters",
             "warnings",
+            "valid_options_in_parameter_description_sets",
         ],
     )
     def test_good_functions(self, capsys, func):