diff --git a/docs/source/contrib/handlers.rst b/docs/source/contrib/handlers.rst
index 188bda71..4560aa9f 100644
--- a/docs/source/contrib/handlers.rst
+++ b/docs/source/contrib/handlers.rst
@@ -75,6 +75,10 @@ mlflow_logger
 tqdm_logger
 -----------
 
+See `tqdm mnist example <https://github.com/pytorch/ignite/blob/master/examples/contrib/mnist/mnist_with_tqdm_logger.py>`_
+for detailed usage.
+
+
 .. automodule:: ignite.contrib.handlers.tqdm_logger
    :members:
 
@@ -88,6 +92,9 @@ polyaxon_logger
 wandb_logger
 ---------------
 
+See `wandb mnist example <https://github.com/pytorch/ignite/blob/master/examples/contrib/mnist/mnist_with_wandb_logger.py>`_
+for detailed usage.
+
 .. automodule:: ignite.contrib.handlers.wandb_logger
    :members:
    :inherited-members:
diff --git a/ignite/contrib/handlers/base_logger.py b/ignite/contrib/handlers/base_logger.py
index ce11b57e..5c6c83f4 100644
--- a/ignite/contrib/handlers/base_logger.py
+++ b/ignite/contrib/handlers/base_logger.py
@@ -1,9 +1,11 @@
 import numbers
 import warnings
 from abc import ABCMeta, abstractmethod
+from collections.abc import Sequence
 from typing import Any, Mapping
 
 import torch
+from torch.optim import Optimizer
 
 from ignite.engine import Engine, State
 
@@ -20,9 +22,13 @@ class BaseOptimizerParamsHandler(BaseHandler):
     """
 
     def __init__(self, optimizer, param_name="lr", tag=None):
-        if not isinstance(optimizer, torch.optim.Optimizer):
+        if not (
+            isinstance(optimizer, Optimizer)
+            or (hasattr(optimizer, "param_groups") and isinstance(optimizer.param_groups, Sequence))
+        ):
             raise TypeError(
-                "Argument optimizer should be of type torch.optim.Optimizer, " "but given {}".format(type(optimizer))
+                "Argument optimizer should be torch.optim.Optimizer or has attribute 'param_groups' as list/tuple, "
+                "but given {}".format(type(optimizer))
             )
 
         self.optimizer = optimizer
diff --git a/ignite/contrib/handlers/mlflow_logger.py b/ignite/contrib/handlers/mlflow_logger.py
index c92d417f..4166111e 100644
--- a/ignite/contrib/handlers/mlflow_logger.py
+++ b/ignite/contrib/handlers/mlflow_logger.py
@@ -167,7 +167,8 @@ class OptimizerParamsHandler(BaseOptimizerParamsHandler):
             )
 
     Args:
-        optimizer (torch.optim.Optimizer): torch optimizer which parameters to log
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): parameter name
         tag (str, optional): common title for all produced plots. For example, 'generator'
     """
diff --git a/ignite/contrib/handlers/neptune_logger.py b/ignite/contrib/handlers/neptune_logger.py
index 43b1fc82..3fc1ca2a 100644
--- a/ignite/contrib/handlers/neptune_logger.py
+++ b/ignite/contrib/handlers/neptune_logger.py
@@ -191,7 +191,8 @@ class OptimizerParamsHandler(BaseOptimizerParamsHandler):
             )
 
     Args:
