# Path: quads/config.py
# DEFAULT_CONF_PATH = os.path.join(os.path.dirname(__file__), "../conf/quads.yml")
#     LOGFMT = "%(asctime)-12s : %(levelname)-8s - %(message)s"
#     STDFMT = "- %(levelname)-8s - %(message)s"
#     API = "v2"
#     FPING_TIMEOUT = 10000
#     QUADSVERSION = "1.1.6"
#     QUADSCODENAME = "gaúcho"
#     SUPPORTED = [
#         "fc640",
#         "r620",
#         "r630",
#         "r640",
#         "640",
#         "r650",
#         "650",
#         "r720",
#         "r730xd",
#         "r930",
#         "r730",
#         "r740xd",
#         "740xd",
#         "r750xd",
#         "r750",
#         "750",
#         "r720xd",
#         "7425",
#         "7525",
#     ]
#     OFFSETS = {"em1": 0, "em2": 1, "em3": 2, "em4": 3, "em5": 4}
#     TEMPLATES_PATH = os.path.join(os.path.dirname(__file__), "templates")
#     INTERFACES = {
#         "em1": ["172.16", "172.21"],
#         "em2": ["172.17", "172.22"],
#         "em3": ["172.18", "172.23"],
#         "em4": ["172.19", "172.24"],
#         "em5": ["172.20", "172.25"],
#     }
# class _ConfigBase:
# class _Config(_ConfigBase):
#     def __init__(self):
#     def load_from_yaml(self, filepath: str = DEFAULT_CONF_PATH):
#     def __getitem__(self, item: str):
#     def API_URL(self):


import calendar
import struct
from bson.objectid import ObjectId
from datetime import timedelta
from mongoengine import ObjectIdField
from quads.config import Config
        cloud_offset = int(cloud_obj.name[5:]) * 10
        base_vlan = vlan_first + cloud_offset
        if cloud_obj.qinq == 1:
            index = 0
        vlan = base_vlan + list(Config.OFFSETS.values())[index]
        return vlan


def date_span(start, end, delta=timedelta(days=1)):
    current = start
    while current < end:
        yield current
        current += delta


def month_delta_past(date, months):
    years = months // 12
    year = date.year - years
    month_delta = months % 12
    if not month_delta:
        return date.replace(year=year)
    if month_delta > date.month:
        year -= 1
        month = 12 - month_delta
        day = min(date.day, calendar.monthrange(year, month)[1])
        return date.replace(year=year, month=month, day=day)
    else:
        month = date.month - month_delta
        if month:
            day = min(date.day, calendar.monthrange(year, month)[1])

# Path: quads/config.py
# DEFAULT_CONF_PATH = os.path.join(os.path.dirname(__file__), "../conf/quads.yml")
#     LOGFMT = "%(asctime)-12s : %(levelname)-8s - %(message)s"
#     STDFMT = "- %(levelname)-8s - %(message)s"
#     API = "v2"
#     FPING_TIMEOUT = 10000
#     QUADSVERSION = "1.1.6"
#     QUADSCODENAME = "gaúcho"
#     SUPPORTED = [
#         "fc640",
#         "r620",
#         "r630",
#         "r640",
#         "640",
#         "r650",
#         "650",
#         "r720",
#         "r730xd",
#         "r930",
#         "r730",
#         "r740xd",
#         "740xd",
#         "r750xd",
#         "r750",
#         "750",
#         "r720xd",
#         "7425",
#         "7525",
#     ]
#     OFFSETS = {"em1": 0, "em2": 1, "em3": 2, "em4": 3, "em5": 4}
#     TEMPLATES_PATH = os.path.join(os.path.dirname(__file__), "templates")
#     INTERFACES = {
#         "em1": ["172.16", "172.21"],
#         "em2": ["172.17", "172.22"],
#         "em3": ["172.18", "172.23"],
#         "em4": ["172.19", "172.24"],
#         "em5": ["172.20", "172.25"],
#     }
# class _ConfigBase:
# class _Config(_ConfigBase):
#     def __init__(self):
#     def load_from_yaml(self, filepath: str = DEFAULT_CONF_PATH):
#     def __getitem__(self, item: str):
#     def API_URL(self):


# Path: quads/helpers.py
import calendar
import struct
from bson.objectid import ObjectId
from datetime import timedelta
from mongoengine import ObjectIdField
from quads.config import Config

        cloud_offset = int(cloud_obj.name[5:]) * 10
        base_vlan = vlan_first + cloud_offset
        if cloud_obj.qinq == 1:
            index = 0
        vlan = base_vlan + list(Config.OFFSETS.values())[index]
        return vlan


def date_span(start, end, delta=timedelta(days=1)):
    current = start
    while current < end:
        yield current
        current += delta


def month_delta_past(date, months):
    years = months // 12
    year = date.year - years
    month_delta = months % 12
    if not month_delta:
        return date.replace(year=year)
    if month_delta > date.month:
        year -= 1
        month = 12 - month_delta
        day = min(date.day, calendar.monthrange(year, month)[1])
        return date.replace(year=year, month=month, day=day)
    else:
        month = date.month - month_delta
        if month:
            day = min(date.day, calendar.monthrange(year, month)[1])

            return date.replace(year=year, month=month, day=day)