# Path: sathub/comum/config.py
# PROJECT_ROOT = os.path.join(
#         os.path.abspath(os.path.dirname(__file__)), '..', '..')
# 
# Path: sathub/comum/config.py
# PROJECT_ROOT = os.path.join(
#         os.path.abspath(os.path.dirname(__file__)), '..', '..')
# DEFAULT_LOGGING = {
#         'version': 1,
#         'disable_existing_loggers': True,
#         'formatters': {
#                 'verbose': {
#                         'format': '%(asctime)s %(levelname)-8s [%(name)s] '\
#                                         '(%(module)s:%(lineno)d) %(message)s'
#                     },
#                 'simple': {
#                         'format': '%(levelname)-8s [%(name)s] %(message)s'
#                     }
#             },
#         'filters': {},
#         'handlers': {
#                 'null': {
#                         'level':'DEBUG',
#                         'class':'logging.NullHandler',
#                     },
#                 'console':{
#                         'level':'DEBUG',
#                         'class':'logging.StreamHandler',
#                         'formatter': 'simple'
#                     },
#                 'socket': {
#                         'level': 'WARNING',
#                         'class': 'logging.handlers.SocketHandler',
#                         'host': '10.0.0.1',
#                         'port': 7007
#                     }
#         },
#         'loggers': {
#                 'flask': {
#                         'handlers': ['null'],
#                         'propagate': True,
#                         'level':'INFO'
#                     },
#                 'satcfe': {
#                         'handlers': ['socket'],
#                         'propagate': True,
#                         'level': 'WARNING'
#                     },
#                 'sathub': {
#                         'handlers': ['socket'],
#                         'level': 'WARNING',
#                         'propagate': False
#                     }
#             }
#     }
# DEFAULT_CONFIG = {
#         'debug': True,
#         'usuario': 'sathub',
#         'senha': 'sathub',
#         'descricao': 'Equipamento SAT 1',
#         'codigo_ativacao': '12345678',
#         'caminho_biblioteca': '/opt/fabricante/libsat.so',
#         'convencao_chamada': satcomum.constantes.STANDARD_C,
#     }
# class Configuracoes(object):
#     def __init__(self, origem=None):
#     def origem(self):
#     def is_debug(self):
#     def usuario(self):
#     def senha(self):
#     def descricao(self):
#     def codigo_ativacao(self):
#     def caminho_biblioteca(self):
#     def convencao_chamada(self):
#     def is_biblioteca_disponivel(self):
#     def nome_convencao_chamada(self):
#     def descrever(self):
# def _configure_logging(config_path=None):
# def _verbose(message, *args):


import json
import os
import random
import sys
from satcfe import BibliotecaSAT
from satcfe import ClienteSATLocal
from satcfe.base import FuncoesSAT
from .config import PROJECT_ROOT
from .config import conf
    stored_results = {}

    def memoized(*args):
        try:
            # try to get the cached result
            return stored_results[args]
        except KeyError:
            # nothing was cached for those args. let's fix that.
            result = stored_results[args] = fn(*args)
            return result

    return memoized


@memoize
def instanciar_numerador_sessao(numero_caixa):
    return NumeradorSessaoPorCaixa(numero_caixa=numero_caixa)


@memoize
def instanciar_funcoes_sat(numero_caixa):
    funcoes_sat = FuncoesSAT(BibliotecaSAT(conf.caminho_biblioteca,
                    convencao=conf.convencao_chamada),
            codigo_ativacao=conf.codigo_ativacao,
            numerador_sessao=instanciar_numerador_sessao(numero_caixa))
    return funcoes_sat


@memoize
def instanciar_cliente_local(numero_caixa):

# Path: sathub/comum/config.py
# PROJECT_ROOT = os.path.join(
#         os.path.abspath(os.path.dirname(__file__)), '..', '..')
# 
# Path: sathub/comum/config.py
# PROJECT_ROOT = os.path.join(
#         os.path.abspath(os.path.dirname(__file__)), '..', '..')
# DEFAULT_LOGGING = {
#         'version': 1,
#         'disable_existing_loggers': True,
#         'formatters': {
#                 'verbose': {
#                         'format': '%(asctime)s %(levelname)-8s [%(name)s] '\
#                                         '(%(module)s:%(lineno)d) %(message)s'
#                     },
#                 'simple': {
#                         'format': '%(levelname)-8s [%(name)s] %(message)s'
#                     }
#             },
#         'filters': {},
#         'handlers': {
#                 'null': {
#                         'level':'DEBUG',
#                         'class':'logging.NullHandler',
#                     },
#                 'console':{
#                         'level':'DEBUG',
#                         'class':'logging.StreamHandler',
#                         'formatter': 'simple'
#                     },
#                 'socket': {
#                         'level': 'WARNING',
#                         'class': 'logging.handlers.SocketHandler',
#                         'host': '10.0.0.1',
#                         'port': 7007
#                     }
#         },
#         'loggers': {
#                 'flask': {
#                         'handlers': ['null'],
#                         'propagate': True,
#                         'level':'INFO'
#                     },
#                 'satcfe': {
#                         'handlers': ['socket'],
#                         'propagate': True,
#                         'level': 'WARNING'
#                     },
#                 'sathub': {
#                         'handlers': ['socket'],
#                         'level': 'WARNING',
#                         'propagate': False
#                     }
#             }
#     }
# DEFAULT_CONFIG = {
#         'debug': True,
#         'usuario': 'sathub',
#         'senha': 'sathub',
#         'descricao': 'Equipamento SAT 1',
#         'codigo_ativacao': '12345678',
#         'caminho_biblioteca': '/opt/fabricante/libsat.so',
#         'convencao_chamada': satcomum.constantes.STANDARD_C,
#     }
# class Configuracoes(object):
#     def __init__(self, origem=None):
#     def origem(self):
#     def is_debug(self):
#     def usuario(self):
#     def senha(self):
#     def descricao(self):
#     def codigo_ativacao(self):
#     def caminho_biblioteca(self):
#     def convencao_chamada(self):
#     def is_biblioteca_disponivel(self):
#     def nome_convencao_chamada(self):
#     def descrever(self):
# def _configure_logging(config_path=None):
# def _verbose(message, *args):


# Path: sathub/comum/util.py
import json
import os
import random
import sys
from satcfe import BibliotecaSAT
from satcfe import ClienteSATLocal
from satcfe.base import FuncoesSAT
from .config import PROJECT_ROOT
from .config import conf

    stored_results = {}

    def memoized(*args):
        try:
            # try to get the cached result
            return stored_results[args]
        except KeyError:
            # nothing was cached for those args. let's fix that.
            result = stored_results[args] = fn(*args)
            return result

    return memoized


@memoize
def instanciar_numerador_sessao(numero_caixa):
    return NumeradorSessaoPorCaixa(numero_caixa=numero_caixa)


@memoize
def instanciar_funcoes_sat(numero_caixa):
    funcoes_sat = FuncoesSAT(BibliotecaSAT(conf.caminho_biblioteca,
                    convencao=conf.convencao_chamada),
            codigo_ativacao=conf.codigo_ativacao,
            numerador_sessao=instanciar_numerador_sessao(numero_caixa))
    return funcoes_sat


@memoize
def instanciar_cliente_local(numero_caixa):

    cliente = ClienteSATLocal(BibliotecaSAT(conf.caminho_biblioteca,