bigraph-schema 0.0.65__tar.gz → 0.0.68__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 (38) hide show
  1. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/.gitignore +1 -0
  2. {bigraph-schema-0.0.65/bigraph_schema.egg-info → bigraph_schema-0.0.68}/PKG-INFO +13 -14
  3. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/edge.py +28 -4
  4. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/tests.py +67 -38
  5. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/type_system.py +12 -12
  6. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68/bigraph_schema.egg-info}/PKG-INFO +13 -14
  7. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema.egg-info/requires.txt +3 -0
  8. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/pyproject.toml +4 -1
  9. bigraph_schema-0.0.68/setup.py +42 -0
  10. bigraph-schema-0.0.65/setup.py +0 -42
  11. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/.github/workflows/notebook_to_html.yml +0 -0
  12. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/.github/workflows/pytest.yml +0 -0
  13. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/AUTHORS.md +0 -0
  14. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/CLA.md +0 -0
  15. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/CODE_OF_CONDUCT.md +0 -0
  16. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/CONTRIBUTING.md +0 -0
  17. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/LICENSE +0 -0
  18. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/README.md +0 -0
  19. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/__init__.py +0 -0
  20. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/parse.py +0 -0
  21. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/protocols.py +0 -0
  22. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/registry.py +0 -0
  23. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/type_functions.py +0 -0
  24. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/type_system_adjunct.py +0 -0
  25. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/units.py +0 -0
  26. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema/utilities.py +0 -0
  27. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema.egg-info/SOURCES.txt +0 -0
  28. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema.egg-info/dependency_links.txt +0 -0
  29. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/bigraph_schema.egg-info/top_level.txt +0 -0
  30. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/notebooks/core.ipynb +0 -0
  31. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/notebooks/demo.ipynb +0 -0
  32. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/notebooks/images/place-link.png +0 -0
  33. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/notebooks/images/reaction-after.png +0 -0
  34. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/notebooks/images/reaction-before.png +0 -0
  35. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/notebooks/images/redex-reactum.png +0 -0
  36. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/pytest.ini +0 -0
  37. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/release.sh +0 -0
  38. {bigraph-schema-0.0.65 → bigraph_schema-0.0.68}/setup.cfg +0 -0
@@ -15,3 +15,4 @@ bigraph_schema.egg-info/
15
15
  .devenv*
16
16
  .devenv/
17
17
  devenv.lock
18
+ uv.lock
@@ -1,24 +1,23 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: bigraph-schema
3
- Version: 0.0.65
3
+ Version: 0.0.68
4
4
  Summary: A serializable type schema for compositional systems biology
5
- Home-page: https://github.com/vivarium-collective/bigraph-schema
6
5
  Author: Eran Agmon, Ryan Spangler
7
- Author-email: agmon.eran@gmail.com, ryan.spangler@gmail.com
8
- Classifier: Development Status :: 3 - Alpha
9
- Classifier: Intended Audience :: Developers
10
- Classifier: License :: OSI Approved :: MIT License
11
- Classifier: Operating System :: OS Independent
12
- Classifier: Programming Language :: Python
13
- Classifier: Programming Language :: Python :: 3.7
14
- Classifier: Programming Language :: Python :: 3.8
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
6
  Requires-Python: >=3.7
19
7
  Description-Content-Type: text/markdown
20
8
  License-File: LICENSE
21
9
  License-File: AUTHORS.md
10
+ Requires-Dist: fire
11
+ Requires-Dist: numpy
12
+ Requires-Dist: orjson
13
+ Requires-Dist: parsimonious
14
+ Requires-Dist: pint
15
+ Requires-Dist: plum-dispatch
16
+ Requires-Dist: pytest
17
+ Requires-Dist: requests>=2.31.0
18
+ Requires-Dist: setuptools
19
+ Requires-Dist: twine>=4.0.2
20
+ Dynamic: license-file
22
21
 
23
22
  # Bigraph-schema
