scout-browser 4.100.2__py3-none-any.whl → 4.101.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ import operator
6
6
  import re
7
7
  from collections import OrderedDict
8
8
  from copy import deepcopy
9
- from typing import Any, Dict, List, Optional
9
+ from typing import Any, Dict, List, Optional, Tuple
10
10
 
11
11
  import pymongo
12
12
  from bson import ObjectId
@@ -928,21 +928,35 @@ class CaseHandler(object):
928
928
 
929
929
  self.load_omics_variants(case_obj=case_obj, build=build, file_type=omics_file)
930
930
 
931
- def _load_clinical_variants(self, case_obj: dict, build: str, update: bool = False):
932
- """Load variants in the order specified by CLINICAL_ORDERED_FILE_TYPE_MAP."""
931
+ def get_load_type_categories(self, case_obj: dict) -> List[Tuple[str, str]]:
932
+ """Return an (ordered) list of tuples pairing variant type and category for loading.
933
+
934
+ It is important for predictable variant collisions to retain the order specified in
935
+ the file type map CLINICAL_ORDERED_FILE_TYPE_MAP. Hence the set operation is made in parallel
936
+ with the list construction."""
937
+
933
938
  CLINICAL_ORDERED_FILE_TYPE_MAP = OrderedDict(
934
939
  (key, value)
935
940
  for key, value in ORDERED_FILE_TYPE_MAP.items()
936
941
  if value["variant_type"] != "research"
937
942
  )
938
- load_type_cat = set()
943
+
944
+ load_type_cat = []
945
+ cat_seen = set()
939
946
  for file_name, vcf_dict in CLINICAL_ORDERED_FILE_TYPE_MAP.items():
940
947
  if not case_obj["vcf_files"].get(file_name):
941
948
  LOG.debug("didn't find {}, skipping".format(file_name))
942
949
  continue
943
- load_type_cat.add((vcf_dict["variant_type"], vcf_dict["category"]))
950
+ pair = (vcf_dict["variant_type"], vcf_dict["category"])
951
+ if pair not in cat_seen:
952
+ cat_seen.add(pair)
953
+ load_type_cat.append(pair)
954
+ return load_type_cat
955
+
956
+ def _load_clinical_variants(self, case_obj: dict, build: str, update: bool = False):
957
+ """Load variants in the order specified by CLINICAL_ORDERED_FILE_TYPE_MAP."""
944
958
 
945
- for variant_type, category in load_type_cat:
959
+ for variant_type, category in self.get_load_type_categories(case_obj):
946
960
  if update:
