maialib 1.6.1__cp311-cp311-win_amd64.whl → 1.7.0__cp311-cp311-win_amd64.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.

Potentially problematic release.


This version of maialib might be problematic. Click here for more details.

@@ -385,6 +385,22 @@ class HeapData:
385
385
  pass
386
386
  class Helper:
387
387
  @staticmethod
388
+ @typing.overload
389
+ def calculateMelodyEuclideanSimilarity(melodyPattern: list[Note], otherMelody: list[Note]) -> float:
390
+ ...
391
+ @staticmethod
392
+ @typing.overload
393
+ def calculateMelodyEuclideanSimilarity(semitonesDifference: list[float]) -> float:
394
+ ...
395
+ @staticmethod
396
+ @typing.overload
397
+ def calculateRhythmicEuclideanSimilarity(rhythmPattern: list[Note], otherRhythm: list[Note]) -> float:
398
+ ...
399
+ @staticmethod
400
+ @typing.overload
401
+ def calculateRhythmicEuclideanSimilarity(durationDifferences: list[float]) -> float:
402
+ ...
403
+ @staticmethod
388
404
  def durationRatio(duration_A: float, duration_B: float) -> float:
389
405
  ...
390
406
  @staticmethod
@@ -400,9 +416,15 @@ class Helper:
400
416
  def frequencies2cents(freq_A: float, freq_B: float) -> int:
401
417
  ...
402
418
  @staticmethod
419
+ def getDurationDifferenceBetweenRhythms(referenceRhythm: list[Note], otherRhythm: list[Note]) -> list[float]:
420
+ ...
421
+ @staticmethod
403
422
  def getPercentiles(arg0: typing.Any, arg1: list[float]) -> typing.Any:
404
423
  ...
405
424
  @staticmethod
425
+ def getSemitonesDifferenceBetweenMelodies(referenceMelody: list[Note], otherMelody: list[Note]) -> list[float]:
426
+ ...
427
+ @staticmethod
406
428
  def isEnharmonic(arg0: str, arg1: str) -> bool:
407
429
  ...
408
430
  @staticmethod
@@ -475,6 +497,8 @@ class Interval:
475
497
  ...
476
498
  def getDiatonicSteps(self, useSingleOctave: bool = True, absoluteValue: bool = False) -> int:
477
499
  ...
500
+ def getDirection(self) -> str:
501
+ ...
478
502
  def getName(self) -> str:
479
503
  ...
480
504
  def getNotes(self) -> list[Note]:
@@ -1052,6 +1076,8 @@ class Part:
1052
1076
  @typing.overload
1053
1077
  def getMeasure(self, measureId: int) -> Measure:
1054
1078
  ...
1079
+ def getMeasures(self) -> list[Measure]:
1080
+ ...
1055
1081
  def getMidiUnpitched(self) -> list[int]:
1056
1082
  ...
1057
1083
  def getName(self) -> str:
@@ -1184,6 +1210,8 @@ class Score:
1184
1210
  ...
1185
1211
  def clear(self) -> None:
1186
1212
  ...
1213
+ def findMelodyPatternDataFrame(self, melodyPattern: list[Note], totalIntervalsSimilarityThreshold: float = 0.5, totalRhythmSimilarityThreshold: float = 0.5, intervalsSimilarityCallback: typing.Callable[[list[Note], list[Note]], list[float]] = None, rhythmSimilarityCallback: typing.Callable[[list[Note], list[Note]], list[float]] = None, totalIntervalSimilarityCallback: typing.Callable[[list[float]], float] = None, totalRhythmSimilarityCallback: typing.Callable[[list[float]], float] = None, totalSimilarityCallback: typing.Callable[[float, float], float] = None) -> typing.Any:
1214
+ ...
1187
1215
  def forEachNote(self, callback: typing.Callable[[Part, Measure, int, Note], None], measureStart: int = 0, measureEnd: int = -1, partNames: list[str] = []) -> None:
1188
1216
  ...
1189
1217
  def getChords(self, config: json = None) -> list[tuple[int, float, Key, Chord, bool]]:
@@ -1317,4 +1345,4 @@ C: ClefSign # value = <ClefSign.C: 2>
1317
1345
  F: ClefSign # value = <ClefSign.F: 1>
1318
1346
  G: ClefSign # value = <ClefSign.G: 0>
1319
1347
  P: ClefSign # value = <ClefSign.P: 3>
