From f4d737c8728a6f3af8527b9247a09f5efdfa49eb Mon Sep 17 00:00:00 2001
From: Karel van Klink <karel.vanklink@geant.org>
Date: Tue, 10 Sep 2024 14:03:19 +0200
Subject: [PATCH] Rename types module to annotations to avoid collision with
 existing external module

---
 gso/{types => annotations}/__init__.py         |  0
 gso/{types => annotations}/base_site.py        | 10 +++++-----
 gso/{types => annotations}/coordinates.py      |  0
 gso/{types => annotations}/country_code.py     |  0
 gso/{types => annotations}/interfaces.py       |  0
 gso/{types => annotations}/ip_address.py       |  0
 gso/{types => annotations}/netbox_router.py    |  0
 gso/{types => annotations}/site_name.py        |  0
 gso/{types => annotations}/snmp.py             |  0
 gso/{types => annotations}/tt_number.py        |  0
 gso/{types => annotations}/unique_field.py     |  0
 gso/api/v1/network.py                          |  4 ++--
 gso/cli/imports.py                             |  4 ++--
 gso/products/product_blocks/iptrunk.py         |  2 +-
 .../product_blocks/lan_switch_interconnect.py  |  2 +-
 gso/products/product_blocks/site.py            |  6 +++---
 gso/services/librenms_client.py                |  2 +-
 gso/utils/helpers.py                           |  2 +-
 .../iptrunk/create_imported_iptrunk.py         |  2 +-
 gso/workflows/iptrunk/create_iptrunk.py        |  6 +++---
 gso/workflows/iptrunk/deploy_twamp.py          |  2 +-
 gso/workflows/iptrunk/migrate_iptrunk.py       |  4 ++--
 gso/workflows/iptrunk/modify_isis_metric.py    |  2 +-
 .../iptrunk/modify_trunk_interface.py          |  4 ++--
 gso/workflows/iptrunk/terminate_iptrunk.py     |  2 +-
 .../create_lan_switch_interconnect.py          | 18 +++++++++---------
 gso/workflows/router/create_router.py          |  2 +-
 gso/workflows/router/promote_p_to_pe.py        |  2 +-
 gso/workflows/router/redeploy_base_config.py   |  2 +-
 gso/workflows/router/terminate_router.py       |  2 +-
 gso/workflows/router/update_ibgp_mesh.py       |  4 ++--
 gso/workflows/site/create_imported_site.py     |  6 +++---
 gso/workflows/site/create_site.py              |  6 +++---
 gso/workflows/site/modify_site.py              |  6 +++---
 test/cli/test_imports.py                       |  2 +-
 test/conftest.py                               |  2 +-
 test/fixtures.py                               |  2 +-
 test/schemas/test_types.py                     |  2 +-
 test/services/test_librenms_client.py          |  2 +-
 test/utils/test_helpers.py                     |  2 +-
 .../iptrunk/test_create_imported_iptrunk.py    |  2 +-
 test/workflows/iptrunk/test_create_iptrunk.py  |  2 +-
 .../iptrunk/test_modify_trunk_interface.py     |  2 +-
 43 files changed, 60 insertions(+), 60 deletions(-)
 rename gso/{types => annotations}/__init__.py (100%)
 rename gso/{types => annotations}/base_site.py (69%)
 rename gso/{types => annotations}/coordinates.py (100%)
 rename gso/{types => annotations}/country_code.py (100%)
 rename gso/{types => annotations}/interfaces.py (100%)
 rename gso/{types => annotations}/ip_address.py (100%)
 rename gso/{types => annotations}/netbox_router.py (100%)
 rename gso/{types => annotations}/site_name.py (100%)
 rename gso/{types => annotations}/snmp.py (100%)
 rename gso/{types => annotations}/tt_number.py (100%)
 rename gso/{types => annotations}/unique_field.py (100%)

diff --git a/gso/types/__init__.py b/gso/annotations/__init__.py
similarity index 100%
rename from gso/types/__init__.py
rename to gso/annotations/__init__.py
diff --git a/gso/types/base_site.py b/gso/annotations/base_site.py
similarity index 69%
rename from gso/types/base_site.py
rename to gso/annotations/base_site.py
index 3184e1743..3e8095250 100644
--- a/gso/types/base_site.py
+++ b/gso/annotations/base_site.py
@@ -2,12 +2,12 @@
 
 from pydantic import BaseModel
 
+from gso.annotations.coordinates import LatitudeCoordinate, LongitudeCoordinate
+from gso.annotations.country_code import CountryCode
+from gso.annotations.ip_address import IPAddress
+from gso.annotations.site_name import SiteName
+from gso.annotations.unique_field import UniqueField
 from gso.products.product_blocks.site import SiteTier
-from gso.types.coordinates import LatitudeCoordinate, LongitudeCoordinate
-from gso.types.country_code import CountryCode
-from gso.types.ip_address import IPAddress
-from gso.types.site_name import SiteName
-from gso.types.unique_field import UniqueField
 
 
 class BaseSiteValidatorModel(BaseModel):
diff --git a/gso/types/coordinates.py b/gso/annotations/coordinates.py
similarity index 100%
rename from gso/types/coordinates.py
rename to gso/annotations/coordinates.py
diff --git a/gso/types/country_code.py b/gso/annotations/country_code.py
similarity index 100%
rename from gso/types/country_code.py
rename to gso/annotations/country_code.py
diff --git a/gso/types/interfaces.py b/gso/annotations/interfaces.py
similarity index 100%
rename from gso/types/interfaces.py
rename to gso/annotations/interfaces.py
diff --git a/gso/types/ip_address.py b/gso/annotations/ip_address.py
similarity index 100%
rename from gso/types/ip_address.py
rename to gso/annotations/ip_address.py
diff --git a/gso/types/netbox_router.py b/gso/annotations/netbox_router.py
similarity index 100%
rename from gso/types/netbox_router.py
rename to gso/annotations/netbox_router.py
diff --git a/gso/types/site_name.py b/gso/annotations/site_name.py
similarity index 100%
rename from gso/types/site_name.py
rename to gso/annotations/site_name.py
diff --git a/gso/types/snmp.py b/gso/annotations/snmp.py
similarity index 100%
rename from gso/types/snmp.py
rename to gso/annotations/snmp.py
diff --git a/gso/types/tt_number.py b/gso/annotations/tt_number.py
similarity index 100%
rename from gso/types/tt_number.py
rename to gso/annotations/tt_number.py
diff --git a/gso/types/unique_field.py b/gso/annotations/unique_field.py
similarity index 100%
rename from gso/types/unique_field.py
rename to gso/annotations/unique_field.py
diff --git a/gso/api/v1/network.py b/gso/api/v1/network.py
index 62983f77f..435bb4146 100644
--- a/gso/api/v1/network.py
+++ b/gso/api/v1/network.py
@@ -10,11 +10,11 @@ from orchestrator.security import authorize
 from orchestrator.services.subscriptions import build_extended_domain_model
 from starlette import status
 
+from gso.annotations.coordinates import LatitudeCoordinate, LongitudeCoordinate
+from gso.annotations.interfaces import PhysicalPortCapacity
 from gso.products.product_blocks.iptrunk import IptrunkType
 from gso.products.product_blocks.router import RouterRole
 from gso.services.subscriptions import get_active_iptrunk_subscriptions
-from gso.types.coordinates import LatitudeCoordinate, LongitudeCoordinate
-from gso.types.interfaces import PhysicalPortCapacity
 from gso.utils.shared_enums import Vendor
 
 router = APIRouter(prefix="/networks", tags=["Network"], dependencies=[Depends(authorize)])
diff --git a/gso/cli/imports.py b/gso/cli/imports.py
index e71794653..cd290a9b6 100644
--- a/gso/cli/imports.py
+++ b/gso/cli/imports.py
@@ -16,6 +16,8 @@ from orchestrator.types import SubscriptionLifecycle
 from pydantic import BaseModel, ValidationError, field_validator, model_validator
 from sqlalchemy.exc import SQLAlchemyError
 
+from gso.annotations.base_site import BaseSiteValidatorModel
+from gso.annotations.interfaces import LAGMember, LAGMemberList, PhysicalPortCapacity
 from gso.db.models import PartnerTable
 from gso.products import ProductType
 from gso.products.product_blocks.iptrunk import IptrunkType
@@ -31,8 +33,6 @@ from gso.services.subscriptions import (
     get_active_subscriptions_by_field_and_value,
     get_subscriptions,
 )
-from gso.types.base_site import BaseSiteValidatorModel
-from gso.types.interfaces import LAGMember, LAGMemberList, PhysicalPortCapacity
 from gso.utils.shared_enums import IPv4AddressType, IPv6AddressType, PortNumber, Vendor
 
 app: typer.Typer = typer.Typer()
diff --git a/gso/products/product_blocks/iptrunk.py b/gso/products/product_blocks/iptrunk.py
index 1ff4fe465..8fbc82e0d 100644
--- a/gso/products/product_blocks/iptrunk.py
+++ b/gso/products/product_blocks/iptrunk.py
@@ -10,12 +10,12 @@ from pydantic import AfterValidator
 from pydantic_forms.validators import validate_unique_list
 from typing_extensions import Doc
 
+from gso.annotations.interfaces import LAGMemberList, PhysicalPortCapacity
 from gso.products.product_blocks.router import (
     RouterBlock,
     RouterBlockInactive,
     RouterBlockProvisioning,
 )
-from gso.types.interfaces import LAGMemberList, PhysicalPortCapacity
 
 
 class IptrunkType(strEnum):
diff --git a/gso/products/product_blocks/lan_switch_interconnect.py b/gso/products/product_blocks/lan_switch_interconnect.py
index 544da1e75..b2f88a085 100644
--- a/gso/products/product_blocks/lan_switch_interconnect.py
+++ b/gso/products/product_blocks/lan_switch_interconnect.py
@@ -3,9 +3,9 @@
 from orchestrator.domain.base import ProductBlockModel
 from orchestrator.types import SubscriptionLifecycle, strEnum
 
+from gso.annotations.interfaces import LAGMemberList
 from gso.products.product_blocks.router import RouterBlock, RouterBlockInactive, RouterBlockProvisioning
 from gso.products.product_blocks.switch import SwitchBlock, SwitchBlockInactive, SwitchBlockProvisioning
-from gso.types.interfaces import LAGMemberList
 
 
 class LanSwitchInterconnectAddressSpace(strEnum):
diff --git a/gso/products/product_blocks/site.py b/gso/products/product_blocks/site.py
index 436288c5f..5640cc1f5 100644
--- a/gso/products/product_blocks/site.py
+++ b/gso/products/product_blocks/site.py
@@ -3,9 +3,9 @@
 from orchestrator.domain.base import ProductBlockModel
 from orchestrator.types import SubscriptionLifecycle, strEnum
 
-from gso.types.coordinates import LatitudeCoordinate, LongitudeCoordinate
-from gso.types.ip_address import IPAddress
-from gso.types.site_name import SiteName
+from gso.annotations.coordinates import LatitudeCoordinate, LongitudeCoordinate
+from gso.annotations.ip_address import IPAddress
+from gso.annotations.site_name import SiteName
 
 
 class SiteTier(strEnum):
diff --git a/gso/services/librenms_client.py b/gso/services/librenms_client.py
index 4d8e4b197..c49451d39 100644
--- a/gso/services/librenms_client.py
+++ b/gso/services/librenms_client.py
@@ -9,8 +9,8 @@ import requests
 from requests import HTTPError, Response
 from requests.adapters import HTTPAdapter
 
+from gso.annotations.snmp import SNMPVersion
 from gso.settings import load_oss_params
-from gso.types.snmp import SNMPVersion
 
 logger = logging.getLogger(__name__)
 
diff --git a/gso/utils/helpers.py b/gso/utils/helpers.py
index f1063cecd..df375dada 100644
--- a/gso/utils/helpers.py
+++ b/gso/utils/helpers.py
@@ -7,11 +7,11 @@ from uuid import UUID
 from pydantic_forms.validators import Choice
 
 from gso import settings
+from gso.annotations.interfaces import PhysicalPortCapacity
 from gso.products.product_blocks.router import RouterRole
 from gso.products.product_types.router import Router
 from gso.services import subscriptions
 from gso.services.netbox_client import NetboxClient
-from gso.types.interfaces import PhysicalPortCapacity
 from gso.utils.shared_enums import IPv4AddressType, Vendor
 
 if TYPE_CHECKING:
diff --git a/gso/workflows/iptrunk/create_imported_iptrunk.py b/gso/workflows/iptrunk/create_imported_iptrunk.py
index 18f76a7f9..b7838c915 100644
--- a/gso/workflows/iptrunk/create_imported_iptrunk.py
+++ b/gso/workflows/iptrunk/create_imported_iptrunk.py
@@ -13,13 +13,13 @@ from orchestrator.workflows.steps import resync, set_status, store_process_subsc
 from pydantic import AfterValidator, ConfigDict
 from pydantic_forms.validators import validate_unique_list
 
+from gso.annotations.interfaces import LAGMember, LAGMemberList, PhysicalPortCapacity
 from gso.products import ProductName
 from gso.products.product_blocks.iptrunk import IptrunkInterfaceBlockInactive, IptrunkType
 from gso.products.product_types.iptrunk import ImportedIptrunkInactive
 from gso.products.product_types.router import Router
 from gso.services import subscriptions
 from gso.services.partners import get_partner_by_name
