diff --git a/CHANGES b/CHANGES
index b21be59..27a6c38 100644
--- a/CHANGES
+++ b/CHANGES
@@ -12,6 +12,7 @@ Pint Changelog
   end_values (Issue #1026)
 - Reinstated support for pickle protocol 0 and 1, which is required by pytables
   (Issue #1036, Thanks Guido Imperiale)
+- Fixed bug with multiplication of Quantity by dict (Issue #1032)
 - Bare zeros and NaNs (not wrapped by Quantity) are now gracefully accepted by all numpy
   operations; e.g. np.stack([Quantity([1, 2], "m"), [0, np.nan]) is now valid, whereas
   np.stack([Quantity([1, 2], "m"), [3, 4]) will continue raising DimensionalityError.
diff --git a/pint/quantity.py b/pint/quantity.py
index 454c462..c1ade31 100644
--- a/pint/quantity.py
+++ b/pint/quantity.py
@@ -74,9 +74,12 @@ class _Exception(Exception):  # pragma: no cover
 def reduce_dimensions(f):
     def wrapped(self, *args, **kwargs):
         result = f(self, *args, **kwargs)
-        if result._REGISTRY.auto_reduce_dimensions:
-            return result.to_reduced_units()
-        else:
+        try:
+            if result._REGISTRY.auto_reduce_dimensions:
+                return result.to_reduced_units()
+            else:
+                return result
+        except AttributeError:
             return result
 
     return wrapped
@@ -85,8 +88,11 @@ def reduce_dimensions(f):
 def ireduce_dimensions(f):
     def wrapped(self, *args, **kwargs):
         result = f(self, *args, **kwargs)
-        if result._REGISTRY.auto_reduce_dimensions:
-            result.ito_reduced_units()
+        try:
+            if result._REGISTRY.auto_reduce_dimensions:
+                result.ito_reduced_units()
+        except AttributeError:
+            pass
         return result
 
     return wrapped

Multiplication of quantity by dictionary-like object
I want to multiply a `quantity` by a `dict`-like object which has its own multiply defined. I would like for `pint` to return a `NotImplemented` when it tries to multiply a `quantity` by an object of my type, forcing the multiply to be done using my object's multiply. Here's what currently happens:

```python
import collections
import pint

ureg = pint.UnitRegistry()
q = 5 * ureg.s
c = collections.Counter({1:2, 3:4})
q * c
AttributeError: 'NotImplementedType' object has no attribute '_REGISTRY'
```
I understand that `collections.Counter` doesn't have its own multiply defined, but the error I get is the same if I attempt to multiply the `quantity` by my object with the `quantity` on the left (if the `quantity` is on the right, my object's multiply is used). The actual error here occurs in `pint.quantity.ireduce_dimensions`, when the result of calling the input function `f` is `NotImplemented`.
diff --git a/pint/testsuite/test_issues.py b/pint/testsuite/test_issues.py
index a3be41f..29c7905 100644
--- a/pint/testsuite/test_issues.py
+++ b/pint/testsuite/test_issues.py
@@ -671,6 +671,19 @@ class TestIssues(QuantityTestCase):
         assert q.units == ureg.nanometer
         assert q.magnitude == 1
 
+    def test_issue1032(self):
+        class MultiplicativeDictionary(dict):
+            def __rmul__(self, other):
+                return self.__class__(
+                    {key: value * other for key, value in self.items()}
+                )
+
+        q = 3 * ureg.s
+        d = MultiplicativeDictionary({4: 5, 6: 7})
+        assert q * d == MultiplicativeDictionary({4: 15 * ureg.s, 6: 21 * ureg.s})
+        with self.assertRaises(TypeError):
+            d * q
+
     @helpers.requires_numpy()
     def test_issue973(self):
         """Verify that an empty array Quantity can be created through multiplication."""

pip install -e .
parse_log_pytest
pytest
pytest pytest-cov pytest-mpl
3.7
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs @ file:///croot/attrs_1668696182826/work
certifi @ file:///croot/certifi_1671487769961/work/certifi
coverage==7.2.7
cycler==0.11.0
flit_core @ file:///opt/conda/conda-bld/flit-core_1644941570762/work/source/flit_core
fonttools==4.38.0
importlib-metadata @ file:///tmp/build/80754af9/importlib-metadata_1648562407465/work
importlib-resources==5.12.0
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
Jinja2==3.1.6
kiwisolver==1.4.5
MarkupSafe==2.1.5
matplotlib==3.5.3
numpy==1.21.6
packaging @ file:///croot/packaging_1671697413597/work
Pillow==9.5.0
-e git+https://github.com/hgrecco/pint.git@957453c6adefccbb8ed741dbb9d0ba656273cb71#egg=Pint
pluggy @ file:///tmp/build/80754af9/pluggy_1648042572264/work
py @ file:///opt/conda/conda-bld/py_1644396412707/work
pyparsing==3.1.4
pytest==7.1.2
pytest-cov==4.1.0
pytest-mpl==0.17.0
python-dateutil==2.9.0.post0
six==1.17.0
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
typing_extensions @ file:///croot/typing_extensions_1669924550328/work
zipp @ file:///croot/zipp_1672387121353/work

name: pint
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - attrs=22.1.0=py37h06a4308_0
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_0
  - flit-core=3.6.0=pyhd3eb1b0_0
  - importlib-metadata=4.11.3=py37h06a4308_0
  - importlib_metadata=4.11.3=hd3eb1b0_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - packaging=22.0=py37h06a4308_0
  - pip=22.3.1=py37h06a4308_0
  - pluggy=1.0.0=py37h06a4308_1
  - py=1.11.0=pyhd3eb1b0_0
  - pytest=7.1.2=py37h06a4308_0
  - python=3.7.16=h7a1cb2a_0
  - readline=8.2=h5eee18b_0
  - setuptools=65.6.3=py37h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py37h06a4308_0
  - typing_extensions=4.4.0=py37h06a4308_0
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zipp=3.11.0=py37h06a4308_0
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.2.7
      - cycler==0.11.0
      - fonttools==4.38.0
      - importlib-resources==5.12.0
      - jinja2==3.1.6
      - kiwisolver==1.4.5
      - markupsafe==2.1.5
      - matplotlib==3.5.3
      - numpy==1.21.6
      - pillow==9.5.0
      - pint==0.12.dev57+g957453c
      - pyparsing==3.1.4
      - pytest-cov==4.1.0
      - pytest-mpl==0.17.0
      - python-dateutil==2.9.0.post0
      - six==1.17.0
prefix: /opt/conda/envs/pint

pint/testsuite/test_issues.py::TestIssues::test_issue1032
pint/testsuite/test_issues.py::TestIssues::test_alternative_angstrom_definition pint/testsuite/test_issues.py::TestIssues::test_angstrom_creation pint/testsuite/test_issues.py::TestIssues::test_issue104 pint/testsuite/test_issues.py::TestIssues::test_issue105 pint/testsuite/test_issues.py::TestIssues::test_issue1062 pint/testsuite/test_issues.py::TestIssues::test_issue127 pint/testsuite/test_issues.py::TestIssues::test_issue170 pint/testsuite/test_issues.py::TestIssues::test_issue171_T pint/testsuite/test_issues.py::TestIssues::test_issue171_real_imag pint/testsuite/test_issues.py::TestIssues::test_issue250 pint/testsuite/test_issues.py::TestIssues::test_issue252 pint/testsuite/test_issues.py::TestIssues::test_issue29 pint/testsuite/test_issues.py::TestIssues::test_issue323 pint/testsuite/test_issues.py::TestIssues::test_issue339 pint/testsuite/test_issues.py::TestIssues::test_issue354_356_370 pint/testsuite/test_issues.py::TestIssues::test_issue44 pint/testsuite/test_issues.py::TestIssues::test_issue45 pint/testsuite/test_issues.py::TestIssues::test_issue45b pint/testsuite/test_issues.py::TestIssues::test_issue468 pint/testsuite/test_issues.py::TestIssues::test_issue482 pint/testsuite/test_issues.py::TestIssues::test_issue483 pint/testsuite/test_issues.py::TestIssues::test_issue50 pint/testsuite/test_issues.py::TestIssues::test_issue507 pint/testsuite/test_issues.py::TestIssues::test_issue52 pint/testsuite/test_issues.py::TestIssues::test_issue523 pint/testsuite/test_issues.py::TestIssues::test_issue532 pint/testsuite/test_issues.py::TestIssues::test_issue54 pint/testsuite/test_issues.py::TestIssues::test_issue54_related pint/testsuite/test_issues.py::TestIssues::test_issue61 pint/testsuite/test_issues.py::TestIssues::test_issue62 pint/testsuite/test_issues.py::TestIssues::test_issue625a pint/testsuite/test_issues.py::TestIssues::test_issue625b pint/testsuite/test_issues.py::TestIssues::test_issue625c pint/testsuite/test_issues.py::TestIssues::test_issue655a pint/testsuite/test_issues.py::TestIssues::test_issue655b pint/testsuite/test_issues.py::TestIssues::test_issue66 pint/testsuite/test_issues.py::TestIssues::test_issue66b pint/testsuite/test_issues.py::TestIssues::test_issue69 pint/testsuite/test_issues.py::TestIssues::test_issue74 pint/testsuite/test_issues.py::TestIssues::test_issue75 pint/testsuite/test_issues.py::TestIssues::test_issue783 pint/testsuite/test_issues.py::TestIssues::test_issue85 pint/testsuite/test_issues.py::TestIssues::test_issue856 pint/testsuite/test_issues.py::TestIssues::test_issue856b pint/testsuite/test_issues.py::TestIssues::test_issue86 pint/testsuite/test_issues.py::TestIssues::test_issue876 pint/testsuite/test_issues.py::TestIssues::test_issue902 pint/testsuite/test_issues.py::TestIssues::test_issue912 pint/testsuite/test_issues.py::TestIssues::test_issue93 pint/testsuite/test_issues.py::TestIssues::test_issue932 pint/testsuite/test_issues.py::TestIssues::test_issue960 pint/testsuite/test_issues.py::TestIssues::test_issue973 pint/testsuite/test_issues.py::TestIssues::test_issues86b pint/testsuite/test_issues.py::TestIssues::test_micro_creation pint/testsuite/test_issues.py::test_issue925[python pint/testsuite/test_issues.py::test_issue925[array pint/testsuite/test_issues.py::test_issue925[numpy
CHANGES pint/quantity.py
CHANGES pint/quantity.py