-        optimizer (torch.optim.Optimizer): torch optimizer which parameters to log
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): parameter name
         tag (str, optional): common title for all produced plots. For example, "generator"
     """
diff --git a/ignite/contrib/handlers/param_scheduler.py b/ignite/contrib/handlers/param_scheduler.py
index 96589bd7..5e1e2434 100644
--- a/ignite/contrib/handlers/param_scheduler.py
+++ b/ignite/contrib/handlers/param_scheduler.py
@@ -18,7 +18,8 @@ class ParamScheduler(metaclass=ABCMeta):
     training.
 
     Args:
-        optimizer (`torch.optim.Optimizer`): optimizer
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): name of optimizer's parameter to update.
         save_history (bool, optional): whether to log the parameter values to
             `engine.state.param_history`, (default=False).
@@ -33,8 +34,14 @@ class ParamScheduler(metaclass=ABCMeta):
 
     def __init__(self, optimizer, param_name, save_history=False, param_group_index=None):
 
-        if not isinstance(optimizer, Optimizer):
-            raise TypeError("Argument optimizer should be torch.optim.Optimizer")
+        if not (
+            isinstance(optimizer, Optimizer)
+            or (hasattr(optimizer, "param_groups") and isinstance(optimizer.param_groups, Sequence))
+        ):
+            raise TypeError(
+                "Argument optimizer should be torch.optim.Optimizer or has attribute 'param_groups' as list/tuple, "
+                "but given {}".format(type(optimizer))
+            )
 
         self.optimizer = optimizer
         self.param_group_index = param_group_index
@@ -212,7 +219,8 @@ class CyclicalScheduler(ParamScheduler):
     cycle of some size.
 
     Args:
-        optimizer (`torch.optim.Optimizer`): optimizer
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): name of optimizer's parameter to update.
         start_value (float): value at start of cycle.
         end_value (float): value at the middle of the cycle.
@@ -287,7 +295,8 @@ class LinearCyclicalScheduler(CyclicalScheduler):
     adjusts it back to 'start_value' for a half-cycle.
 
     Args:
-        optimizer (`torch.optim.Optimizer`): optimizer
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): name of optimizer's parameter to update.
         start_value (float): value at start of cycle.
         end_value (float): value at the middle of the cycle.
@@ -332,7 +341,8 @@ class CosineAnnealingScheduler(CyclicalScheduler):
     wave (as suggested in [Smith17]_).
 
     Args:
-        optimizer (`torch.optim.Optimizer`): optimizer
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): name of optimizer's parameter to update.
         start_value (float): value at start of cycle.
         end_value (float): value at the end of the cycle.
@@ -818,7 +828,8 @@ class PiecewiseLinear(ParamScheduler):
     Piecewise linear parameter scheduler
 
     Args:
-        optimizer (`torch.optim.Optimizer`): optimizer.
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): name of optimizer's parameter to update.
         milestones_values (list of tuples (int, float)): list of tuples (event index, parameter value)
             represents milestones and parameter. Milestones should be increasing integers.
diff --git a/ignite/contrib/handlers/polyaxon_logger.py b/ignite/contrib/handlers/polyaxon_logger.py
index 55c8410b..e675cbee 100644
--- a/ignite/contrib/handlers/polyaxon_logger.py
+++ b/ignite/contrib/handlers/polyaxon_logger.py
@@ -154,7 +154,8 @@ class OptimizerParamsHandler(BaseOptimizerParamsHandler):
             )
 
     Args:
-        optimizer (torch.optim.Optimizer): torch optimizer which parameters to log
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): parameter name
         tag (str, optional): common title for all produced plots. For example, "generator"
     """
diff --git a/ignite/contrib/handlers/tensorboard_logger.py b/ignite/contrib/handlers/tensorboard_logger.py
index 0ded2dfb..99d61041 100644
--- a/ignite/contrib/handlers/tensorboard_logger.py
+++ b/ignite/contrib/handlers/tensorboard_logger.py
@@ -163,7 +163,8 @@ class OptimizerParamsHandler(BaseOptimizerParamsHandler):
             )
 
     Args:
-        optimizer (torch.optim.Optimizer): torch optimizer which parameters to log
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): parameter name
         tag (str, optional): common title for all produced plots. For example, "generator"
     """
diff --git a/ignite/contrib/handlers/trains_logger.py b/ignite/contrib/handlers/trains_logger.py
index b0b35e25..a1fd811a 100644
--- a/ignite/contrib/handlers/trains_logger.py
+++ b/ignite/contrib/handlers/trains_logger.py
@@ -182,7 +182,8 @@ class OptimizerParamsHandler(BaseOptimizerParamsHandler):
             )
 
     Args:
-        optimizer (torch.optim.Optimizer): torch optimizer which parameters to log
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): parameter name
         tag (str, optional): common title for all produced plots. For example, "generator"
     """
diff --git a/ignite/contrib/handlers/visdom_logger.py b/ignite/contrib/handlers/visdom_logger.py
index f8002e35..a4b9a337 100644
--- a/ignite/contrib/handlers/visdom_logger.py
+++ b/ignite/contrib/handlers/visdom_logger.py
@@ -218,7 +218,8 @@ class OptimizerParamsHandler(BaseOptimizerParamsHandler, _BaseVisDrawer):
             )
 
     Args:
