Exemple #1
0
class Profile(object):
    name = related.StringField(default="__root__")
    host = related.StringField(required=False)
    schemas = related.ChildField(Namespace, required=False)
    globals = related.ChildField(Namespace, required=False)
    headers = related.ChildField(Namespace, required=False)
    prefixes = related.SequenceField(str, default=None)
    extensions = related.SequenceField(str, default=["rigor"])
    includes = related.SequenceField(str, default=None)
    excludes = related.SequenceField(str, default=None)
    concurrency = related.IntegerField(default=5)
    retries = related.IntegerField(default=0)
    sleep = related.IntegerField(default=60)
    retry_failed = related.BooleanField(default=False, required=False)

    def __attrs_post_init__(self):
        # circumvent frozen error due to immutable
        extensions = [
            ext[1:] if ext.startswith(".") else ext
            for ext in self.extensions or []
        ]
        object.__setattr__(self, "extensions", extensions)

    def as_dict(self):
        kwargs = related.to_dict(self)
        kwargs.pop("profiles", None)
        kwargs.pop("file_path", None)
        return kwargs
Exemple #2
0
class StatusResult(object):
    status = related.StringField()
    duration = related.IntegerField()
    line = related.IntegerField(default=4)

    @classmethod
    def create(cls, success, duration):
        status = {True: "passed", False: "failed"}.get(success, "skipped")
        return cls(status=status, duration=duration)
Exemple #3
0
class ExamQuestionAnswerMeta:
    """
    Represents metadata of a question answer's object
    """
    text = related.StringField('')
    is_correct = related.BooleanField(False, required=False)
    likelihood = related.IntegerField(1, required=False)
    id = related.IntegerField(0)

    def __str__(self):
        return f"{self.id}: [{'+' if self.is_correct else '-'}] {self.text}"
Exemple #4
0
class DetectorMapping:
    detector = related.ChildField(DetectorUUID)
    expression = related.ChildField(DetectorMappingExpression)
    user = related.ChildField(DetectorMappingUser)
    fields = related.SequenceField(str, required=False)
    id = related.StringField(required=False)
    last_modified_time_in_millis = related.IntegerField(
        required=False, key="lastModifiedTimeInMillis")
    created_time_in_millis = related.IntegerField(required=False,
                                                  key="createdTimeInMillis")
    enabled = related.BooleanField(required=False)
Exemple #5
0
class Counts(object):
    key = related.StringField()
    passed = related.IntegerField(default=0)
    failed = related.IntegerField(default=0)
    total = related.IntegerField(default=0)

    def add(self, passed):
        if passed:
            self.passed += 1
        else:
            self.failed += 1

        self.total += 1
Exemple #6
0
class StepResult(object):
    step = related.ChildField(Step)
    success = related.BooleanField(default=True)
    fetch = related.ChildField(Fetch, required=False)
    response = related.ChildField(object, required=False)
    transform = related.ChildField(object, required=False)
    extract = related.ChildField(Namespace, required=False)
    status = related.IntegerField(required=False)
    validations = related.SequenceField(ValidationResult, required=False)
    duration = related.IntegerField(required=False)

    @property
    def failed_validations(self):
        return [v for v in self.validations if not v.success]
Exemple #7
0
class UtilConfig(object):
    lang1 = related.ChildField(LanguageInfo)
    lang2 = related.ChildField(LanguageInfo)
    redo = related.BooleanField(default=False)
    path = related.StringField(default=".")
    num = related.IntegerField(default=10)
    record = related.BooleanField(default=True)
class BarGraphSettings:
    result_limit = related.IntegerField(50, key='resultLimit')
    sort_order = related.ChildField(SortOrder,
                                    SortOrder.DESCENDING,
                                    key='sortOrder')
    sort_on = related.StringField('', key='sortOn')
    stack_bars = related.BooleanField(False, key='stackBars')
class CommandConfig(object):
    target_device_list = related.SequenceField(TargetDevice)
    database = related.ChildField(Database, required=False)
    influxdb = related.ChildField(Influxdb, required=False)
    set_measurement_interval = related.IntegerField(required=False)
    dry_run = related.BooleanField(default=False, required=False)
    no_scan = related.BooleanField(default=False, required=False)
Exemple #10
0
class Feature(object):
    uri = related.StringField()
    keyword = related.StringField()
    id = related.StringField()
    name = related.StringField()
    line = related.IntegerField()
    elements = related.SequenceField(Element, default=[])
    description = related.StringField(required=False, default=None)
    tags = related.SequenceField(Tag, required=False, default=None)

    @classmethod
    def create(cls, case_result):
        case = case_result.case
        uuid = "%s;%s" % (urllib.parse.quote_plus(case.name), case.uuid)
        return cls(
            uri=case.file_path,
            keyword="Feature",
            id=uuid,
            name=case.name,
            line=1,
            elements=[
                Element.create(scenario_result) for scenario_result in chain(
                    case_result.passed, case_result.failed)
            ],
            tags=[Tag(name=tag) for tag in case.tags],
        )
