task: metadata: install: pip install -e .[dev]
patch: diff --git a/src/hist/axis/__init__.py b/src/hist/axis/__init__.py
index 87af714..a528a17 100644
--- a/src/hist/axis/__init__.py
+++ b/src/hist/axis/__init__.py
@@ -141,7 +141,7 @@ class Boolean(AxesMixin, bha.Boolean, family=hist):
         self.label: str = label
 
 
-class Variable(bha.Variable, AxesMixin, family=hist):
+class Variable(AxesMixin, bha.Variable, family=hist):
     __slots__ = ()
 
     def __init__(
@@ -150,12 +150,12 @@ class Variable(bha.Variable, AxesMixin, family=hist):
         *,
         name: str = "",
         label: str = "",
+        metadata: Any = None,
         flow: bool = True,
         underflow: Optional[bool] = None,
         overflow: Optional[bool] = None,
         growth: bool = False,
         circular: bool = False,
-        metadata: Any = None,
         __dict__: Optional[Dict[str, Any]] = None,
     ) -> None:
         super().__init__(
@@ -171,7 +171,7 @@ class Variable(bha.Variable, AxesMixin, family=hist):
         self.label: str = label
 
 
-class Integer(bha.Integer, AxesMixin, family=hist):
+class Integer(AxesMixin, bha.Integer, family=hist):
     __slots__ = ()
 
     def __init__(
@@ -181,12 +181,12 @@ class Integer(bha.Integer, AxesMixin, family=hist):
         *,
         name: str = "",
         label: str = "",
+        metadata: Any = None,
         flow: bool = True,
         underflow: Optional[bool] = None,
         overflow: Optional[bool] = None,
         growth: bool = False,
         circular: bool = False,
-        metadata: Any = None,
         __dict__: Optional[Dict[str, Any]] = None,
     ) -> None:
         super().__init__(
@@ -203,7 +203,7 @@ class Integer(bha.Integer, AxesMixin, family=hist):
         self.label: str = label
 
 
-class IntCategory(bha.IntCategory, AxesMixin, family=hist):
+class IntCategory(AxesMixin, bha.IntCategory, family=hist):
     __slots__ = ()
 
     def __init__(
@@ -212,8 +212,8 @@ class IntCategory(bha.IntCategory, AxesMixin, family=hist):
         *,
         name: str = "",
         label: str = "",
-        growth: bool = False,
         metadata: Any = None,
+        growth: bool = False,
         __dict__: Optional[Dict[str, Any]] = None,
     ) -> None:
         super().__init__(
@@ -226,7 +226,7 @@ class IntCategory(bha.IntCategory, AxesMixin, family=hist):
         self.label: str = label
 
 
-class StrCategory(bha.StrCategory, AxesMixin, family=hist):
+class StrCategory(AxesMixin, bha.StrCategory, family=hist):
     __slots__ = ()
 
     def __init__(
@@ -235,8 +235,8 @@ class StrCategory(bha.StrCategory, AxesMixin, family=hist):
         *,
         name: str = "",
         label: str = "",
-        growth: bool = False,
         metadata: Any = None,
+        growth: bool = False,
         __dict__: Optional[Dict[str, Any]] = None,
     ) -> None:
         super().__init__(

problem_statement: [BUG] Repr issues
The integer repr is missing name/label, and label gets repeated even if it's just picking it up from name for the other axes, like Regular.
repo: scikit-hep/hist
test_cmd: pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
test_patch: diff --git a/tests/test_reprs.py b/tests/test_reprs.py
index 58317d3..19e98a4 100644
--- a/tests/test_reprs.py
+++ b/tests/test_reprs.py
@@ -1,45 +1,85 @@
 def test_1D_empty_repr(named_hist):
 
-    h = named_hist.new.Reg(10, -1, 1, name="x").Double()
+    h = named_hist.new.Reg(10, -1, 1, name="x", label="y").Double()
     html = h._repr_html_()
     assert html
+    assert "name='x'" in repr(h)
+    assert "label='y'" in repr(h)
+
+
+def test_1D_var_empty_repr(named_hist):
+
+    h = named_hist.new.Var(range(10), name="x", label="y").Double()
+    html = h._repr_html_()
+    assert html
+    assert "name='x'" in repr(h)
+    assert "label='y'" in repr(h)
+
+
+def test_1D_int_empty_repr(named_hist):
+
+    h = named_hist.new.Int(-9, 9, name="x", label="y").Double()
+    html = h._repr_html_()
+    assert html
+    assert "name='x'" in repr(h)
+    assert "label='y'" in repr(h)
 
 
 def test_1D_intcat_empty_repr(named_hist):
 
-    h = named_hist.new.IntCat([1, 3, 5], name="x").Double()
+    h = named_hist.new.IntCat([1, 3, 5], name="x", label="y").Double()
     html = h._repr_html_()
     assert html
+    assert "name='x'" in repr(h)
+    assert "label='y'" in repr(h)
 
 
 def test_1D_strcat_empty_repr(named_hist):
 
-    h = named_hist.new.StrCat(["1", "3", "5"], name="x").Double()
+    h = named_hist.new.StrCat(["1", "3", "5"], name="x", label="y").Double()
     html = h._repr_html_()
     assert html
+    assert "name='x'" in repr(h)
+    assert "label='y'" in repr(h)
 
 
 def test_2D_empty_repr(named_hist):
 
-    h = named_hist.new.Reg(10, -1, 1, name="x").Int(0, 15, name="y").Double()
+    h = (
+        named_hist.new.Reg(10, -1, 1, name="x", label="y")
+        .Int(0, 15, name="p", label="q")
+        .Double()
+    )
     html = h._repr_html_()
     assert html
+    assert "name='x'" in repr(h)
+    assert "name='p'" in repr(h)
+    assert "label='y'" in repr(h)
+    assert "label='q'" in repr(h)
 
 
 def test_1D_circ_empty_repr(named_hist):
 
-    h = named_hist.new.Reg(10, -1, 1, circular=True, name="r").Double()
+    h = named_hist.new.Reg(10, -1, 1, circular=True, name="R", label="r").Double()
     html = h._repr_html_()
     assert html
+    assert "name='R'" in repr(h)
+    assert "label='r'" in repr(h)
 
 
 def test_ND_empty_repr(named_hist):
 
     h = (
-        named_hist.new.Reg(10, -1, 1, name="x")
-        .Reg(12, -3, 3, name="y")
-        .Reg(15, -2, 4, name="z")
+        named_hist.new.Reg(10, -1, 1, name="x", label="y")
+        .Reg(12, -3, 3, name="p", label="q")
+        .Reg(15, -2, 4, name="a", label="b")
         .Double()
     )
     html = h._repr_html_()
     assert html
+    assert "name='x'" in repr(h)
+    assert "name='p'" in repr(h)
+    assert "name='a'" in repr(h)
+    assert "label='y'" in repr(h)
+    assert "label='q'" in repr(h)
+    assert "label='b'" in repr(h)