1320
- __version__: str = '"1.6.1"'
1348
+ __version__: str = '"1.7.0"'
maialib/maiapy/other.pyi CHANGED
@@ -1,20 +1,79 @@
1
1
  import maialib.maiacore as mc
2
2
  from enum import Enum
3
3
 
4
- __all__ = ['getSampleScorePath', 'SampleScore', 'setScoreEditorApp', 'getScoreEditorApp', 'openScore', 'getXmlSamplesDirPath']
4
+ def setScoreEditorApp(executableFullPath: str) -> None:
5
+ '''Set the full path to the installed score editor app
5
6
 
6
- def setScoreEditorApp(executableFullPath: str) -> None: ...
7
+ Args:
8
+ executableFullPath (str): Score editor full path
9
+ Example 01: "C:/path/to/MuseScore"
10
+ Example 02: "/Applications/MuseScore 4.app/Contents/MacOS/mscore"
11
+
12
+ Examples of use:
13
+
14
+ >>> import maialib as ml
15
+ >>> # Example for Windows:
16
+ >>> ml.setScoreEditorApp("C:/path/to/MuseScore.exe")
17
+ >>> # Example for Mac OSX:
18
+ >>> ml.setScoreEditorApp("/Applications/MuseScore 4.app/Contents/MacOS/mscore")
19
+ '''
7
20
  def getScoreEditorApp() -> str: ...
8
21
  def openScore(score: mc.Score) -> None: ...
9
22
 
10
23
  class SampleScore(Enum):
11
- Bach_Cello_Suite_1 = 'Bach_Cello_Suite_1'
12
- Beethoven_Symphony_5th = 'Beethoven_Symphony_5th'
13
- Chopin_Fantasie_Impromptu = 'Chopin_Fantasie_Impromptu'
14
- Dvorak_Symphony_9_mov_4 = 'Dvorak_Symphony_9_mov_4'
15
- Mahler_Symphony_8_Finale = 'Mahler_Symphony_8_Finale'
16
- Mozart_Requiem_Introitus = 'Mozart_Requiem_Introitus'
17
- Strauss_Also_Sprach_Zarathustra = 'Strauss_Also_Sprach_Zarathustra'
18
-
19
- def getSampleScorePath(sampleEnum: SampleScore) -> str: ...
20
- def getXmlSamplesDirPath() -> str: ...
24
+ Bach_Cello_Suite_1: str
25
+ Beethoven_Symphony_5th: str
26
+ Chopin_Fantasie_Impromptu: str
27
+ Dvorak_Symphony_9_mov_4: str
28
+ Mahler_Symphony_8_Finale: str
29
+ Mozart_Requiem_Introitus: str
30
+ Strauss_Also_Sprach_Zarathustra: str
31
+
32
+ def getSampleScorePath(sampleEnum: SampleScore) -> str:
33
+ """Get a maialib internal XML sample file
34
+
35
+ Args:
36
+ sampleEnum (SampleScore): Maialib SampleScore enum value
37
+ - Bach_Cello_Suite_1
38
+ - Beethoven_Symphony_5th
39
+ - Chopin_Fantasie_Impromptu
40
+ - Dvorak_Symphony_9_mov_4
41
+ - Mahler_Symphony_8_Finale
42
+ - Mozart_Requiem_Introitus
43
+ - Strauss_Also_Sprach_Zarathustra
44
+
45
+ Kwargs:
46
+ None
47
+
48
+ Returns:
49
+ A full file path (str) to the XML maialib internal sample score
50
+
51
+ Raises:
52
+ RuntimeError
53
+
54
+ Examples of use:
55
+
56
+ >>> import maialib as ml
57
+ >>> filePath = ml.getSampleScorePath(ml.SampleScore.Bach_Cello_Suite_1)
58
+ >>> score = ml.Score(filePath)
59
+ >>> score.info()
60
+ """
61
+ def getXmlSamplesDirPath() -> str:
62
+ '''Get the maialib XML samples directory path
63
+
64
+ Kwargs:
65
+ None
66
+
67
+ Returns:
68
+ A full dir path (str) to the XML maialib internal samples score directory
69
+
70
+ Raises:
71
+ RuntimeError
72
+
73
+ Examples of use:
74
+
75
+ >>> import maialib as ml
76
+ >>> xmlDir = ml.getXmlSamplesDirPath()
77
+ >>> score = ml.Score(xmlDir + "Bach/cello_suite_1_violin.xml")
78
+ >>> score.info()
79
+ '''
maialib/maiapy/plots.pyi CHANGED
@@ -2,9 +2,102 @@ import maialib.maiacore as mc
2
2
  import pandas as pd
