pychemstation 0.4.7.dev3__py3-none-any.whl → 0.5.0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pychemstation
3
- Version: 0.4.7.dev3
3
+ Version: 0.5.0
4
4
  Summary: Library to interact with Chemstation software, primarily used in Hein lab
5
5
  Home-page: https://gitlab.com/heingroup/pychemstation
6
6
  Author: Lucy Hao
@@ -13,6 +13,8 @@ License-File: LICENSE
13
13
  Requires-Dist: polling
14
14
  Requires-Dist: seabreeze
15
15
 
16
+ from tests.test_chemstation_integration import SEQUENCE_DIR
17
+
16
18
  # Agilent HPLC Macro Control
17
19
 
18
20
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/pychemstation)
@@ -59,26 +61,27 @@ HPLCTalk_Run
59
61
  ## Example Usage
60
62
 
61
63
  ```python
62
- from pychemstation.control import HPLCController, MethodController, SequenceController
64
+ from pychemstation.control import HPLCController
63
65
  import pandas as pd
64
66
 
65
67
  # these paths will be unique to your Chemstation setup
68
+ DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
69
+ DEFAULT_METHOD = "GENERAL-POROSHELL"
66
70
  DEFAULT_METHOD_DIR = "C:\\ChemStation\\1\\Methods\\"
67
71
  DATA_DIR = "C:\\Users\\Public\\Documents\\ChemStation\\2\\Data"
68
- DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\hplc-method-optimization\\tests"
72
+ SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\2\\Sequence"
69
73
 
70
74
  hplc_controller = HPLCController(data_dir=DATA_DIR,
71
- comm_dir=DEFAULT_COMMAND_PATH)
72
- method_controller = MethodController(controller=hplc_controller,
73
- src=DEFAULT_METHOD_DIR)
75
+ comm_dir=DEFAULT_COMMAND_PATH,
76
+ sequence_dir=SEQUENCE_DIR,
77
+ method_dir=DEFAULT_METHOD_DIR)
74
78
 
75
79
  hplc_controller.preprun()
76
- method_controller.switch(method_name="General-Poroshell")
77
- method_controller.run(experiment_name="Run 10")
78
- data_ready = method_controller.data_ready()
80
+ hplc_controller.switch_method(method_name=DEFAULT_METHOD)
81
+ hplc_controller.run_method(experiment_name="Run 10")
82
+ data_status_valid, chrom = hplc_controller.get_last_run_method_data()
79
83
 
80
- if data_ready:
81
- chrom = method_controller.get_data()
84
+ if data_status_valid:
82
85
  # afterwards, save, analyze or plot the data!
83
86
  values = {"x": chrom.x, "y": chrom.y}
84
87
  chromatogram_data = pd.DataFrame.from_dict(values)
@@ -0,0 +1,40 @@
1
+ .DS_Store,sha256=1lFlJ5EFymdzGAUAaI30vcaaLHt3F1LwpG7xILf9jsM,6148
2
+ pychemstation/__init__.py,sha256=SpTl-Tg1B1HTyjNOE-8ue-N2wGnXN_2zl7RFUSxlkiM,33
3
+ pychemstation/analysis/__init__.py,sha256=EWoU47iyn9xGS-b44zK9eq50bSjOV4AC5dvt420YMI4,44
4
+ pychemstation/analysis/base_spectrum.py,sha256=XPf9eJ72uz0CnxCY5uFOyu1MbVX-OTTXeN1tLzIMok4,16536
5
+ pychemstation/analysis/spec_utils.py,sha256=UOo9hJR3evJfmaohEEsyb7aq6X996ofuUfu-GKjiDi8,10201
6
+ pychemstation/analysis/utils.py,sha256=ISupAOb_yqA4_DZRK9v18UL-XjUQccAicIJKb1VMnGg,2055
7
+ pychemstation/control/__init__.py,sha256=aH9cPf-ljrVeVhN0K3cyEcAavmPXCjhhOnpLNf8qLqE,106
8
+ pychemstation/control/chromatogram.py,sha256=c4_RGconn4vYU9wyS0WX-GB5FlwnBf_sfVLh_GpeehE,3716
9
+ pychemstation/control/comm.py,sha256=8hjzp-MWWDYyYsEOdlpaJeWd-8eDQw5Y84pyMToK8gE,6008
10
+ pychemstation/control/hplc.py,sha256=xsfg0VWHSYy2f0YWxCAKxbyDla-POhp02zF5tgBPIVo,5829
11
+ pychemstation/control/method.py,sha256=h9KcccDtqx0hQT7JaUc1TWCB8d21t0McOuzeBsEsh4c,10977
12
+ pychemstation/control/sequence.py,sha256=ewc7l44VAtv3wHV2QgOILu5Ny3gmubHuEeHJN9N6OjQ,7511
13
+ pychemstation/control/table_controller.py,sha256=83i1J2CvIrJ3NtAB_E46qhUe8MvXo1_GnDPmuiq-vSA,2957
14
+ pychemstation/control/table/__init__.py,sha256=RgMN4uIWHdNUHpGRBWdzmzAbk7XEKl6Y-qtqWCxzSZU,124
15
+ pychemstation/control/table/method.py,sha256=pywWVFXpdewA-5pXmcmvauX2WsjFQtrAiOSBFYCJfLE,11946
16
+ pychemstation/control/table/sequence.py,sha256=x3uftd9Y-otLPdJv1Bnamcv2mWmj6mqSo5H5yfVBRiw,8510
17
+ pychemstation/control/table/table_controller.py,sha256=g8IPKIyLbPcXfJDN2DvKtPd9sImbUdoI44qTutQzPi8,4986
18
+ pychemstation/generated/__init__.py,sha256=GAoZFAYbPVEJDkcOw3e1rgOqd7TCW0HyKNPM8OMehMg,1005
19
+ pychemstation/generated/dad_method.py,sha256=0W8Z5WDtF5jpIcudMqb7XrkTnR2EGg_QOCsHRFQ0rmM,8402
20
+ pychemstation/generated/pump_method.py,sha256=sUhE2Oo00nzVcoONtq3EMWsN4wLSryXbG8f3EeViWKg,12174
21
+ pychemstation/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ pychemstation/utils/chemstation.py,sha256=bnFIsZZwFy9NKzVUf517yN-ogzQbm0hp_aho3KUD6Is,9317
23
+ pychemstation/utils/chromatogram.py,sha256=35nvEh6prVsWO6lMHYgGuidUOFHv954_7MNf0Az3Fz4,3759
24
+ pychemstation/utils/constants.py,sha256=jLY-NixemSofukzSXJhAIU4aO2IJmBRAhAcq5066mFI,249
25
+ pychemstation/utils/hplc_param_types.py,sha256=xvmsbYQp3iiS1-0-9eUy--5zk_wE1bkrlHEHSm0UC18,5206
26
+ pychemstation/utils/macro.py,sha256=ngIhLfFCRXbFzfFu5y3LbWy16W1T2CErnx1374JjG0w,2284
27
+ pychemstation/utils/method_types.py,sha256=tVpmWKa2BdkvpaEcvVIKOTjF76ZfHGryw168GXYoKDA,868
28
+ pychemstation/utils/parsing.py,sha256=bnFIsZZwFy9NKzVUf517yN-ogzQbm0hp_aho3KUD6Is,9317
29
+ pychemstation/utils/sequence_types.py,sha256=7qcyCSH35KwtVXKIkTyepGxc_E_0Mc8nYpbvcawaAZA,831
30
+ pychemstation/utils/table_types.py,sha256=BBCRoz1R6zPV1i2u2Tdku7WwIp6EDv1rUuZVPVNgO1A,2090
31
+ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
+ tests/constants.py,sha256=TPwdBhG9M7VIZ5sxqEfspqC2pUS9ZSQM4z7ZKiKwzSo,625
33
+ tests/test_comm.py,sha256=SvA9xuYnyXApMN2NniEW3rDRadknjCgKwlCV4WANyfk,2460
34
+ tests/test_method.py,sha256=DGMDGj_O-YDc4-JYVEP152DxH81qsHP3E-5ZDlaKmTQ,2203
35
+ tests/test_sequence.py,sha256=4xQBsVtIpNAaJ9It5XIh8zSdgbH7rULTCr7MnqPJQyI,3932
36
+ pychemstation-0.5.0.dist-info/LICENSE,sha256=9bdF75gIf1MecZ7oymqWgJREVz7McXPG-mjqrTmzzD8,18658
37
+ pychemstation-0.5.0.dist-info/METADATA,sha256=rtbeMfqGZz7rSuFDL-ChwK7Z2jc4F12_w9qEoT5NSpw,4020
38
+ pychemstation-0.5.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
39
+ pychemstation-0.5.0.dist-info/top_level.txt,sha256=zXfKu_4nYWwPHo3OsuhshMNC3SPkcoTGCyODjURaghY,20
40
+ pychemstation-0.5.0.dist-info/RECORD,,
tests/__init__.py ADDED
File without changes
tests/constants.py ADDED
@@ -0,0 +1,12 @@
1
+
2
+ # CONSTANTS: paths only work in Hein group HPLC machine in room 242
3
+ DEFAULT_COMMAND_PATH = "C:\\Users\\User\\Desktop\\Lucy\\"
4
+ DEFAULT_METHOD = "GENERAL-POROSHELL-OPT"
5
+ DEFAULT_TESTING_METHOD = "GENERAL-POROSHELL-MIN"
6
+ DEFAULT_METHOD_DIR = "C:\\ChemStation\\1\\Methods\\"
7
+ DATA_DIR = "C:\\Users\\Public\\Documents\\ChemStation\\3\\Data"
8
+ SEQUENCE_DIR = "C:\\USERS\\PUBLIC\\DOCUMENTS\\CHEMSTATION\\3\\Sequence"
9
+ DEFAULT_SEQUENCE = "hplc_testing"
10
+ METHOD_EXAMPLE = "/Users/lucyhao/Codes/heinanalyticalcontrol/tests/methods/General-Poroshell.M"
11
+
12
+ HEIN_LAB_CONSTANTS = [DEFAULT_COMMAND_PATH, DEFAULT_METHOD_DIR, DATA_DIR, SEQUENCE_DIR]
tests/test_comm.py ADDED
@@ -0,0 +1,66 @@
1
+ import os
2
+
3
+ import unittest
4
+
5
+ from pychemstation.control import HPLCController
6
+ from pychemstation.utils.macro import *
7
+ from tests.constants import *
8
+
9
+
10
+ class TestComm(unittest.TestCase):
11
+
12
+ def setUp(self):
13
+ for path in HEIN_LAB_CONSTANTS:
14
+ if not os.path.exists(path):
15
+ self.fail(
16
+ f"{path} does not exist on your system. If you would like to run tests, please change this path.")
17
+
18
+ self.hplc_controller = HPLCController(data_dir=DATA_DIR,
19
+ comm_dir=DEFAULT_COMMAND_PATH,
20
+ method_dir=DEFAULT_METHOD_DIR,
21
+ sequence_dir=SEQUENCE_DIR)
22
+
23
+ def test_status_check_standby(self):
24
+ self.hplc_controller.standby()
25
+ self.assertTrue(self.hplc_controller.status()[0] in [HPLCAvailStatus.STANDBY, HPLCRunningStatus.NOTREADY])
26
+
27
+ def test_status_check_preprun(self):
28
+ self.hplc_controller.preprun()
29
+ self.assertTrue(self.hplc_controller.status()[0] in [HPLCAvailStatus.PRERUN, HPLCAvailStatus.STANDBY,
30
+ HPLCRunningStatus.NOTREADY])
31
+
32
+ def test_send_command(self):
33
+ try:
34
+ self.hplc_controller.send(Command.GET_METHOD_CMD)
35
+ except Exception as e:
36
+ self.fail(f"Should not throw error: {e}")
37
+
38
+ def test_send_str(self):
39
+ try:
40
+ self.hplc_controller.send("Local TestNum")
41
+ self.hplc_controller.send("TestNum = 0")
42
+ except Exception as e:
43
+ self.fail(f"Should not throw error: {e}")
44
+
45
+ def test_get_response(self):
46
+ try:
47
+ self.hplc_controller.switch_method(method_name=DEFAULT_METHOD)
48
+ self.hplc_controller.send(Command.GET_METHOD_CMD)
49
+ res = self.hplc_controller.receive()
50
+ self.assertTrue(DEFAULT_METHOD in res)
51
+ except Exception as e:
52
+ self.fail(f"Should not throw error: {e}")
53
+
54
+ def test_pump_lamp(self):
55
+ pump_lamp = [
56
+ ("response", self.hplc_controller.lamp_on),
57
+ ("response", self.hplc_controller.lamp_off),
58
+ ("response", self.hplc_controller.pump_on),
59
+ ("response", self.hplc_controller.pump_off),
60
+ ]
61
+
62
+ for operation in pump_lamp:
63
+ try:
64
+ operation[1]()
65
+ except Exception as e:
66
+ self.fail(f"Failed due to: {e}")
tests/test_method.py ADDED
@@ -0,0 +1,64 @@
1
+ import os
2
+ import unittest
3
+
4
+ from pychemstation.control import HPLCController
5
+ from pychemstation.utils.method_types import *
6
+ from tests.constants import *
7
+
8
+
9
+ class TestMethod(unittest.TestCase):
10
+ def setUp(self):
11
+ for path in HEIN_LAB_CONSTANTS:
12
+ if not os.path.exists(path):
13
+ self.fail(
14
+ f"{path} does not exist on your system. If you would like to run tests, please change this path.")
15
+
16
+ self.hplc_controller = HPLCController(data_dir=DATA_DIR,
17
+ comm_dir=DEFAULT_COMMAND_PATH,
18
+ method_dir=DEFAULT_METHOD_DIR,
19
+ sequence_dir=SEQUENCE_DIR)
20
+
21
+
22
+
23
+ def test_load_method_details(self):
24
+ self.hplc_controller.switch_method(DEFAULT_METHOD)
25
+ try:
26
+ gp_mtd = self.hplc_controller.method_controller.load(DEFAULT_METHOD)
27
+ self.assertTrue(gp_mtd.first_row.organic_modifier.val == 5)
28
+ except Exception as e:
29
+ self.fail(f"Should have not failed, {e}")
30
+
31
+ def test_method_update_timetable(self):
32
+ self.hplc_controller.method_controller.switch(DEFAULT_METHOD)
33
+ new_method = MethodTimetable(
34
+ first_row=HPLCMethodParams(
35
+ organic_modifier=7,
36
+ flow=0.44,
37
+ maximum_run_time=2,
38
+ temperature=15),
39
+ subsequent_rows=[
40
+ TimeTableEntry(
41
+ start_time=0.10,
42
+ organic_modifer=7,
43
+ flow=0.34),
44
+ TimeTableEntry(
45
+ start_time=1,
46
+ organic_modifer=99,
47
+ flow=0.55)])
48
+ try:
49
+ self.hplc_controller.edit_method(new_method)
50
+ except Exception as e:
51
+ self.fail(f"Should have not failed: {e}")
52
+
53
+ def test_run_method(self):
54
+ try:
55
+ self.hplc_controller.run_method(experiment_name="test_experiment")
56
+ chrom = self.hplc_controller.get_last_run_method_data()
57
+ except Exception as e:
58
+ self.fail(f"Should have not failed: {e}")
59
+
60
+
61
+
62
+
63
+ if __name__ == '__main__':
64
+ unittest.main()
tests/test_sequence.py ADDED
@@ -0,0 +1,102 @@
1
+ import os
2
+ import unittest
3
+
4
+ from pychemstation.control import HPLCController
5
+ from pychemstation.utils.sequence_types import *
6
+ from tests.constants import *
7
+
8
+
9
+ class TestSequence(unittest.TestCase):
10
+ def setUp(self):
11
+ for path in HEIN_LAB_CONSTANTS:
12
+ if not os.path.exists(path):
13
+ self.fail(
14
+ f"{path} does not exist on your system. If you would like to run tests, please change this path.")
15
+
16
+ self.hplc_controller = HPLCController(data_dir=DATA_DIR,
17
+ comm_dir=DEFAULT_COMMAND_PATH,
18
+ method_dir=DEFAULT_METHOD_DIR,
19
+ sequence_dir=SEQUENCE_DIR)
20
+
21
+ def test_switch(self):
22
+ try:
23
+ self.hplc_controller.switch_sequence(sequence_name=DEFAULT_SEQUENCE)
24
+ except Exception as e:
25
+ self.fail(f"Should have not expected: {e}")
26
+
27
+ def test_edit_row(self):
28
+ self.hplc_controller.switch_sequence(sequence_name=DEFAULT_SEQUENCE)
29
+ self.hplc_controller.edit_sequence_row(SequenceEntry(
30
+ vial_location=10,
31
+ method="C:\\ChemStation\\1\\Methods\\General-Poroshell",
32
+ num_inj=3,
33
+ inj_vol=4,
34
+ sample_name="Blank",
35
+ sample_type=SampleType.BLANK,
36
+ inj_source=InjectionSource.HIP_ALS
37
+ ), 1)
38
+
39
+ def test_edit_entire_table(self):
40
+ self.hplc_controller.switch_sequence(sequence_name=DEFAULT_SEQUENCE)
41
+ seq_table = SequenceTable(
42
+ name=DEFAULT_SEQUENCE,
43
+ rows=[
44
+ SequenceEntry(
45
+ vial_location=3,
46
+ method="C:\\ChemStation\\1\\Methods\\General-Poroshell",
47
+ num_inj=3,
48
+ inj_vol=4,
49
+ sample_name="Control",
50
+ sample_type=SampleType.CONTROL,
51
+ inj_source=InjectionSource.MANUAL
52
+ ),
53
+ SequenceEntry(
54
+ vial_location=1,
55
+ method="C:\\ChemStation\\1\\Methods\\General-Poroshell",
56
+ num_inj=1,
57
+ inj_vol=1,
58
+ sample_name="Sample",
59
+ sample_type=SampleType.SAMPLE,
60
+ inj_source=InjectionSource.AS_METHOD
61
+ ),
62
+ SequenceEntry(
63
+ vial_location=10,
64
+ method="C:\\ChemStation\\1\\Methods\\General-Poroshell",
65
+ num_inj=3,
66
+ inj_vol=4,
67
+ sample_name="Blank",
68
+ sample_type=SampleType.BLANK,
69
+ inj_source=InjectionSource.HIP_ALS
70
+ ),
71
+ ]
72
+ )
73
+ self.hplc_controller.edit_sequence(seq_table)
74
+
75
+
76
+ def test_run(self):
77
+ # self.hplc_controller.switch_sequence(sequence_name=DEFAULT_SEQUENCE)
78
+ seq_table = SequenceTable(
79
+ name=DEFAULT_SEQUENCE,
80
+ rows=[
81
+ SequenceEntry(
82
+ vial_location=1,
83
+ method="C:\\ChemStation\\1\\Methods\\" + DEFAULT_METHOD,
84
+ num_inj=1,
85
+ inj_vol=1,
86
+ sample_name="Test",
87
+ sample_type=SampleType.BLANK
88
+ ),
89
+ SequenceEntry(
90
+ vial_location=2,
91
+ method="C:\\ChemStation\\1\\Methods\\" + DEFAULT_METHOD,
92
+ num_inj=1,
93
+ inj_vol=1,
94
+ sample_name="Test2",
95
+ sample_type=SampleType.BLANK
96
+ ),
97
+ ]
98
+ )
99
+ # self.hplc_controller.edit_sequence(seq_table)
100
+ self.hplc_controller.run_sequence(seq_table)
101
+ chrom = self.hplc_controller.get_last_run_sequence_data()
102
+ self.assertTrue(len(chrom) == 2)
@@ -1,30 +0,0 @@
1
- pychemstation/__init__.py,sha256=SpTl-Tg1B1HTyjNOE-8ue-N2wGnXN_2zl7RFUSxlkiM,33
2
- pychemstation/analysis/__init__.py,sha256=EWoU47iyn9xGS-b44zK9eq50bSjOV4AC5dvt420YMI4,44
3
- pychemstation/analysis/base_spectrum.py,sha256=FBvwzLtF9mdqW7f8ETY9G4cpfJ-SzbiSkZq9EtXcSXo,17045
4
- pychemstation/analysis/spec_utils.py,sha256=8NZMV0dtfxZLARjWzM5ks0tgEYQv_SKUiZzba2IoKgw,10505
5
- pychemstation/analysis/utils.py,sha256=ISupAOb_yqA4_DZRK9v18UL-XjUQccAicIJKb1VMnGg,2055
6
- pychemstation/control/__init__.py,sha256=Azsalc8Pz1PuygH7CoTzRV8xQOSfET6zd72AMAB7irE,142
7
- pychemstation/control/chromatogram.py,sha256=c4_RGconn4vYU9wyS0WX-GB5FlwnBf_sfVLh_GpeehE,3716
8
- pychemstation/control/comm.py,sha256=iuzeFLZ_BhNVJwyNJjDiUuaoQBQpFFc0rHiRk0qOgnk,9976
9
- pychemstation/control/hplc.py,sha256=GvEL2zxz0_V47E_JrP4ePTUc8FahDDT3PYmd7ASbobA,29746
10
- pychemstation/control/method.py,sha256=h9KcccDtqx0hQT7JaUc1TWCB8d21t0McOuzeBsEsh4c,10977
11
- pychemstation/control/sequence.py,sha256=ewc7l44VAtv3wHV2QgOILu5Ny3gmubHuEeHJN9N6OjQ,7511
12
- pychemstation/control/table_controller.py,sha256=83i1J2CvIrJ3NtAB_E46qhUe8MvXo1_GnDPmuiq-vSA,2957
13
- pychemstation/generated/__init__.py,sha256=GAoZFAYbPVEJDkcOw3e1rgOqd7TCW0HyKNPM8OMehMg,1005
14
- pychemstation/generated/dad_method.py,sha256=0W8Z5WDtF5jpIcudMqb7XrkTnR2EGg_QOCsHRFQ0rmM,8402
15
- pychemstation/generated/pump_method.py,sha256=sUhE2Oo00nzVcoONtq3EMWsN4wLSryXbG8f3EeViWKg,12174
16
- pychemstation/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- pychemstation/utils/chemstation.py,sha256=bnFIsZZwFy9NKzVUf517yN-ogzQbm0hp_aho3KUD6Is,9317
18
- pychemstation/utils/chromatogram.py,sha256=X-D-FdMwHPugrqAtp5vfPPbD_aU3gor3G6WjQzvEuSk,3742
19
- pychemstation/utils/constants.py,sha256=jLY-NixemSofukzSXJhAIU4aO2IJmBRAhAcq5066mFI,249
20
- pychemstation/utils/hplc_param_types.py,sha256=xvmsbYQp3iiS1-0-9eUy--5zk_wE1bkrlHEHSm0UC18,5206
21
- pychemstation/utils/macro.py,sha256=y_ynL_A-FqK3v4-StTmmbUd741vWhjm6kmduVi5IUfE,2212
22
- pychemstation/utils/method_types.py,sha256=PSVbKq1IHL4QJNSEl0Szaymfvm3sfXy1rqjT2W_qbN0,911
23
- pychemstation/utils/parsing.py,sha256=bnFIsZZwFy9NKzVUf517yN-ogzQbm0hp_aho3KUD6Is,9317
24
- pychemstation/utils/sequence_types.py,sha256=sin3X37EQb52CAGY2MOzY4Us9tdLg7FScTGMBWAF5Fs,689
25
- pychemstation/utils/table_types.py,sha256=BBCRoz1R6zPV1i2u2Tdku7WwIp6EDv1rUuZVPVNgO1A,2090
26
- pychemstation-0.4.7.dev3.dist-info/LICENSE,sha256=9bdF75gIf1MecZ7oymqWgJREVz7McXPG-mjqrTmzzD8,18658
27
- pychemstation-0.4.7.dev3.dist-info/METADATA,sha256=-cqmY1LwrdMvc8OEcySgfeDmbCXVlkDhWu4pWK0CWe0,3929
28
- pychemstation-0.4.7.dev3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
29
- pychemstation-0.4.7.dev3.dist-info/top_level.txt,sha256=ONCqQRPu9Z4_k7TOvj64NVTmO8CqMg_PITePUzYchdY,14
30
- pychemstation-0.4.7.dev3.dist-info/RECORD,,