24
23
 
@@ -46,11 +46,35 @@ class Edge:
46
46
  if config is None:
47
47
  config = {}
48
48
 
49
- self.config = self.core.fill(self.config_schema, config)
50
- self.initialize(self.config)
49
+ self._config = self.core.fill(self.config_schema, config)
50
+ self._composition = 'edge'
51
+ self._state = {}
51
52
 
52
- # # Register port types
53
- # self.register_interface()
53
+ self.initialize(self._config)
54
+
55
+ @property
56
+ def config(self):
57
+ return self._config
58
+
59
+ @config.setter
60
+ def config(self, config):
61
+ self._config = config
62
+
63
+ @property
64
+ def composition(self):
65
+ return self._composition
66
+
67
+ @composition.setter
68
+ def composition(self, composition):
69
+ self._composition = composition
70
+
71
+ @property
72
+ def state(self):
73
+ return self._state
74
+
75
+ @state.setter
76
+ def state(self, state):
77
+ self._state = state
54
78
 
55
79
  def initialize(self, config):
56
80
  """Optional hook for subclass-specific initialization."""
@@ -77,6 +77,8 @@ def register_cube(core):
77
77
  def test_basic_types(core):
78
78
  assert core.find('integer')
79
79
  assert core.find('cube')['depth']['_type'] == 'integer'
80
+ # inheritance
81
+ assert core.find('cube')['width']['_type'] == 'integer'
80
82
 
81
83
 
82
84
  def test_update_types(core):
@@ -85,6 +87,11 @@ def test_update_types(core):
85
87
  core.update_types({'A': {'_description':desc}})
86
88
  assert core.access('A') == {'_type': 'payload', '_description': desc}
87
89
 
90
+ core.update_types({'B': "alternate", 'C': "tertiary"})
91
+ assert core.access('A') == {'_type': 'payload', '_description': desc}
92
+ assert core.access('B') == {'_type': 'alternate'}
93
+ assert core.access('C') == {'_type': 'tertiary'}
94
+
88
95
 
89
96
  def test_reregister_type(core):
90
97
  """
@@ -92,15 +99,15 @@ def test_reregister_type(core):
92
99
 
93
100
  it replaces the schema if not strict
94
101
  """
95
- core.register('A', {'_default': 'a'})
102
+ core.register('R_A', {'_default': 'a'})
96
103
  with pytest.raises(Exception) as e:
97
104
  core.register(
98
- 'A', {'_default': 'b'},
105
+ 'R_A', {'_default': 'b'},
99
106
  strict=True)
100
107
 
101
- core.register('A', {'_default': 'b'}, strict=False)
108
+ core.register('R_A', {'_default': 'b'}, strict=False)
102
109
 
103
- assert core.access('A')['_default'] == 'b'
110
+ assert core.access('R_A')['_default'] == 'b'
104
111
 
105
112
 
106
113
  def test_merge_schemas(core):
@@ -161,37 +168,36 @@ def test_apply_update(core):
161
168
  assert new_state['depth'] == 39
162
169
 
163
170
 
164
- def print_schema_validation(core, library, should_pass):
171
+ def check_validation(core, library, print_log=False):
165
172
  """
166
173
  validate_schema returns nothing for a valid schema declaration
167
174
 
168
175
  this helper function makes clearer reports out of the test
169
176
  failures
177
+ """
178
+ for key, declaration in library.items():
179
+ errors = core.validate_schema(declaration)
180
+ assert len(errors) == 0, {'key': key, 'declaration': declaration}
181
+ if print_log:
182
+ print(f'PASS: valid schema {key}')
183
+ pprint.pprint(declaration)
184
+
170
185
 
171
- this is also why running the file outside pytest prints out
172
- a huge wall of text
186
+ def check_nonvalidation(core, library, print_log=False):
187
+ """
188
+ like check_validation but expects one or more errors
173
189
  """
174
190
  for key, declaration in library.items():