3
3
  import plotly
4
4
 
5
- __all__ = ['plotPartsActivity', 'plotPianoRoll', 'plotScorePitchEnvelope', 'plotChordsNumberOfNotes']
5
+ def plotPartsActivity(score: mc.Score, **kwargs) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]:
6
+ '''Plots a timeline graph showing the musical activity of each score instrument
6
7
 
7
- def plotPartsActivity(score: mc.Score, **kwargs) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]: ...
8
- def plotPianoRoll(score: mc.Score, **kwargs) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]: ...
9
- def plotScorePitchEnvelope(score: mc.Score, **kwargs) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]: ...
10
- def plotChordsNumberOfNotes(score: mc.Score, **kwargs) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]: ...
8
+ Args:
9
+ score (maialib.Score): A maialib Score object loaded with a valid MusicXML file
10
+
11
+ Kwargs:
12
+ measureStart (int): Start measure to plot
13
+ measureEnd (int): End measure to plot
14
+ partNames (list): A str list that contains the filtered desired score parts to plot
15
+
16
+ Returns:
17
+ A list: [Plotly Figure, The plot data as a Pandas Dataframe]
18
+
19
+ Raises:
20
+ RuntimeError, KeyError
21
+
22
+ Examples of use:
23
+
24
+ >>> plotPartsActivity(myScore)
25
+ >>> plotPartsActivity(myScore, measureStart=50)
26
+ >>> plotPartsActivity(myScore, measureStart=50, measureEnd=100)
27
+ >>> plotPartsActivity(myScore, measureStart=50, measureEnd=100, partNames=["Violin 1", "Cello"])
28
+ '''
29
+ def plotPianoRoll(score: mc.Score, **kwargs) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]:
30
+ '''Plots a piano roll graph showing the musical activity of each score instrument
31
+
32
+ Args:
33
+ score (maialib.Score): A maialib Score object loaded with a valid MusicXML file
34
+
35
+ Kwargs:
36
+ measureStart (int): Start measure to plot
37
+ measureEnd (int): End measure to plot
38
+ partNames (list): A str list that contains the filtered desired score parts to plot
39
+
40
+ Returns:
41
+ A list: [Plotly Figure, The plot data as a Pandas Dataframe]
42
+
43
+ Raises:
44
+ RuntimeError, KeyError
45
+
46
+ Examples of use:
47
+
48
+ >>> plotPianoRoll(myScore)
49
+ >>> plotPianoRoll(myScore, measureStart=50)
50
+ >>> plotPianoRoll(myScore, measureStart=50, measureEnd=100)
51
+ >>> plotPianoRoll(myScore, measureStart=50, measureEnd=100, partNames=["Violin 1", "Cello"])
52
+ '''
53
+ def plotScorePitchEnvelope(score: mc.Score, **kwargs) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]:
54
+ '''Plot a score pitch envelope
55
+
56
+ Args:
57
+ score (maialib.Score): A maialib Score object loaded with a valid MusicXML file
58
+
59
+ Kwargs:
60
+ numPoints: (int): Number of interpolated points
61
+ showHigher (bool): Plot the envelop upper limit
62
+ showLower (bool): Plot the envelop lower limit
63
+ showMean (bool): Plot the envelop mean curve
64
+ showMeanOfExtremes (bool): Plot the envelop mean of extremes curve
65
+
66
+ Returns:
67
+ A list: [Plotly Figure, The plot data as a Pandas Dataframe]
68
+
69
+ Raises:
70
+ RuntimeError, KeyError
71
+
72
+ Examples of use:
73
+
74
+ >>> myScore = ml.Score("/path/to/score.xml")
75
+ >>> plotScorePitchEnvelope(myScore)
76
+ >>> plotScorePitchEnvelope(myScore, numPoints=10)
77
+ >>> plotScorePitchEnvelope(myScore, showLower=False)
78
+ >>> plotScorePitchEnvelope(myScore, showMean=False, showMean=True)
79
+ '''
80
+ def plotChordsNumberOfNotes(score: mc.Score, **kwargs) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]:
81
+ '''Plot chord number of notes varying in time
82
+
83
+ Args:
84
+ score (maialib.Score): A maialib Score object loaded with a valid MusicXML file
85
+
86
+ Kwargs:
87
+ measureStart (int): Start measure to plot
88
+ measureEnd (int): End measure to plot
89
+ numPoints (int): Number of interpolated points
90
+
91
+ Returns:
92
+ A list: [Plotly Figure, The plot data as a Pandas Dataframe]
93
+
94
+ Raises:
95
+ RuntimeError, KeyError
96
+
97
+ Examples of use:
98
+
99
+ >>> myScore = ml.Score("/path/to/score.xml")
100
+ >>> plotChordsNumberOfNotes(myScore)
101
+ >>> plotChordsNumberOfNotes(myScore, numPoints=15)
102
+ >>> plotChordsNumberOfNotes(myScore, measureStart=10, measureEnd=20)
103
+ '''
@@ -4,8 +4,68 @@ import plotly.graph_objects as go
4
4
  from maialib import maiacore as mc
