boris-behav-obs 9.7.1__py3-none-any.whl → 9.7.12__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.
@@ -425,6 +425,9 @@ def check_project_integrity(
425
425
  r = check_coded_behaviors(pj)
426
426
  if r:
427
427
  out += f"The following behaviors are not defined in the ethogram: <b>{', '.join(r)}</b><br>"
428
+ flag_all_behaviors_defined = False
429
+ else:
430
+ flag_all_behaviors_defined = True
428
431
 
429
432
  # check for unpaired state events
430
433
  for obs_id in pj[cfg.OBSERVATIONS]:
@@ -577,26 +580,27 @@ def check_project_integrity(
577
580
  obs_results: dict = {}
578
581
  for obs_id in pj[cfg.OBSERVATIONS]:
579
582
  for event_idx, event in enumerate(pj[cfg.OBSERVATIONS][obs_id][cfg.EVENTS]):
580
- # event[2]
581
583
  for idx in pj[cfg.ETHOGRAM]:
582
- if pj[cfg.ETHOGRAM][idx]["code"] == event[2]:
584
+ if pj[cfg.ETHOGRAM][idx][cfg.BEHAVIOR_CODE] == event[cfg.EVENT_BEHAVIOR_FIELD_IDX]:
583
585
  break
584
586
  else:
585
- raise
586
- if (not event[3]) and not pj[cfg.ETHOGRAM][idx][cfg.MODIFIERS]:
587
+ # behavior not defined in ethogram
588
+ continue
589
+
590
+ if (not event[cfg.EVENT_MODIFIER_FIELD_IDX]) and not pj[cfg.ETHOGRAM][idx][cfg.MODIFIERS]: # no modifiers
587
591
  continue
588
592
 
589
- if len(event[3].split("|")) != len(pj[cfg.ETHOGRAM][idx][cfg.MODIFIERS]):
590
- print("behavior", event[2])
591
- print(f"modifier(s) #{event[3]}#", len(event[3].split("|")))
592
- print(pj[cfg.ETHOGRAM][idx]["code"], pj[cfg.ETHOGRAM][idx][cfg.MODIFIERS])
593
- print()
593
+ if len(event[cfg.EVENT_MODIFIER_FIELD_IDX].split("|")) != len(pj[cfg.ETHOGRAM][idx][cfg.MODIFIERS]):
594
+ # print("behavior", event[cfg.EVENT_BEHAVIOR_FIELD_IDX])
595
+ # print(f"modifier(s) #{event[cfg.EVENT_MODIFIER_FIELD_IDX]}#", len(event[cfg.EVENT_MODIFIER_FIELD_IDX].split("|")))
596
+ # print(pj[cfg.ETHOGRAM][idx]["code"], pj[cfg.ETHOGRAM][idx][cfg.MODIFIERS])
597
+ # print()
594
598
  if obs_id not in obs_results:
595
599
  obs_results[obs_id] = []
596
600
 
597
601
  obs_results[obs_id].append(
598
602
  (
599
- f"Event #{event_idx}: the coded modifiers for {event[2]} are {len(event[3].split('|'))} "
603
+ f"Event #{event_idx}: the coded modifiers for {event[cfg.EVENT_BEHAVIOR_FIELD_IDX]} are {len(event[cfg.EVENT_MODIFIER_FIELD_IDX].split('|'))} "
600
604
  f"but {len(pj[cfg.ETHOGRAM][idx][cfg.MODIFIERS])} sets were defined in ethogram."
601
605
  )
602
606
  )
@@ -1425,6 +1429,7 @@ def open_project_json(project_file_name: str) -> tuple:
1425
1429
  pj[cfg.OBSERVATIONS][obs][cfg.TYPE] = cfg.MEDIA
1426
1430
 
1427
1431
  # convert old media list in new one
1432
+ d1: dict = {}
1428
1433
  if len(pj[cfg.OBSERVATIONS][obs][cfg.FILE]):
1429
1434
  d1 = {cfg.PLAYER1: [pj[cfg.OBSERVATIONS][obs][cfg.FILE][0]]}
1430
1435
 
@@ -1470,6 +1475,17 @@ def open_project_json(project_file_name: str) -> tuple:
1470
1475
  pj[cfg.PROJECT_VERSION] = cfg.project_format_version
1471
1476
  projectChanged = True
1472
1477
 
1478
+ # check if behavioral categories are stored as a list
1479
+ if cfg.BEHAVIORAL_CATEGORIES_CONF in pj:
1480
+ if isinstance(pj[cfg.BEHAVIORAL_CATEGORIES_CONF], list):
1481
+ # convert to dict
1482
+ pj[cfg.BEHAVIORAL_CATEGORIES_CONF] = {str(idx): {"name": bc} for idx, bc in enumerate(pj[cfg.BEHAVIORAL_CATEGORIES_CONF])}
1483
+ logging.info("Behavioral categories was converted from a list to a dictionary")
1484
+ projectChanged = True
1485
+ else:
1486
+ pj[cfg.BEHAVIORAL_CATEGORIES_CONF] = dict()
1487
+ projectChanged = True
1488
+
1473
1489
  # add category key if not found
1474
1490
  for idx in pj[cfg.ETHOGRAM]:
1475
1491
  if cfg.BEHAVIOR_CATEGORY not in pj[cfg.ETHOGRAM][idx]:
boris/subjects_pad.py CHANGED
@@ -27,7 +27,7 @@ from . import utilities as util
27
27
 
28
28
 
29
29
  class SubjectsPad(QWidget):
30
- clickSignal = Signal(str)
30
+ click_signal = Signal(str)
31
31
  sendEventSignal = Signal(QEvent)
32
32
  close_signal = Signal(QRect)
33
33
 
@@ -77,7 +77,7 @@ class SubjectsPad(QWidget):
77
77
  widget.pushButton.clicked.connect(lambda: self.click(subject))
78
78
 
79
79
  def click(self, subject):
80
- self.clickSignal.emit(subject)
80
+ self.click_signal.emit(subject)
81
81
 
82
82
  def eventFilter(self, receiver, event):
83
83
  """
boris/utilities.py CHANGED
@@ -126,6 +126,15 @@ if (sys.platform.startswith("win") or sys.platform.startswith("linux")) and ("-i
126
126
  sys.exit(5)
127
127
 
128
128
 
129
+ def is_subdir(a: Path, b: Path) -> bool:
130
+ """
131
+ Return True if directory A is inside directory B.
132
+ """
133
+ a = a.resolve()
134
+ b = b.resolve()
135
+ return a.is_relative_to(b)
136
+
137
+
129
138
  def test_mpv_ipc(socket_path: str = cfg.MPV_SOCKET) -> bool:
130
139
  """
131
140
  test if socket available
@@ -471,20 +480,37 @@ def txt2np_array(
471
480
  conv_name = column_converter[column_idx]
472
481
 
473
482
  function = f"""def {conv_name}(INPUT):\n"""
474
- function += """ INPUT = INPUT.decode("utf-8") if isinstance(INPUT, bytes) else INPUT"""
483
+ function += """ INPUT = INPUT.decode("utf-8") if isinstance(INPUT, bytes) else INPUT\n\n"""
475
484
  for line in converters[conv_name]["code"].split("\n"):
476
485
  function += f" {line}\n"
477
486
  function += """ return OUTPUT"""
478
487
 
488
+ print("=============")
489
+ print(function)
490
+ print("=============")
491
+
492
+ import types
493
+
494
+ mod = types.ModuleType("converter_module")
495
+ exec(function, mod.__dict__)
496
+
497
+ """
479
498
  try:
480
499
  exec(function)
481
500
  except Exception:
482
501
  return False, f"error in converter: {sys.exc_info()[1]}", np.array([])
483
502
 
484
- np_converters[column_idx - 1] = locals()[conv_name]
503
+ print(f"{converters=}")
504
+ print(f"{column_converter=}")
505
+ print(locals())
506
+ print(f"{conv_name=}")
507
+ """
508
+
509
+ # np_converters[column_idx - 1] = locals()['conv_name']
510
+ np_converters[column_idx - 1] = getattr(mod, conv_name)
485
511
 
486
512
  else:
487
- return False, f"converter {cfg.converters_param[column_idx]} not found", np.array([])
513
+ return False, f"converter {column_converter[column_idx]} not found", np.array([])
488
514
 
489
515
  # snif txt file
490
516
  try:
@@ -1189,7 +1215,7 @@ def time2seconds(time_: str) -> dec:
1189
1215
  return dec("0.000")
1190
1216
 
1191
1217
 
1192
- def seconds2time(sec: dec) -> str:
1218
+ def seconds2time(sec: dec | None) -> str:
1193
1219
  """
1194
1220
  convert seconds to hh:mm:ss.sss format
1195
1221
 
@@ -1198,6 +1224,8 @@ def seconds2time(sec: dec) -> str:
1198
1224
  Returns:
1199
1225
  str: time in format hh:mm:ss
1200
1226
  """
1227
+ if sec is None:
1228
+ return cfg.NA
1201
1229
 
1202
1230
  if math.isnan(sec):
1203
1231
  return cfg.NA
boris/version.py CHANGED
@@ -20,5 +20,5 @@ This file is part of BORIS.
20
20
 
21
21
  """
22
22
 
23
- __version__ = "9.7.1"
24
- __version_date__ = "2025-10-22"
23
+ __version__ = "9.7.12"
24
+ __version_date__ = "2025-12-05"
boris/video_operations.py CHANGED
@@ -231,7 +231,15 @@ def display_zoom_level(self) -> None:
231
231
  """
232
232
  msg: str = "Zoom level: <b>"
233
233
  for player in self.dw_player:
234
- msg += f"{2**player.player.video_zoom:.1f} "
234
+ vz = player.player.video_zoom
235
+ if vz is None:
236
+ self.lb_zoom_level.setText("-")
237
+ return
238
+ player_video_zoom = player.player.video_zoom
239
+ if player_video_zoom is not None:
240
+ msg += f"{2**player_video_zoom:.1f} "
241
+ else:
242
+ msg += "NA "
235
243
  msg += "</b>"
236
244
  self.lb_zoom_level.setText(msg)
237
245
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boris-behav-obs
3
- Version: 9.7.1
3
+ Version: 9.7.12
4
4
  Summary: BORIS - Behavioral Observation Research Interactive Software
5
5
  Author-email: Olivier Friard <olivier.friard@unito.it>
6
6
  License-Expression: GPL-3.0-only
@@ -44,15 +44,14 @@ BORIS (Behavioral Observation Research Interactive Software)
44
44
 
45
45
  BORIS is an easy-to-use event logging software for video/audio coding or live observations.
46
46
 
47
- BORIS is a free and open-source software available for GNU/Linux and Windows.
48
- You can not longer run BORIS natively on MacOS (since v.8). Some alternatives to run the last version of BORIS are available, see [BORIS on MacOS](https://www.boris.unito.it/download_mac).
47
+ BORIS is a free and open-source software available for GNU/Linux, Windows and macOS.
49
48
 
50
49
  It provides also some analysis tools like time budget and some plotting functions.
51
50
 
52
51
  <!-- The BO-RIS paper has more than [![BORIS citations counter](https://penelope.unito.it/friard/boris_scopus_citations.png) citations](https://www.boris.unito.it/citations) in peer-reviewed scientific publications. -->
53
52
 
54
53
 
55
- The BORIS paper has more than 2407 citations in peer-reviewed scientific publications.
54
+ The BORIS paper has more than 2472 citations in peer-reviewed scientific publications.
56
55
 
57
56
 
58
57
 
@@ -1,22 +1,22 @@
1
1
  boris/__init__.py,sha256=iAtmVMy22TJpMmxVTMSK_6-wXnCbx1ogvWgfYEcbHzU,773
2
2
  boris/__main__.py,sha256=ANjTbXgXDoz2nB1tCtOIllfIVotCa602iebACX7rXaE,764
3
- boris/about.py,sha256=VPa8zeu0bMb1LRXDq8uUSG_7mSbkb2HTk1AtWbzWQwE,5366
3
+ boris/about.py,sha256=RrK4fUbMUpyMWPZVmFYG91pVx_orvaLPw-OBWI_NcOg,5401
4
4
  boris/add_modifier.py,sha256=l9LSa_9FAV9CnBgm26tJqhMAdnFoBQafZLyt9pTKmac,26240
5
- boris/add_modifier_ui.py,sha256=Y7TLO5uS6zW7zpjXmjA4V_VIp_bFDNtjOTbJ9Q6m-mQ,11601
5
+ boris/add_modifier_ui.py,sha256=5PbyQKCrMhLXYkOqOvqis1E_oCYQI_994-uofIIIb0k,12366
6
6
  boris/advanced_event_filtering.py,sha256=VlvU12mL6xYacZOvJAi5uLpHMcmAw5Pvuvmka-PN29c,15469
7
- boris/behav_coding_map_creator.py,sha256=5XGY4AZOsGrOj0xHT-dIeiR5ejBhPShsnYNfIQFEYsU,38788
7
+ boris/behav_coding_map_creator.py,sha256=rU8uh-St2gSBsx194KwvFddkrOPBN-lUio36NcFOsoI,38797
8
8
  boris/behavior_binary_table.py,sha256=bpmRDpEjq0rw3YOCoN_He3kfUe8A_R6E48kQR7KnkH8,12453
9
9
  boris/behaviors_coding_map.py,sha256=xIGJxp2eghrpiGDmYH73eJPERuyc4A_54uT-Got3zTs,7302
10
10
  boris/boris_cli.py,sha256=Bc51DEMcD79ZZfM9pCzpaWU6iT6b8gNwR3n8fr42_4E,13193
11
11
  boris/cmd_arguments.py,sha256=85zDEIW6UiXRb0TQWDxR664pQQtG5J-7Ipv91y3JixQ,2065
12
- boris/coding_pad.py,sha256=BaDWYIzoRgl0LHymPDmcBMFfwG7Z0XROqqMwkkADtz0,10940
13
- boris/config.py,sha256=QOPwbfxs6g0yvYtS5pQCzaap_YG-_xXQH2E-F3ZXO4M,17848
14
- boris/config_file.py,sha256=5_AB_VE5j3iHkanL5xELN42HJJMLOh40qSgBFs7fCXo,13493
12
+ boris/coding_pad.py,sha256=DjUkuTfqzajll3KoOguGWV4WClOs9IDYYa6wUiGOiCU,10978
13
+ boris/config.py,sha256=bnLFkmarRH4FKX1n0oE79OGz6QqyXvVMHt73rzMHuzE,18058
14
+ boris/config_file.py,sha256=4jBGMaVzjoVKSeOBEHXVjbsyubN08ghQTsrm4s7Kqsw,13551
15
15
  boris/connections.py,sha256=KsC17LnS4tRM6O3Nu3mD1H9kQ7uYhhad9229jXfGF94,19774
16
16
  boris/converters.py,sha256=n6gDM9x2hS-ZOoHLruiifuXxnC7ERsUukiFokhHZPoQ,11678
17
17
  boris/converters_ui.py,sha256=uu7LOBV_fKv2DBdOqsqPwjGsjgONr5ODBoscAA-EP48,9900
18
18
  boris/cooccurence.py,sha256=tVERC-V8MWjWHlGEfDuu08iS94qjt4do-38jwI62QaY,10367
19
- boris/core.py,sha256=jvWMOPszPONYn2bMp2sV0nGpszbKPVZ1NYQ5PsU3msw,232311
19
+ boris/core.py,sha256=Mxlp6Wxl4fNDH9JR4LnMhzgI64xK6lzqZlvdkH8meM4,234577
20
20
  boris/core_qrc.py,sha256=Hz51Xw70ZIlDbYB281nfGtCm43_ItYhamMu2T5X8Tu8,639882
21
21
  boris/core_ui.py,sha256=uDAI9mbadBe2mSsgugzNfRHxASc6Mu5kUf5tB9CZCjY,77445
22
22
  boris/db_functions.py,sha256=TfCJ0Hq0pTFOKrZz3RzdvnR-NKCmrPHU2qL9BSXeeGQ,13379
@@ -36,34 +36,34 @@ boris/geometric_measurement.py,sha256=4pI-AYpBSFlJBqS-f8dnkgLtj_Z2E5kwwAdh6WwZ4k
36
36
  boris/gui_utilities.py,sha256=Kv75XgFmicPUKvdRPj_yBYoDNc912cfl1IQrgw5T2kI,5458
37
37
  boris/image_overlay.py,sha256=zZAL8MTt2i2s58CuX81Nym3rJ5pKiTeP4AO8WbIUonM,2527
38
38
  boris/import_observations.py,sha256=zKrkpk1ADxTj2BECactPPOhU6wtrh3TjtOWue2HCT5w,9074
39
- boris/ipc_mpv.py,sha256=12x1Nthp4nsYsS39fbZK9B0Jl4hCrlS2wszg680wduQ,9222
39
+ boris/ipc_mpv.py,sha256=bnc-xjp9CbyqO4uEcAxMgxyJdG3-6SJUd_gNI_sILns,9925
40
40
  boris/irr.py,sha256=n6Y_Y9iEKOf9_7EE_lDRNei7tq2wkFKk_JVflm9UQdk,22335
41
41
  boris/latency.py,sha256=48z9L_A582-wKCfD0M3h0uyYkeL2ezjlQAS_GzeoOe0,9739
42
42
  boris/measurement_widget.py,sha256=lZV62KtK6TjdoNbKxj3uyNAuL5dfnQnn7mYwzMo-dOM,4480
43
43
  boris/media_file.py,sha256=Wnw-PCyAz6CA00zhjrx0UTgXZ0wmHuNlnElV_TzJ_2M,4818
44
44
  boris/menu_options.py,sha256=uznHFMtpGRWL6Eig10gJ5tOiypgOr9XVyxRiuCbgN9U,7146
45
- boris/modifier_coding_map_creator.py,sha256=3Ihh75TCNI0KkQKHuosYibAhGbdgjdlRZGmna_KuAjo,33240
45
+ boris/modifier_coding_map_creator.py,sha256=RGlo140HQLlh4we_G7RyXYRXJOTUskPF1Bin1dnE6_c,33243
46
46
  boris/modifiers_coding_map.py,sha256=oT56ZY_PXhEJsMoblEsyNMAPbDpv7ZMOCnvmt7Ibx_Y,4554
47
47
  boris/mpv.py,sha256=EfzIHjPbgewG4w3smEtqEUPZoVwYmMQkL4Q8ZyW-a58,76410
48
48
  boris/mpv2.py,sha256=IUI4t4r9GYX7G5OXTjd3RhMMOkDdfal_15buBgksLsk,92152
49
- boris/observation.py,sha256=10UkVyY8TDySntIX_-H-IsuFdiF6tEcmC6JQUzD6wYg,57139
50
- boris/observation_operations.py,sha256=mOx3dU8x6LQF4TBVhyyWBo4yyonpvPMyaLoHLdlmrrc,105716
49
+ boris/observation.py,sha256=K-Xi99BMLSohx6pPLKk-Eqi56fLWDFLScHxXKkoFAlg,57507
50
+ boris/observation_operations.py,sha256=HPPat_-6c_Fu0cFs0wQD86AIE7g7eKHutOGi_xexMAM,106581
51
51
  boris/observation_ui.py,sha256=DAnU94QBNvkLuHT6AxTwqSk_D_n6VUhSl8PexZv_dUk,33309
52
52
  boris/observations_list.py,sha256=NqwECGHtHYmKhSe-qCfqPmJ24SSfzlXvIXS2i3op_zE,10591
53
53
  boris/otx_parser.py,sha256=70QvilzFHXbjAHR88YH0aEXJ3xxheLS5fZGgHFHGpNE,16367
54
54
  boris/param_panel.py,sha256=C7MzWg-OVjjxKbXPFC0ykOLpxbwsqEmG0jWgzBUwOEA,8695
55
55
  boris/param_panel_ui.py,sha256=4emQDFmuL4_R7bKxosLjdUb-VSPWkDm7suy38F5EKcA,13260
56
56
  boris/player_dock_widget.py,sha256=rdP0w6Wac7R3UMqJeHl7GNvT1hElu_x_VgNkg4Ut-6s,5880
57
- boris/plot_data_module.py,sha256=6QbLKfyGp4TYRyHnB9G45y5XrpeXLytcorltEAWfYak,16562
57
+ boris/plot_data_module.py,sha256=Xq70HDlAtvganwNmbRDUA3iKV-415zS9W1H1x0itXWE,16594
58
58
  boris/plot_events.py,sha256=tKiUWH0TNSkK7xz5Vf0tAD3KiuAalv6UZEVtOnoFpWY,24059
59
59
  boris/plot_events_rt.py,sha256=xJmjwqhQxCN4FDBYRQ0O2eHm356Rbexzr3m1qTefMDU,8326
60
- boris/plot_spectrogram_rt.py,sha256=wDhnkqwjd2UfCxrfOejOUxoNOqfMNo6vo1JSvYgM-2A,10925
61
- boris/plot_waveform_rt.py,sha256=RNXhcBzRKnoGoVjRAHsVvOaj0BJbbI2cpCMjMUiGqX0,7534
62
- boris/plugins.py,sha256=sn2r8kMxkzaO8kNhem-cTlTBrym9MlFPyRT9Av9rHGg,15603
63
- boris/preferences.py,sha256=-WwBlkP3uhSyO3tUhcrctHMzlv46ngW9C4KAq7UJAoI,21563
64
- boris/preferences_ui.py,sha256=wbo51aBNdcQTJni1DmUM5ZQPOwAtKSkEQam7rRzRS5g,34166
65
- boris/project.py,sha256=nyXfCDY_rLP3jC1QGv-280jUKgbABqESjOm7I19rJ1U,86432
66
- boris/project_functions.py,sha256=gSG6Pa0BF0wv5AtfvRU8KqOqzgUwbMTmIsYqQ11QwmY,82605
60
+ boris/plot_spectrogram_rt.py,sha256=JYuh14dI9uMPI4R6glI_jJ12itpe2X268RNtOgzm_oc,10978
61
+ boris/plot_waveform_rt.py,sha256=JM4TtN7IFZqLRY4k4rJ-U0DMvGdQ2FFlwH2xVOyrx68,7595
62
+ boris/plugins.py,sha256=AzjKLPsqBk-K8wPM3HXe4w-sNaDU1bQm2XEoLr4Zx0k,17234
63
+ boris/preferences.py,sha256=YcGBaXRfimH4jpFLfcUAgCAGESXSLhB6cli_cg4cDl0,21902
64
+ boris/preferences_ui.py,sha256=sRmsI04uRtY4xthioZVMYEv2b8WTeYfXXOk_iSNDVXU,35187
65
+ boris/project.py,sha256=4dE4nqo8at1lz9KykprF5Rr62R78yu4vBrTfde1gQ-g,86438
66
+ boris/project_functions.py,sha256=5AWfCMc3zELqMdyeFXU-HZxMVp1Dm4DV-vVPCMsHqfE,83561
67
67
  boris/project_import_export.py,sha256=oBG1CSXfKISsb3TLNT-8BH8kZPAzxIYSNemlLVH1Lh8,38560
68
68
  boris/project_ui.py,sha256=yB-ewhHt8S8DTTRIk-dNK2tPMNU24lNji9fDW_Xazu8,38805
69
69
  boris/qrc_boris.py,sha256=aH-qUirYY1CGxmTK1SFCPvuZfazIHX4DdUKF1gxZeYM,675008
@@ -72,20 +72,21 @@ boris/select_modifiers.py,sha256=42uG9F75pfPoPJ-blp-vFgmpBpVJtL42FlIxpNpq9z4,133
72
72
  boris/select_observations.py,sha256=k7c3FNVQW74YGH9oFmtHXRVCRnpKGhjCVk3cQtyLML8,8027
73
73
  boris/select_subj_behav.py,sha256=ulXbsRY-AIyQRSwXhVlvkNRS_eqWaCvkDKTTyOLqvoE,11742
74
74
  boris/state_events.py,sha256=iUrC5ypwIKOnmoq0moDQwtH9-DrgiJ81zL2pMxESucU,7790
75
- boris/subjects_pad.py,sha256=lSRRGfLfD10_YpGua8RGVdKhoXlsXawGhNibPkRhuzM,3541
75
+ boris/subjects_pad.py,sha256=OWEkI-ViiIm3KfBmaEodOGTI2Cgtd0pfXghp4_d6p3k,3543
76
76
  boris/synthetic_time_budget.py,sha256=3Eb9onMLmgqCLd50CuxV9L8RV2ESzfaMWvPK_bXUMMk,10489
77
77
  boris/time_budget_functions.py,sha256=SbGyTF2xySEqBdRJZeWFTirruvK3r6pwM6e4Gz17W1s,52186
78
78
  boris/time_budget_widget.py,sha256=z-tyITBtIz-KH1H2OdMB5a8x9QQLK7Wu96-zkC6NVDA,43213
79
79
  boris/transitions.py,sha256=okyDCO-Vn4p_Fixd8cGiSIaUhUxG5ePIOqGSuP52g_c,12246
80
- boris/utilities.py,sha256=BJXl8IZHQC93ZcaN9cQrWmrg3Rr3F8_Q71Tz6Im3A0s,58104
81
- boris/version.py,sha256=efemsbkEaALtHXkb-K5yR_XYwDyuK_FjgmaTU7oEGu0,787
80
+ boris/utilities.py,sha256=Ae3YjXkulJYQxbE4Fpvle4tX2nA_qJQhAn980sTFHqw,58805
81
+ boris/version.py,sha256=ERnj-wDpDd9yosZR3Abj_lLv8SNy6tlWoTJDh5QAZDk,788
82
82
  boris/video_equalizer.py,sha256=cm2JXe1eAPkqDzxYB2OMKyuveMBdq4a9-gD1bBorbn4,5823
83
83
  boris/video_equalizer_ui.py,sha256=1CG3s79eM4JAbaCx3i1ILZXLceb41_gGXlOLNfpBgnw,10142
84
- boris/video_operations.py,sha256=BbH9NXfNL597edX2nX0s6dJcQIvv--_DXx2kjhLAkfo,10799
84
+ boris/video_operations.py,sha256=dSpD1cnDm7DiTUirIcCYE1Olb5HlY8-S4CpLynyT1L8,11054
85
85
  boris/view_df.py,sha256=fhcNMFFVbQ4ZTpPwN_4Bg66DDIoV25zaPryZUsOxsKg,3338
86
86
  boris/view_df_ui.py,sha256=CaMeRH_vQ00CTDDFQn73ZZaS-r8BSTWpL-dMCFqzJ_Q,2775
87
87
  boris/write_event.py,sha256=xC-dUjgPS4-tvrQfvyL7O_xi-tyQI7leSiSV8_x8hgg,23817
88
88
  boris/analysis_plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ boris/analysis_plugins/_export_to_feral.py,sha256=_eirrreEn3Udp4POBG8cA1Gno4e-x_LFYXfvDhy11fg,7417
89
90
  boris/analysis_plugins/_latency.py,sha256=9kCdFDtb5Zdao1xFpioi_exm_IxyGm6RlY3Opn6GUFo,2030
90
91
  boris/analysis_plugins/irr_cohen_kappa.py,sha256=OqmivIE6i1hTcFVMp0EtY0Sr7C1Jm9t0D4IKbDfTJ7U,4268
91
92
  boris/analysis_plugins/irr_cohen_kappa_with_modifiers.py,sha256=DtzFLRToR9GdkmWYDcCmpSvxHGpguVp-_n8F-t7ND7c,4461
@@ -101,9 +102,9 @@ boris/portion/dict.py,sha256=uNM-LEY52CZ2VNMMW_C9QukoyTvPlQf8vcbGa1lQBHI,11281
101
102
  boris/portion/func.py,sha256=mSQr20YS1ug7R1fRqBg8LifjtXDRvJ6Kjc3WOeL9P34,2172
102
103
  boris/portion/interval.py,sha256=sOlj3MAGGaB-JxCkigS-n3qw0fY7TANAsXv1pavr8J4,19931
103
104
  boris/portion/io.py,sha256=kpq44pw3xnIyAlPwaR5qRHKRdZ72f8HS9YVIWs5k2pk,6367
104
- boris_behav_obs-9.7.1.dist-info/licenses/LICENSE.TXT,sha256=WJ7YI-moTFb-uVrFjnzzhGJrnL9P2iqQe8NuED3hutI,35141
105
- boris_behav_obs-9.7.1.dist-info/METADATA,sha256=nvmFlkit_eIH_OOWnrlrZZvrPaO-NXD-8aU778Da0J4,5385
106
- boris_behav_obs-9.7.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
107
- boris_behav_obs-9.7.1.dist-info/entry_points.txt,sha256=k__8XvFi4vaA4QFvQehCZjYkKmZH34HSAJI2iYCWrMs,52
108
- boris_behav_obs-9.7.1.dist-info/top_level.txt,sha256=fJSgm62S7WesiwTorGbOO4nNN0yzgZ3klgfGi3Px4qI,6
109
- boris_behav_obs-9.7.1.dist-info/RECORD,,
105
+ boris_behav_obs-9.7.12.dist-info/licenses/LICENSE.TXT,sha256=WJ7YI-moTFb-uVrFjnzzhGJrnL9P2iqQe8NuED3hutI,35141
106
+ boris_behav_obs-9.7.12.dist-info/METADATA,sha256=FD9BDXBQlwrLAPGIg7tpNRwBK55w-u0QeC9qU6zNhJg,5204
107
+ boris_behav_obs-9.7.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
+ boris_behav_obs-9.7.12.dist-info/entry_points.txt,sha256=k__8XvFi4vaA4QFvQehCZjYkKmZH34HSAJI2iYCWrMs,52
109
+ boris_behav_obs-9.7.12.dist-info/top_level.txt,sha256=fJSgm62S7WesiwTorGbOO4nNN0yzgZ3klgfGi3Px4qI,6
110
+ boris_behav_obs-9.7.12.dist-info/RECORD,,