175
- report = core.validate_schema(declaration)
176
- if len(report) == 0:
177
- message = f'valid schema: {key}'
178
- if should_pass:
179
- print(f'PASS: {message}')
180
- pprint.pprint(declaration)
181
- else:
182
- raise Exception(f'FAIL: {message}\n{declaration}\n{report}')
183
- else:
184
- message = f'invalid schema: {key}'
185
- if not should_pass:
186
- print(f'PASS: {message}')
187
- pprint.pprint(declaration)
188
- else:
189
- raise Exception(f'FAIL: {message}\n{declaration}\n{report}')
191
+ errors = core.validate_schema(declaration)
192
+ assert len(errors) != 0, {'key': key, 'declaration': declaration}
193
+ if print_log:
194
+ print(f'PASS: invalid schema {key}')
195
+ pprint.pprint(declaration)
190
196
 
191
197
 
192
198
  def test_validate_schema(core):
193
199
  # good schemas
194
- print_schema_validation(core, base_types, True)
200
+ check_validation(core, base_types)
195
201
 
196
202
  good = {
197
203
  'not quite int': {
@@ -215,6 +221,7 @@ def test_validate_schema(core):
215
221
  }
216
222
  }
217
223
  }
224
+ check_validation(core, good)
218
225
 
219
226
  # bad schemas
220
227
  bad = {
@@ -225,11 +232,9 @@ def test_validate_schema(core):
225
232
  'right': {'_default': 1, '_apply': accumulate},
226
233
  },
227
234
  }
228
-
235
+ check_nonvalidation(core, bad)
229
236
  # test for ports and wires mismatch
230
237
 
231
- print_schema_validation(core, good, True)
232
- print_schema_validation(core, bad, False)
233
238
 
234
239
 
235
240
  def test_fill_integer(core):
@@ -344,14 +349,21 @@ def test_fill_from_parse(core):
344
349
  'O': ['a']}}}
345
350
 
346
351
 
347
- # def test_fill_in_disconnected_port(core):
348
- # test_schema = {
349
- # 'edge1': {
350
- # '_type': 'edge',
351
- # '_ports': {
352
- # '1': {'_type': 'float'}}}}
352
+ def test_fill_in_disconnected_port(core):
353
+ test_schema = {
354
+ 'edge1': {
355
+ '_type': 'edge',
356
+ '_ports': {
357
+ '1': {'_type': 'float'}}}}
353
358
 
354
- # test_state = {}
359
+ test_state = {
360
+ # TODO - js - how do I represent non connection, rather
361
+ # than a connection with an empty value?
362
+ 'edge1': {}}
363
+
364
+ filled = core.fill(
365
+ test_schema,
366
+ test_state)
355
367
 
356
368
 
357
369
  # def test_fill_type_mismatch(core):
@@ -366,6 +378,14 @@ def test_fill_from_parse(core):
366
378
  # '1': ['..', 'a'],
367
379
  # '2': ['a']},
368
380
  # 'a': 5}}
381
+ #
382
+ # test_state = {
383
+ # 'edge1': {},
384
+ # 'a': 2}
385
+ #
386
+ # filled = core.fill(
387
+ # test_schema,
388
+ # test_state)
369
389
 
370
390
 
371
391
  # def test_edge_type_mismatch(core):
@@ -749,7 +769,7 @@ def test_project(core):
749
769
  '2': 'a0>a0.1',
750
770
  '3': 'a0>a0.2>a0.2.0'}
751
771
 
752
- # TODO: support separate schema/instance, and
772
+ # TODO: support separate schema/instance, and
753
773
  # instances with '_type' and type parameter keys
754
774
  # TODO: support overriding various type methods