-        optimizer (torch.optim.Optimizer): torch optimizer which parameters to log
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): parameter name
         tag (str, optional): common title for all produced plots. For example, "generator"
         show_legend (bool, optional): flag to show legend in the window
diff --git a/ignite/contrib/handlers/wandb_logger.py b/ignite/contrib/handlers/wandb_logger.py
index 8123d8f3..dd494578 100644
--- a/ignite/contrib/handlers/wandb_logger.py
+++ b/ignite/contrib/handlers/wandb_logger.py
@@ -166,7 +166,8 @@ class OptimizerParamsHandler(BaseOptimizerParamsHandler):
             )
 
     Args:
-        optimizer (torch.optim.Optimizer): torch optimizer which parameters to log
+        optimizer (torch.optim.Optimizer or object): torch optimizer or any object with attribute ``param_groups``
+            as a sequence.
         param_name (str): parameter name
         tag (str, optional): common title for all produced plots. For example, "generator"
         sync (bool, optional): If set to False, process calls to log in a seperate thread. Default (None) uses whatever

PiecewiseLinear dict support
In ignite 0.2.1, `PiecewiseLinear` didn't expect the optimizer to be strictly a sub-class of `torch.optim.Optimizer` and allowed generic parameter group [dicts](https://github.com/pytorch/ignite/blob/v0.2.1/ignite/contrib/handlers/param_scheduler.py#L26) as well.

But it looks like in later versions, this generic support was withdrawn.

What's the context behind this change?

I had been successfully using `PiecewiseLinear` from ignite 0.2.1 along with Microsoft's DeepSpeed [ZeRO](https://github.com/microsoft/DeepSpeed/blob/master/deepspeed/pt/deepspeed_zero_optimizer.py#L91) optimizer, which isn't strictly a sub-class of `torch.optim.Optimizer` and Microsoft addressed the reasons for this in their repo. However, due to some useful features in later versions of ignite, we decided to upgrade to a newer version of ignite (0.3 and later also 0.4). In the process of this upgrade, we realized `PiecewiseLinear` no longer works with the ZeRO optimizer.

It would be great if support for generic parameter group dicts is added back.
diff --git a/tests/ignite/contrib/handlers/__init__.py b/tests/ignite/contrib/handlers/__init__.py
index e69de29b..f9cd4aeb 100644
--- a/tests/ignite/contrib/handlers/__init__.py
+++ b/tests/ignite/contrib/handlers/__init__.py
@@ -0,0 +1,14 @@
+class MockFP16DeepSpeedZeroOptimizer:
+    def __init__(self, optimizer):
+        self.optimizer = optimizer
+
+    def step(self, closure=None):
+        self.optimizer.step()
+
+    def _get_param_groups(self):
+        return self.optimizer.param_groups
+
+    def _set_param_groups(self, value):
+        self.optimizer.param_groups = value
+
+    param_groups = property(_get_param_groups, _set_param_groups)
diff --git a/tests/ignite/contrib/handlers/test_base_logger.py b/tests/ignite/contrib/handlers/test_base_logger.py
index 315b6de0..4ca342de 100644
--- a/tests/ignite/contrib/handlers/test_base_logger.py
+++ b/tests/ignite/contrib/handlers/test_base_logger.py
@@ -7,6 +7,7 @@ import torch
 from ignite.contrib.handlers import CustomPeriodicEvent
 from ignite.contrib.handlers.base_logger import BaseLogger, BaseOptimizerParamsHandler, BaseOutputHandler
 from ignite.engine import Engine, Events, State
+from tests.ignite.contrib.handlers import MockFP16DeepSpeedZeroOptimizer
 
 
 class DummyOutputHandler(BaseOutputHandler):
@@ -15,8 +16,13 @@ class DummyOutputHandler(BaseOutputHandler):
 
 
 class DummyOptParamsHandler(BaseOptimizerParamsHandler):
-    def __call__(self, *args, **kwargs):
-        pass
+    def __call__(self, engine, logger, event_name, **kwargs):
+        tag_prefix = "{}/".format(self.tag) if self.tag else ""
+        params = {
+            "{}{}/group_{}".format(tag_prefix, self.param_name, i): float(param_group[self.param_name])
+            for i, param_group in enumerate(self.optimizer.param_groups)
+        }
+        return params
 
 
 class DummyLogger(BaseLogger):
