# Copyright 2023 highstreet technologies GmbH # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #!/usr/bin/python """ A collection of TypeDefinitions """ from enum import Enum from model.python.Countries import Country # Define AdministrativeState enum class AdministrativeState(Enum): LOCKED = 'locked' UNLOCKED = 'unlocked' SHUTTING_DOWN = 'shutting down' # Define AlarmState type AlarmState = int # Define Address type AddressType = { "street": str, "building": str, "room": str, "city": str, "zip": str, "state": str, "country": Country } # Define OperationalState enum class OperationalState(Enum): ENABLED = 'enabled' DISABLED = 'disabled' # Define LifeCycleState enum class LifeCycleState(Enum): PLANNED = 'planned' ORDERED = 'ordered' INSTALLED = 'installed' COMMISSIONED = 'commissioned' TO_BE_DESTROYED = 'to be destroyed' DESTROYED = 'destroyed' # Define UsageState enum class UsageState(Enum): USED = 'used' UNUSED = 'unused' # Define Enumerate type def Enumerate(N, Acc=None): if Acc is None: Acc = [] if len(Acc) == N: return Acc[-1] return Enumerate(N, Acc + [len(Acc)]) # Define Range type def Range(F, T): return [i for i in range(F, T + 1)] # Define Procent and Utilization types Procent = Range(0, 100) Utilization = Procent