755
775
  instance = {
@@ -2140,7 +2160,7 @@ def test_dataclass(core):
2140
2160
 
2141
2161
  complex_dict = asdict(complex_from)
2142
2162
 
2143
- # assert complex_dict == complex_state ?
2163
+ # assert complex_dict == complex_state ?
2144
2164
 
2145
2165
  assert complex_from.a['x']['oooo'] is None
2146
2166
  assert len(complex_from.c.d['A']['inputs']['GGG'])
@@ -2350,7 +2370,7 @@ def test_edge_cycle(core):
2350
2370
  assert key in result
2351
2371
 
2352
2372
 
2353
- def test_merge(core):
2373
+ def test_merge2(core):
2354
2374
  schema = {
2355
2375
  'A': 'float',
2356
2376
  'B': 'enum[one,two,three]',
@@ -2422,6 +2442,7 @@ def test_update_removed(core):
2422
2442
  'c': 13.33333333}
2423
2443
 
2424
2444
 
2445
+ # TODO fix this test
2425
2446
  def fix_test_slice_edge(core):
2426
2447
  initial_schema = {
2427
2448
  'edge': {
@@ -2460,6 +2481,7 @@ def fix_test_slice_edge(core):
2460
2481
  assert inner_state == 55555
2461
2482
 
2462
2483
 
2484
+ # TODO fix this test
2463
2485
  def fix_test_complex_wiring(core):
2464
2486
  initial_schema = {
2465
2487
  'edge': {
@@ -2545,6 +2567,7 @@ if __name__ == '__main__':
2545
2567
  core = register_test_types(core)
2546
2568
 
2547
2569
  test_basic_types(core)
2570
+ test_update_types(core)
2548
2571
  test_reregister_type(core)
2549
2572
  test_generate_default(core)
2550
2573
  test_apply_update(core)
@@ -2554,6 +2577,7 @@ if __name__ == '__main__':
2554
2577
  test_establish_path(core)
2555
2578
  test_overwrite_existing(core)
2556
2579
  test_fill_in_missing_nodes(core)
2580
+ test_fill_in_disconnected_port(core)
2557
2581
  test_fill_from_parse(core)
2558
2582
  test_fill_ports(core)
2559
2583
  test_expected_schema(core)
@@ -2561,12 +2585,12 @@ if __name__ == '__main__':
2561
2585
  test_serialize_deserialize(core)
2562
2586
  test_project(core)
2563
2587
  test_inherits_from(core)
2588
+ test_check(core)
2564
2589
  test_apply_schema(core)
2565
2590
  test_resolve_schemas(core)
2566
2591
  test_add_reaction(core)
2567
2592
  test_remove_reaction(core)
2568
2593
  test_replace_reaction(core)
2569
- test_unit_conversion(core)
2570
2594
  test_map_type(core)
2571
2595
  test_tree_type(core)
2572
2596
  test_maybe_type(core)
@@ -2581,8 +2605,10 @@ if __name__ == '__main__':
2581
2605
  test_foursquare(core)
2582
2606
  test_divide(core)
2583
2607
  test_merge(core)
2608
+ test_merge2(core)
2584
2609
  test_bind(core)
2585
2610
  test_slice(core)
2611
+ test_star_path(core)
2586
2612
  test_set_slice(core)
2587
2613
  test_dataclass(core)
2588
2614
  test_enum_type(core)
@@ -2590,7 +2616,6 @@ if __name__ == '__main__':
2590
2616
  test_representation(core)
2591
2617
  test_generate(core)
2592
2618
  test_edge_cycle(core)
2593
- test_merge(core)
2594
2619
  test_remove_omitted(core)
2595
2620
  test_union_key_error(core)
2596
2621
  test_tree_equivalence(core)
@@ -2598,5 +2623,9 @@ if __name__ == '__main__':
2598
2623
  test_update_removed(core)
2599
2624
  test_merge_schemas(core)
2600
2625
 
2626
+ # test_reaction(core)
2627
+ # test_link_place(core)
2628
+ # test_unit_conversion(core)
2601
2629
  # test_slice_edge(core)
2602
2630
  # test_complex_wiring(core)
2631
+ # test_fill_type_mismatch(core)
@@ -478,11 +478,11 @@ class TypeSystem(Registry):
478
478
 
479
479
 
480
480
  def _parameters_for(self, initial_schema):
481
- '''
481
+ """
482
482
  find any type parameters for this schema if they are present
483
483
 
484
484
  helper for type_functions
485
- '''
485
+ """
486
486
 
487
487
  if '_type_parameters' in initial_schema:
488
488
  schema = initial_schema
@@ -507,9 +507,9 @@ class TypeSystem(Registry):
507
507
 
508
508
 
509
509
  def default(self, schema):
510
- '''
510
+ """
511
511
  produce the default value for the provided schema
512
- '''
512
+ """
513
513
 
514
514
  default = None
515
515
  found = self.retrieve(schema)
@@ -565,10 +565,10 @@ class TypeSystem(Registry):
565
565
 
566
566
 
567
567
  def choose_method(self, schema, state, method_name):
568
- '''
568
+ """
569
569
  find in the provided state, or schema if not there,
570
570
  a method for the given method_name
571
- '''
571
+ """
572
572
 
573
573
  method_key = f'_{method_name}'
574
574
  found = None
@@ -601,10 +601,10 @@ class TypeSystem(Registry):
601
601
 
602
602
 
603
603
  def slice(self, schema, state, path):
604
- '''
604
+ """
605
605
  find the subschema and substate at a node in the place graph
606
606
  given by the provided path
607
- '''
607
+ """
608
608
 
609
609
  if not isinstance(path, (list, tuple)):
610
610
  path = [path]
@@ -1077,10 +1077,10 @@ class TypeSystem(Registry):
1077
1077
 
1078
1078
 
1079
1079
  def set_slice(self, schema, state, path, target_schema, target_state, defer=False):
1080
- '''
1080
+ """
1081
1081
  Makes a local modification to the schema/state at the path, and
1082
1082
  returns the top_schema and top_state
1083
- '''
1083
+ """
1084
1084
 
1085
1085
  path = resolve_path(path)
1086
1086
 
@@ -1633,11 +1633,11 @@ class TypeSystem(Registry):
1633
1633
  return method
1634
1634
 
1635
1635
  def representation(self, schema, path=None, parents=None):
1636
- '''
1636
+ """
1637
1637
  produce a string representation of the schema
1638
1638
 
1639
1639
  * intended to be the inverse of parse_expression()
1640
- '''
1640
+ """
1641
1641
 
1642
1642
  path = path or []
1643
1643
  parents = parents or []
@@ -1,24 +1,23 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: bigraph-schema
3
- Version: 0.0.65
3
+ Version: 0.0.68
4
4
  Summary: A serializable type schema for compositional systems biology
5
- Home-page: https://github.com/vivarium-collective/bigraph-schema
6
5
  Author: Eran Agmon, Ryan Spangler
7
- Author-email: agmon.eran@gmail.com, ryan.spangler@gmail.com
8
- Classifier: Development Status :: 3 - Alpha
9
- Classifier: Intended Audience :: Developers
10
- Classifier: License :: OSI Approved :: MIT License
11
- Classifier: Operating System :: OS Independent
12
- Classifier: Programming Language :: Python
13
- Classifier: Programming Language :: Python :: 3.7
14
- Classifier: Programming Language :: Python :: 3.8
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
6
  Requires-Python: >=3.7
19
7
  Description-Content-Type: text/markdown
20
8
  License-File: LICENSE
21
9
  License-File: AUTHORS.md
10
+ Requires-Dist: fire
11
+ Requires-Dist: numpy
12
+ Requires-Dist: orjson
13
+ Requires-Dist: parsimonious
14
+ Requires-Dist: pint
15
+ Requires-Dist: plum-dispatch
16
+ Requires-Dist: pytest
17
+ Requires-Dist: requests>=2.31.0
18
+ Requires-Dist: setuptools
19
+ Requires-Dist: twine>=4.0.2
20
+ Dynamic: license-file
22
21
 
23
22
  # Bigraph-schema
24
23
 
@@ -5,3 +5,6 @@ parsimonious
5
5
  pint
6
6
  plum-dispatch
7
7
  pytest
8
+ requests>=2.31.0
9
+ setuptools
10
+ twine>=4.0.2
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "bigraph-schema"
3
- version = "0.0.65"
3
+ version = "0.0.68"
4
4
  description = "A serializable type schema for compositional systems biology"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.7"
@@ -16,6 +16,9 @@ dependencies = [
16
16
  "pint",
17
17
  "plum-dispatch",
18
18
  "pytest",
19
+ "requests>=2.31.0",
20
+ "setuptools",
21
+ "twine>=4.0.2",
19
22
  ]
20
23
 
21
24
  [tool.setuptools]
@@ -0,0 +1,42 @@
1
+ from setuptools import setup, find_packages
2
+
3
+
4
+ VERSION = '0.0.68'
5
+
6
+
7
+ with open("README.md", "r") as readme:
8
+ description = readme.read()
9
+
10
+
11
+ setup(
12
+ name="bigraph-schema",
13
+ version=VERSION,
14
+ author="Eran Agmon, Ryan Spangler",
15
+ # author_email="agmon.eran@gmail.com, ryan.spangler@gmail.com",
16
+ # description="A serializable type schema for compositional systems biology",
17
+ # long_description=description,
18
+ # long_description_content_type="text/markdown",
19
+ # url="https://github.com/vivarium-collective/bigraph-schema",
20
+ # packages=find_packages(),
21
+ # classifiers=[
22
+ # "Development Status :: 3 - Alpha",
23
+ # "Intended Audience :: Developers",
24
+ # "License :: OSI Approved :: MIT License",
25
+ # "Operating System :: OS Independent",
26
+ # "Programming Language :: Python",
27
+ # "Programming Language :: Python :: 3.7",
28
+ # "Programming Language :: Python :: 3.8",
29
+ # "Programming Language :: Python :: 3.9",
30
+ # "Programming Language :: Python :: 3.10",
31
+ # "Programming Language :: Python :: 3.11",
32
+ # ],
33
+ # python_requires=">=3.7",
34
+ # install_requires=[
35
+ # # List your package dependencies here
36
+ # "numpy",
37
+ # "parsimonious",
38
+ # "fire",
39
+ # "pytest",
40
+ # "pint",
41
+ # ],
42
+ )
@@ -1,42 +0,0 @@
1
- from setuptools import setup, find_packages
2
-
3
-
4
- VERSION = '0.0.65'
5
-
6
-
7
- with open("README.md", "r") as readme:
8
- description = readme.read()
9
-
10
-
11
- setup(
12
- name="bigraph-schema",
13
- version=VERSION,
14
- author="Eran Agmon, Ryan Spangler",
15
- author_email="agmon.eran@gmail.com, ryan.spangler@gmail.com",
16
- description="A serializable type schema for compositional systems biology",
17
- long_description=description,
18
- long_description_content_type="text/markdown",
19
- url="https://github.com/vivarium-collective/bigraph-schema",
20
- packages=find_packages(),
21
- classifiers=[
22
- "Development Status :: 3 - Alpha",
23
- "Intended Audience :: Developers",
24
- "License :: OSI Approved :: MIT License",
25
- "Operating System :: OS Independent",
26
- "Programming Language :: Python",
27
- "Programming Language :: Python :: 3.7",
28
- "Programming Language :: Python :: 3.8",
29
- "Programming Language :: Python :: 3.9",
30
- "Programming Language :: Python :: 3.10",
31
- "Programming Language :: Python :: 3.11",
32
- ],
33
- python_requires=">=3.7",
34
- install_requires=[
35
- # List your package dependencies here
36
- "numpy",
37
- "parsimonious",
38
- "fire",
39
- "pytest",
40
- "pint",
41
- ],
42
- )
File without changes
File without changes