pynmrstar 3.3.5__cp38-cp38-musllinux_1_2_x86_64.whl → 3.3.6__cp38-cp38-musllinux_1_2_x86_64.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 pynmrstar might be problematic. Click here for more details.
- cnmrstar.cpython-38-x86_64-linux-gnu.so +0 -0
- pynmrstar/_internal.py +38 -69
- pynmrstar/_types.py +14 -0
- pynmrstar/entry.py +5 -3
- pynmrstar/loop.py +67 -46
- pynmrstar/saveframe.py +5 -3
- {pynmrstar-3.3.5.dist-info → pynmrstar-3.3.6.dist-info}/METADATA +3 -2
- pynmrstar-3.3.6.dist-info/RECORD +20 -0
- {pynmrstar-3.3.5.dist-info → pynmrstar-3.3.6.dist-info}/WHEEL +1 -1
- pynmrstar-3.3.5.dist-info/RECORD +0 -19
- {pynmrstar-3.3.5.dist-info → pynmrstar-3.3.6.dist-info}/LICENSE +0 -0
- {pynmrstar-3.3.5.dist-info → pynmrstar-3.3.6.dist-info}/top_level.txt +0 -0
|
Binary file
|
pynmrstar/_internal.py
CHANGED
|
@@ -7,23 +7,19 @@ import zlib
|
|
|
7
7
|
from datetime import date
|
|
8
8
|
from gzip import GzipFile
|
|
9
9
|
from io import StringIO, BytesIO
|
|
10
|
+
from pathlib import Path
|
|
10
11
|
from typing import Dict, Union, IO, List, Tuple
|
|
11
|
-
from urllib.error import
|
|
12
|
-
|
|
12
|
+
from urllib.error import URLError
|
|
13
|
+
|
|
14
|
+
import requests
|
|
13
15
|
|
|
14
16
|
import pynmrstar
|
|
15
17
|
|
|
16
|
-
__version__: str = "3.3.
|
|
18
|
+
__version__: str = "3.3.6"
|
|
17
19
|
min_cnmrstar_version: str = "3.2.0"
|
|
18
20
|
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
from requests import session as _requests_session
|
|
22
|
-
# This replaces the urllib HTTPError if we have requests
|
|
23
|
-
from requests.exceptions import HTTPError, ConnectionError
|
|
24
|
-
_session = _requests_session()
|
|
25
|
-
except ModuleNotFoundError:
|
|
26
|
-
_session = None
|
|
21
|
+
# Create a session to reuse for the duration of the program run
|
|
22
|
+
_session = requests.session()
|
|
27
23
|
|
|
28
24
|
logger = logging.getLogger('pynmrstar')
|
|
29
25
|
|
|
@@ -81,64 +77,34 @@ def _get_url_reliably(url: str, wait_time: float = 10, raw: bool = False, timeou
|
|
|
81
77
|
|
|
82
78
|
global _session
|
|
83
79
|
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
try:
|
|
81
|
+
response = _session.get(url, timeout=timeout,
|
|
82
|
+
headers={'Application': f'PyNMRSTAR {__version__}'})
|
|
83
|
+
except requests.exceptions.ConnectionError:
|
|
84
|
+
_session = requests.session()
|
|
86
85
|
try:
|
|
87
86
|
response = _session.get(url, timeout=timeout,
|
|
88
87
|
headers={'Application': f'PyNMRSTAR {__version__}'})
|
|
89
|
-
except ConnectionError:
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
if retries > 0:
|
|
100
|
-
logger.warning(f'We were rate limited. Sleeping for {wait_time} seconds.')
|
|
101
|
-
time.sleep(wait_time)
|
|
102
|
-
return _get_url_reliably(url, wait_time=wait_time*2, raw=raw, timeout=timeout,
|
|
103
|
-
retries=retries - 1)
|
|
104
|
-
else:
|
|
105
|
-
raise HTTPError("Continued to receive 403 (forbidden, due to rate limit) after multiple wait times.") \
|
|
106
|
-
from None
|
|
107
|
-
if response.status_code == 404:
|
|
108
|
-
raise KeyError(f"Server returned 404.") from None
|
|
109
|
-
response.raise_for_status()
|
|
110
|
-
if raw:
|
|
111
|
-
return response.content
|
|
88
|
+
except requests.exceptions.ConnectionError:
|
|
89
|
+
raise requests.exceptions.HTTPError("A ConnectionError was thrown during an attempt to load the entry.")
|
|
90
|
+
|
|
91
|
+
# We are rate limited - sleep and try again
|
|
92
|
+
if response.status_code == 403:
|
|
93
|
+
if retries > 0:
|
|
94
|
+
logger.warning(f'We were rate limited. Sleeping for {wait_time} seconds.')
|
|
95
|
+
time.sleep(wait_time)
|
|
96
|
+
return _get_url_reliably(url, wait_time=wait_time * 2, raw=raw, timeout=timeout,
|
|
97
|
+
retries=retries - 1)
|
|
112
98
|
else:
|
|
113
|
-
|
|
99
|
+
raise requests.exceptions.HTTPError("Continued to receive 403 (forbidden, due to rate limit) after multiple wait times.") \
|
|
100
|
+
from None
|
|
101
|
+
if response.status_code == 404:
|
|
102
|
+
raise KeyError(f"Server returned 404.") from None
|
|
103
|
+
response.raise_for_status()
|
|
104
|
+
if raw:
|
|
105
|
+
return response.content
|
|
114
106
|
else:
|
|
115
|
-
|
|
116
|
-
try:
|
|
117
|
-
req = Request(url)
|
|
118
|
-
req.add_header('Application', f'PyNMRSTAR {__version__}')
|
|
119
|
-
url_request = urlopen(req, timeout=timeout)
|
|
120
|
-
serialized_ent = url_request.read()
|
|
121
|
-
url_request.close()
|
|
122
|
-
|
|
123
|
-
except HTTPError as err:
|
|
124
|
-
if err.code == 404:
|
|
125
|
-
raise KeyError(f"Server returned 404.") from None
|
|
126
|
-
# We are rate limited - sleep and try again
|
|
127
|
-
elif err.code == 403:
|
|
128
|
-
if retries > 0:
|
|
129
|
-
logger.warning(f'We were rate limited. Sleeping for {wait_time} seconds.')
|
|
130
|
-
time.sleep(wait_time)
|
|
131
|
-
return _get_url_reliably(url, wait_time=wait_time * 2, raw=raw, timeout=timeout,
|
|
132
|
-
retries=retries - 1)
|
|
133
|
-
else:
|
|
134
|
-
raise HTTPError("Continued to receive 403 (forbidden, due to rate limit) after multiple wait "
|
|
135
|
-
"times.") from None
|
|
136
|
-
else:
|
|
137
|
-
raise err
|
|
138
|
-
if raw:
|
|
139
|
-
return serialized_ent
|
|
140
|
-
else:
|
|
141
|
-
return serialized_ent.decode()
|
|
107
|
+
return response.text
|
|
142
108
|
|
|
143
109
|
|
|
144
110
|
def _get_entry_from_database(entry_num: Union[str, int],
|
|
@@ -161,7 +127,7 @@ def _get_entry_from_database(entry_num: Union[str, int],
|
|
|
161
127
|
if "error" in json_data:
|
|
162
128
|
raise RuntimeError('Something wrong with API response.')
|
|
163
129
|
ent = pynmrstar.Entry.from_json(json_data)
|
|
164
|
-
except (HTTPError, ConnectionError, RuntimeError):
|
|
130
|
+
except (requests.exceptions.HTTPError, requests.exceptions.ConnectionError, RuntimeError):
|
|
165
131
|
# Can't fall back to FTP for chemcomps
|
|
166
132
|
if entry_num.startswith("chemcomp"):
|
|
167
133
|
raise IOError("Unable to load that chemcomp from the API.")
|
|
@@ -176,7 +142,7 @@ def _get_entry_from_database(entry_num: Union[str, int],
|
|
|
176
142
|
# Use a longer timeout for the timeout
|
|
177
143
|
entry_content = _get_url_reliably(url, raw=False, timeout=20, retries=1)
|
|
178
144
|
ent = pynmrstar.Entry.from_string(entry_content)
|
|
179
|
-
except HTTPError:
|
|
145
|
+
except requests.exceptions.HTTPError:
|
|
180
146
|
raise IOError(f"Entry {entry_num} does not exist in the public database.") from None
|
|
181
147
|
except URLError:
|
|
182
148
|
raise IOError("You don't appear to have an active internet connection. Cannot fetch entry.") from None
|
|
@@ -206,7 +172,7 @@ def _get_entry_from_database(entry_num: Union[str, int],
|
|
|
206
172
|
return ent
|
|
207
173
|
|
|
208
174
|
|
|
209
|
-
def _interpret_file(the_file: Union[str, IO]) -> StringIO:
|
|
175
|
+
def _interpret_file(the_file: Union[str, Path, IO]) -> StringIO:
|
|
210
176
|
"""Helper method returns some sort of object with a read() method.
|
|
211
177
|
the_file could be a URL, a file location, a file object, or a
|
|
212
178
|
gzipped version of any of the above."""
|
|
@@ -225,6 +191,9 @@ def _interpret_file(the_file: Union[str, IO]) -> StringIO:
|
|
|
225
191
|
else:
|
|
226
192
|
with open(the_file, 'rb') as read_file:
|
|
227
193
|
buffer = BytesIO(read_file.read())
|
|
194
|
+
elif isinstance(the_file, Path):
|
|
195
|
+
with open(str(the_file), 'rb') as read_file:
|
|
196
|
+
buffer = BytesIO(read_file.read())
|
|
228
197
|
else:
|
|
229
198
|
raise ValueError("Cannot figure out how to interpret the file you passed.")
|
|
230
199
|
|
|
@@ -269,7 +238,7 @@ def get_clean_tag_list(item: Union[str, List[str], Tuple[str]]) -> List[Dict[str
|
|
|
269
238
|
|
|
270
239
|
|
|
271
240
|
def write_to_file(nmrstar_object: Union['pynmrstar.Entry', 'pynmrstar.Saveframe'],
|
|
272
|
-
file_name: str,
|
|
241
|
+
file_name: Union[str, Path],
|
|
273
242
|
format_: str = "nmrstar",
|
|
274
243
|
show_comments: bool = True,
|
|
275
244
|
skip_empty_loops: bool = False,
|
|
@@ -287,6 +256,6 @@ def write_to_file(nmrstar_object: Union['pynmrstar.Entry', 'pynmrstar.Saveframe'
|
|
|
287
256
|
elif format_ == "json":
|
|
288
257
|
data_to_write = nmrstar_object.get_json()
|
|
289
258
|
|
|
290
|
-
out_file = open(file_name, "w")
|
|
259
|
+
out_file = open(str(file_name), "w")
|
|
291
260
|
out_file.write(data_to_write)
|
|
292
261
|
out_file.close()
|
pynmrstar/_types.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from typing import Dict, Any, List, Union
|
|
2
|
+
|
|
3
|
+
RowDict = Dict[str, Any] # One row: tag → value
|
|
4
|
+
ColumnarDict = Dict[str, List[Any]] # One column per tag
|
|
5
|
+
RowMatrix = List[List[Any]] # Matrix of rows (format #3)
|
|
6
|
+
FlatRow = List[Any] # One flat row (format #4)
|
|
7
|
+
|
|
8
|
+
DataInput = Union[
|
|
9
|
+
RowDict, # format #1 – single row
|
|
10
|
+
List[RowDict], # format #1 – many rows
|
|
11
|
+
ColumnarDict, # format #2 – columnar
|
|
12
|
+
RowMatrix, # format #3 – list of lists
|
|
13
|
+
FlatRow, # format #4 – flat list
|
|
14
|
+
]
|
pynmrstar/entry.py
CHANGED
|
@@ -3,6 +3,7 @@ import json
|
|
|
3
3
|
import logging
|
|
4
4
|
import warnings
|
|
5
5
|
from io import StringIO
|
|
6
|
+
from pathlib import Path
|
|
6
7
|
from typing import TextIO, BinaryIO, Union, List, Optional, Dict, Any, Tuple
|
|
7
8
|
|
|
8
9
|
from pynmrstar import definitions, utils, loop as loop_mod, parser as parser_mod, saveframe as saveframe_mod
|
|
@@ -304,13 +305,14 @@ class Entry(object):
|
|
|
304
305
|
|
|
305
306
|
@classmethod
|
|
306
307
|
def from_file(cls,
|
|
307
|
-
the_file: Union[str, TextIO, BinaryIO],
|
|
308
|
+
the_file: Union[str, Path, TextIO, BinaryIO],
|
|
308
309
|
convert_data_types: bool = False,
|
|
309
310
|
raise_parse_warnings: bool = False,
|
|
310
311
|
schema: Schema = None):
|
|
311
312
|
"""Create an entry by loading in a file. If the_file starts with
|
|
312
313
|
http://, https://, or ftp:// then we will use those protocols to
|
|
313
|
-
attempt to open the file.
|
|
314
|
+
attempt to open the file. the_file can be a string path, pathlib.Path
|
|
315
|
+
object, or an open file handle.
|
|
314
316
|
|
|
315
317
|
Setting convert_data_types to True will automatically convert
|
|
316
318
|
the data loaded from the file into the corresponding python type as
|
|
@@ -956,7 +958,7 @@ class Entry(object):
|
|
|
956
958
|
|
|
957
959
|
return errors
|
|
958
960
|
|
|
959
|
-
def write_to_file(self, file_name: str, format_: str = "nmrstar", show_comments: bool = True,
|
|
961
|
+
def write_to_file(self, file_name: Union[str, Path], format_: str = "nmrstar", show_comments: bool = True,
|
|
960
962
|
skip_empty_loops: bool = False, skip_empty_tags: bool = False) -> None:
|
|
961
963
|
""" Writes the entry to the specified file in NMR-STAR format.
|
|
962
964
|
|
pynmrstar/loop.py
CHANGED
|
@@ -4,10 +4,12 @@ from copy import deepcopy
|
|
|
4
4
|
from csv import reader as csv_reader, writer as csv_writer
|
|
5
5
|
from io import StringIO
|
|
6
6
|
from itertools import chain
|
|
7
|
+
from pathlib import Path
|
|
7
8
|
from typing import TextIO, BinaryIO, Union, List, Optional, Any, Dict, Callable, Tuple
|
|
8
9
|
|
|
9
10
|
from pynmrstar import definitions, utils, entry as entry_mod
|
|
10
11
|
from pynmrstar._internal import _json_serialize, _interpret_file
|
|
12
|
+
from pynmrstar._types import DataInput
|
|
11
13
|
from pynmrstar.exceptions import InvalidStateError
|
|
12
14
|
from pynmrstar.parser import Parser
|
|
13
15
|
from pynmrstar.schema import Schema
|
|
@@ -294,7 +296,7 @@ class Loop(object):
|
|
|
294
296
|
|
|
295
297
|
@classmethod
|
|
296
298
|
def from_file(cls,
|
|
297
|
-
the_file: Union[str, TextIO, BinaryIO],
|
|
299
|
+
the_file: Union[str, Path, TextIO, BinaryIO],
|
|
298
300
|
csv: bool = False,
|
|
299
301
|
convert_data_types: bool = False,
|
|
300
302
|
raise_parse_warnings: bool = False,
|
|
@@ -302,7 +304,8 @@ class Loop(object):
|
|
|
302
304
|
"""Create a loop by loading in a file. Specify csv=True if
|
|
303
305
|
the file is a CSV file. If the_file starts with http://,
|
|
304
306
|
https://, or ftp:// then we will use those protocols to attempt
|
|
305
|
-
to open the file.
|
|
307
|
+
to open the file. the_file can be a string path, pathlib.Path object,
|
|
308
|
+
or an open file handle.
|
|
306
309
|
|
|
307
310
|
Setting convert_data_types to True will automatically convert
|
|
308
311
|
the data loaded from the file into the corresponding python type as
|
|
@@ -458,49 +461,66 @@ class Loop(object):
|
|
|
458
461
|
|
|
459
462
|
return True
|
|
460
463
|
|
|
461
|
-
def add_data(
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
464
|
+
def add_data(
|
|
465
|
+
self,
|
|
466
|
+
data: DataInput,
|
|
467
|
+
rearrange: bool = False,
|
|
468
|
+
convert_data_types: bool = False,
|
|
469
|
+
schema: Union[Schema, None] = None,
|
|
470
|
+
) -> None:
|
|
471
|
+
"""
|
|
472
|
+
Add data to a loop.
|
|
473
|
+
|
|
474
|
+
You can supply *data* in **four** canonical formats. Formats #1 and #2
|
|
475
|
+
are the most convenient; the others are retained mainly for legacy code.
|
|
476
|
+
|
|
477
|
+
1. **Row‑oriented dictionaries** *(preferred)*
|
|
478
|
+
• a **list** of dictionaries,
|
|
479
|
+
where each dictionary represents one row::
|
|
480
|
+
|
|
481
|
+
[{'name': 'Jeff', 'location': 'Connecticut'},
|
|
482
|
+
{'name': 'Chad', 'location': 'Madison'}]
|
|
483
|
+
|
|
484
|
+
2. **Column‑oriented dictionary of lists**
|
|
485
|
+
A dictionary mapping each tag to a list of values (or to a single
|
|
486
|
+
scalar)::
|
|
487
|
+
|
|
488
|
+
{'name': ['Jeff', 'Chad'],
|
|
489
|
+
'location': ['Connecticut', 'Madison']}
|
|
490
|
+
|
|
491
|
+
All value‑lists must be the same length; that length determines the
|
|
492
|
+
number of rows created.
|
|
493
|
+
|
|
494
|
+
3. **Matrix of values**
|
|
495
|
+
A list of lists whose inner order exactly matches the loop’s current
|
|
496
|
+
tag order::
|
|
497
|
+
|
|
498
|
+
[['Jeff', 'Connecticut'],
|
|
499
|
+
['Chad', 'Madison']]
|
|
500
|
+
|
|
501
|
+
4. **Flat list of values**
|
|
502
|
+
A single list whose length is either:
|
|
503
|
+
• exactly the number of tags (adds one row), or
|
|
504
|
+
• any multiple of that length **when** ``rearrange=True``::
|
|
505
|
+
|
|
506
|
+
['Jeff', 'Connecticut'] # one row
|
|
507
|
+
['Jeff', 'Connecticut', 'Chad', 'Madison'] # two rows (requires rearrange=True)
|
|
508
|
+
|
|
509
|
+
This form is discouraged and kept only for backward compatibility.
|
|
510
|
+
|
|
511
|
+
Parameters
|
|
512
|
+
----------
|
|
513
|
+
data
|
|
514
|
+
The data to add, in any of the formats described above.
|
|
515
|
+
rearrange
|
|
516
|
+
Only used with format #4. When ``True`` the flat list is split into
|
|
517
|
+
evenly sized rows. Rarely needed outside of old parsers.
|
|
518
|
+
convert_data_types
|
|
519
|
+
If ``True`` each value is converted to the type defined in *schema*
|
|
520
|
+
before insertion.
|
|
521
|
+
schema
|
|
522
|
+
A :class:`pynmrstar.Schema` instance used when
|
|
523
|
+
``convert_data_types`` is ``True``.
|
|
504
524
|
"""
|
|
505
525
|
|
|
506
526
|
if not data:
|
|
@@ -564,7 +584,8 @@ class Loop(object):
|
|
|
564
584
|
# Add the user data
|
|
565
585
|
pending_data.append(data)
|
|
566
586
|
else:
|
|
567
|
-
raise ValueError("Your data did not match one of the supported types."
|
|
587
|
+
raise ValueError("Your data did not match one of the supported types. Please review the documentation for "
|
|
588
|
+
"proper usage of this function.")
|
|
568
589
|
|
|
569
590
|
# Auto convert data types if option set
|
|
570
591
|
if convert_data_types:
|
pynmrstar/saveframe.py
CHANGED
|
@@ -2,6 +2,7 @@ import json
|
|
|
2
2
|
import warnings
|
|
3
3
|
from csv import reader as csv_reader, writer as csv_writer
|
|
4
4
|
from io import StringIO
|
|
5
|
+
from pathlib import Path
|
|
5
6
|
from typing import TextIO, BinaryIO, Union, List, Optional, Any, Dict, Iterable, Tuple
|
|
6
7
|
|
|
7
8
|
from pynmrstar import definitions, entry as entry_mod, loop as loop_mod, parser as parser_mod, utils
|
|
@@ -346,7 +347,7 @@ class Saveframe(object):
|
|
|
346
347
|
|
|
347
348
|
@classmethod
|
|
348
349
|
def from_file(cls,
|
|
349
|
-
the_file: Union[str, TextIO, BinaryIO],
|
|
350
|
+
the_file: Union[str, Path, TextIO, BinaryIO],
|
|
350
351
|
csv: bool = False,
|
|
351
352
|
convert_data_types: bool = False,
|
|
352
353
|
raise_parse_warnings: bool = False,
|
|
@@ -354,7 +355,8 @@ class Saveframe(object):
|
|
|
354
355
|
"""Create a saveframe by loading in a file. Specify csv=True is
|
|
355
356
|
the file is a CSV file. If the_file starts with http://,
|
|
356
357
|
https://, or ftp:// then we will use those protocols to attempt
|
|
357
|
-
to open the file.
|
|
358
|
+
to open the file. the_file can be a string path, pathlib.Path object,
|
|
359
|
+
or an open file handle.
|
|
358
360
|
|
|
359
361
|
Setting convert_data_types to True will automatically convert
|
|
360
362
|
the data loaded from the file into the corresponding python type as
|
|
@@ -998,7 +1000,7 @@ class Saveframe(object):
|
|
|
998
1000
|
return errors
|
|
999
1001
|
|
|
1000
1002
|
def write_to_file(self,
|
|
1001
|
-
file_name: str,
|
|
1003
|
+
file_name: Union[str, Path],
|
|
1002
1004
|
format_: str = "nmrstar",
|
|
1003
1005
|
show_comments: bool = True,
|
|
1004
1006
|
skip_empty_loops: bool = False,
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pynmrstar
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.6
|
|
4
4
|
Summary: PyNMR-STAR provides tools for reading, writing, modifying, and interacting with NMR-STAR files. Maintained by the BMRB.
|
|
5
5
|
Home-page: https://github.com/uwbmrb/PyNMRSTAR
|
|
6
6
|
Author: Jon Wedell
|
|
7
|
-
Author-email: wedell@uchc.edu
|
|
7
|
+
Author-email: Jon Wedell <wedell@uchc.edu>
|
|
8
8
|
License: MIT
|
|
9
|
+
Project-URL: Homepage, https://github.com/bmrb-io/PyNMRSTAR
|
|
9
10
|
Keywords: bmrb,parser,nmr,nmrstar,biomagresbank,biological magnetic resonance bank
|
|
10
11
|
Classifier: Development Status :: 6 - Mature
|
|
11
12
|
Classifier: Environment :: Console
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
cnmrstar.cpython-38-x86_64-linux-gnu.so,sha256=FLnyrLjJnVDDqksFP9Hkbud_oF_DVRpaTEp6jeYOdVc,61200
|
|
2
|
+
pynmrstar/__init__.py,sha256=z9uQkhmqipDrLHpEk81w7y7HEgepEcKyK7ZWr8YavJA,1967
|
|
3
|
+
pynmrstar/_internal.py,sha256=sf_qxTXdWejDLn2fqEqKr-wC0OtNHNgDud3AurGj3OA,10756
|
|
4
|
+
pynmrstar/_types.py,sha256=INDwmnS3s1RkLg64A--hoJyZNnWJl6cHP5HTRXaO9EY,626
|
|
5
|
+
pynmrstar/definitions.py,sha256=H4X8POb0CsA9lv8tiLupH0wBzKPdyy5OZCe0A1OqZiU,1510
|
|
6
|
+
pynmrstar/entry.py,sha256=NtEyXt4MUFEZ0REnGyeOhTMKEwqot3XmWE8_ENwciC8,46369
|
|
7
|
+
pynmrstar/exceptions.py,sha256=xJlGbHB_QXMiNWuU_6livAQBMljBuCba50WA_K9pIbc,1449
|
|
8
|
+
pynmrstar/loop.py,sha256=VoYs_qc2ESFDg-FLAb8urLe5geSyiGrEfJ3ySFr0miA,51128
|
|
9
|
+
pynmrstar/parser.py,sha256=cYnRBkQAdXJU_HY6WCcWMY0Rq2weDyr1hxiWOoQbNfg,15546
|
|
10
|
+
pynmrstar/saveframe.py,sha256=CfK_8SoZBNeTNtKxsjxg3pEta2qkbFzBV70V7jyzd_Q,44261
|
|
11
|
+
pynmrstar/schema.py,sha256=tJsVHkVQR8glvchFBzlRvGDpx2HxS76eucAjR_aKVog,15779
|
|
12
|
+
pynmrstar/utils.py,sha256=rd7JkVM9B7gMiveO0RhH6YtoJTB0CUiggsPtSVzmvl8,4662
|
|
13
|
+
pynmrstar/reference_files/comments.str,sha256=vOGWBs5XU3ddNyROkVOhaPwGb8kx5stoChgo6ICBMio,9942
|
|
14
|
+
pynmrstar/reference_files/data_types.csv,sha256=awbw34Icg16-6epkQLGRM5dEvthcq3hvkgbt6rlZh0I,3432
|
|
15
|
+
pynmrstar/reference_files/schema.csv,sha256=BfAJyjfDQaZakdEL5V97dTSDxwgxQZCIp1DeKEhT65w,3694703
|
|
16
|
+
pynmrstar-3.3.6.dist-info/LICENSE,sha256=pAZXnNE2dxxwXFIduGyn1gpvPefJtUYOYZOi3yeGG94,1068
|
|
17
|
+
pynmrstar-3.3.6.dist-info/METADATA,sha256=lrR22Dt_JUZ0gA8ezLB3yeFq8AUcAP4sRs-K_MSakGI,2511
|
|
18
|
+
pynmrstar-3.3.6.dist-info/WHEEL,sha256=AtKzrIIwO6LyEQPNa-CKogjoLSeXFnST8-hqmpwwZQA,110
|
|
19
|
+
pynmrstar-3.3.6.dist-info/top_level.txt,sha256=e5QP9re453LfgZ_mZNGHa7E5HFAXiRoNBPkF1hnn7JQ,19
|
|
20
|
+
pynmrstar-3.3.6.dist-info/RECORD,,
|
pynmrstar-3.3.5.dist-info/RECORD
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
cnmrstar.cpython-38-x86_64-linux-gnu.so,sha256=P20Ue2X2E-VQjICWiBEbvQHJ8B6wr4aEis3BkJVmwrI,61072
|
|
2
|
-
pynmrstar/loop.py,sha256=46vAeXMtKaSovLzFhhiFQCz1nsNqOJPSVpkTTa9tbtg,51892
|
|
3
|
-
pynmrstar/exceptions.py,sha256=xJlGbHB_QXMiNWuU_6livAQBMljBuCba50WA_K9pIbc,1449
|
|
4
|
-
pynmrstar/schema.py,sha256=tJsVHkVQR8glvchFBzlRvGDpx2HxS76eucAjR_aKVog,15779
|
|
5
|
-
pynmrstar/_internal.py,sha256=GNWZPAKI7swRfqndVKamFyATNdNa_3nhocTvzT-fM4Y,12068
|
|
6
|
-
pynmrstar/parser.py,sha256=cYnRBkQAdXJU_HY6WCcWMY0Rq2weDyr1hxiWOoQbNfg,15546
|
|
7
|
-
pynmrstar/definitions.py,sha256=H4X8POb0CsA9lv8tiLupH0wBzKPdyy5OZCe0A1OqZiU,1510
|
|
8
|
-
pynmrstar/__init__.py,sha256=z9uQkhmqipDrLHpEk81w7y7HEgepEcKyK7ZWr8YavJA,1967
|
|
9
|
-
pynmrstar/utils.py,sha256=rd7JkVM9B7gMiveO0RhH6YtoJTB0CUiggsPtSVzmvl8,4662
|
|
10
|
-
pynmrstar/entry.py,sha256=BcwVtSdfcDj4NWzmWvSbwilG9whxTk6CyZUbR15mLBk,46240
|
|
11
|
-
pynmrstar/saveframe.py,sha256=5p-_NWi2nEju2FtJG5zm1aSdJrSZi_5lkCMIpTHWXYI,44133
|
|
12
|
-
pynmrstar/reference_files/comments.str,sha256=vOGWBs5XU3ddNyROkVOhaPwGb8kx5stoChgo6ICBMio,9942
|
|
13
|
-
pynmrstar/reference_files/schema.csv,sha256=BfAJyjfDQaZakdEL5V97dTSDxwgxQZCIp1DeKEhT65w,3694703
|
|
14
|
-
pynmrstar/reference_files/data_types.csv,sha256=awbw34Icg16-6epkQLGRM5dEvthcq3hvkgbt6rlZh0I,3432
|
|
15
|
-
pynmrstar-3.3.5.dist-info/METADATA,sha256=DDi4dJhZ0O9p6mWUX2bd72UtKVfKySfqa1uSJEOQRN8,2438
|
|
16
|
-
pynmrstar-3.3.5.dist-info/RECORD,,
|
|
17
|
-
pynmrstar-3.3.5.dist-info/top_level.txt,sha256=e5QP9re453LfgZ_mZNGHa7E5HFAXiRoNBPkF1hnn7JQ,19
|
|
18
|
-
pynmrstar-3.3.5.dist-info/WHEEL,sha256=JMCHihuaOwyE4j7UN3MRJaa_mm3Hn9L3awlgWmPJIX8,110
|
|
19
|
-
pynmrstar-3.3.5.dist-info/LICENSE,sha256=pAZXnNE2dxxwXFIduGyn1gpvPefJtUYOYZOi3yeGG94,1068
|
|
File without changes
|
|
File without changes
|