sofar 1.2.1__tar.gz → 1.2.2__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.
Files changed (113) hide show
  1. {sofar-1.2.1 → sofar-1.2.2}/HISTORY.rst +5 -0
  2. {sofar-1.2.1 → sofar-1.2.2}/PKG-INFO +5 -2
  3. {sofar-1.2.1 → sofar-1.2.2}/docs/conf.py +40 -10
  4. {sofar-1.2.1 → sofar-1.2.2}/pyproject.toml +5 -2
  5. {sofar-1.2.1 → sofar-1.2.2}/sofar/__init__.py +1 -1
  6. {sofar-1.2.1 → sofar-1.2.2}/sofar/io.py +2 -2
  7. {sofar-1.2.1 → sofar-1.2.2}/sofar.egg-info/PKG-INFO +5 -2
  8. {sofar-1.2.1 → sofar-1.2.2}/sofar.egg-info/requires.txt +1 -0
  9. {sofar-1.2.1 → sofar-1.2.2}/CONTRIBUTING.rst +0 -0
  10. {sofar-1.2.1 → sofar-1.2.2}/LICENSE +0 -0
  11. {sofar-1.2.1 → sofar-1.2.2}/MANIFEST.in +0 -0
  12. {sofar-1.2.1 → sofar-1.2.2}/README.md +0 -0
  13. {sofar-1.2.1 → sofar-1.2.2}/docs/Makefile +0 -0
  14. {sofar-1.2.1 → sofar-1.2.2}/docs/api_reference.rst +0 -0
  15. {sofar-1.2.1 → sofar-1.2.2}/docs/contributing.rst +0 -0
  16. {sofar-1.2.1 → sofar-1.2.2}/docs/history.rst +0 -0
  17. {sofar-1.2.1 → sofar-1.2.2}/docs/index.rst +0 -0
  18. {sofar-1.2.1 → sofar-1.2.2}/docs/make.bat +0 -0
  19. {sofar-1.2.1 → sofar-1.2.2}/docs/readme.rst +0 -0
  20. {sofar-1.2.1 → sofar-1.2.2}/docs/resources/conventions.py +0 -0
  21. {sofar-1.2.1 → sofar-1.2.2}/docs/resources/working_with_sofa_HRIR_lateral.png +0 -0
  22. {sofar-1.2.1 → sofar-1.2.2}/docs/resources/working_with_sofa_source_horizontal.png +0 -0
  23. {sofar-1.2.1 → sofar-1.2.2}/docs/resources/working_with_sofa_source_lateral.png +0 -0
  24. {sofar-1.2.1 → sofar-1.2.2}/docs/sofar.rst +0 -0
  25. {sofar-1.2.1 → sofar-1.2.2}/setup.cfg +0 -0
  26. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa.py +0 -0
  27. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/VERSION +0 -0
  28. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/AnnotatedEmitterAudio_0.2.csv +0 -0
  29. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/AnnotatedEmitterAudio_0.2.json +0 -0
  30. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/AnnotatedReceiverAudio_0.2.csv +0 -0
  31. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/AnnotatedReceiverAudio_0.2.json +0 -0
  32. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.csv +0 -0
  33. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/FreeFieldDirectivityTF_1.1.json +0 -0
  34. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/FreeFieldHRIR_1.0.csv +0 -0
  35. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/FreeFieldHRIR_1.0.json +0 -0
  36. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/FreeFieldHRTF_1.0.csv +0 -0
  37. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/FreeFieldHRTF_1.0.json +0 -0
  38. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralFIR-E_2.0.csv +0 -0
  39. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralFIR-E_2.0.json +0 -0
  40. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralFIR_1.0.csv +0 -0
  41. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralFIR_1.0.json +0 -0
  42. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralSOS_1.0.csv +0 -0
  43. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralSOS_1.0.json +0 -0
  44. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralTF-E_1.0.csv +0 -0
  45. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralTF-E_1.0.json +0 -0
  46. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralTF_1.0.csv +0 -0
  47. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralTF_1.0.json +0 -0
  48. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralTF_2.0.csv +0 -0
  49. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/GeneralTF_2.0.json +0 -0
  50. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.csv +0 -0
  51. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleFreeFieldHRIR_1.0.json +0 -0
  52. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleFreeFieldHRSOS_1.0.csv +0 -0
  53. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleFreeFieldHRSOS_1.0.json +0 -0
  54. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.csv +0 -0
  55. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleFreeFieldHRTF_1.0.json +0 -0
  56. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleFreeFieldSOS_1.0.csv +0 -0
  57. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleFreeFieldSOS_1.0.json +0 -0
  58. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.csv +0 -0
  59. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SimpleHeadphoneIR_1.0.json +0 -0
  60. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SingleRoomMIMOSRIR_1.0.csv +0 -0
  61. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SingleRoomMIMOSRIR_1.0.json +0 -0
  62. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SingleRoomSRIR_1.0.csv +0 -0
  63. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/SingleRoomSRIR_1.0.json +0 -0
  64. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/AnnotatedEmitterAudio_0.1.csv +0 -0
  65. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/AnnotatedEmitterAudio_0.1.json +0 -0
  66. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/AnnotatedReceiverAudio_0.1.csv +0 -0
  67. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/AnnotatedReceiverAudio_0.1.json +0 -0
  68. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/FreeFieldDirectivityTF_1.0.csv +0 -0
  69. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/FreeFieldDirectivityTF_1.0.json +0 -0
  70. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/GeneralFIRE_1.0.csv +0 -0
  71. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/GeneralFIRE_1.0.json +0 -0
  72. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.csv +0 -0
  73. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/MultiSpeakerBRIR_0.3.json +0 -0
  74. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.csv +0 -0
  75. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldHRIR_0.4.json +0 -0
  76. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.csv +0 -0
  77. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_0.4.json +0 -0
  78. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.csv +0 -0
  79. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleFreeFieldTF_1.0.json +0 -0
  80. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.csv +0 -0
  81. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.1.json +0 -0
  82. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.csv +0 -0
  83. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SimpleHeadphoneIR_0.2.json +0 -0
  84. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.csv +0 -0
  85. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.2.json +0 -0
  86. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.3.csv +0 -0
  87. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SingleRoomDRIR_0.3.json +0 -0
  88. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.1.csv +0 -0
  89. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.1.json +0 -0
  90. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.2.csv +0 -0
  91. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/conventions/deprecated/SingleTrackedAudio_0.2.json +0 -0
  92. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/rules/deprecations.json +0 -0
  93. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/rules/rules.json +0 -0
  94. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/rules/unit_aliases.json +0 -0
  95. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/rules/upgrade.json +0 -0
  96. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/write_upgrade_rules.py +0 -0
  97. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/write_verification_data.py +0 -0
  98. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofa_conventions/write_verification_rules.py +0 -0
  99. {sofar-1.2.1 → sofar-1.2.2}/sofar/sofastream.py +0 -0
  100. {sofar-1.2.1 → sofar-1.2.2}/sofar/update_conventions.py +0 -0
  101. {sofar-1.2.1 → sofar-1.2.2}/sofar/utils.py +0 -0
  102. {sofar-1.2.1 → sofar-1.2.2}/sofar.egg-info/SOURCES.txt +0 -0
  103. {sofar-1.2.1 → sofar-1.2.2}/sofar.egg-info/dependency_links.txt +0 -0
  104. {sofar-1.2.1 → sofar-1.2.2}/sofar.egg-info/top_level.txt +0 -0
  105. {sofar-1.2.1 → sofar-1.2.2}/tests/__init__.py +0 -0
  106. {sofar-1.2.1 → sofar-1.2.2}/tests/conftest.py +0 -0
  107. {sofar-1.2.1 → sofar-1.2.2}/tests/test_deprecations.py +0 -0
  108. {sofar-1.2.1 → sofar-1.2.2}/tests/test_io.py +0 -0
  109. {sofar-1.2.1 → sofar-1.2.2}/tests/test_sofa.py +0 -0
  110. {sofar-1.2.1 → sofar-1.2.2}/tests/test_sofa_upgrade_conventions.py +0 -0
  111. {sofar-1.2.1 → sofar-1.2.2}/tests/test_sofa_verify.py +0 -0
  112. {sofar-1.2.1 → sofar-1.2.2}/tests/test_sofastream.py +0 -0
  113. {sofar-1.2.1 → sofar-1.2.2}/tests/test_utils.py +0 -0
