Repository: scipy/scipy

Issue:
`signal.get_window()` has a missing doc link and cannot get a window in some window functions
<!-- 
Thank you for taking the time to file a bug report. 
Please fill in the fields below, deleting the sections that 
don't apply to your issue. You can view the final output
by clicking the preview button above.
Note: This is a comment, and won't appear in the output.
-->

When I tried to fix #12544, I think I found some issues in signal.windows.py

- [ ] `signal.get_window` notes is a missing window function link
I think notes in [scipy\.signal\.get\_window](https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.get_window.html#scipy.signal.get_window) is missing `cosine` window functions.

`signal.get_window` can accept the window function:
```
>>> signal.windows.cosine(5)
array([0.30901699, 0.80901699, 1.        , 0.80901699, 0.30901699])
>>> signal.get_window("cosine", 5, fftbins=False)
array([0.30901699, 0.80901699, 1.        , 0.80901699, 0.30901699])
```


- [ ] Some window functions cannot be used from `signal.get_window`.
I'm not sure these are expected behavior or not, but I can get a tukey window with `signal.windows.tukey`, but I cannot get it with `signal.get_window`.

```
>>> signal.windows.tukey(10)
array([0.        , 0.41317591, 0.96984631, 1.        , 1.        ,
       1.        , 1.        , 0.96984631, 0.41317591, 0.        ])
>>> signal.get_window("tukey", 10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/scipy/signal/windows/windows.py", line 2103, in get_window
    raise ValueError("The '" + window + "' window needs one or "
ValueError: The 'tukey' window needs one or more parameters -- pass a tuple.
```

`signal.windows.exponential' has a same issue:
```
>>> signal.windows.exponential(10)
array([0.011109  , 0.03019738, 0.082085  , 0.22313016, 0.60653066,
       0.60653066, 0.22313016, 0.082085  , 0.03019738, 0.011109  ])
>>> signal.get_window("exponential", 10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/scipy/signal/windows/windows.py", line 2103, in get_window
    raise ValueError("The '" + window + "' window needs one or "
ValueError: The 'exponential' window needs one or more parameters -- pass a tuple.

```

Other window functions works.

#### Scipy/Numpy/Python version information:
<!-- You can simply run the following and paste the result in a code block
```
import sys, scipy, numpy; print(scipy.__version__, numpy.__version__, sys.version_info)
```
-->

Latest code in master branch


Discussion:

Resolving patch:
diff --git a/scipy/signal/windows/windows.py b/scipy/signal/windows/windows.py
--- a/scipy/signal/windows/windows.py
+++ b/scipy/signal/windows/windows.py
@@ -2018,7 +2018,7 @@ def _fftautocorr(x):
     ('chebwin', 'cheb'): (chebwin, True),
     ('cosine', 'halfcosine'): (cosine, False),
     ('dpss',): (dpss, True),
-    ('exponential', 'poisson'): (exponential, True),
+    ('exponential', 'poisson'): (exponential, False),
     ('flattop', 'flat', 'flt'): (flattop, False),
     ('gaussian', 'gauss', 'gss'): (gaussian, True),
     ('general gaussian', 'general_gaussian',
@@ -2030,7 +2030,7 @@ def _fftautocorr(x):
     ('parzen', 'parz', 'par'): (parzen, False),
     ('taylor', 'taylorwin'): (taylor, False),
     ('triangle', 'triang', 'tri'): (triang, False),
-    ('tukey', 'tuk'): (tukey, True),
+    ('tukey', 'tuk'): (tukey, False),
 }
 
 # Fill dict with all valid window name strings
@@ -2083,15 +2083,16 @@ def get_window(window, Nx, fftbins=True):
     - `~scipy.signal.windows.blackmanharris`
     - `~scipy.signal.windows.nuttall`
     - `~scipy.signal.windows.barthann`
+    - `~scipy.signal.windows.cosine`
+    - `~scipy.signal.windows.exponential`
+    - `~scipy.signal.windows.tukey`
+    - `~scipy.signal.windows.taylor`
     - `~scipy.signal.windows.kaiser` (needs beta)
     - `~scipy.signal.windows.gaussian` (needs standard deviation)
     - `~scipy.signal.windows.general_gaussian` (needs power, width)
     - `~scipy.signal.windows.dpss` (needs normalized half-bandwidth)
     - `~scipy.signal.windows.chebwin` (needs attenuation)
-    - `~scipy.signal.windows.exponential` (needs center, decay scale)
-    - `~scipy.signal.windows.tukey` (needs taper fraction)
-    - `~scipy.signal.windows.taylor` (needs number of constant sidelobes,
-      sidelobe level)
+
 
     If the window requires no parameters, then `window` can be a string.
 


Test patch:
diff --git a/scipy/signal/tests/test_windows.py b/scipy/signal/tests/test_windows.py
--- a/scipy/signal/tests/test_windows.py
+++ b/scipy/signal/tests/test_windows.py
@@ -702,8 +702,8 @@ def test_needs_params():
                    'general gaussian', 'general_gaussian',
                    'general gauss', 'general_gauss', 'ggs',
                    'dss', 'dpss',
-                   'chebwin', 'cheb', 'exponential', 'poisson', 'tukey',
-                   'tuk', 'dpss']:
+                   'chebwin', 'cheb',
+                   ]:
         assert_raises(ValueError, get_window, winstr, 7)
 
 
@@ -721,6 +721,10 @@ def test_not_needs_params():
                    'nuttall',
                    'parzen',
                    'taylor',
+                   'exponential',
+                   'poisson',
+                   'tukey',
+                   'tuk',
                    'triangle']:
         win = get_window(winstr, 7)
         assert_equal(len(win), 7)