947
961
  self.delete_variants(
948
962
  case_id=case_obj["_id"],
@@ -1,6 +1,6 @@
1
1
  from collections import OrderedDict
2
2
 
3
- # Variants in Scout will be loadedfor a case in the same order as these ordered dictionaries
3
+ # Variants in Scout will be loaded for a case in the same order as these ordered dictionaries
4
4
  ORDERED_FILE_TYPE_MAP = OrderedDict(
5
5
  [
6
6
  ("vcf_cancer", {"category": "cancer", "variant_type": "clinical"}),
@@ -627,7 +627,7 @@
627
627
  (included in ClinVar submission)
628
628
  {% elif variant.category in ('cancer', 'cancer_sv') %}
629
629
  <button data-bs-toggle='tooltip' data-bs-placement="bottom" title="Submission of somatic variants from Scout is temporarily suspended. We are working to harmonize submissions with changes introduced by ClinVar for this variant category." disabled >Add to ClinVar submission</button>
630
- {% else %}
630
+ {% elif variant.category in ('snv', 'sv') %}
631
631
  <button type="submit" name="var_id" value="{{variant._id}}" class="btn btn-secondary btn-sm" style="float: right;">Add to ClinVar submission</button>
632
632
  {% endif %}
633
633
  </form>
@@ -40,33 +40,27 @@ def _get_var_tx_hgvs(case_obj: dict, variant_obj: dict) -> List[Tuple[str, str]]
40
40
  transcripts = gene.get("transcripts", [])
41
41
 
42
42
  for tx in transcripts:
43
-
44
43
  refseq_id = tx.get("refseq_id")
45
44
  coding_seq_name = tx.get("coding_sequence_name")
46
45
  if not (refseq_id and coding_seq_name):
47
46
  continue # Skip transcripts missing required fields
48
47
 
49
- mane_select = tx.get("mane_select_transcript")
50
- mane_plus_clinical = tx.get("mane_plus_clinical_transcript")
51
-
52
- for refseq in tx.get("refseq_identifiers", []):
53
- refseq_version = fetch_refseq_version(refseq) # Adds version to a RefSeq ID
54
- hgvs_simple = f"{refseq_version}:{coding_seq_name}"
55
-
56
- refseq_is_mane_select = mane_select == refseq_version
57
- refseq_is_mane_plus_clinical = mane_plus_clinical == refseq_version
58
-
59
- # Transcript is validate only when conditions are met
60
- validated = (
61
- validate_hgvs(build, hgvs_simple)
62
- if (case_has_build_37 or refseq_is_mane_select or refseq_is_mane_plus_clinical)
63
- else ""
64
- )
65
-
66
- label = f"{hgvs_simple}{'_validated_' if validated else ''}{'_mane-select_' if refseq_is_mane_select else ''}{'_mane-plus-clinical_' if refseq_is_mane_plus_clinical else ''}"
67
-
48
+ if case_has_build_37:
49
+ for refseq in tx.get("refseq_identifiers", []):
50
+ refseq_version = fetch_refseq_version(refseq)
51
+ hgvs_simple = f"{refseq_version}:{coding_seq_name}"
52
+ validated = validate_hgvs(build, hgvs_simple)
53
+ label = f"{hgvs_simple}{'_validated_' if validated else ''}"
54
+ tx_hgvs_list.append((hgvs_simple, label))
55
+
56
+ else: # build 38, collect only MANE Select or MANE Plus Clinical
57
+ mane_select = tx.get("mane_select_transcript")
58
+ mane_plus_clinical = tx.get("mane_plus_clinical_transcript")
59
+ if mane_select is None and mane_plus_clinical is None:
60
+ continue
61
+ hgvs_simple = f"{mane_select or mane_plus_clinical}:{coding_seq_name}"
62
+ label = f"{hgvs_simple}{'_mane-select_' if mane_select else ''}{'_mane-plus-clinical_' if mane_plus_clinical else ''}"
68
63
  tx_hgvs_list.append((hgvs_simple, label))
69
-
70
64
  return tx_hgvs_list
71
65
 
72
66
 
@@ -154,8 +154,6 @@
154
154
  {% endfor %}
155
155
  </table>
156
156
 
157
- <span class="text-danger">HGVS validation is performed only for variants in build GRCh37 or MANE Select and MANE Plus Clinical transcripts. For any other available HGVS present in this list, manual validation can be performed using the VariantValidator link above.</span>
158
-
159
157
  <br><br>
160
158
  <!-- dbSNP identifier -->
161
159
  {{variant_data.var_form.variations_ids.label(class="fw-bold, text-dark")}}
@@ -94,13 +94,14 @@
94
94
  <span class="badge bg-primary">migrated</span>
95
95
  {% endif %}
96
96
  </td>
97
- <td class="d-flex justify-content-between align-items-center">
98
- {{ case.analysis_date.date() }}
99
- {% if case.rerun_requested %}
97
+ <td>
98
+ <div class="d-flex align-items-center justify-content-between">{{ case.analysis_date.date() }}
99
+ {% if case.rerun_requested %}
100
100
  <span class="badge bg-secondary">rerun pending</span>
101
- {% elif case.is_rerun %}
102
- <span class="badge bg-secondary">rerun</span>
103
- {% endif %}
101
+ {% elif case.is_rerun %}
102
+ <span class="badge bg-secondary">rerun</span>
103
+ {% endif %}
104
+ </div>
104
105
  </td>
105
106
  <td>
106
107
  {% if case.is_research %}
@@ -3,7 +3,16 @@ import datetime
3
3
  import json
4
4
  import logging
5
5
 
6
- from flask import Blueprint, Response, flash, redirect, render_template, request, send_file, url_for
6
+ from flask import (
7
+ Blueprint,
8
+ Response,
9
+ flash,
10
+ redirect,
11
+ render_template,
12
+ request,
13
+ send_file,
14
+ url_for,
15
+ )
7
16
  from flask_login import current_user
8
17
  from markupsafe import escape
9
18
 
@@ -96,7 +105,7 @@ def panels():
96
105
 
97
106
  panel_groups.append((institute_obj, institute_panels))
98
107
  return dict(
99
- panel_groups=panel_groups,
108
+ panel_groups=sorted(panel_groups, key=lambda x: x[0]["_id"]),
100
109
  panel_names=panel_names,
101
110
  panel_versions=panel_versions,
102
111
  institutes=institutes,
@@ -2,7 +2,7 @@
2
2
 
3
3
  {% from "variants/components.html" import allele_cell, external_scripts, external_stylesheets, gene_cell, frequency_cell_general, observed_cell_general, variant_funct_anno_cell %}
4
4
  {% from "variants/utils.html" import cancer_filters, cell_rank, pagination_footer, pagination_hidden_div, dismiss_variants_block, filter_form_footer, filter_script_main, update_stash_filter_button_status, callers_cell %}
5
- {% from "variants/indicators.html" import pin_indicator, causative_badge, clinical_assessments_badge, comments_badge, dismissals_badge, evaluations_badge, ccv_evaluations_badge, group_assessments_badge, matching_manual_rank, other_tiered_variants, research_assessments_badge %}
5
+ {% from "variants/indicators.html" import pin_indicator, causative_badge, clinical_assessments_badge, comments_badge, dismissals_badge, evaluations_badge, group_assessments_badge, matching_manual_rank, other_tiered_variants, research_assessments_badge %}
6
6
 
7
7
  {% block title %}
8
8
  {{ variant_type|capitalize }} somatic variants
@@ -101,7 +101,7 @@
101
101
  </a>
102
102
  </td>
103
103
  <td>
104
- {{ evaluations_badge(variant) }}
104
+ {{ evaluations_badge(variant.evaluations) }}
105
105
  {{ dismissals_badge(variant) }}
106
106
  {{ matching_manual_rank(variant) }}
107
107
  {{ research_assessments_badge(variant) }}
@@ -110,7 +110,7 @@
110
110
  {{ comments_badge(case, institute, variant) }}
111
111
  {{ causative_badge(variant, case) }}
112
112
  {{ other_tiered_variants(variant) }}
113
- {{ ccv_evaluations_badge(variant) }}
113
+ {{ evaluations_badge(variant.ccv_evaluations) }}
114
114
  </td>
115
115
  <td>{{ rank_cell(variant) }}</td>
116
116
  <td>{{ cadd_cell(variant) }}</td>
@@ -61,23 +61,26 @@
61
61
  {% endif %}
62
62
  {% endmacro %}
63
63
 
64
- {% macro evaluations_badge(variant) %}
65
- {% if variant.evaluations %}
66
- {% for evaluation in (variant.evaluations or []) %}
67
- <span class="badge bg-secondary" style="margin-left:1px" data-bs-toggle="tooltip" data-bs-placement="right"
68
- title="Previously classified as {{ evaluation.classification.label }}">
69
- {{ evaluation.classification.short }}
70
- </span>
64
+ {% macro evaluations_badge(evaluations) %}
65
+ {% if evaluations %}
66
+ {% set classification_counts = {} %}
67
+ {% for evaluation in evaluations %}
68
+ {% set c = evaluation.classification if evaluation.classification is defined else evaluation.ccv_classification %}
69
+ {% if c %}
70
+ {% set short = c.short %}
71
+ {% set label = c.label %}
72
+ {% set current = classification_counts.get(short, {'count': 0, 'label': label}) %}
73
+ {% set _ = classification_counts.update({short: {
74
+ 'count': current.count + 1,
75
+ 'label': label
76
+ }}) %}
77
+ {% endif %}
71
78
  {% endfor %}
72
- {% endif %}
73
- {% endmacro %}
74
79
 
75
- {% macro ccv_evaluations_badge(variant) %}
76
- {% if variant.ccv_evaluations %}
77
- {% for evaluation in (variant.ccv_evaluations or []) %}
78
- <span class="badge bg-secondary" style="margin-left:1px" data-bs-toggle="tooltip" data-bs-placement="right"
79
- title="Previously classified as {{ evaluation.ccv_classification.label }}">
80
- {{ evaluation.ccv_classification.short }}
80
+ {% for short, data in classification_counts.items() | sort(attribute='1.count', reverse=true) %}
81
+ <span class="badge bg-secondary ms-1" data-bs-toggle="tooltip" data-bs-placement="right"
82
+ title="Previously classified as {{ data.label }} ({{ data.count }} times)">
83
+ {{ short }} ×{{ data.count }}
81
84
  </span>
82
85
  {% endfor %}
83
86
  {% endif %}
@@ -1118,7 +1118,7 @@
1118
1118
 
1119
1119
  {{ variant.variant_rank }}</a>&nbsp;
1120
1120
 
1121
- {{ evaluations_badge(variant) }}
1121
+ {{ evaluations_badge(variant.evaluations) }}
1122
1122
  {{ research_assessments_badge(variant) }}
1123
1123
  {{ clinical_assessments_badge(variant) }}
1124
1124
  {{ group_assessments_badge(variant) }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scout-browser
3
- Version: 4.100.2
3
+ Version: 4.101.0
4
4
  Summary: Clinical DNA variant visualizer and browser
5
5
  Project-URL: Repository, https://github.com/Clinical-Genomics/scout
6
6
  Project-URL: Changelog, https://github.com/Clinical-Genomics/scout/blob/main/CHANGELOG.md
@@ -4,7 +4,7 @@ scout/adapter/client.py,sha256=IuajRsEwTG41ZP14X09Q1Cj94zIgmIvUtlXfcAFn0EA,1513
4
4
  scout/adapter/mongo/__init__.py,sha256=NdHYCUXWUAuX5cUS3-6HCws2hW9uoGep8i0SC-oJd3k,31
5
5
  scout/adapter/mongo/acmg.py,sha256=v2Zuw-6APVmcnBnNXa18WJEu2vj5GUhZNiKMkruJsBI,4170
6
6
  scout/adapter/mongo/base.py,sha256=iIa2AjGNztKHcZzolY0T6r7Oh0guj6R1putztp4OTNY,4427
7
- scout/adapter/mongo/case.py,sha256=BImiGlUE7pRuXY-CUg5CENuSfM3TVJxNgvQSAJQ1-KY,66015
7
+ scout/adapter/mongo/case.py,sha256=Cqb_uWbW5gnAoOMoJVK9LYeCrJEE-M3fgI97-3t6gbc,66613
8
8
  scout/adapter/mongo/case_events.py,sha256=slHR4XJF9vRuEbuInJKMMAImLF8m7tHWVfGP42fbXr0,26859
9
9
  scout/adapter/mongo/case_group.py,sha256=tG8DuO0rNYepV4k0yCGPqssODErc0HMsAypg3mfhcV0,1575
10
10
  scout/adapter/mongo/ccv.py,sha256=VIz-Yqzm-1UVPDKvZkBllO4BOKXzvKCXcQUjTtZCHTI,4165
@@ -132,7 +132,7 @@ scout/constants/ccv.py,sha256=YP82qWCrjv3JB8d2LkUdBlBZolk0uF3nhNmkNgmebiI,9734
132
132
  scout/constants/clinvar.py,sha256=nr7KhwMIO_7taNQokRJlpgZfenMlKsdPIMpdOx3TwKY,5594
133
133
  scout/constants/clnsig.py,sha256=anWIOuj_qLcDl4UsRQ50W6qlv7UaHTUbSdHOkAzL0No,1594
134
134
  scout/constants/disease_parsing.py,sha256=M9_OgsN88oXwKH_XpxdDma0zuWPRoHFQjL19tzojBPo,686
135
- scout/constants/file_types.py,sha256=9nHBnknssjdQnHm8jA8MoWAJq1shS4h5apyC9zwGCc0,2890
135
+ scout/constants/file_types.py,sha256=3N3TReXVkhxbpvYupsENVFAHEGQyZ1S7efP7wZEqs44,2890
136
136
  scout/constants/filters.py,sha256=ZgVGt6No5D7PiN1o1wWDm3E5SCRk7YLya87_4QtIMPs,979
137
137
  scout/constants/gene_tags.py,sha256=yBrMu9qXyYaQ13l3XMakooyd2ZtPXm1XgpSSH_bC-5U,4513
138
138
  scout/constants/igv_tracks.py,sha256=584SdO6qJHAcfCxHJQaM4YAnzu4M_uviJIUg6gt_jok,4675
@@ -483,15 +483,15 @@ scout/server/blueprints/cases/templates/cases/individuals_table.html,sha256=KMWl
483
483
  scout/server/blueprints/cases/templates/cases/institutes_sidebar.html,sha256=u0oPGHJ0ipZ1LkjHkbwlWfkUWc1h6XH1nh3tkbX17z0,4546
484
484
  scout/server/blueprints/cases/templates/cases/matchmaker.html,sha256=kPYnmcZJ1gmx_guW52H7baT9Sw4WE0VJmLGF6N7Z3iA,13639
485
485
  scout/server/blueprints/cases/templates/cases/phenotype.html,sha256=7vz5XPUExD6vc-wdijLKnPzaOFm9mQxOZ_ITAL3y7U8,16420
486
- scout/server/blueprints/cases/templates/cases/utils.html,sha256=gRzonXZN9KJbMH0nHnTqM0fLPBjc7D1R2zErG7olKkk,36939
486
+ scout/server/blueprints/cases/templates/cases/utils.html,sha256=Jpt5uwH7IHisdd1DvxjGodFaZ9e1g3JlANpkkQ3P6kA,36973
487
487
  scout/server/blueprints/clinvar/__init__.py,sha256=BV3aH2AbiA2WWrUEMbGd0H9MefFd2eTsRE9ShywbzpI,30
488
- scout/server/blueprints/clinvar/controllers.py,sha256=0glbortB-V8PD2r4ZZ8ODyT9SmUmkvWqFioPh112NBg,24991
488
+ scout/server/blueprints/clinvar/controllers.py,sha256=cqThe0iM7ltT_uF3S0bj6642DrOW5OJiWAUM-w5lShk,24972
489
489
  scout/server/blueprints/clinvar/form.py,sha256=2h42YJzaOtsdEglxqt7F1i2ncjSU_IHNt-m4QOJytK4,5148
490
490
  scout/server/blueprints/clinvar/views.py,sha256=p4R31xEBqvyw9bbwrB_rRe4UqIDc3HPTvhiVhZ1Z_lA,5760
491
491
  scout/server/blueprints/clinvar/static/form_style.css,sha256=Tro2w0Su9st2ZRpt8PjF7qXYet-0n6Eyol4oh94JafU,4073
492
492
  scout/server/blueprints/clinvar/templates/clinvar/clinvar_howto.html,sha256=phFsRl6Hv94sy4GueBN0MXYbQsW6qmR1NoH-3Iwt2zs,4852
493
493
  scout/server/blueprints/clinvar/templates/clinvar/clinvar_submissions.html,sha256=XvS6WR7xPy3KNB9q9sWzAsXf2QAjkxGeMaJlx6BkeVE,18694
494
- scout/server/blueprints/clinvar/templates/clinvar/multistep_add_variant.html,sha256=HQgc2YZskhhWU-v85yWcdCNSYv875Lyph5jGQE5WkdI,33246
494
+ scout/server/blueprints/clinvar/templates/clinvar/multistep_add_variant.html,sha256=ilDxkFUUDMy6Qzcby2BKJ21zmpI1HYI1ZC4HmrGYLpk,32953
495
495
  scout/server/blueprints/dashboard/__init__.py,sha256=9YTjGeFexyEbl4P-gs7j8VEjyhnVwHZFfz57eTtod1M,69
496
496
  scout/server/blueprints/dashboard/controllers.py,sha256=x6EWKROskF4iyZ5_hAgL7CWp1X3CXHp-7v0JVsDHKZU,9612
497
497
  scout/server/blueprints/dashboard/forms.py,sha256=vbdkujKZxVjiZw2inNhysN3yYMPCdMPbqvKV88DamwI,501
@@ -518,7 +518,7 @@ scout/server/blueprints/institutes/static/form_scripts.js,sha256=8Sn7omeXeeUbiXJ
518
518
  scout/server/blueprints/institutes/static/select2_darktheme.css,sha256=Nq_va597W_e5y-52B4ClwSJzACq0WFbPU8SIp3DtKIo,1818
519
519
  scout/server/blueprints/institutes/static/timeline_styles.css,sha256=Vq48ffIidpQmDQhAzfW47O9mGQZEWdlbMtOE8AK-ZEU,2122
520
520
  scout/server/blueprints/institutes/static/variants_list_scripts.js,sha256=R4rqoCXzVs9RLqXLK851n0mFgN4xytHxSCaRm0egk5M,377
521
- scout/server/blueprints/institutes/templates/overview/cases.html,sha256=GOt1Y2PZLVigL3wqi5NAJFqIjQHgaocrbJzFcCUzOfY,12900
521
+ scout/server/blueprints/institutes/templates/overview/cases.html,sha256=R6pzv4EVqe6x69tP94ROITy_I-zi96ITCblMRjtUs70,12926
522
522
  scout/server/blueprints/institutes/templates/overview/causatives.html,sha256=192pgqUSXQF4qhC933qsYtTwvmlqDctxwHcArERkHc8,1619
523
523
  scout/server/blueprints/institutes/templates/overview/filters.html,sha256=SXvimbFNKfhoh8lpSfnMCTLMb4QghZRxT6W5PteGj68,3519
524
524
  scout/server/blueprints/institutes/templates/overview/gene_variants.html,sha256=EyhBZEdMZQBaJWR_FDeabuWXRSd4Xcqh0teaxVyNvAE,8442
@@ -557,7 +557,7 @@ scout/server/blueprints/omics_variants/templates/omics_variants/outliers.html,sh
557
557
  scout/server/blueprints/panels/__init__.py,sha256=usxBF0O7zNX1d9jt-8DRoFZwcfHHS96Gv87LDr1AgG4,53
558
558
  scout/server/blueprints/panels/controllers.py,sha256=_LXiayDyGcyRQ3Hw13fD8zVYFQ1jIIXUMQ49WsimrZ8,12618
559
559
  scout/server/blueprints/panels/forms.py,sha256=DYlhYpnpv7ehf9JlY3HRFwy-TZ5QDHB0RIRaNTAW1jQ,696
560
- scout/server/blueprints/panels/views.py,sha256=NN7jRPLK0mbdR0ERh7DgDHdqM4jAHeghG5O4P3II_ew,15772
560
+ scout/server/blueprints/panels/views.py,sha256=DUnrUWIIxqe6bOpSN1G_6dSysPpIRGq3jJDSF4FfKkA,15844
561
561
  scout/server/blueprints/panels/templates/panels/gene-edit.html,sha256=KqdUdu93707upLxh31Bwxgd1w4kH-WHtVilSNmAqiRo,3627
562
562
  scout/server/blueprints/panels/templates/panels/panel.html,sha256=t7OE23uwlSyE4puT0OFWm9xPirnVvSsuIQ23E0MLbI0,17113
563
563
  scout/server/blueprints/panels/templates/panels/panel_pdf_case_hits.html,sha256=uzfZJiMNQiTa_6u4uMuIbK3VXIs-8Rw-MjKujFttZG8,3438
@@ -636,14 +636,14 @@ scout/server/blueprints/variants/utils.py,sha256=ifFBoyigx0A5KPE4iz9NSpyuUeF1bEl
636
636
  scout/server/blueprints/variants/views.py,sha256=0HI1SsL6gMP2-XSxq232cw6ECT13LVpdfxkI6QyRthk,28642
637
637
  scout/server/blueprints/variants/static/form_scripts.js,sha256=o3GCboaesA9Sm1HgejS_yQwt0I-NTkvcl56jiBdLqZs,8319
638
638
  scout/server/blueprints/variants/templates/variants/cancer-sv-variants.html,sha256=QlGmUEdUQ7gCq7tMMUFAlGqqC9jFB78Q0h6tSp3QUas,7271
639
- scout/server/blueprints/variants/templates/variants/cancer-variants.html,sha256=nqJ1q23arq4yJokMJpsyf8-ayzZkD2zgwH7j-Y9bpfE,9688
639
+ scout/server/blueprints/variants/templates/variants/cancer-variants.html,sha256=iEL4InO43JGwZP0QDC5VA-4LcZtIadm8d1FFI8mFb-M,9689
640
640
  scout/server/blueprints/variants/templates/variants/components.html,sha256=Oa3MU0DokDDeTx8eD_EQXop5UmjTFHv7SdZUlpCBl04,19150
641
641
  scout/server/blueprints/variants/templates/variants/fusion-variants.html,sha256=XGaLgWobzeFHwyQLXr_Yq9THssf8tGU91VbFKdGOFBg,4801
642
- scout/server/blueprints/variants/templates/variants/indicators.html,sha256=C16ND9Mh_a1-uKMQup2Fp44XXVK_IrCyEuswpaVyOrQ,4955
642
+ scout/server/blueprints/variants/templates/variants/indicators.html,sha256=5IPiNgEB_JmYpvD6_Mpx9wd1gmKpsVnTm-HKfuBsKXg,5081
643
643
  scout/server/blueprints/variants/templates/variants/mei-variants.html,sha256=E5nkN7I5PtfizYKf3wuhm0xLf4rdgvDmC6EI2x1WQZA,6093
644
644
  scout/server/blueprints/variants/templates/variants/str-variants.html,sha256=n424D8xV76bCKDSFzzIsWfFAoU2dAYE-PPZyTtQeMdM,10924
645
645
  scout/server/blueprints/variants/templates/variants/sv-variants.html,sha256=-0eLlk1txdnPB5Y69sVxhL9ji9FDuUM8pXjMkR8jdGI,6703
646
- scout/server/blueprints/variants/templates/variants/utils.html,sha256=eFC4UEXHXoi38NORF6PeNUe5XNeVk3mZt3WjZxNeq64,52907
646
+ scout/server/blueprints/variants/templates/variants/utils.html,sha256=g6nvYsYwhlXP7ubT1mEX0zU9cAXIZ8KJWHvTFzMCxNI,52919
647
647
  scout/server/blueprints/variants/templates/variants/variants.html,sha256=oqJdyiIVwhZKnOGDfx07dPlRduIUvN5r0JmmK4hYExQ,8450
648
648
  scout/server/extensions/__init__.py,sha256=s6qkGSFNRi_tP7yoeoXB5UarvLHidaK1Yw2Pae7Py90,1366
649
649
  scout/server/extensions/beacon_extension.py,sha256=W2dHjTWbWXLnQN3dCOzXlGX8VxSYejT_UUlEF-elh14,9901
@@ -689,8 +689,8 @@ scout/utils/link.py,sha256=HpQvwu0hmuCrs7TcAExLmOzEGr3glWuu8iaW0ao5pEA,9011
689
689
  scout/utils/md5.py,sha256=KkgdxOf7xbF9AF40ZjQKCgWaxFWJ9tp9RKjd8SU6IoA,649
690
690
  scout/utils/scout_requests.py,sha256=6R8boknrfwlmrRQ2txD81lfVtqUK_iabywEiVyIiZfQ,12685
691
691
  scout/utils/track_resources.py,sha256=eUjSEe-Ff8BIb4BHPC_COkJocQO2PaWueiPz1GAuiwY,2614
692
- scout_browser-4.100.2.dist-info/METADATA,sha256=qGMFBPoqQt41iJrccx67tbPgxZW7kSCO5VtU4r0WeQ0,15527
693
- scout_browser-4.100.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
694
- scout_browser-4.100.2.dist-info/entry_points.txt,sha256=q_mxFwbMFTwXRDDIRVcqKram2ubMVmvs3CSNvZri1nY,45
695
- scout_browser-4.100.2.dist-info/licenses/LICENSE,sha256=TM1Y9Cqbwk55JVfxD-_bpGLtZQAeN9RovQlqHK6eOTY,1485
696
- scout_browser-4.100.2.dist-info/RECORD,,
692
+ scout_browser-4.101.0.dist-info/METADATA,sha256=Mk2AmmUzaWO6IslzOG_LTXNcBp8qK6l3O7CQO_23fHw,15527
693
+ scout_browser-4.101.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
694
+ scout_browser-4.101.0.dist-info/entry_points.txt,sha256=q_mxFwbMFTwXRDDIRVcqKram2ubMVmvs3CSNvZri1nY,45
695
+ scout_browser-4.101.0.dist-info/licenses/LICENSE,sha256=TM1Y9Cqbwk55JVfxD-_bpGLtZQAeN9RovQlqHK6eOTY,1485
696
+ scout_browser-4.101.0.dist-info/RECORD,,