@@ -41,6 +47,9 @@ def test_base_output_handler_wrong_setup():
     with pytest.raises(TypeError, match="global_step_transform should be a function"):
         DummyOutputHandler("tag", metric_names=["loss"], global_step_transform="abc")
 
+    with pytest.raises(TypeError, match=r"Argument optimizer should be torch.optim.Optimizer"):
+        DummyOptParamsHandler({}, "lr")
+
 
 def test_base_output_handler_setup_output_metrics():
 
@@ -81,6 +90,16 @@ def test_base_output_handler_setup_output_metrics():
     assert metrics == true_metrics
 
 
+def test_opt_params_handler_on_non_torch_optimizers():
+    tensor = torch.zeros([1], requires_grad=True)
+    base_optimizer = torch.optim.SGD([tensor], lr=0.1234)
+    optimizer = MockFP16DeepSpeedZeroOptimizer(base_optimizer)
+    handler = DummyOptParamsHandler(optimizer=optimizer, param_name="lr")
+    res = handler(engine=None, logger=None, event_name=None)
+    assert isinstance(res, dict)
+    assert "lr/group_0" in res and res["lr/group_0"] == 0.1234
+
+
 def test_attach():
 
     n_epochs = 5
diff --git a/tests/ignite/contrib/handlers/test_param_scheduler.py b/tests/ignite/contrib/handlers/test_param_scheduler.py
index c8521af0..8e32aa59 100644
--- a/tests/ignite/contrib/handlers/test_param_scheduler.py
+++ b/tests/ignite/contrib/handlers/test_param_scheduler.py
@@ -1,3 +1,5 @@
+from unittest.mock import MagicMock
+
 import numpy as np
 import pytest
 import torch
@@ -14,6 +16,7 @@ from ignite.contrib.handlers.param_scheduler import (
     create_lr_scheduler_with_warmup,
 )
 from ignite.engine import Engine, Events
+from tests.ignite.contrib.handlers import MockFP16DeepSpeedZeroOptimizer
 
 try:
     from torch.optim.lr_scheduler import MultiplicativeLR
@@ -26,10 +29,12 @@ else:
     has_multiplicative_lr = LooseVersion(torch.__version__) >= LooseVersion("1.5.0")
 
 
+class FakeParamScheduler(ParamScheduler):
+    def get_param(self):
+        return [0]
+
+
 def test_param_scheduler_asserts():
-    class FakeParamScheduler(ParamScheduler):
-        def get_param(self):
-            return [0]
 
     t1 = torch.zeros([1], requires_grad=True)
     t2 = torch.zeros([1], requires_grad=True)
@@ -46,6 +51,9 @@ def test_param_scheduler_asserts():
     with pytest.raises(ValueError, match=r"Required state attribute 'event_index' is absent in provided state_dict"):
         lr_scheduler.load_state_dict({})
 
+    with pytest.raises(TypeError, match=r"Argument optimizer should be torch.optim.Optimizer"):
+        FakeParamScheduler({}, "lr")
+
 
 def test_linear_scheduler():
 
@@ -1220,3 +1228,32 @@ def test_scheduler_with_param_groups():
 
     torch_lr_scheduler = StepLR(optimizer, step_size=50, gamma=0.5)
     _test(LRScheduler(torch_lr_scheduler), optimizer)
+
+
+def test_lr_scheduling_on_non_torch_optimizers():
+    # tests https://github.com/pytorch/ignite/issues/1162
+    optimizer = MagicMock()
+    optimizer.param_groups = [{"params": 0}]
+    FakeParamScheduler(optimizer, "lr")
+
+    tensor = torch.zeros([1], requires_grad=True)
+    base_optimizer = torch.optim.SGD([tensor], lr=0)
+    optimizer = MockFP16DeepSpeedZeroOptimizer(base_optimizer)
+
+    milestones_values = [(5, 0.5), (15, 1.0)]
+
+    scheduler = PiecewiseLinear(optimizer, "lr", milestones_values=milestones_values)
+
+    def save_lr(engine):
+        lrs.append(optimizer.param_groups[0]["lr"])
+
+    trainer = Engine(lambda engine, batch: None)
+    trainer.add_event_handler(Events.ITERATION_COMPLETED, scheduler)
+    trainer.add_event_handler(Events.ITERATION_COMPLETED, save_lr)
+
+    lrs = []
+    trainer.run([0] * 15, max_epochs=1)
+
+    assert lrs == list(
+        map(pytest.approx, [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95,],)
+    )