class BubbleChartSettings:
    linear_fit = related.BooleanField(False, key='linearFit')
    result_limit = related.IntegerField(100, key='resultLimit')
    show_legend = related.BooleanField(False, key='showLegend')
    x_axis = related.StringField('', key='xAxis')
    y_axis = related.StringField('', key='yAxis')
    z_axis = related.StringField('', key='zAxis')
Exemple #12
0
class ExamQuestion:
    id = related.StringField(None)
    text = related.StringField('')
    is_multiple_choice = related.BooleanField(False)
    answers = related.SequenceField(ExamQuestionAnswer, None)
    points = related.IntegerField(0)

    @staticmethod
    def from_meta(id: str, meta: ExamQuestionMeta):
        meta.validate()
        multiple_choice = meta.is_multiple_choice
        answers_meta = meta.prepare_answers()
        answers = [ExamQuestionAnswer.from_meta(ans) for ans in answers_meta]
        return ExamQuestion(id=id,
                            text=meta.text,
                            is_multiple_choice=multiple_choice,
                            answers=answers,
                            points=meta.points)

    def grade(self, meta: ExamQuestionMeta) -> int:
        """
        Returns the score for this ExamQuestion instance
        """
        grader = get_grader(meta.grader)
        if grader:
            return grader(meta, self)
        return 0
Exemple #13
0
class Element(object):
    keyword = related.StringField()
    id = related.StringField()
    name = related.StringField()
    line = related.IntegerField()
    description = related.StringField()
    type = related.StringField()
    steps = related.SequenceField(Step, default=[])

    @classmethod
    def create(cls, scenario_result):
        uuid = "%s;%s" % (urllib.parse.quote_plus(
            scenario_result.case.name), scenario_result.uuid)

        # scenario step + steps
        steps = [Step.create(None, scenario_result)] + \
                [Step.create(step_result, scenario_result)
                 for step_result in scenario_result.step_results]

        return cls(
            keyword="Scenario",
            name=scenario_result.scenario.__name__,
            id=uuid,
            line=2,
            description="",
            type="scenario",
            steps=steps,
        )
Exemple #14
0
class StoreData(object):
    name = related.StringField()
    id = related.IntegerField()
    created_on = related.DateTimeField("%m/%d/%Y %H:%M:%S")
    data_from = related.DateTimeField()
    data_to = related.DateTimeField()
    days = related.SequenceField(DayData)
Exemple #15
0
class Step(object):
    keyword = related.StringField()

    line = related.IntegerField()
    match = related.ChildField(Match)
    name = related.StringField()
    doc_string = related.ChildField(DocString, required=False, default=None)
    result = related.ChildField(StatusResult, required=False, default=None)

    @classmethod
    def create(cls, step_result, scenario_result):
        if step_result is None:
            output = related.to_dict(scenario_result.scenario)
            output['__file__'] = scenario_result.case.file_path
            return cls(keyword="",
                       line=3,
                       name="Scenario Setup",
                       doc_string=DocString.section("SCENARIO", output),
                       match=Match(),
                       result=StatusResult.create(True, 0))
        else:
            return cls(
                keyword="",
                line=3,
                name=step_result.step.description,
                doc_string=DocString.create(step_result),
                match=Match.create(step_result.step),
                result=StatusResult.create(step_result.success,
                                           step_result.duration),
            )
Exemple #16
0
class DocString(object):
    value = related.StringField()
    content_type = related.StringField(required=False)
    line = related.IntegerField(default=6)

    @classmethod
    def section(cls, title, obj, **kwargs):
        size = max(20, len(title))
        bar = "=" * size
        # if isinstance(obj, dict) and "html" in obj:
        #     content = str(obj["html"])
        # else:
        #     content = related.to_yaml(obj, **kwargs) if obj else "None"
        content = related.to_yaml(obj, **kwargs) if obj else "None"
        return "\n".join([bar, str.center(title, size), bar, "", content, ""])

    @classmethod
    def create(cls, step_result):
        return cls(value="\n".join([
            cls.section("REQUEST", step_result.fetch),
            cls.section("RESPONSE [%s]" %
                        step_result.status, step_result.response),
            cls.section("TRANSFORM", step_result.transform),
            cls.section("EXTRACT", step_result.extract),
            cls.section("FAILURES",
                        step_result.failed_validations,
                        suppress_empty_values=False)
        ]))
Exemple #17
0
class DashboardOptions:
    title = related.StringField('New Dashboard')
    column_count = related.IntegerField(DEFAULT_COLUMN_COUNT,
                                        key='columnCount')
    filter_panel_settings = related.ChildField(FilterPanelSettings,
                                               FilterPanelSettings(),
                                               key='filterPanelSettings')
class TrainHParams(RelatedConfigMixin):
    """Training hyper-parameters
    """
    # patience in keras.callbacks.EarlyStopping
    early_stop_patience = related.IntegerField(5, required=False)

    # maximual number of epochs to train the model for
    epochs = related.IntegerField(200, required=False)

    batch_size = related.IntegerField(256, required=False)

    balance_peak_classes = related.BooleanField(False, required=False)

    # how frequently to evaluate (in fraction of the epoch)
    train_epoch_frac = related.FloatField(1.0, required=False)
    valid_epoch_frac = related.FloatField(1.0, required=False)
Exemple #19
0
class SearchResults:
    beatmaps: List[Beatmap] = related.SequenceField(Beatmap)
    result_count: int = related.IntegerField()

    @classmethod
    def from_json(cls, stream: any):
        return related.from_json(stream, cls)
Exemple #20
0
class ExamQuestionAnswer:
    id = related.IntegerField(0)
    text = related.StringField('')
    is_selected = related.BooleanField(False, required=False)

    @staticmethod
    def from_meta(meta: ExamQuestionAnswerMeta):
        return ExamQuestionAnswer(id=meta.id, text=meta.text)
Exemple #21
0
class Port(object):
    """ https://docs.docker.com/compose/compose-file/#ports """
    _short_form = related.StringField(required=False, repr=False, cmp=False)
    target = related.IntegerField(required=False)
    published = related.IntegerField(required=False)
    protocol = related.ChildField(Protocol, default=Protocol.TCP)
    mode = related.ChildField(Mode, default=Mode.HOST)

    def __attrs_post_init__(self):
        if self._short_form:
            # todo: handle protocol and mode parsing
            published, target = map(int, self._short_form.split(":"))

            # set methods won't work because the class is immutable.
            # workaround: https://github.com/python-attrs/attrs/issues/120
            object.__setattr__(self, "published", published)
            object.__setattr__(self, "target", target)
Exemple #22
0
class DayData(object):
    date = related.DateField()
    logged_on = related.TimeField("%H:%M")
    open_at = related.TimeField()
    closed_on = related.TimeField()
    customers = related.IntegerField()
    day_type = related.ChildField(DayType)
    sales = related.FloatField(required=False)
Exemple #23
0
class LayoutItem:
    id = related.StringField()
    query_id = related.StringField(key='queryId')
    item_type = related.ChildField(VisualizationType, key='type')
    upper_x = related.IntegerField(key='upperX')
    upper_y = related.IntegerField(key='upperY')
    size_id = related.StringField(key='sizeId')
    custom_fields = related.SequenceField(CustomField, [], key='customFields')

    # TODO(stephen, anyone): Add full model for filter modal selections and
    # frontend selections filter.
    filter_modal_selections = related.ChildField(dict, {}, key='filterModalSelections')
    front_end_selections_filter = related.ChildField(
        dict, {}, key='frontendSelectionsFilter'
    )
    name = related.StringField(required=False)
    is_advanced_query_item = related.BooleanField(False, key='isAdvancedQueryItem')
    is_locked = related.BooleanField(False, key='isLocked')
    setting_id = related.StringField(required=False, key='settingId')
class HeatTileSettings:
    divergent_coloration = related.BooleanField(True, key='divergentColoration')
    first_y_axis_selections = related.SequenceField(str, [], key='firstYaxisSelections')
    invert_coloration = related.BooleanField(False, key='invertColoration')
    log_scaling = related.BooleanField(True, key='logScaling')
    result_limit = related.IntegerField(100, key='resultLimit')
    selected_field = related.StringField('', key='selectedField')
    show_time_on_y_axis = related.BooleanField(True, key='showTimeOnYAxis')
    sort_order = related.ChildField(SortOrder, SortOrder.DESCENDING, key='sortOrder')
    sort_on = related.StringField('', key='sortOn')
    use_ethiopian_dates = related.BooleanField(False, key='useEthiopianDates')
class BumpChartSettings:
    result_limit = related.IntegerField(25, key='resultLimit')
    selected_field = related.StringField('', key='selectedField')

    # NOTE(stephen): This is a mapping from field ID to True. That is difficult
    # to represent with `related` and we'd prefer having a set on both the
    # frontend and the backend. Fix this.
    selected_keys = related.ChildField(dict, {}, key='selectedKeys')
    sort_order = related.ChildField(SortOrder, SortOrder.DESCENDING, key='sortOrder')
    theme = related.ChildField(BumpChartTheme, BumpChartTheme.DARK)
    use_ethiopian_dates = related.BooleanField(False, key='useEthiopianDates')