5
5
  from typing import Callable
6
6
 
7
- __all__ = ['plotSetharesDissonanceCurve', 'plotScoreSetharesDissonance', 'plotChordDyadsSetharesDissonanceHeatmap']
7
+ def plotSetharesDissonanceCurve(fundamentalFreq: float = 440, numPartials: int = 6, ratioLowLimit: float = 1.0, ratioHighLimit: float = 2.3, ratioStepIncrement: float = 0.001, amplCallback: Callable[[list[float]], list[float]] | None = None) -> tuple[go.Figure, pd.DataFrame]:
8
+ """
9
+ Compute the Sethares Dissonance Curve of a given base frequency
8
10
 
9
- def plotSetharesDissonanceCurve(fundamentalFreq: float = 440, numPartials: int = 6, ratioLowLimit: float = 1.0, ratioHighLimit: float = 2.3, ratioStepIncrement: float = 0.001, amplCallback: Callable[[list[float]], list[float]] | None = None) -> tuple[go.Figure, pd.DataFrame]: ...
10
- def plotScoreSetharesDissonance(score: mc.Score, plotType: str = 'line', lineShape: str = 'linear', numPartialsPerNote: int = 6, useMinModel: bool = True, amplCallback: Callable[[list[float]], list[float]] | None = None, dissCallback: Callable[[list[float]], float] | None = None, **kwargs) -> tuple[go.Figure, pd.DataFrame]: ...
11
- def plotChordDyadsSetharesDissonanceHeatmap(chord: mc.Chord, numPartialsPerNote: int = 6, useMinModel: bool = True, amplCallback: Callable[[list[float]], list[float]] | None = None, dissonanceThreshold: float = 0.1, dissonanceDecimalPoint: int = 2) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]: ...
11
+ Return
12
+ A tuple that contains a Plotly figure, and the pair 'ratios' and 'dissonance' lists
13
+ """
14
+ def plotScoreSetharesDissonance(score: mc.Score, plotType: str = 'line', lineShape: str = 'linear', numPartialsPerNote: int = 6, useMinModel: bool = True, amplCallback: Callable[[list[float]], list[float]] | None = None, dissCallback: Callable[[list[float]], float] | None = None, **kwargs) -> tuple[go.Figure, pd.DataFrame]:
15
+ '''Plot 2D line graph of the Sethares Dissonance over time
16
+
17
+ Args:
18
+ score (maialib.Score): A maialib Score object loaded with a valid MusicXML file
19
+ plotType (str): Can be \'line\' or \'scatter\'
20
+ lineShape (str): Can be \'linear\' or \'spline\'
21
+ numPartialsPerNote (int): Amount of spectral partials for each note
22
+ useMinModel (bool): Sethares dissonance values can be computed using the \'minimal amplitude\' model
23
+ or the \'product amplitudes\' model. The \'min\' model is a more recent approach
24
+ amplCallback: Custom user function callback to generate the amplitude of each spectrum partial
25
+ dissCallback: Custom user function callback to receive all paired partial dissonances and computes
26
+ a single total dissonance value output
27
+ Kwargs:
28
+ measureStart (int): Start measure to plot
29
+ measureEnd (int): End measure to plot
30
+ numPoints (int): Number of interpolated points
31
+
32
+ Returns:
33
+ A list: [Plotly Figure, The plot data as a Pandas Dataframe]
34
+
35
+ Raises:
36
+ RuntimeError, KeyError
37
+
38
+ Examples of use:
39
+
40
+ >>> myScore = ml.Score("/path/to/score.xml")
41
+ >>> ml.plotScoreSetharesDissonance(myScore)
42
+ >>> ml.plotScoreSetharesDissonance(myScore, numPoints=15)
43
+ >>> ml.plotScoreSetharesDissonance(myScore, measureStart=10, measureEnd=20)
44
+ '''
45
+ def plotChordDyadsSetharesDissonanceHeatmap(chord: mc.Chord, numPartialsPerNote: int = 6, useMinModel: bool = True, amplCallback: Callable[[list[float]], list[float]] | None = None, dissonanceThreshold: float = 0.1, dissonanceDecimalPoint: int = 2) -> tuple[plotly.graph_objs._figure.Figure, pd.DataFrame]:
46
+ '''Plot chord dyads Sethares dissonance heatmap
47
+
48
+ Args:
49
+ chord (maialib.Chord): A maialib Chord
50
+
51
+ Kwargs:
52
+ numPartialsPerNote (int): Amount of spectral partials for each note
53
+ useMinModel (bool): Sethares dissonance values can be computed using the \'minimal amplitude\' model
54
+ or the \'product amplitudes\' model. The \'min\' model is a more recent approach
55
+ amplCallback: Custom user function callback to generate the amplitude of each spectrum partial
56
+ dissonanceThreshold (float): Dissonance threshold to skip small dissonance values
57
+ dissonanceDecimalPoint (int): Round chord dissonance value in the plot title
58
+
59
+ Returns:
60
+ A list: [Plotly Figure, The plot data as a Pandas Dataframe]
61
+
62
+ Raises:
63
+ RuntimeError, KeyError
64
+
65
+ Examples of use:
66
+
67
+ >>> import maialib as ml
68
+ >>> myChord = ml.Chord(["C3", "E3", "G3"])
69
+ >>> fig, df = plotChordDyadsSetharesDissonanceHeatmap(myChord)
70
+ >>> fig.show()
71
+ '''
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: maialib
3
- Version: 1.6.1
3
+ Version: 1.7.0
4
4
  Summary: A C++/Python library to manipulate sheet music data
