== Why is this an issue?

The repetition of a prefix operator (``++not++`` or ``++~++``) is usually a typo. The second operator invalidates the first one:

[source,python]
----
a = False
b = ~~a # Noncompliant: equivalent to "a"
----

While calling ``++not++`` twice is equivalent to calling the `bool()` built-in function, the latter increases the code readability, so it should be preferred.

[source,python]
----
a = 0

b = not not a # Noncompliant: use bool()
----

=== Exceptions

The rule does not raise an issue if the ``++~++`` function is overloaded in a customized class, as it is assumed to be the expected usage.

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Use the "{not|~}" operator just once or not at all.

Use the "bool()" builtin function instead of calling "not" twice.

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
