python-fitparse 2.6.0__tar.gz → 2.8.0__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-fitparse
3
- Version: 2.6.0
3
+ Version: 2.8.0
4
4
  Summary: Python library to parse ANT/Garmin .FIT files
5
5
  Project-URL: Homepage, https://github.com/nbr23/python-fitparse
6
6
  Project-URL: Repository, https://github.com/nbr23/python-fitparse
@@ -1,7 +1,7 @@
1
1
  # ***************** BEGIN AUTOMATICALLY GENERATED FIT PROFILE ******************
2
2
  # *************************** DO NOT EDIT THIS FILE ****************************
3
- # *********** EXPORTED PROFILE FROM SDK VERSION 21.217 ON 2026-09-22 ***********
4
- # ********* PARSED 216 TYPES (4758 VALUES), 125 MESSAGES (1572 FIELDS) *********
3
+ # *********** EXPORTED PROFILE FROM SDK VERSION 21.221 ON 2026-11-03 ***********
4
+ # ********* PARSED 220 TYPES (4819 VALUES), 128 MESSAGES (1599 FIELDS) *********
5
5
  # ***************************** APPLIED 2 PATCHES ******************************
6
6
 
7
7
  from fitparse.records import (
@@ -1871,6 +1871,8 @@ FIELD_TYPES = {
1871
1871
  34: 'segment', # Read/write/erase. Multiple Files. Directory=Segments
1872
1872
  35: 'segment_list', # Read/write/erase. Single File. Directory=Segments
1873
1873
  40: 'exd_configuration', # Read/write/erase. Single File. Directory=Settings
1874
+ 66: 'tsb_sonar_events', # Read/write/erase, multiple files. Directory=Events. Top-Side-Bouy (TSB).
1875
+ 67: 'tsb_diver_config', # Read/write/erase, single file. Top-Side-Bouy (TSB).
1874
1876
  0xF7: 'mfg_range_min', # 0xF7 - 0xFE reserved for manufacturer specific file types
1875
1877
  0xFE: 'mfg_range_max', # 0xF7 - 0xFE reserved for manufacturer specific file types
1876
1878
  },
@@ -2491,6 +2493,8 @@ FIELD_TYPES = {
2491
2493
  4814: 'fr170_music',
2492
2494
  4815: 'fr170',
2493
2495
  4825: 'approach_j1',
2496
+ 4874: 'approach_s72_43mm',
2497
+ 4875: 'approach_s72_47mm',
2494
2498
  4879: 'd2_mach2',
2495
2499
  4916: 'fr70_2026',
2496
2500
  4944: 'd2_air_x15',
@@ -2499,10 +2503,16 @@ FIELD_TYPES = {
2499
2503
  4954: 'fenix9_pro_51mm',
2500
2504
  4955: 'fenix9_pro_solar_47mm',
2501
2505
  4956: 'fenix9_pro_solar_51mm',
2506
+ 4962: 'edge_1060',
2507
+ 4970: 'edge_explore3',
2508
+ 4972: 'edge_explore3_plus',
2509
+ 5000: 'marq3',
2502
2510
  5019: 'cirqa_smart_band',
2511
+ 5026: 'descent_x10',
2503
2512
  5056: 'd2_mach2_pro',
2504
2513
  5133: 'fenix9_43mm',
2505
2514
  5134: 'fenix9', # 47mm & 57mm
2515
+ 5169: 'enduro4',
2506
2516
  10007: 'sdm4', # SDM4 footpod
2507
2517
  10014: 'edge_remote',
2508
2518
  20119: 'training_center',
@@ -3411,6 +3421,10 @@ FIELD_TYPES = {
3411
3421
  352: 'tymewear',
3412
3422
  353: 'exposure_lights',
3413
3423
  354: 'forto_cycling',
3424
+ 356: 'fair_weather_athletics',
3425
+ 357: 'hatch_factory',
3426
+ 358: 'torqano',
3427
+ 359: 'rockbros',
3414
3428
  5759: 'actigraphcorp',
3415
3429
  },
3416
3430
  ),
@@ -3563,6 +3577,9 @@ FIELD_TYPES = {
3563
3577
  319: 'tank_update',
3564
3578
  323: 'tank_summary',
3565
3579
  346: 'sleep_assessment',
3580
+ 364: 'tsb_sonar_message_event', # Message type for individual sonar event
3581
+ 365: 'tsb_settings', # Message type for storing Top-Side-Bouy (TSB) Settings
3582
+ 366: 'tsb_diver_config', # Message type for storing saved Top-Side-Bouy (TSB) Diver Configuration
3566
3583
  370: 'hrv_status_summary',
3567
3584
  371: 'hrv_value',
3568
3585
  372: 'raw_bbi',
@@ -4686,6 +4703,74 @@ FIELD_TYPES = {
4686
4703
  4: 'rem',
4687
4704
  },
4688
4705
  ),
4706
+ 'sonar_heading': FieldType(
4707
+ name='sonar_heading',
4708
+ base_type=BASE_TYPES[0x00], # enum
4709
+ values={
4710
+ 0: 'north',
4711
+ 1: 'north_east',
4712
+ 2: 'east',
4713
+ 3: 'south_east',
4714
+ 4: 'south',
4715
+ 5: 'south_west',
4716
+ 6: 'west',
4717
+ 7: 'north_west',
4718
+ },
4719
+ ),
4720
+ 'sonar_message_source': FieldType(
4721
+ name='sonar_message_source',
4722
+ base_type=BASE_TYPES[0x00], # enum
4723
+ values={
4724
+ 0: 'dive_app',
4725
+ 1: 'watch',
4726
+ },
4727
+ ),
4728
+ 'sonar_message_type': FieldType(
4729
+ name='sonar_message_type',
4730
+ base_type=BASE_TYPES[0x00], # enum
4731
+ values={
4732
+ 0: 'emergency_message',
4733
+ 1: 'canned_message',
4734
+ },
4735
+ ),
4736
+ 'sonar_packet_id': FieldType(
4737
+ name='sonar_packet_id',
4738
+ base_type=BASE_TYPES[0x00], # enum
4739
+ values={
4740
+ 0: 'xx_ant_id',
4741
+ 1: 't1_pressure_depth', # T1 tank pod messages [1-7]
4742
+ 2: 't1_msg_rly_from_tsb',
4743
+ 3: 'rsvd_3',
4744
+ 4: 't1_info_resp',
4745
+ 5: 't1_nav_rly_from_tsb',
4746
+ 6: 'rsvd_6',
4747
+ 7: 'rsvd_7',
4748
+ 8: 'rsvd_8', # T1 tank pod messages when watch Tx is available and for future expansion [8-15]
4749
+ 9: 'rsvd_9',
4750
+ 10: 't1_pressure_heart_resp_rate',
4751
+ 11: 'rsvd_11',
4752
+ 12: 't1_ack_relay',
4753
+ 13: 'rsvd_13',
4754
+ 14: 'rsvd_14',
4755
+ 15: 'rsvd_15',
4756
+ 16: 'tsb_emer_alert', # Top Side Box Messages [16-25]
4757
+ 17: 'tsb_canned_msg',
4758
+ 18: 'tsb_info_req',
4759
+ 19: 'tsb_nav',
4760
+ 21: 'rsvd_21',
4761
+ 22: 'tsb_ack',
4762
+ 23: 'rsvd_23',
4763
+ 24: 'rsvd_24',
4764
+ 25: 'rsvd_25',
4765
+ 26: 'wch_emer_alert', # Watch message [26-31]
4766
+ 27: 'wch_canned_msg',
4767
+ 28: 'wch_heart_resp_rate',
4768
+ 29: 'wch_ack',
4769
+ 30: 'rsvd_30',
4770
+ 31: 'rsvd_31',
4771
+ 32: 'gen_debug', # Used for logging general debug messages
4772
+ },
4773
+ ),
4689
4774
  'source_type': FieldType(
4690
4775
  name='source_type',
4691
4776
  base_type=BASE_TYPES[0x00], # enum
@@ -15540,6 +15625,167 @@ MESSAGE_TYPES = {
15540
15625
  ),
15541
15626
  },
15542
15627
  ),
15628
+ 364: MessageType( # Top-Side-Bouy (TSB) Sonar Event
15629
+ name='tsb_sonar_message_event',
15630
+ mesg_num=364,
15631
+ fields={
15632
+ 0: Field(
15633
+ name='sonar_packet_id',
15634
+ type=FIELD_TYPES['sonar_packet_id'],
15635
+ def_num=0,
15636
+ ),
15637
+ 21: Field( # Standard Deviation of Diver's Location
15638
+ name='diver_location_accuracy',
15639
+ type=BASE_TYPES[0x84], # uint16
15640
+ def_num=21,
15641
+ scale=1,
15642
+ units='degrees',
15643
+ ),
15644
+ 22: Field(
15645
+ name='message_type',
15646
+ type=FIELD_TYPES['sonar_message_type'],
15647
+ def_num=22,
15648
+ ),
15649
+ 23: Field(
15650
+ name='message_source',
15651
+ type=FIELD_TYPES['sonar_message_source'],
15652
+ def_num=23,
15653
+ ),
15654
+ },
15655
+ ),
15656
+ 365: MessageType( # Top-Side-Bouy (TSB) Settings
15657
+ name='tsb_settings',
15658
+ mesg_num=365,
15659
+ fields={
15660
+ 0: Field(
15661
+ name='tx_enable',
15662
+ type=FIELD_TYPES['bool'],
15663
+ def_num=0,
15664
+ ),
15665
+ 1: Field(
15666
+ name='proportional_gain',
15667
+ type=BASE_TYPES[0x88], # float32
15668
+ def_num=1,
15669
+ units='dB',
15670
+ ),
15671
+ 2: Field(
15672
+ name='integral_gain',
15673
+ type=BASE_TYPES[0x88], # float32
15674
+ def_num=2,
15675
+ units='dB',
15676
+ ),
15677
+ 3: Field(
15678
+ name='fixed_gain',
15679
+ type=BASE_TYPES[0x02], # uint8
15680
+ def_num=3,
15681
+ units='dB',
15682
+ ),
15683
+ 4: Field(
15684
+ name='rssi_setpoint',
15685
+ type=BASE_TYPES[0x86], # uint32
15686
+ def_num=4,
15687
+ ),
15688
+ 5: Field(
15689
+ name='plt_thresh_mult',
15690
+ type=BASE_TYPES[0x88], # float32
15691
+ def_num=5,
15692
+ ),
15693
+ 6: Field(
15694
+ name='plt_thresh',
15695
+ type=BASE_TYPES[0x86], # uint32
15696
+ def_num=6,
15697
+ ),
15698
+ 7: Field(
15699
+ name='transducer_spacing',
15700
+ type=BASE_TYPES[0x88], # float32
15701
+ def_num=7,
15702
+ units='m',
15703
+ ),
15704
+ 8: Field(
15705
+ name='calib_accel',
15706
+ type=BASE_TYPES[0x88], # float32
15707
+ def_num=8,
15708
+ ),
15709
+ 9: Field(
15710
+ name='calib_gyro',
15711
+ type=BASE_TYPES[0x88], # float32
15712
+ def_num=9,
15713
+ ),
15714
+ 10: Field(
15715
+ name='calib_mag',
15716
+ type=BASE_TYPES[0x88], # float32
15717
+ def_num=10,
15718
+ ),
15719
+ 11: Field(
15720
+ name='calib_mag_soft_x',
15721
+ type=BASE_TYPES[0x88], # float32
15722
+ def_num=11,
15723
+ ),
15724
+ 12: Field(
15725
+ name='calib_mag_soft_y',
15726
+ type=BASE_TYPES[0x88], # float32
15727
+ def_num=12,
15728
+ ),
15729
+ 13: Field(
15730
+ name='calib_mag_soft_z',
15731
+ type=BASE_TYPES[0x88], # float32
15732
+ def_num=13,
15733
+ ),
15734
+ 14: Field(
15735
+ name='max_tx_duty_cycle',
15736
+ type=BASE_TYPES[0x02], # uint8
15737
+ def_num=14,
15738
+ ),
15739
+ 15: Field(
15740
+ name='tx_chan',
15741
+ type=BASE_TYPES[0x02], # uint8
15742
+ def_num=15,
15743
+ ),
15744
+ 16: Field(
15745
+ name='search_gain',
15746
+ type=BASE_TYPES[0x02], # uint8
15747
+ def_num=16,
15748
+ units='dB',
15749
+ ),
15750
+ },
15751
+ ),
15752
+ 366: MessageType( # Top-Side-Bouy (TSB) Diver Configuration
15753
+ name='tsb_diver_config',
15754
+ mesg_num=366,
15755
+ fields={
15756
+ 0: Field(
15757
+ name='ant_id',
15758
+ type=BASE_TYPES[0x8C], # uint32z
15759
+ def_num=0,
15760
+ ),
15761
+ 1: Field(
15762
+ name='diver_name',
15763
+ type=BASE_TYPES[0x07], # string
15764
+ def_num=1,
15765
+ ),
15766
+ 2: Field(
15767
+ name='t1_tankpod_sw_ver',
15768
+ type=BASE_TYPES[0x84], # uint16
15769
+ def_num=2,
15770
+ scale=100,
15771
+ ),
15772
+ 3: Field(
15773
+ name='location_enabled',
15774
+ type=FIELD_TYPES['bool'],
15775
+ def_num=3,
15776
+ ),
15777
+ 4: Field(
15778
+ name='messaging_enabled',
15779
+ type=FIELD_TYPES['bool'],
15780
+ def_num=4,
15781
+ ),
15782
+ 5: Field( # ANT ID of the watch that claimed ownership of the diver's T1 (usually the diver's watch)
15783
+ name='t1_owner_ant_id',
15784
+ type=BASE_TYPES[0x8C], # uint32z
15785
+ def_num=5,
15786
+ ),
15787
+ },
15788
+ ),
15543
15789
  370: MessageType(
15544
15790
  name='hrv_status_summary',
15545
15791
  mesg_num=370,
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "python-fitparse"
7
- version = "2.6.0"
7
+ version = "2.8.0"
8
8
  description = "Python library to parse ANT/Garmin .FIT files"
9
9
  authors = [
10
10
  {name = "David Cooper", email = "dave@kupesoft.com"},
File without changes