5
5
  Home-page: https://github.com/nyckmaia/maialib
6
6
  Author: Nycholas Maia
@@ -3,16 +3,16 @@ maialib/setup.py,sha256=SRFKCV1MVKftVrdnbrjQkL-ee4nR6pzlaURgwSJgqXU,2221
3
3
  maialib/maiacore/__init__.py,sha256=0sK4fUTlwdUaieWSoGvL11TBkw6BebR2cd-MpYpJn1o,81
4
4
  maialib/maiacore/__init__.pyi,sha256=68w5bv3qhq6lEK0JNHSWER9zuyQN8mxJV-y3JayNxNA,1472
5
5
  maialib/maiacore/Release/__init__.pyi,sha256=ncPiCbsaSZXZUykVnOw-yqVPbE-I285Kj5moTnKTNCU,84
6
- maialib/maiacore/Release/maiacore.cp311-win_amd64.pyd,sha256=_ae4tO8W7qHs0FGuWk9-P_jQPDIv6oBMTWprepbZ0lM,4430336
7
- maialib/maiacore/Release/maiacore.pyi,sha256=GJwgP5Zq70Kanxc_fohVuvNGPV5n2t_YmPFPhWkoYes,44715
6
+ maialib/maiacore/Release/maiacore.cp311-win_amd64.pyd,sha256=2w6cbC5UO1U243TTtk6jk1XgO6KX0wPWZqwVNLvYhnQ,4484096
7
+ maialib/maiacore/Release/maiacore.pyi,sha256=pjQSd89thPmoFUQQYuiPo87_6yPzEj0BT3YmCIElnMg,46325
8
8
  maialib/maiapy/__init__.py,sha256=Kd9D0GBofeJYa6ampk8C47otrr20uwoTYlJlPyMu6fU,80
9
9
  maialib/maiapy/__init__.pyi,sha256=Kd9D0GBofeJYa6ampk8C47otrr20uwoTYlJlPyMu6fU,80
10
10
  maialib/maiapy/other.py,sha256=BgoqM8GRyCon00qnYyXWbZTE0WtDYlkg6Z7_xSoHnI4,4172
