== Why is this an issue?

Variables, Classes and functions should be defined before they are used, otherwise the code will fail.


=== Noncompliant code example

[source,python]
----
def noncompliant():
    foo()  # Noncompliant
    foo = sum

    func()  # Noncompliant
    def func():
        pass

    MyClass()  # Noncompliant
    class MyClass:
        pass
----

=== Compliant solution

[source,python]
----
def compliant():
    foo = sum
    foo()

    def func():
        pass
    func()

    class MyClass:
        pass
    MyClass()
----

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

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

=== Message

* XX is used before it is defined. Move the definition before. (if the variable/class/function is defined later in the same scope)
* XX is used before being declared "global"


=== Highlighting

* Primary location: Statement
* Secondary location:
** the variable/class/function's definition later in the same scope (if there is one)
** the global declaration (if there is one after the variable is used)


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

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

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