-from gso.types.interfaces import LAGMember, LAGMemberList, PhysicalPortCapacity
 from gso.utils.helpers import active_router_selector
 
 
diff --git a/gso/workflows/iptrunk/create_iptrunk.py b/gso/workflows/iptrunk/create_iptrunk.py
index c62ca920e..528d9815f 100644
--- a/gso/workflows/iptrunk/create_iptrunk.py
+++ b/gso/workflows/iptrunk/create_iptrunk.py
@@ -20,6 +20,9 @@ from pydantic import ConfigDict
 from pydantic_forms.validators import ReadOnlyField
 from pynetbox.models.dcim import Interfaces
 
+from gso.annotations.interfaces import JuniperLAGMember, LAGMember, LAGMemberList, PhysicalPortCapacity
+from gso.annotations.netbox_router import NetboxEnabledRouter
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.iptrunk import (
     IptrunkInterfaceBlockInactive,
     IptrunkSideBlockInactive,
@@ -34,9 +37,6 @@ from gso.services.partners import get_partner_by_name
 from gso.services.sharepoint import SharePointClient
 from gso.services.subscriptions import get_non_terminated_iptrunk_subscriptions
 from gso.settings import load_oss_params
-from gso.types.interfaces import JuniperLAGMember, LAGMember, LAGMemberList, PhysicalPortCapacity
-from gso.types.netbox_router import NetboxEnabledRouter
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import (
     available_interfaces_choices,
     available_lags_choices,
diff --git a/gso/workflows/iptrunk/deploy_twamp.py b/gso/workflows/iptrunk/deploy_twamp.py
index feb7100a4..a91f84332 100644
--- a/gso/workflows/iptrunk/deploy_twamp.py
+++ b/gso/workflows/iptrunk/deploy_twamp.py
@@ -11,9 +11,9 @@ from orchestrator.workflow import StepList, begin, done, step, workflow
 from orchestrator.workflows.steps import resync, store_process_subscription, unsync
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
 
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_types.iptrunk import Iptrunk
 from gso.services.lso_client import execute_playbook, lso_interaction
-from gso.types.tt_number import TTNumber
 
 
 def _initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
diff --git a/gso/workflows/iptrunk/migrate_iptrunk.py b/gso/workflows/iptrunk/migrate_iptrunk.py
index 0ed107a6f..44e336cd2 100644
--- a/gso/workflows/iptrunk/migrate_iptrunk.py
+++ b/gso/workflows/iptrunk/migrate_iptrunk.py
@@ -24,6 +24,8 @@ from pydantic import ConfigDict
 from pydantic_forms.validators import ReadOnlyField
 from pynetbox.models.dcim import Interfaces
 
+from gso.annotations.interfaces import JuniperAEInterface, JuniperLAGMember, LAGMember, LAGMemberList
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.iptrunk import IptrunkInterfaceBlock, IptrunkType
 from gso.products.product_types.iptrunk import Iptrunk
 from gso.products.product_types.router import Router
@@ -33,8 +35,6 @@ from gso.services.netbox_client import NetboxClient
 from gso.services.sharepoint import SharePointClient
 from gso.services.subscriptions import get_active_router_subscriptions
 from gso.settings import load_oss_params
-from gso.types.interfaces import JuniperAEInterface, JuniperLAGMember, LAGMember, LAGMemberList
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import (
     available_interfaces_choices,
     available_lags_choices,
diff --git a/gso/workflows/iptrunk/modify_isis_metric.py b/gso/workflows/iptrunk/modify_isis_metric.py
index 493f0eb98..1fcdd7e17 100644
--- a/gso/workflows/iptrunk/modify_isis_metric.py
+++ b/gso/workflows/iptrunk/modify_isis_metric.py
@@ -10,9 +10,9 @@ from orchestrator.workflow import StepList, begin, done, step, workflow
 from orchestrator.workflows.steps import resync, store_process_subscription, unsync
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
 
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_types.iptrunk import Iptrunk
 from gso.services.lso_client import execute_playbook, lso_interaction
-from gso.types.tt_number import TTNumber
 
 
 def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
diff --git a/gso/workflows/iptrunk/modify_trunk_interface.py b/gso/workflows/iptrunk/modify_trunk_interface.py
index 6ec7d59a8..4171345c2 100644
--- a/gso/workflows/iptrunk/modify_trunk_interface.py
+++ b/gso/workflows/iptrunk/modify_trunk_interface.py
@@ -15,6 +15,8 @@ from orchestrator.workflows.utils import wrap_modify_initial_input_form
 from pydantic import ConfigDict
 from pydantic_forms.validators import Label, ReadOnlyField
 
+from gso.annotations.interfaces import JuniperLAGMember, LAGMember, LAGMemberList, PhysicalPortCapacity
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.iptrunk import (
     IptrunkInterfaceBlock,
     IptrunkSideBlock,
@@ -23,8 +25,6 @@ from gso.products.product_blocks.iptrunk import (
 from gso.products.product_types.iptrunk import Iptrunk
 from gso.services.lso_client import execute_playbook, lso_interaction
 from gso.services.netbox_client import NetboxClient
-from gso.types.interfaces import JuniperLAGMember, LAGMember, LAGMemberList, PhysicalPortCapacity
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import (
     available_interfaces_choices,
     available_interfaces_choices_including_current_members,
diff --git a/gso/workflows/iptrunk/terminate_iptrunk.py b/gso/workflows/iptrunk/terminate_iptrunk.py
index fec1c48bb..7b7bd96f4 100644
--- a/gso/workflows/iptrunk/terminate_iptrunk.py
+++ b/gso/workflows/iptrunk/terminate_iptrunk.py
@@ -17,12 +17,12 @@ from orchestrator.workflows.steps import (
 )
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
 
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.iptrunk import IptrunkSideBlock
 from gso.products.product_types.iptrunk import Iptrunk
 from gso.services import infoblox
 from gso.services.lso_client import execute_playbook, lso_interaction
 from gso.services.netbox_client import NetboxClient
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import get_router_vendor
 from gso.utils.shared_enums import Vendor
 from gso.utils.workflow_steps import set_isis_to_max
diff --git a/gso/workflows/lan_switch_interconnect/create_lan_switch_interconnect.py b/gso/workflows/lan_switch_interconnect/create_lan_switch_interconnect.py
index 29dd38e47..467a25125 100644
--- a/gso/workflows/lan_switch_interconnect/create_lan_switch_interconnect.py
+++ b/gso/workflows/lan_switch_interconnect/create_lan_switch_interconnect.py
@@ -13,6 +13,15 @@ from orchestrator.workflows.utils import wrap_create_initial_input_form
 from pydantic import AfterValidator, ConfigDict
 from pydantic_forms.validators import Divider, ReadOnlyField
 
+from gso.annotations.interfaces import (
+    JuniperAEInterface,
+    JuniperLAGMember,
+    JuniperPhyInterface,
+    LAGMember,
+    PhysicalPortCapacity,
+    validate_interface_names_are_unique,
+)
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.lan_switch_interconnect import (
     LanSwitchInterconnectAddressSpace,
     LanSwitchInterconnectInterfaceBlockInactive,
@@ -21,15 +30,6 @@ from gso.products.product_types.lan_switch_interconnect import LanSwitchIntercon
 from gso.products.product_types.router import Router
 from gso.products.product_types.switch import Switch
 from gso.services.partners import get_partner_by_name
-from gso.types.interfaces import (
-    JuniperAEInterface,
-    JuniperLAGMember,
-    JuniperPhyInterface,
-    LAGMember,
-    PhysicalPortCapacity,
-    validate_interface_names_are_unique,
-)
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import (
     active_router_selector,
     active_switch_selector,
diff --git a/gso/workflows/router/create_router.py b/gso/workflows/router/create_router.py
index 68c55cf09..6c1211af6 100644
--- a/gso/workflows/router/create_router.py
+++ b/gso/workflows/router/create_router.py
@@ -14,6 +14,7 @@ from orchestrator.workflows.utils import wrap_create_initial_input_form
 from pydantic import ConfigDict, model_validator
 from pydantic_forms.validators import ReadOnlyField
 
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.router import RouterRole
 from gso.products.product_types.router import RouterInactive, RouterProvisioning
 from gso.products.product_types.site import Site
@@ -23,7 +24,6 @@ from gso.services.netbox_client import NetboxClient
 from gso.services.partners import get_partner_by_name
 from gso.services.sharepoint import SharePointClient
 from gso.settings import load_oss_params
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import generate_fqdn, iso_from_ipv4
 from gso.utils.shared_enums import PortNumber, Vendor
 from gso.utils.workflow_steps import (
diff --git a/gso/workflows/router/promote_p_to_pe.py b/gso/workflows/router/promote_p_to_pe.py
index f294bd994..756867c58 100644
--- a/gso/workflows/router/promote_p_to_pe.py
+++ b/gso/workflows/router/promote_p_to_pe.py
@@ -15,13 +15,13 @@ from orchestrator.workflows.steps import resync, store_process_subscription, uns
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
 from pydantic import ConfigDict, model_validator
 
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.router import RouterRole
 from gso.products.product_types.router import Router
 from gso.services import lso_client
 from gso.services.kentik_client import KentikClient, NewKentikDevice
 from gso.services.lso_client import lso_interaction
 from gso.services.subscriptions import get_all_active_sites
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import generate_inventory_for_active_routers
 from gso.utils.shared_enums import Vendor
 
diff --git a/gso/workflows/router/redeploy_base_config.py b/gso/workflows/router/redeploy_base_config.py
index eef8b6e74..022f26966 100644
--- a/gso/workflows/router/redeploy_base_config.py
+++ b/gso/workflows/router/redeploy_base_config.py
@@ -8,9 +8,9 @@ from orchestrator.workflow import StepList, begin, done, workflow
 from orchestrator.workflows.steps import resync, store_process_subscription, unsync
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
 
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_types.router import Router
 from gso.services.lso_client import lso_interaction
-from gso.types.tt_number import TTNumber
 from gso.utils.workflow_steps import deploy_base_config_dry, deploy_base_config_real
 
 
diff --git a/gso/workflows/router/terminate_router.py b/gso/workflows/router/terminate_router.py
index 60895ab33..15cb8e722 100644
--- a/gso/workflows/router/terminate_router.py
+++ b/gso/workflows/router/terminate_router.py
@@ -20,6 +20,7 @@ from orchestrator.workflows.steps import (
 )
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
 
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.router import RouterRole
 from gso.products.product_types.router import Router
 from gso.services import infoblox, lso_client
@@ -28,7 +29,6 @@ from gso.services.librenms_client import LibreNMSClient
 from gso.services.lso_client import execute_playbook, lso_interaction
 from gso.services.netbox_client import NetboxClient
 from gso.settings import load_oss_params
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import generate_inventory_for_active_routers
 from gso.utils.shared_enums import Vendor
 
diff --git a/gso/workflows/router/update_ibgp_mesh.py b/gso/workflows/router/update_ibgp_mesh.py
index f8f17a482..6950994d3 100644
--- a/gso/workflows/router/update_ibgp_mesh.py
+++ b/gso/workflows/router/update_ibgp_mesh.py
@@ -12,13 +12,13 @@ from orchestrator.workflows.steps import resync, store_process_subscription, uns
 from orchestrator.workflows.utils import wrap_modify_initial_input_form
 from pydantic import ConfigDict, model_validator
 
+from gso.annotations.snmp import SNMPVersion
+from gso.annotations.tt_number import TTNumber
 from gso.products.product_blocks.router import RouterRole
 from gso.products.product_types.router import Router
 from gso.services import librenms_client, lso_client
 from gso.services.lso_client import lso_interaction
 from gso.services.subscriptions import get_trunks_that_terminate_on_router
-from gso.types.snmp import SNMPVersion
-from gso.types.tt_number import TTNumber
 from gso.utils.helpers import generate_inventory_for_active_routers
 
 
diff --git a/gso/workflows/site/create_imported_site.py b/gso/workflows/site/create_imported_site.py
index 297761dbf..7d285b877 100644
--- a/gso/workflows/site/create_imported_site.py
+++ b/gso/workflows/site/create_imported_site.py
@@ -9,14 +9,14 @@ from orchestrator.workflow import StepList, begin, done, step, workflow
 from orchestrator.workflows.steps import resync, set_status, store_process_subscription
 from pydantic import ConfigDict
 
+from gso.annotations.base_site import BaseSiteValidatorModel
+from gso.annotations.coordinates import LatitudeCoordinate, LongitudeCoordinate
+from gso.annotations.ip_address import IPAddress
 from gso.products import ProductName
 from gso.products.product_blocks.site import SiteTier
 from gso.products.product_types.site import ImportedSiteInactive
 from gso.services import subscriptions
 from gso.services.partners import get_partner_by_name
-from gso.types.base_site import BaseSiteValidatorModel
-from gso.types.coordinates import LatitudeCoordinate, LongitudeCoordinate
-from gso.types.ip_address import IPAddress
 
 
 @step("Create subscription")
diff --git a/gso/workflows/site/create_site.py b/gso/workflows/site/create_site.py
index ec80732ce..9178fae61 100644
--- a/gso/workflows/site/create_site.py
+++ b/gso/workflows/site/create_site.py
@@ -9,12 +9,12 @@ from orchestrator.workflows.utils import wrap_create_initial_input_form
 from pydantic import ConfigDict
 from pydantic_forms.validators import ReadOnlyField
 
+from gso.annotations.base_site import BaseSiteValidatorModel
+from gso.annotations.coordinates import LatitudeCoordinate, LongitudeCoordinate
+from gso.annotations.ip_address import IPAddress
 from gso.products.product_blocks import site as site_pb
 from gso.products.product_types import site
 from gso.services.partners import get_partner_by_name
-from gso.types.base_site import BaseSiteValidatorModel
-from gso.types.coordinates import LatitudeCoordinate, LongitudeCoordinate
-from gso.types.ip_address import IPAddress
 
 
 def initial_input_form_generator(product_name: str) -> FormGenerator:
diff --git a/gso/workflows/site/modify_site.py b/gso/workflows/site/modify_site.py
index b68626b1d..09a61ea48 100644
--- a/gso/workflows/site/modify_site.py
+++ b/gso/workflows/site/modify_site.py
@@ -16,11 +16,11 @@ from orchestrator.workflows.utils import wrap_modify_initial_input_form
 from pydantic import ConfigDict
 from pydantic_forms.validators import ReadOnlyField
 
+from gso.annotations.coordinates import LatitudeCoordinate, LongitudeCoordinate
+from gso.annotations.ip_address import IPAddress
+from gso.annotations.unique_field import UniqueField
 from gso.products.product_blocks.site import SiteTier
 from gso.products.product_types.site import Site
-from gso.types.coordinates import LatitudeCoordinate, LongitudeCoordinate
-from gso.types.ip_address import IPAddress
-from gso.types.unique_field import UniqueField
 
 
 def initial_input_form_generator(subscription_id: UUIDstr) -> FormGenerator:
diff --git a/test/cli/test_imports.py b/test/cli/test_imports.py
index 89933fc8d..61af17889 100644
--- a/test/cli/test_imports.py
+++ b/test/cli/test_imports.py
@@ -4,6 +4,7 @@ from unittest.mock import patch
 
 import pytest
 
+from gso.annotations.interfaces import PhysicalPortCapacity
 from gso.cli.imports import (
     import_iptrunks,
     import_office_routers,
@@ -16,7 +17,6 @@ from gso.products import Router, Site
 from gso.products.product_blocks.iptrunk import IptrunkType
 from gso.products.product_blocks.router import RouterRole
 from gso.products.product_blocks.site import SiteTier
-from gso.types.interfaces import PhysicalPortCapacity
 from gso.utils.helpers import iso_from_ipv4
 from gso.utils.shared_enums import Vendor
 
diff --git a/test/conftest.py b/test/conftest.py
index 8cfea9d28..4e7f562ac 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -32,9 +32,9 @@ from sqlalchemy.orm import scoped_session, sessionmaker
 from starlette.testclient import TestClient
 from urllib3_mock import Responses
 
+from gso.annotations.interfaces import LAGMember, LAGMemberList
 from gso.main import init_gso_app
 from gso.services.partners import PartnerSchema, create_partner
-from gso.types.interfaces import LAGMember, LAGMemberList
 from test.fixtures import (  # noqa: F401
     iptrunk_side_subscription_factory,
     iptrunk_subscription_factory,
diff --git a/test/fixtures.py b/test/fixtures.py
index 4fa5a2a0e..8ed8ae0f9 100644
--- a/test/fixtures.py
+++ b/test/fixtures.py
@@ -21,6 +21,7 @@ from pydantic_forms.core import FormPage
 from pydantic_forms.types import FormGenerator, SubscriptionMapping
 from pydantic_forms.validators import Choice
 
+from gso.annotations.interfaces import PhysicalPortCapacity
 from gso.products import ProductName
 from gso.products.product_blocks.iptrunk import (
     IptrunkInterfaceBlock,
@@ -36,7 +37,6 @@ from gso.products.product_types.router import ImportedRouterInactive, Router, Ro
 from gso.products.product_types.site import ImportedSiteInactive, Site, SiteInactive
 from gso.products.product_types.super_pop_switch import ImportedSuperPopSwitchInactive, SuperPopSwitchInactive
 from gso.services import subscriptions
-from gso.types.interfaces import PhysicalPortCapacity
 from gso.utils.shared_enums import Vendor
 from test.workflows import WorkflowInstanceForTests
 
diff --git a/test/schemas/test_types.py b/test/schemas/test_types.py
index 33c3f2093..069e43103 100644
--- a/test/schemas/test_types.py
+++ b/test/schemas/test_types.py
@@ -1,7 +1,7 @@
 import pytest
 from pydantic import BaseModel, ValidationError
 
-from gso.types.coordinates import LatitudeCoordinate, LongitudeCoordinate
+from gso.annotations.coordinates import LatitudeCoordinate, LongitudeCoordinate
 
 
 class LatitudeModel(BaseModel):
diff --git a/test/services/test_librenms_client.py b/test/services/test_librenms_client.py
index 1bd14b9b6..c6cf2ce9e 100644
--- a/test/services/test_librenms_client.py
+++ b/test/services/test_librenms_client.py
@@ -4,8 +4,8 @@ from unittest.mock import patch
 import pytest
 from requests import HTTPError
 
+from gso.annotations.snmp import SNMPVersion
 from gso.services.librenms_client import LibreNMSClient
-from gso.types.snmp import SNMPVersion
 
 
 @pytest.fixture()
diff --git a/test/utils/test_helpers.py b/test/utils/test_helpers.py
index 5f9476096..f7e278284 100644
--- a/test/utils/test_helpers.py
+++ b/test/utils/test_helpers.py
@@ -3,10 +3,10 @@ from unittest.mock import patch
 import pytest
 from orchestrator.types import SubscriptionLifecycle
 
+from gso.annotations.tt_number import validate_tt_number
 from gso.products import Router
 from gso.products.product_blocks.iptrunk import IptrunkInterfaceBlock
 from gso.products.product_blocks.router import RouterRole
-from gso.types.tt_number import validate_tt_number
 from gso.utils.helpers import (
     available_interfaces_choices_including_current_members,
     generate_inventory_for_active_routers,
diff --git a/test/workflows/iptrunk/test_create_imported_iptrunk.py b/test/workflows/iptrunk/test_create_imported_iptrunk.py
index 263c4f161..4f4455960 100644
--- a/test/workflows/iptrunk/test_create_imported_iptrunk.py
+++ b/test/workflows/iptrunk/test_create_imported_iptrunk.py
@@ -1,10 +1,10 @@
 import pytest
 from orchestrator.types import SubscriptionLifecycle
 
+from gso.annotations.interfaces import PhysicalPortCapacity
 from gso.products import ProductName
 from gso.products.product_blocks.iptrunk import IptrunkType
 from gso.products.product_types.iptrunk import ImportedIptrunk
-from gso.types.interfaces import PhysicalPortCapacity
 from test.workflows import (
     assert_complete,
     extract_state,
diff --git a/test/workflows/iptrunk/test_create_iptrunk.py b/test/workflows/iptrunk/test_create_iptrunk.py
index cd33943ce..f11a60aaf 100644
--- a/test/workflows/iptrunk/test_create_iptrunk.py
+++ b/test/workflows/iptrunk/test_create_iptrunk.py
@@ -4,10 +4,10 @@ from unittest.mock import patch
 import pytest
 from infoblox_client.objects import HostRecord
 
+from gso.annotations.interfaces import PhysicalPortCapacity
 from gso.products import Iptrunk, ProductName
 from gso.products.product_blocks.iptrunk import IptrunkType
 from gso.services.subscriptions import get_product_id_by_name
-from gso.types.interfaces import PhysicalPortCapacity
 from gso.utils.shared_enums import Vendor
 from test import USER_CONFIRM_EMPTY_FORM
 from test.services.conftest import MockedNetboxClient, MockedSharePointClient
diff --git a/test/workflows/iptrunk/test_modify_trunk_interface.py b/test/workflows/iptrunk/test_modify_trunk_interface.py
index b784d262a..1993971fb 100644
--- a/test/workflows/iptrunk/test_modify_trunk_interface.py
+++ b/test/workflows/iptrunk/test_modify_trunk_interface.py
@@ -2,9 +2,9 @@ from unittest.mock import patch
 
 import pytest
 
+from gso.annotations.interfaces import LAGMemberList, PhysicalPortCapacity
 from gso.products import Iptrunk
 from gso.products.product_blocks.iptrunk import IptrunkType
-from gso.types.interfaces import LAGMemberList, PhysicalPortCapacity
 from gso.utils.shared_enums import Vendor
 from test.conftest import UseJuniperSide
 from test.workflows import (
-- 
GitLab