pip install -e .
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc pip install torch torchvision -f https://download.pytorch.org/whl/cpu/torch_stable.html -U
3.7
requirements-dev.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
absl-py==2.1.0
alembic==1.12.1
arrow==1.2.3
attrs==24.2.0
boto3==1.33.13
botocore==1.33.13
bravado==11.1.0
bravado-core==6.1.1
cached-property==1.5.2
cachetools==5.5.2
certifi @ file:///croot/certifi_1671487769961/work/certifi
charset-normalizer==3.4.1
click==7.1.2
cloudpickle==2.2.1
codecov==2.1.13
coverage==7.2.7
cycler==0.11.0
databricks-cli==0.18.0
dill==0.3.7
docker==6.1.3
docker-pycreds==0.4.0
entrypoints==0.4
exceptiongroup==1.2.2
execnet==2.0.2
Flask==1.1.4
fonttools==4.38.0
fqdn==1.5.1
funcsigs==1.0.2
furl==2.1.4
future==1.0.0
gitdb==4.0.12
GitPython==3.1.44
google-auth==2.38.0
google-auth-oauthlib==0.4.6
greenlet==3.1.1
grpcio==1.62.3
gunicorn==20.1.0
gym==0.26.2
gym-notices==0.0.8
hestia==0.6.0
humanfriendly==10.0
idna==3.10
importlib-metadata==5.2.0
importlib-resources==5.12.0
iniconfig==2.0.0
isoduration==20.11.0
itsdangerous==1.1.0
Jinja2==2.10.3
jmespath==1.0.1
joblib==1.3.2
jsonpatch==1.33
jsonpointer==3.0.0
jsonref==1.1.0
jsonschema==4.17.3
kiwisolver==1.4.5
Mako==1.2.4
Markdown==3.4.4
MarkupSafe==2.1.5
marshmallow==3.0.0rc5
matplotlib==3.5.3
mlflow==1.30.1
monotonic==1.6
msgpack==1.0.5
neptune-client==1.11.1
networkx==2.6.3
numpy==1.21.6
oauthlib==3.2.2
orderedmultidict==1.0.1
packaging==21.3
pandas==1.3.5
pathlib2==2.3.7.post1
Pillow==9.5.0
pkgutil_resolve_name==1.3.10
platformdirs==4.0.0
pluggy==1.2.0
polyaxon-client==0.6.1
polyaxon-schemas==0.6.1
polystores==0.2.5
prometheus-client==0.17.1
prometheus_flask_exporter==0.23.2
protobuf==3.20.3
psutil==7.0.0
pyasn1==0.5.1
pyasn1-modules==0.3.0
PyJWT==2.8.0
pynvml==11.5.3
pyparsing==3.1.4
pyrsistent==0.19.3
pytest==7.4.4
pytest-cov==4.1.0
pytest-xdist==3.5.0
python-dateutil==2.9.0.post0
-e git+https://github.com/pytorch/ignite.git@543ae1e5fe5269fa3fd7edbdb62e643688504348#egg=pytorch_ignite
pytz==2022.7.1
PyYAML==6.0.1
querystring-parser==1.2.4
requests==2.31.0
requests-file==2.1.0
requests-oauthlib==2.0.0
requests-toolbelt==1.0.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rhea==0.5.5
rsa==4.9
s3transfer==0.8.2
scikit-learn==1.0.2
scipy==1.7.3
sentry-sdk==2.24.1
setproctitle==1.3.3
simplejson==3.20.1
six==1.17.0
smmap==5.0.2
SQLAlchemy==1.4.54
sqlparse==0.4.4
swagger-spec-validator==3.0.3
tabulate==0.9.0
tensorboard==2.11.2
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorboardX==2.6.2.2
threadpoolctl==3.1.0
tomli==2.0.1
torch==1.13.1+cpu
torchvision==0.14.1+cpu
tornado==6.2
tqdm==4.67.1
trains==0.16.4
typing_extensions==4.7.1
uri-template==1.3.0
urllib3==1.26.20
visdom==0.2.4
wandb==0.18.7
webcolors==1.13
websocket-client==1.6.1
Werkzeug==1.0.1
zipp==3.15.0

