# DO always create a tracking issue when allow-listing warnings
# DO NOT disable warnings-as-error: warnings of today are tomorrow's evolvability blocker.
[pytest]
filterwarnings =
	# Treat warnings as errors
	error

	# ...except this allow list:
	# Issue #35
	ignore:the imp module is deprecated:DeprecationWarning

	# Issue #36
	ignore:`np.bool` is a deprecated alias:DeprecationWarning

	# Issue #37
	ignore:Encoding a StructuredValue with type tf_agents.policies.greedy_policy.DeterministicWithLogProb_ACTTypeSpec:UserWarning

	# Not much to do about this, it's caused by gin
	ignore:Using or importing the ABCs from 'collections':DeprecationWarning

	# Issue #119
	ignore:Encoding a StructuredValue with type tfp.distributions.Deterministic_ACTTypeSpec:UserWarning

	# This warning stems from tensorflow and tf-agents and will presumably
	# be fixed by them before v3.12
	ignore:The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives:DeprecationWarning

	# Also an issue internal to tensorflow
	ignore:Call to deprecated create function .*Descriptor.*:DeprecationWarning

	# Also internal to tensorflow
	ignore:non-integer arguments to randrange.*:DeprecationWarning
	
	# Issue #110
	ignore:Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display:DeprecationWarning

	# Issue #132
	ignore:Encoding a StructuredValue with type tfp.distributions.Categorical_ACTTypeSpec:UserWarning
