Usages:
  conventions: .goga/usages/conventions.md
  contract_format: |
    The implemented contract must conform to the specified format

    ```
    [
      {
        "name": "<name of type/object/entity>",
        "signature": "(...) ..."
      }
    ]
    ```

    - each list element is a name and signature on the cell facade
    - the concept of a cell facade is defined individually for each programming language
    - a signature is the contract of input and output data for object creation/function invocation
    - a dictionary can be represented as an object

Annotations: |
  During development and testing, use the practice `conventions`.

---

BaseContract():
  location: contract.py
  annotations: |
    Use the format `contract_format`.
  properties:
    name -> str: |
      Name of the object/function, etc.
    signature -> str: |
      Invocation signature with input and output data
    contract -> str: |
      Name and signature "{{ name }}{{ signature }}"

BaseContract::EntityContract():
  location: contract.py
  annotations: |
    Description of the entity contract
  properties:
    properties -> list[PropertyContract]: |
      Contract of the entity property
    methods -> list[MethodContract]: |
      Contract of the entity method

BaseContract::RoutineContract():
  location: contract.py
  annotations: |
    Description of the routine contract

BaseContract::PropertyContract():
  location: contract.py
  annotations: |
    Description of the entity property contract

BaseContract::MethodContract():
  location: contract.py
  annotations: |
    Description of the entity method contract

---

Author: Goga
CreatedAt: 19/05/26

Description: |
  Contract data classes — language-independent data model