name: ignite
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
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2022.12.7=py37h06a4308_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
  - pip=22.3.1=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
  - wheel=0.38.4=py37h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - absl-py==2.1.0
      - alembic==1.12.1
      - arrow==1.2.3
      - attrs==24.2.0
      - boto3==1.33.13
      - botocore==1.33.13
      - bravado==11.1.0
      - bravado-core==6.1.1
      - cached-property==1.5.2
      - cachetools==5.5.2
      - charset-normalizer==3.4.1
      - click==7.1.2
      - cloudpickle==2.2.1
      - codecov==2.1.13
      - coverage==7.2.7
      - cycler==0.11.0
      - databricks-cli==0.18.0
      - dill==0.3.7
      - docker==6.1.3
      - docker-pycreds==0.4.0
      - entrypoints==0.4
      - exceptiongroup==1.2.2
      - execnet==2.0.2
      - flask==1.1.4
      - fonttools==4.38.0
      - fqdn==1.5.1
      - funcsigs==1.0.2
      - furl==2.1.4
      - future==1.0.0
      - gitdb==4.0.12
      - gitpython==3.1.44
      - google-auth==2.38.0
      - google-auth-oauthlib==0.4.6
      - greenlet==3.1.1
      - grpcio==1.62.3
      - gunicorn==20.1.0
      - gym==0.26.2
      - gym-notices==0.0.8
      - hestia==0.6.0
      - humanfriendly==10.0
      - idna==3.10
      - importlib-metadata==5.2.0
      - importlib-resources==5.12.0
      - iniconfig==2.0.0
      - isoduration==20.11.0
      - itsdangerous==1.1.0
      - jinja2==2.10.3
      - jmespath==1.0.1
      - joblib==1.3.2
      - jsonpatch==1.33
      - jsonpointer==3.0.0
      - jsonref==1.1.0
      - jsonschema==4.17.3
      - kiwisolver==1.4.5
      - mako==1.2.4
      - markdown==3.4.4
      - markupsafe==2.1.5
      - marshmallow==3.0.0rc5
      - matplotlib==3.5.3
      - mlflow==1.30.1
      - monotonic==1.6
      - msgpack==1.0.5
      - neptune-client==1.11.1
      - networkx==2.6.3
      - numpy==1.21.6
      - oauthlib==3.2.2
      - orderedmultidict==1.0.1
      - packaging==21.3
      - pandas==1.3.5
      - pathlib2==2.3.7.post1
      - pillow==9.5.0
      - pkgutil-resolve-name==1.3.10
      - platformdirs==4.0.0
      - pluggy==1.2.0
      - polyaxon-client==0.6.1
      - polyaxon-schemas==0.6.1
      - polystores==0.2.5
      - prometheus-client==0.17.1
      - prometheus-flask-exporter==0.23.2
      - protobuf==3.20.3
      - psutil==7.0.0
      - pyasn1==0.5.1
      - pyasn1-modules==0.3.0
      - pyjwt==2.8.0
      - pynvml==11.5.3
      - pyparsing==3.1.4
      - pyrsistent==0.19.3
      - pytest==7.4.4
      - pytest-cov==4.1.0
      - pytest-xdist==3.5.0
      - python-dateutil==2.9.0.post0
      - pytorch-ignite==0.4.0
      - pytz==2022.7.1
      - pyyaml==6.0.1
      - querystring-parser==1.2.4
      - requests==2.31.0
      - requests-file==2.1.0
      - requests-oauthlib==2.0.0
      - requests-toolbelt==1.0.0
      - rfc3339-validator==0.1.4
      - rfc3986-validator==0.1.1
      - rhea==0.5.5
      - rsa==4.9
      - s3transfer==0.8.2
      - scikit-learn==1.0.2
      - scipy==1.7.3
      - sentry-sdk==2.24.1
      - setproctitle==1.3.3
      - simplejson==3.20.1
      - six==1.17.0
      - smmap==5.0.2
      - sqlalchemy==1.4.54
      - sqlparse==0.4.4
      - swagger-spec-validator==3.0.3
      - tabulate==0.9.0
      - tensorboard==2.11.2
      - tensorboard-data-server==0.6.1
      - tensorboard-plugin-wit==1.8.1
      - tensorboardx==2.6.2.2
      - threadpoolctl==3.1.0
      - tomli==2.0.1
      - torch==1.13.1+cpu
      - torchvision==0.14.1+cpu
      - tornado==6.2
      - tqdm==4.67.1
      - trains==0.16.4
      - typing-extensions==4.7.1
      - uri-template==1.3.0
      - urllib3==1.26.20
      - visdom==0.2.4
      - wandb==0.18.7
      - webcolors==1.13
      - websocket-client==1.6.1
      - werkzeug==1.0.1
      - zipp==3.15.0