11
- maialib/maiapy/other.pyi,sha256=C49D3Hw0xoXKJMoozO3_jRtr43zUDF3k1wwWDATkra4,871
11
+ maialib/maiapy/other.pyi,sha256=kjn7QULRPrLmGCwj0SJzcuJ544Yo4vpduumq3v9CUzg,2242
12
12
  maialib/maiapy/plots.py,sha256=_RYvckdfalkbXf-SlozSELWVB1ATyTCGIKBuVs1DrC4,23809
13
- maialib/maiapy/plots.pyi,sha256=0Zb920t9fvtjxYv7270YUBBC-Q9xkk2uTElj4RM0jxg,629
13
+ maialib/maiapy/plots.pyi,sha256=FCiM2grDLYPqFkyHPG3x0-Y1NbD8L6UfAMWXFMLv5K0,3723
14
14
  maialib/maiapy/sethares_dissonance.py,sha256=oDphSv2-jRlCFAk1hcDT4gDjonqX6QP77ybwkRlfu6U,13161
15
- maialib/maiapy/sethares_dissonance.pyi,sha256=w4mRC-XfFHshQxrDMVE0crvF5Vbbnwm1wnumDYhnvKE,1182
15
+ maialib/maiapy/sethares_dissonance.pyi,sha256=iBoK28luL78I--NeJMxa-CaOYyG7OuvO6qXH7meTGA0,3680
16
16
  maialib/xml-scores-examples/Bach_Cello_Suite_1.mxl,sha256=0XGNlcW8o0W7kkeG8j2V_M4eggdOnrxvvvCkpf6x_z4,29622
17
17
  maialib/xml-scores-examples/Beethoven_Symphony_5_mov_1.xml,sha256=GHDk53y0lbR9Ajc-63vHDP2tT1BX0ZWfx9jpFDUU5sU,4947722
18
18
  maialib/xml-scores-examples/Chopin_Fantasie_Impromptu.mxl,sha256=HkouQ_4bI6XDoGmzJITuU81CzQZE2lQjwl6WNlfZmJA,35727
@@ -20,8 +20,8 @@ maialib/xml-scores-examples/Dvorak_Symphony_9_mov_4.mxl,sha256=s7FGUEmFmgcIdmkZ-
20
20
  maialib/xml-scores-examples/Mahler_Symphony_8_Finale.mxl,sha256=F2-QBKNYjBv_sWT-z4LWi1rX84-P3msxtl-g6joA2FQ,229034
21
21
  maialib/xml-scores-examples/Mozart_Requiem_Introitus.mxl,sha256=_wc4hMaPhtgocUoL94uVzfVN3TGb08z8Xa2BL4SHfgA,91112
22
22
  maialib/xml-scores-examples/Strauss_Also_Sprach_Zarathustra.mxl,sha256=nOQra05RHHDe_dXFs5WBJG2l9R1KQk64urV7lWYC2vw,18863
23
- maialib-1.6.1.dist-info/LICENSE.txt,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
24
- maialib-1.6.1.dist-info/METADATA,sha256=5B3xlh8haXTDCmqiqmRKl7kX0RIra-7Qx4RjwoNL4-o,7115
25
- maialib-1.6.1.dist-info/WHEEL,sha256=dCuJ4f0faaLdEJehgDqauYbxfYcPtrcUnDoQw-il14k,101
26
- maialib-1.6.1.dist-info/top_level.txt,sha256=sZWQaa-Up2ba00WpAxBhOLKM6qQYTpUKJMXgSE0Nc48,17
27
- maialib-1.6.1.dist-info/RECORD,,
23
+ maialib-1.7.0.dist-info/LICENSE.txt,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
24
+ maialib-1.7.0.dist-info/METADATA,sha256=WK6MJV1VPNZCXrytPIvVrH9_j3buhJ3MfPVvY4CbR1s,7115
25
+ maialib-1.7.0.dist-info/WHEEL,sha256=WutsMqxRjo8PALJe8NWxuOYrO2lUIIHDIxhZ8tjc8BY,101
26
+ maialib-1.7.0.dist-info/top_level.txt,sha256=sZWQaa-Up2ba00WpAxBhOLKM6qQYTpUKJMXgSE0Nc48,17
27
+ maialib-1.7.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (72.2.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-win_amd64
5
5