Repository: Qiskit/qiskit

Issue:
Old classes are not accessible via qiskit.extensions
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues -->

### Information

- **Qiskit Terra version**: 0.14.0
- **Python version**: All
- **Operating system**: Any

### What is the current behavior?

Running 
```
from qiskit.extensions import Cu3Gate
```
Raises an `ImportError`

```
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name 'Cu3Gate' from 'qiskit.extensions' (/home/mtreinish/git/qiskit/qiskit/.tox/lint/lib/python3.8/site-packages/qiskit/extensions/__init__.py)
```

as do other classes which were deprecated as part of the 0.13.0 release cleanup. It worked fine on qiskit-terra 0.13.0 (also without a deprecation warning, which I thought it would raise). This is a big breakage and needs to be fixed in a quick 0.14.1 release.

### Steps to reproduce the problem

```
from qiskit.extensions import Cu3Gate
```

### What is the expected behavior?

This works, this is likely fallout from rushing through #4035 

### Suggested solutions

Fix this



Discussion:

Resolving patch:
diff --git a/qiskit/circuit/library/standard_gates/__init__.py b/qiskit/circuit/library/standard_gates/__init__.py
--- a/qiskit/circuit/library/standard_gates/__init__.py
+++ b/qiskit/circuit/library/standard_gates/__init__.py
@@ -84,5 +84,17 @@
 from .y import YGate, CYGate
 from .z import ZGate, CZGate
 
-from .boolean_logical_gates import logical_and, logical_or
 from .multi_control_rotation_gates import mcrx, mcry, mcrz
+
+# deprecated gates
+from .boolean_logical_gates import logical_and, logical_or
+from .u1 import Cu1Gate
+from .u3 import Cu3Gate
+from .x import CnotGate, ToffoliGate
+from .swap import FredkinGate
+from .i import IdGate
+from .rx import CrxGate
+from .ry import CryGate
+from .rz import CrzGate
+from .y import CyGate
+from .z import CzGate


Test patch:
diff --git a/test/python/circuit/test_controlled_gate.py b/test/python/circuit/test_controlled_gate.py
--- a/test/python/circuit/test_controlled_gate.py
+++ b/test/python/circuit/test_controlled_gate.py
@@ -904,6 +904,8 @@ def test_controlled_standard_gates(self, num_ctrl_qubits, gate_class):
 class TestDeprecatedGates(QiskitTestCase):
     """Test controlled of deprecated gates."""
 
+    import qiskit.extensions as ext
+
     import qiskit.extensions.standard.i as i
     import qiskit.extensions.standard.rx as rx
     import qiskit.extensions.standard.ry as ry
@@ -938,7 +940,18 @@ class TestDeprecatedGates(QiskitTestCase):
           (x.CXGate, x.CnotGate, []),
           (x.CCXGate, x.ToffoliGate, []),
           (y.CYGate, y.CyGate, []),
-          (z.CZGate, z.CzGate, []))
+          (z.CZGate, z.CzGate, []),
+          (i.IGate, ext.IdGate, []),
+          (rx.CRXGate, ext.CrxGate, [0.1]),
+          (ry.CRYGate, ext.CryGate, [0.1]),
+          (rz.CRZGate, ext.CrzGate, [0.1]),
+          (swap.CSwapGate, ext.FredkinGate, []),
+          (u1.CU1Gate, ext.Cu1Gate, [0.1]),
+          (u3.CU3Gate, ext.Cu3Gate, [0.1, 0.2, 0.3]),
+          (x.CXGate, ext.CnotGate, []),
+          (x.CCXGate, ext.ToffoliGate, []),
+          (y.CYGate, ext.CyGate, []),
+          (z.CZGate, ext.CzGate, []))
     @unpack
     def test_deprecated_gates(self, new, old, params):
         """Test types of the deprecated gate classes."""