class TimeSeriesSettings:
    bucket_mean = related.BooleanField(False, key='bucketMean')
    bucket_type = related.ChildField(
        TimeSeriesBucket, TimeSeriesBucket.MONTH, key='bucketType'
    )
    log_scaling = related.BooleanField(False, key='logScaling')
    result_limit = related.IntegerField(5, key='resultLimit')
    sort_order = related.ChildField(SortOrder, SortOrder.DESCENDING, key='sortOrder')
    sort_on = related.StringField('', key='sortOn')
    use_ethiopian_dates = related.BooleanField(False, key='useEthiopianDates')
    show_data_labels = related.BooleanField(False, key='showDataLabels')
    rotate_labels = related.BooleanField(True, key='rotateLabels')
Exemple #27
0
class ModelTest(RelatedLoadSaveMixin):
    # predictions = related.
    expect = AnyField(default=None, required=False)
    precision_decimal = related.IntegerField(default=7, required=False)
    # Arrays should be almost equal to `precision_decimal` places
    # https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.testing.assert_almost_equal.html
    # abs(desired-actual) < 1.5 * 10**(-precision_decimal)

    def __attrs_post_init__(self):
        if self.expect is not None:
            if not isinstance(self.expect, str):
                # it has to be the url
                if not (isinstance(self.expect, dict) and "url" in self.expect):
                    raise ValueError("expect is not a file path, expecting a url field with entries: url and md5")
                self.expect = RemoteFile.from_config(self.expect)
class BarChartSettings:
    # NOTE(stephen): This is a mapping from field ID to True. That is difficult
    # to represent with `related` and we'd prefer having a set on both the
    # frontend and the backend. Fix this.
    disabled_fields = related.ChildField(dict, {}, key='disabledFields')
    result_limit = related.IntegerField(50, key='resultLimit')
    sort_order = related.ChildField(SortOrder, SortOrder.DESCENDING, key='sortOrder')
    sort_on = related.StringField('', key='sortOn')
    stack_bars = related.BooleanField(False, key='stackBars')
    y2_line_graph = related.BooleanField(False, key='y2LineGraph')
    x_tick_format = related.StringField('YYYY-MM-DD', key='xTickFormat')
    remove_bar_spacing = related.BooleanField(False, key='removeBarSpacing')
    rotate_x_axis_labels = related.BooleanField(True, key='rotateXAxisLabels')
    rotate_data_value_labels = related.BooleanField(True, key='rotateDataValueLabels')
    hide_grid_lines = related.BooleanField(False, key='hideGridLines')
    hide_data_value_zeros = related.BooleanField(False, key='hideDataValueZeros')
Exemple #29
0
class LayoutSize:
    id = related.StringField()
    rows = related.IntegerField()
    columns = related.IntegerField()
class ModiscoHParams(RelatedLoadSaveMixin):
    """Modisco hyper-parameters
    """
    # Modisco kwargs
    sliding_window_size = related.IntegerField(21, required=False)
    flank_size = related.IntegerField(10, required=False)  # old=5
    target_seqlet_fdr = related.FloatField(0.01, required=False)

    min_seqlets_per_task = related.IntegerField(
        1000, required=False)  # NOTE - this is not used as of modisco 0.5

    # Deprecated in modisco 0.5
    min_passing_windows_frac = related.FloatField(0.03, required=False)
    max_passing_windows_frac = related.FloatField(0.2, required=False)

    # metaclustering
    min_metacluster_size = related.IntegerField(2000, required=False)
    min_metacluster_size_frac = related.FloatField(0.02, required=False)

    # seqlets_to_patterns.TfModiscoSeqletsToPatternsFactory
    trim_to_window_size = related.IntegerField(
        30, required=False)  # default: 30, old=15
    initial_flank_to_add = related.IntegerField(
        10, required=False)  # default 10, old=5
    kmer_len = related.IntegerField(8, required=False)  # default 8, old=5
    num_gaps = related.IntegerField(3, required=False)  # default 3, old=1
    num_mismatches = related.IntegerField(2,
                                          required=False)  # default 2, old=0
    final_min_cluster_size = related.IntegerField(60, required=False)
    max_seqlets_per_metacluster = related.IntegerField(20000, required=False)

    # Other modisc-related kwargs

    # What's the maximum cosine distance between strands to
    # still consider the examples as representative?

    # TODO - update back
    # max_strand_distance = related.FloatField(0.2, required=False)

    # TODO - specify for which ones to run?

    # Original path to the file
    path = related.StringField(required=False)

    def get_modisco_kwargs(self):
        d = self.get_config()
        d.pop('counts', None)
        return d