prefix: /opt/conda/envs/ignite

tests/ignite/contrib/handlers/test_base_logger.py::test_base_output_handler_wrong_setup tests/ignite/contrib/handlers/test_base_logger.py::test_opt_params_handler_on_non_torch_optimizers tests/ignite/contrib/handlers/test_param_scheduler.py::test_lr_scheduling_on_non_torch_optimizers
tests/ignite/contrib/handlers/test_base_logger.py::test_base_output_handler_setup_output_metrics tests/ignite/contrib/handlers/test_base_logger.py::test_attach tests/ignite/contrib/handlers/test_base_logger.py::test_attach_wrong_event_name tests/ignite/contrib/handlers/test_base_logger.py::test_attach_on_custom_event tests/ignite/contrib/handlers/test_base_logger.py::test_as_context_manager tests/ignite/contrib/handlers/test_param_scheduler.py::test_param_scheduler_asserts tests/ignite/contrib/handlers/test_param_scheduler.py::test_linear_scheduler tests/ignite/contrib/handlers/test_param_scheduler.py::test_linear_scheduler_cycle_size_two tests/ignite/contrib/handlers/test_param_scheduler.py::test_cosine_annealing_scheduler tests/ignite/contrib/handlers/test_param_scheduler.py::test_concat_scheduler_asserts tests/ignite/contrib/handlers/test_param_scheduler.py::test_concat_scheduler_state_dict tests/ignite/contrib/handlers/test_param_scheduler.py::test_concat_scheduler_two_schedulers tests/ignite/contrib/handlers/test_param_scheduler.py::test_concat_scheduler_two_linear tests/ignite/contrib/handlers/test_param_scheduler.py::test_concat_scheduler_3_schedulers tests/ignite/contrib/handlers/test_param_scheduler.py::test_save_param_history tests/ignite/contrib/handlers/test_param_scheduler.py::test_lr_scheduler_asserts tests/ignite/contrib/handlers/test_param_scheduler.py::test_lr_scheduler tests/ignite/contrib/handlers/test_param_scheduler.py::test_piecewiselinear_asserts tests/ignite/contrib/handlers/test_param_scheduler.py::test_piecewiselinear tests/ignite/contrib/handlers/test_param_scheduler.py::test_simulate_and_plot_values tests/ignite/contrib/handlers/test_param_scheduler.py::test_create_lr_scheduler_with_warmup tests/ignite/contrib/handlers/test_param_scheduler.py::test_create_lr_scheduler_with_warmup_on_combined_scheduler tests/ignite/contrib/handlers/test_param_scheduler.py::test_create_lr_scheduler_with_warmup_with_real_model tests/ignite/contrib/handlers/test_param_scheduler.py::test_param_group_scheduler_asserts tests/ignite/contrib/handlers/test_param_scheduler.py::test_param_group_scheduler tests/ignite/contrib/handlers/test_param_scheduler.py::test_scheduler_with_param_groups
ignite/contrib/handlers/base_logger.py docs/source/contrib/handlers.rst ignite/contrib/handlers/tensorboard_logger.py ignite/contrib/handlers/wandb_logger.py ignite/contrib/handlers/mlflow_logger.py ignite/contrib/handlers/trains_logger.py ignite/contrib/handlers/polyaxon_logger.py ignite/contrib/handlers/visdom_logger.py ignite/contrib/handlers/param_scheduler.py ignite/contrib/handlers/neptune_logger.py
ignite/contrib/handlers/base_logger.py docs/source/contrib/handlers.rst ignite/contrib/handlers/tensorboard_logger.py ignite/contrib/handlers/wandb_logger.py ignite/contrib/handlers/mlflow_logger.py ignite/contrib/handlers/trains_logger.py ignite/contrib/handlers/polyaxon_logger.py ignite/contrib/handlers/visdom_logger.py ignite/contrib/handlers/param_scheduler.py ignite/contrib/handlers/neptune_logger.py