@@ -2,6 +2,11 @@
2
2
  History
3
3
  =======
4
4
 
5
+ 1.2.2 (2025-05-09)
6
+ ------------------
7
+ * Docs: Improve layout of header (#125)
8
+ * Deployment: Add missing dependency for `packaging` package and support for Python 3.13 (PR #125, #127)
9
+
5
10
  1.2.1 (2024-12-12)
6
11
  ------------------
7
12
  * Deployment: Move from setup.py to pyproject.toml (PR #114, #115)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: sofar
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Maybe the most complete python package for SOFA files so far.
5
5
  Author-email: The pyfar developers <info@pyfar.org>
6
6
  License: MIT License
@@ -43,6 +43,7 @@ Classifier: Programming Language :: Python :: 3.9
43
43
  Classifier: Programming Language :: Python :: 3.10
44
44
  Classifier: Programming Language :: Python :: 3.11
45
45
  Classifier: Programming Language :: Python :: 3.12
46
+ Classifier: Programming Language :: Python :: 3.13
46
47
  Requires-Python: >=3.8
47
48
  Description-Content-Type: text/markdown
48
49
  License-File: LICENSE
@@ -50,6 +51,7 @@ Requires-Dist: netCDF4
50
51
  Requires-Dist: numpy>=1.14.0
51
52
  Requires-Dist: beautifulsoup4
52
53
  Requires-Dist: requests
54
+ Requires-Dist: packaging
53
55
  Provides-Extra: deploy
54
56
  Requires-Dist: twine; extra == "deploy"
55
57
  Requires-Dist: wheel; extra == "deploy"
@@ -72,6 +74,7 @@ Requires-Dist: sphinx-favicon; extra == "docs"
72
74
  Requires-Dist: sphinx-reredirects; extra == "docs"
73
75
  Provides-Extra: dev
74
76
  Requires-Dist: sofar[deploy,docs,tests]; extra == "dev"
77
+ Dynamic: license-file
75
78
 
76
79
  <h1 align="center">
77
80
  <img src="https://github.com/pyfar/gallery/raw/main/docs/resources/logos/pyfar_logos_fixed_size_sofar.png" width="300">
@@ -10,6 +10,7 @@ import os
10
10
  import sys
11
11
  import urllib3
12
12
  import shutil
13
+ import numpy as np
13
14
  sys.path.insert(0, os.path.abspath('..'))
14
15
 
15
16
  import sofar
@@ -117,7 +118,8 @@ html_theme_options = {
117
118
  "navbar_start": ["navbar-logo"],
118
119
  "navbar_end": ["navbar-icon-links", "theme-switcher"],
119
120
  "navbar_align": "content",
120
- "header_links_before_dropdown": 8,
121
+ "header_links_before_dropdown": None, # will be automatically set later based on headers.rst
122
+ "header_dropdown_text": "Packages", # Change dropdown name from "More" to "Packages"
121
123
  "icon_links": [
122
124
  {
123
125
  "name": "GitHub",
@@ -152,16 +154,44 @@ folders_in = [
152
154
  '_static/header.rst',
153
155
  'resources/logos/pyfar_logos_fixed_size_sofar.png',
154
156
  ]
155
- c = urllib3.PoolManager()
156
- for file in folders_in:
157
- url = link + file
158
- filename = file
159
- os.makedirs(os.path.dirname(filename), exist_ok=True)
160
- with c.request('GET', url, preload_content=False) as res, open(filename, 'wb') as out_file:
161
- shutil.copyfileobj(res, out_file)
157
+
158
+ def download_files_from_gallery(link, folders_in):
159
+ c = urllib3.PoolManager()
160
+ for file in folders_in:
161
+ url = link + file
162
+ filename = file
163
+ os.makedirs(os.path.dirname(filename), exist_ok=True)
164
+ with c.request('GET', url, preload_content=False) as res:
165
+ if res.status == 200:
166
+ with open(filename, 'wb') as out_file:
167
+ shutil.copyfileobj(res, out_file)
168
+
169
+ download_files_from_gallery(link, folders_in)
170
+ # if logo does not exist, use pyfar logo
171
+ if not os.path.exists(html_logo):
172
+ download_files_from_gallery(
173
+ link, ['resources/logos/pyfar_logos_fixed_size_pyfar.png'])
174
+ shutil.copyfile(
175
+ 'resources/logos/pyfar_logos_fixed_size_pyfar.png', html_logo)
162
176
 
163
177
  # replace sofar hard link to internal link
164
178
  with open("_static/header.rst", "rt") as fin:
165
179
  with open("header.rst", "wt") as fout:
166
- for line in fin:
167
- fout.write(line.replace(f'https://{project}.readthedocs.io', project))
180
+ lines = [line.replace(f'https://{project}.readthedocs.io', project) for line in fin]
181
+ contains_project = any(project in line for line in lines)
182
+
183
+ fout.writelines(lines)
184
+
185
+ # add project to the list of projects if not in header
186
+ if not contains_project:
187
+ fout.write(f' {project} <{project}>\n')
188
+
189
+ # count the number of gallery headings
190
+ count_gallery_headings = np.sum(
191
+ ['https://pyfar-gallery.readthedocs.io' in line for line in lines])
192
+
193
+
194
+ # set dropdown header after gallery headings
195
+ html_theme_options['header_links_before_dropdown'] = count_gallery_headings+1
196
+
197
+
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sofar"
3
- version = "1.2.1"
3
+ version = "1.2.2"
4
4
  description = "Maybe the most complete python package for SOFA files so far."
5
5
  readme = "README.md"
6
6
  license = {file = "LICENSE"}
@@ -23,12 +23,14 @@ classifiers = [
23
23
  "Programming Language :: Python :: 3.10",
24
24
  "Programming Language :: Python :: 3.11",
25
25
  "Programming Language :: Python :: 3.12",
26
+ "Programming Language :: Python :: 3.13",
26
27
  ]
27
28
  dependencies = [
28
29
  'netCDF4',
29
30
  'numpy>=1.14.0',
30
31
  'beautifulsoup4',
31
32
  'requests',
33
+ 'packaging',
32
34
  ]
33
35
 
34
36
  [project.optional-dependencies]
@@ -122,8 +124,9 @@ lint.select = [
122
124
  [tool.ruff.lint.pydocstyle]
123
125
  convention = "numpy"
124
126
 
127
+
125
128
  [tool.bumpversion]
126
- current_version = "1.2.1"
129
+ current_version = "1.2.2"
127
130
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
128
131
  serialize = ["{major}.{minor}.{patch}"]
129
132
  search = "{current_version}"
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
  __author__ = """The pyfar developers"""
4
4
  __email__ = 'info@pyfar.org'
5
- __version__ = '1.2.1'
5
+ __version__ = '1.2.2'
6
6
 
7
7
  from .sofa import Sofa
8
8
 
@@ -234,8 +234,8 @@ def write_sofa(filename: str, sofa: sf.Sofa, compression=4):
234
234
  The SOFA object that is written to disk
235
235
  compression : int
236
236
  The level of compression with ``0`` being no compression and ``9``
237
- being the best compression. The default of ``9`` optimizes the file
238
- size but increases the time for writing files to disk.
237
+ being the best compression. The default ``4`` is a tradeoff between
238
+ file size and the time required for reading and writing the file.
239
239
 
240
240
  Notes
241
241
  -----
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: sofar
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Maybe the most complete python package for SOFA files so far.
5
5
  Author-email: The pyfar developers <info@pyfar.org>
6
6
  License: MIT License
@@ -43,6 +43,7 @@ Classifier: Programming Language :: Python :: 3.9
43
43
  Classifier: Programming Language :: Python :: 3.10
44
44
  Classifier: Programming Language :: Python :: 3.11
45
45
  Classifier: Programming Language :: Python :: 3.12
46
+ Classifier: Programming Language :: Python :: 3.13
46
47
  Requires-Python: >=3.8
47
48
  Description-Content-Type: text/markdown
48
49
  License-File: LICENSE
@@ -50,6 +51,7 @@ Requires-Dist: netCDF4
50
51
  Requires-Dist: numpy>=1.14.0
51
52
  Requires-Dist: beautifulsoup4
52
53
  Requires-Dist: requests
54
+ Requires-Dist: packaging
53
55
  Provides-Extra: deploy
54
56
  Requires-Dist: twine; extra == "deploy"
55
57
  Requires-Dist: wheel; extra == "deploy"
@@ -72,6 +74,7 @@ Requires-Dist: sphinx-favicon; extra == "docs"
72
74
  Requires-Dist: sphinx-reredirects; extra == "docs"
73
75
  Provides-Extra: dev
74
76
  Requires-Dist: sofar[deploy,docs,tests]; extra == "dev"
77
+ Dynamic: license-file
75
78
 
76
79
  <h1 align="center">
77
80
  <img src="https://github.com/pyfar/gallery/raw/main/docs/resources/logos/pyfar_logos_fixed_size_sofar.png" width="300">
@@ -2,6 +2,7 @@ netCDF4
2
2
  numpy>=1.14.0
3
3
  beautifulsoup4
4
4
  requests
5
+ packaging
5
6
 
6
7
  [deploy]
7
8
  twine
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes