def test_log_default():
    logger = log.get_logger("Default_Logger", log.DEFAULT)
    assert logger.name == "Default_Logger"
    assert logger.level == log.DEFAULT

    logger = log.get_logger("SP_Default_Logger", log.DEFAULT)
    assert logger.name == "SP_Default_Logger"
    assert logger.level == log.DEFAULT

    logger = log.get_logger("YA_Default_Logger")
    assert logger.name == "YA_Default_Logger"
    assert logger.level == log.DEFAULT
Esempio n. 2
0
def test_log_default():
    logger = log.get_logger("Default_Logger", log.DEFAULT)
    assert logger.name == "Default_Logger"
    assert logger.level == log.DEFAULT

    logger = log.get_logger("SP_Default_Logger", log.DEFAULT)
    assert logger.name == "SP_Default_Logger"
    assert logger.level == log.DEFAULT

    logger = log.get_logger("YA_Default_Logger")
    assert logger.name == "YA_Default_Logger"
    assert logger.level == log.DEFAULT
Esempio n. 3
0
def test_log_other():
    logger = log.get_logger("Critical_Logger", log.CRITICAL)
    assert logger.name == "Critical_Logger"
    assert logger.level == logging.CRITICAL

    logger = log.get_logger("Error_Logger", log.ERROR)
    assert logger.name == "Error_Logger"
    assert logger.level == logging.ERROR

    logger = log.get_logger("Warning_Logger", log.WARNING)
    assert logger.name == "Warning_Logger"
    assert logger.level == logging.WARNING

    logger = log.get_logger("Info_Logger", log.INFO)
    assert logger.name == "Info_Logger"
    assert logger.level == logging.INFO

    logger = log.get_logger("Debug_Logger", log.DEBUG)
    assert logger.name == "Debug_Logger"
    assert logger.level == logging.DEBUG
def test_log_other():
    logger = log.get_logger("Critical_Logger", log.CRITICAL)
    assert logger.name == "Critical_Logger"
    assert logger.level == logging.CRITICAL

    logger = log.get_logger("Error_Logger", log.ERROR)
    assert logger.name == "Error_Logger"
    assert logger.level == logging.ERROR

    logger = log.get_logger("Warning_Logger", log.WARNING)
    assert logger.name == "Warning_Logger"
    assert logger.level == logging.WARNING

    logger = log.get_logger("Info_Logger", log.INFO)
    assert logger.name == "Info_Logger"
    assert logger.level == logging.INFO

    logger = log.get_logger("Debug_Logger", log.DEBUG)
    assert logger.name == "Debug_Logger"
    assert logger.level == logging.DEBUG
Esempio n. 5
0
from fs.utils import copyfile

from tendril.dox import docstore
from tendril.dox import render
from tendril.boms.outputbase import DeltaOutputBom
from tendril.entityhub import projects
from tendril.entityhub import serialnos
from tendril.entityhub.modules import get_module_instance
from tendril.entityhub.modules import get_module_prototype
from tendril.gedaif.conffile import ConfigsFile
from tendril.utils import log
from tendril.utils.fsutils import get_tempname
from tendril.utils.fsutils import temp_fs
from tendril.utils.files.pdf import merge_pdf
logger = log.get_logger(__name__, log.DEBUG)


def gen_pcb_am(configname,
               outfolder,
               sno=None,
               productionorderno=None,
               indentsno=None,
               scaffold=False,
               verbose=True,
               session=None):
    """
    Generates a PCB Assembly Manifest for a 'card', a card being defined as a
    gEDA project, with a specified ``configname``.

    In the present implementation, the project could provide either a PCB or a
Esempio n. 6
0
    :func: _get_parser
    :prog: tendril-writecalib
    :nodefault:

"""

import argparse

from tendril.entityhub import macs
from tendril.entityhub import serialnos
from tendril.testing import testrunner
from .helpers import add_base_options

from tendril.utils import log

logger = log.get_logger("writecalib", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-writecalib script.
    """
    parser = argparse.ArgumentParser(
        description='Write calibration parameters to device.',
        prog='tendril-writecalib')
    add_base_options(parser)
    parser.add_argument('serialno',
                        metavar='SNO',
                        type=str,
                        nargs='?',
                        help='Device serial number')
Esempio n. 7
0
.. rubric:: Script Usage

.. argparse::
    :module: tendril.scripts.getdox
    :func: _get_parser
    :prog: tendril-getdox
    :nodefault:

"""


import argparse

from tendril.dox import docstore
from tendril.utils import log
logger = log.get_logger("getdox", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-getdox script.
    """
    parser = argparse.ArgumentParser(
        description='Copy published documents into the workspace.',
        prog='tendril-getdox'
    )
    parser.add_argument(
        'serialno', metavar='SNO', type=str, nargs='?',
        help='Document serial number'
    )
    parser.add_argument(
Esempio n. 8
0
.. argparse::
    :module: tendril.scripts.getdox
    :func: _get_parser
    :prog: tendril-getdox
    :nodefault:

"""

import argparse
from .helpers import add_base_options

from tendril.dox import docstore
from tendril.utils import log

logger = log.get_logger("getdox", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-getdox script.
    """
    parser = argparse.ArgumentParser(
        description='Copy published documents into the workspace.',
        prog='tendril-getdox')
    add_base_options(parser)
    parser.add_argument('serialno',
                        metavar='SNO',
                        type=str,
                        nargs='?',
                        help='Document serial number')
Esempio n. 9
0
import numpy
from six import iteritems
from decimal import Decimal

from tendril.utils.versions import get_namespace_package_locations

from tendril.config import DOX_TEMPLATE_FOLDER
from tendril.identity.persona import primary_persona

from tendril.utils.colors import tableau20
from tendril.utils.types.unitbase import NumericalUnitBase
from tendril.utils.types.currency import CurrencyValue

from tendril.utils import log

logger = log.get_logger(__name__, log.INFO)

import matplotlib

matplotlib.use('Agg')
from matplotlib import pyplot

FNULL = open(os.devnull, 'w')

__version__ = '0.1.2'


def format_currency(value):
    """
    Formats a number into the correct number of decimals (2) and with
    thousands separators ``,``, for use when rendering currencies.
Esempio n. 10
0
"""

import re
import argparse

from tendril.gedaif import gsymlib
from tendril.entityhub import supersets
from tendril.conventions.status import print_status

from .helpers import add_base_options

from colorama import Style
from tendril.utils import terminal
from tendril.utils import log
logger = log.get_logger("gsymlib", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-gedaif script.
    """
    parser = argparse.ArgumentParser(
        description='Simple search tools for searching the gEDA '
        'symbol library.',
        prog='tendril-gedaif')
    add_base_options(parser)
    parser.add_argument('-s',
                        '--search',
                        metavar='SEARCH STRING',
                        type=str,
Esempio n. 11
0
"""

import argparse
import os

from tendril.sourcing.vendors import csil
from tendril.entityhub import projects
from tendril.gedaif import conffile
from tendril.gedaif.conffile import NoGedaProjectError
from tendril.utils import log
from tendril.utils.config import PROJECTS_ROOT
from tendril.utils.fsutils import in_directory
from .helpers import add_base_options
from .helpers import add_project_selector_options

logger = log.get_logger("genpcbpricing", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-genpcbpricing script.
    """
    parser = argparse.ArgumentParser(
        description='(Re-)Generate CSIL PCB Pricing Information.',
        prog='tendril-genpcbpricing')
    add_base_options(parser)
    parser.add_argument(
        '--force',
        '-f',
        action='store_true',
        default=False,
Esempio n. 12
0
    :func: _get_parser
    :prog: tendril-runtest
    :nodefault:

"""

import argparse
from colorama import Fore

from tendril.entityhub import macs
from tendril.entityhub import serialnos
from tendril.testing import testrunner

from .helpers import add_base_options
from tendril.utils import log
logger = log.get_logger("runtest", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-runtest script.
    """
    parser = argparse.ArgumentParser(
        description='Run device tests for a device', prog='tendril-runtest')
    add_base_options(parser)
    parser.add_argument('serialno',
                        metavar='SNO',
                        type=str,
                        nargs='?',
                        help='Device serial number')
    parser.add_argument(
Esempio n. 13
0
from fs.utils import copyfile

import docstore
import render
from tendril.boms.outputbase import DeltaOutputBom
from tendril.entityhub import projects
from tendril.entityhub import serialnos
from tendril.entityhub.modules import get_module_instance
from tendril.entityhub.modules import get_module_prototype
from tendril.gedaif.conffile import ConfigsFile
from tendril.utils import log
from tendril.utils.fsutils import get_tempname
from tendril.utils.fsutils import temp_fs
from tendril.utils.files.pdf import merge_pdf
logger = log.get_logger(__name__, log.DEBUG)


def gen_pcb_am(configname, outfolder, sno=None, productionorderno=None,
               indentsno=None, scaffold=False, verbose=True, session=None):
    """
    Generates a PCB Assembly Manifest for a 'card', a card being defined as a
    gEDA project, with a specified ``configname``.

    In the present implementation, the project could provide either a PCB or a
    Cable.

        - In case the project provides the card, the schematic for the cable
          is included along with the assembly manifest.
        - In case the project provides a PCB, the schematic is not included
          with the assembly manifest.
Esempio n. 14
0
import shutil

from tendril.conventions.motifs import create_motif_object
from tendril.conventions.electronics import ident_transform
from tendril.boms.validate import ValidationContext
from tendril.boms.validate import ErrorCollector
from tendril.boms.validate import BomMotifPolicy
from tendril.boms.validate import BomMotifUnrecognizedError

import projfile

from tendril.utils.config import INSTANCE_CACHE
from tendril.utils.config import PROJECTS_ROOT
from tendril.utils import fsutils
from tendril.utils import log
logger = log.get_logger(__name__, level=log.WARNING)


FNULL = open(os.devnull, 'w')


class BomLine(object):

    def __init__(self, line, columns):
        self.data = {}
        elems = line.split('\t')
        for i in range(len(columns)):
            self.data[columns[i]] = elems[i]

    def __repr__(self):
        return self.data.__repr__()
Esempio n. 15
0
from suds.transport.http import HttpAuthenticated
from suds.transport.http import HttpTransport

try:
    import cPickle as pickle
except ImportError:
    import pickle

from .helpers import proxy_dict
from .caching import CacheBase

from tendril.config import INSTANCE_CACHE
from tendril.config import MAX_AGE_DEFAULT

from tendril.utils import log
logger = log.get_logger(__name__, log.WARNING)

logging.getLogger('suds.xsd.query').setLevel(logging.INFO)
logging.getLogger('suds.xsd.sxbasic').setLevel(logging.INFO)
logging.getLogger('suds.xsd.schema').setLevel(logging.INFO)
logging.getLogger('suds.xsd.sxbase').setLevel(logging.INFO)
logging.getLogger('suds.metrics').setLevel(logging.INFO)
logging.getLogger('suds.wsdl').setLevel(logging.INFO)
logging.getLogger('suds.client').setLevel(logging.INFO)
logging.getLogger('suds.resolver').setLevel(logging.INFO)
logging.getLogger('suds.umx.typed').setLevel(logging.INFO)
logging.getLogger('suds.mx.literal').setLevel(logging.INFO)
logging.getLogger('suds.mx.core').setLevel(logging.INFO)
logging.getLogger('suds.transport.http').setLevel(logging.INFO)

SOAP_CACHE = os.path.join(INSTANCE_CACHE, 'soapcache')
Esempio n. 16
0
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""
This file is part of tendril
See the COPYING, README, and INSTALL files for more information
"""

import os

from tendril.entityhub.guidelines import QtyGuidelines
from tendril.utils.config import INSTANCE_ROOT

from tendril.utils import log
logger = log.get_logger(__name__, log.INFO)


electronics_qty_file = os.path.join(INSTANCE_ROOT,
                                    'inventory',
                                    'guidelines',
                                    'electronics-qty.yaml'
                                    )
logger.info("Loading Electronics Inventory Qty Guidelines from file : " +
            os.linesep + electronics_qty_file)
electronics_qty = QtyGuidelines(electronics_qty_file)
Esempio n. 17
0
    :module: tendril.scripts.writecalib
    :func: _get_parser
    :prog: tendril-writecalib
    :nodefault:

"""


import argparse

from tendril.entityhub import macs
from tendril.entityhub import serialnos
from tendril.testing import testrunner
from tendril.utils import log

logger = log.get_logger("writecalib", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-writecalib script.
    """
    parser = argparse.ArgumentParser(description="Write calibration parameters to device.", prog="tendril-writecalib")
    parser.add_argument("serialno", metavar="SNO", type=str, nargs="?", help="Device serial number")
    parser.add_argument(
        "--detect",
        "-d",
        metavar=("MACTYPE"),
        type=str,
        nargs=1,
        help="Autodetect serial number using the specified MACTYPE. " "No effect if serial number specified.",
Esempio n. 18
0
from tendril.utils.db import with_db
from tendril.utils.db import get_session

from tendril.entityhub import serialnos
from tendril.entityhub.db.model import SerialNumber
from tendril.entityhub.db.controller import SerialNoNotFound
from tendril.entityhub.entitybase import EntityNotFound
from tendril.auth.db.controller import get_user_object

from .model import InventoryIndent
from .model import InventoryLocationCode

from tendril.utils.config import INVENTORY_LOCATIONS

from tendril.utils import log
logger = log.get_logger(__name__, log.DEFAULT)


class IndentNotFound(EntityNotFound):
    pass


@with_db
def get_inventory_indent(serialno=None, session=None):
    if serialno is None:
        raise AttributeError("serialno cannot be None")
    if not isinstance(serialno, SerialNumber):
        try:
            serialno = serialnos.get_serialno_object(sno=serialno,
                                                     session=session)
        except SerialNoNotFound:
Esempio n. 19
0
import os
import argparse

from tendril.entityhub import projects
from tendril.sourcing import csil

from tendril.gedaif.conffile import NoGedaProjectError
from tendril.gedaif import conffile

from tendril.utils.config import PROJECTS_ROOT
from tendril.utils.fsutils import in_directory

from .helpers import add_project_selector_options

from tendril.utils import log
logger = log.get_logger("genpcbpricing", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-genpcbpricing script.
    """
    parser = argparse.ArgumentParser(
        description='(Re-)Generate CSIL PCB Pricing Information.',
        prog='tendril-genpcbpricing'
    )
    parser.add_argument(
        '--force', '-f', action='store_true', default=False,
        help='Regenerate pricing even if it seems to be up-to-date'
    )
    parser.add_argument(
Esempio n. 20
0
from tendril.testing import analysis
from tendril.utils.db import with_db
from tendril.entityhub import serialnos
from tendril.entityhub import projects
from tendril.gedaif.conffile import ConfigsFile
from tendril.utils import vcs
from tendril.entityhub.db.model import SerialNumber
from tendril.entityhub.db import controller as sno_controller

from render import render_pdf
import docstore

from tendril.utils.config import INSTANCE_ROOT
from tendril.utils import log

logger = log.get_logger(__name__, log.DEFAULT)
default_target = os.path.join(INSTANCE_ROOT, 'scratch', 'testing')


@with_db
def render_test_report(serialno=None, outfolder=None, session=None):
    """
    Renders the latest test results marked against the specified ``serialno``.

    Since this function is defined against the database, all arguments should
    be keyword arguments.

    :param serialno: The serial number of the device.
    :type serialno: :class:`str` or :class:`tendril.entityhub.db.SerialNumber`
    :param outfolder: The folder in which the output file should be created.
    :type outfolder: str
Esempio n. 21
0
import os
import argparse

from tendril.gedaif import conffile
from tendril.entityhub import projects
from tendril.entityhub import modules
from tendril.config.legacy import PROJECTS_ROOT
from tendril.utils.fsutils import in_directory

from .helpers import add_module_selector_options
from .helpers import get_project_folder
from .helpers import add_base_options

from tendril.utils import log

logger = log.get_logger("validate", log.DEFAULT)


def _get_parser():
    """
    Constructs the CLI argument parser for the tendril-validate script.
    """
    parser = argparse.ArgumentParser(
        description='Validate (gEDA) projects and modules.',
        prog='tendril-validate')
    add_base_options(parser)
    add_module_selector_options(parser)
    parser.add_argument('--sourcing',
                        '-s',
                        action='store_true',
                        default=False,