ltbams 1.0.14__py3-none-any.whl → 1.0.15__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.
- ams/_version.py +3 -3
- ams/models/timeslot.py +18 -3
- ams/opt/exprcalc.py +5 -3
- ams/routines/dcopf2.py +33 -18
- ams/routines/dcpf.py +5 -0
- ams/routines/routine.py +12 -3
- docs/source/examples/index.rst +1 -0
- docs/source/genroutineref.py +21 -9
- docs/source/release-notes.rst +9 -0
- {ltbams-1.0.14.dist-info → ltbams-1.0.15.dist-info}/METADATA +2 -1
- {ltbams-1.0.14.dist-info → ltbams-1.0.15.dist-info}/RECORD +14 -14
- {ltbams-1.0.14.dist-info → ltbams-1.0.15.dist-info}/WHEEL +0 -0
- {ltbams-1.0.14.dist-info → ltbams-1.0.15.dist-info}/entry_points.txt +0 -0
- {ltbams-1.0.14.dist-info → ltbams-1.0.15.dist-info}/top_level.txt +0 -0
ams/_version.py
CHANGED
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2025-
|
11
|
+
"date": "2025-09-28T19:06:51-0700",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "1.0.
|
14
|
+
"full-revisionid": "ae8b4bef43d5202301b5ec84628d164420473a2f",
|
15
|
+
"version": "1.0.15"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
ams/models/timeslot.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
"""
|
2
|
-
|
2
|
+
Models for multi-period scheduling.
|
3
3
|
"""
|
4
4
|
|
5
5
|
from andes.core import ModelData, NumParam
|
@@ -21,6 +21,7 @@ def str_list_oconv(x):
|
|
21
21
|
|
22
22
|
class GCommit(ModelData, Model):
|
23
23
|
"""
|
24
|
+
UNDER DEVELOPMENT!
|
24
25
|
Time slot model for generator commitment decisions.
|
25
26
|
|
26
27
|
This class holds commitment decisions for generators,
|
@@ -31,14 +32,14 @@ class GCommit(ModelData, Model):
|
|
31
32
|
`ugd` representing the unit commitment decisions for each generator.
|
32
33
|
After solving the UC problem, the `ugd` values can be used for
|
33
34
|
Economic Dispatch (ED) as a parameter.
|
34
|
-
|
35
|
-
.. versionadded:: 1.0.13
|
36
35
|
"""
|
37
36
|
|
37
|
+
# TODO: .. versionadded:: 1.0.13
|
38
38
|
def __init__(self, system=None, config=None):
|
39
39
|
ModelData.__init__(self)
|
40
40
|
Model.__init__(self, system, config)
|
41
41
|
|
42
|
+
# TODO: add IdxParam of generator
|
42
43
|
self.ug = NumParam(info='unit commitment decisions',
|
43
44
|
tex_name=r'u_{g}',
|
44
45
|
iconvert=str_list_iconv,
|
@@ -74,6 +75,13 @@ class EDTSlot(TimeSlot):
|
|
74
75
|
`ug` is the unit commitment decisions.
|
75
76
|
Cells in `ug` should have `ng` values seperated by comma,
|
76
77
|
where `ng` is the number of `StaticGen` in the system.
|
78
|
+
|
79
|
+
Warnings
|
80
|
+
--------
|
81
|
+
The order of generators in `ug` is determined by the input
|
82
|
+
file, not by explicit mapping. This may cause misinterpretation
|
83
|
+
if the loaded data order changes.
|
84
|
+
Involved routines include: `ED` `UC` and their derivatives.
|
77
85
|
"""
|
78
86
|
|
79
87
|
def __init__(self, system=None, config=None):
|
@@ -93,6 +101,13 @@ class UCTSlot(TimeSlot):
|
|
93
101
|
`sd` is the zonal load scaling factor.
|
94
102
|
Cells in `sd` should have `nz` values seperated by comma,
|
95
103
|
where `nz` is the number of `Zone` in the system.
|
104
|
+
|
105
|
+
Warnings
|
106
|
+
--------
|
107
|
+
The order of generators in `ug` is determined by the input
|
108
|
+
file, not by explicit mapping. This may cause misinterpretation
|
109
|
+
if the loaded data order changes.
|
110
|
+
Involved routines include: `ED` `UC` and their derivatives.
|
96
111
|
"""
|
97
112
|
|
98
113
|
def __init__(self, system=None, config=None):
|
ams/opt/exprcalc.py
CHANGED
@@ -24,9 +24,11 @@ class ExpressionCalc(OptzBase):
|
|
24
24
|
"""
|
25
25
|
Class for calculating expressions.
|
26
26
|
|
27
|
-
|
28
|
-
in the optimization model.
|
29
|
-
|
27
|
+
This class is useful for performing post-solve calculations, but it does not
|
28
|
+
participate in the optimization model itself.
|
29
|
+
|
30
|
+
Note: `ExpressionCalc` is not a CVXPY expression and should NOT be referenced
|
31
|
+
in `e_str` by any other components, including other instances of `ExpressionCalc`.
|
30
32
|
"""
|
31
33
|
|
32
34
|
def __init__(self,
|
ams/routines/dcopf2.py
CHANGED
@@ -26,8 +26,18 @@ class DCOPF2(DCOPF):
|
|
26
26
|
Notes
|
27
27
|
-----
|
28
28
|
- This routine requires PTDF matrix.
|
29
|
-
-
|
29
|
+
- LMP ``pi`` is calculated with two parts, energy price and congestion price.
|
30
30
|
- Bus angle ``aBus`` is calculated after solving the problem.
|
31
|
+
- In export results, ``pi`` and ``pic`` are kept for each bus, while ``pie``
|
32
|
+
can be restored manually by ``pie = pi - pic`` if needed.
|
33
|
+
|
34
|
+
Warning
|
35
|
+
-------
|
36
|
+
In this implementation, the dual variables for constraints have opposite signs compared
|
37
|
+
to the mathematical formulation: 1. The dual of `pb` returns a negative value, so energy
|
38
|
+
price is computed as `-pb.dual_variables[0]`. 2. Similarly, a minus sign is applied to
|
39
|
+
the duals of `plfub` and `plflb` when calculating congestion price. The reason for this
|
40
|
+
sign difference is not yet fully understood.
|
31
41
|
|
32
42
|
References
|
33
43
|
----------
|
@@ -61,29 +71,34 @@ class DCOPF2(DCOPF):
|
|
61
71
|
name='PTDF', tex_name=r'P_{TDF}',
|
62
72
|
model='mats', src='PTDF',
|
63
73
|
no_parse=True, sparse=True)
|
74
|
+
self.PTDFt = NumOp(u=self.PTDF,
|
75
|
+
name='PTDFt', tex_name=r'P_{TDF}^T',
|
76
|
+
info='PTDF transpose',
|
77
|
+
fun=np.transpose, no_parse=True)
|
78
|
+
|
79
|
+
# --- rewrite Constraint pb: power balance ---
|
80
|
+
self.pb.e_str = 'sum(pg) - sum(pd)'
|
64
81
|
|
65
82
|
# --- rewrite Expression plf: line flow---
|
66
83
|
self.plf.e_str = 'PTDF @ (Cg@pg - Cl@pd - Csh@gsh - Pbusinj)'
|
67
84
|
|
68
85
|
# --- rewrite nodal price ---
|
69
|
-
self.
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
self.
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
model='Bus', src=None,
|
84
|
-
e_str='pb.dual_variables[0]')
|
85
|
-
pi = 'pb.dual_variables[0] + Cft@(plfub.dual_variables[0] - plflb.dual_variables[0])'
|
86
|
+
self.pie = ExpressionCalc(info='Energy price',
|
87
|
+
name='pie', unit='$/p.u.',
|
88
|
+
e_str='-pb.dual_variables[0]')
|
89
|
+
pic = '-PTDFt@(plfub.dual_variables[0] - plflb.dual_variables[0])'
|
90
|
+
self.pic = ExpressionCalc(info='Congestion price',
|
91
|
+
name='pic', unit='$/p.u.',
|
92
|
+
e_str=pic,
|
93
|
+
model='Bus', src=None)
|
94
|
+
|
95
|
+
# NOTE: another implementation of self.pi.e_str can be:
|
96
|
+
# self.pi.e_str = self.pie.e_str + self.pic.e_str
|
97
|
+
# but it is less intuitive to read, as this implementation is not likely
|
98
|
+
# to be used again in other routines.
|
99
|
+
pi = '-pb.dual_variables[0] - PTDFt@(plfub.dual_variables[0] - plflb.dual_variables[0])'
|
86
100
|
self.pi.e_str = pi
|
101
|
+
self.pi.info = 'locational marginal price (LMP)'
|
87
102
|
|
88
103
|
def _post_solve(self):
|
89
104
|
"""Calculate aBus"""
|
ams/routines/dcpf.py
CHANGED
@@ -3,6 +3,8 @@ Power flow routines.
|
|
3
3
|
"""
|
4
4
|
import logging
|
5
5
|
|
6
|
+
import numpy as np
|
7
|
+
|
6
8
|
from ams.opt import Var, Constraint, Expression, Objective
|
7
9
|
from ams.routines.routine import RoutineBase
|
8
10
|
|
@@ -173,6 +175,9 @@ class DCPFBase(RoutineBase):
|
|
173
175
|
"""
|
174
176
|
Post-solve calculations.
|
175
177
|
"""
|
178
|
+
# NOTE: for DC type routines, set vBus to 1.0 p.u. as placeholder
|
179
|
+
self.vBus.v = np.ones(self.vBus.shape)
|
180
|
+
|
176
181
|
# NOTE: unpack Expressions if owner and arc are available
|
177
182
|
for expr in self.exprs.values():
|
178
183
|
if expr.owner and expr.src:
|
ams/routines/routine.py
CHANGED
@@ -21,7 +21,7 @@ from ams.opt import Param, Var, Constraint, Objective, ExpressionCalc, Expressio
|
|
21
21
|
|
22
22
|
from ams.utils.paths import get_export_path
|
23
23
|
|
24
|
-
from ams.shared import pd
|
24
|
+
from ams.shared import pd, summary_row, summary_name
|
25
25
|
|
26
26
|
logger = logging.getLogger(__name__)
|
27
27
|
|
@@ -509,7 +509,15 @@ class RoutineBase:
|
|
509
509
|
self.class_name + '_out',
|
510
510
|
path=path, fmt='json')
|
511
511
|
|
512
|
-
data_dict =
|
512
|
+
data_dict = OrderedDict()
|
513
|
+
|
514
|
+
# insert summary
|
515
|
+
df = pd.DataFrame([summary_row])
|
516
|
+
df.index.name = "uid"
|
517
|
+
data_dict.update({summary_name: df.to_dict(orient='records')})
|
518
|
+
|
519
|
+
# insert objective value
|
520
|
+
data_dict.update(OrderedDict(Objective=self.obj.v))
|
513
521
|
|
514
522
|
group_data(self, data_dict, self.vars, 'v')
|
515
523
|
group_data(self, data_dict, self.exprs, 'v')
|
@@ -1116,7 +1124,8 @@ def collect_data(rtn: RoutineBase, data_dict: Dict, items: Dict, attr: str):
|
|
1116
1124
|
|
1117
1125
|
def group_data(rtn: RoutineBase, data_dict: Dict, items: Dict, attr: str):
|
1118
1126
|
"""
|
1119
|
-
Collect data for export
|
1127
|
+
Collect data for export by groups, adding device idx in each group.
|
1128
|
+
This is useful when exporting to dictionary formats like JSON.
|
1120
1129
|
|
1121
1130
|
Parameters
|
1122
1131
|
----------
|
docs/source/examples/index.rst
CHANGED
docs/source/genroutineref.py
CHANGED
@@ -22,15 +22,27 @@ and view details.
|
|
22
22
|
|
23
23
|
Typical acronyms used in AMS include:
|
24
24
|
|
25
|
-
|
26
|
-
| Acronym | Meaning
|
27
|
-
|
28
|
-
|
|
29
|
-
|
30
|
-
|
|
31
|
-
|
32
|
-
|
|
33
|
-
|
25
|
+
+------------+---------------------------+
|
26
|
+
| Acronym | Meaning |
|
27
|
+
+============+===========================+
|
28
|
+
| AC- | Alternating Current |
|
29
|
+
+------------+---------------------------+
|
30
|
+
| DC- | Direct Current |
|
31
|
+
+------------+---------------------------+
|
32
|
+
| RT- | Real-Time |
|
33
|
+
+------------+---------------------------+
|
34
|
+
| -DG | Distributed Generation |
|
35
|
+
+------------+---------------------------+
|
36
|
+
| -ES | Energy Storage |
|
37
|
+
+------------+---------------------------+
|
38
|
+
| -OPF | Optimal Power Flow |
|
39
|
+
+------------+---------------------------+
|
40
|
+
| -ED | Economic Dispatch |
|
41
|
+
+------------+---------------------------+
|
42
|
+
| -UC | Unit Commitment |
|
43
|
+
+------------+---------------------------+
|
44
|
+
| LMP | Locational Marginal Price |
|
45
|
+
+------------+---------------------------+
|
34
46
|
|
35
47
|
"""
|
36
48
|
|
docs/source/release-notes.rst
CHANGED
@@ -9,6 +9,15 @@ The APIs before v3.0.0 are in beta and may change without prior notice.
|
|
9
9
|
v1.0
|
10
10
|
==========
|
11
11
|
|
12
|
+
v1.0.15 (2025-09-28)
|
13
|
+
----------------------
|
14
|
+
|
15
|
+
- Fix ``DCOPF2.pb`` to use PTDF-based formulation
|
16
|
+
- Add a demo to compare ``DCOPF2`` and ``DCOPF``, see
|
17
|
+
``examples/demonstration/demo_dcopf.ipynb``
|
18
|
+
- In DC type routines, set `vBus` value as 1 for placeholder
|
19
|
+
- Include Summary and Objective value in exported JSON
|
20
|
+
|
12
21
|
v1.0.14 (2025-08-29)
|
13
22
|
----------------------
|
14
23
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ltbams
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.15
|
4
4
|
Summary: Python software for scheduling modeling and co-simulation with dynamics.
|
5
5
|
Home-page: https://github.com/CURENT/ams
|
6
6
|
Author: Jinning Wang
|
@@ -57,6 +57,7 @@ Python Software for Power System Scheduling Modeling and Co-Simulation with Dyna
|
|
57
57
|
|
58
58
|

|
59
59
|
[](https://ieeexplore.ieee.org/document/10836855)
|
60
|
+
[](https://github.com/pyOpenSci/software-review/issues/174)
|
60
61
|
|
61
62
|
| Badges | | |
|
62
63
|
|---|---|---|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
ams/__init__.py,sha256=q-9-f0YCg6aaTW19VCkY6VosfvRA2ObI9mF1f_3016Y,313
|
2
2
|
ams/__main__.py,sha256=EB4GfGiKgvnQ_psNr0QwPoziYvjmGvQ2yVsBwQtfrLw,170
|
3
|
-
ams/_version.py,sha256=
|
3
|
+
ams/_version.py,sha256=Y9hMQAuHXt_45lOoYtSA44yQCwKbKuDs8CYDfeESO-k,498
|
4
4
|
ams/cli.py,sha256=OuQc4xotv0dCgEIEaw-ZFEfDZvt1w9QQ9yjeaJiDe_s,6067
|
5
5
|
ams/interface.py,sha256=wYqoh_rK4vHidJjWnE5VZHzonm4D-uCzZt0Z9oFBKVo,45233
|
6
6
|
ams/main.py,sha256=OFbEtXEIuv-zSFccyN_1Mrg8XEn4TZTHXa3Ly-zbxmo,23559
|
@@ -61,7 +61,7 @@ ams/models/info.py,sha256=Oh0Xo5J4ZHBsNIkMOzIwv_DegsX1inyuv3Q5CpCfyQw,788
|
|
61
61
|
ams/models/line.py,sha256=ju5h1BcW4kgVWm_lgl8zWhSYqlsUjbdoUwzz2t0Vx1s,2770
|
62
62
|
ams/models/reserve.py,sha256=3BjWCyKrPL4CwTvmzRxk25H8Nkxh-Rz0Ne17I9Y2TUA,2816
|
63
63
|
ams/models/shunt.py,sha256=h5QV33EcCd86XRR0sMIzcO0PTeTirkWaxi8imPKzOi0,337
|
64
|
-
ams/models/timeslot.py,sha256=
|
64
|
+
ams/models/timeslot.py,sha256=z_LDZZOjYFG_R_1jwBWSsLKsD-OoauWo027Z2J_JIMQ,3639
|
65
65
|
ams/models/zone.py,sha256=-oOmPiMa8I7TzgheKEZOImXWv273ri6TURhmzy_ygkE,1089
|
66
66
|
ams/models/distributed/__init__.py,sha256=3uiMHT2YRq79DXIB1jni6wP7dNoQMjU1bMTUpr4P6Rc,161
|
67
67
|
ams/models/distributed/esd1.py,sha256=Ojqp_dJOJqa65u8kZ-oreA5cxruX2kXZ5AeNAAeYV7g,2136
|
@@ -74,7 +74,7 @@ ams/models/static/gen.py,sha256=QXklOYlnU7QHWy-WFJwhxuNItUPqFsLJIjAO4sGMUbg,7087
|
|
74
74
|
ams/models/static/pq.py,sha256=SCwAqhqvKy_PFHp6VYO_zgv3v6gI5pK3KvT3RNX-nvA,2782
|
75
75
|
ams/opt/__init__.py,sha256=INsl8yxtOzTKqV9pzVxlL6RSGDRaUDwxpZMY1QROrF4,459
|
76
76
|
ams/opt/constraint.py,sha256=ERT9zwjQyGkvDo465Yd0wBexlIhjVmw0MyWq4BWnWoI,5534
|
77
|
-
ams/opt/exprcalc.py,sha256=
|
77
|
+
ams/opt/exprcalc.py,sha256=Dkopx7U5VnfeqN6VDAx1iqaF60dRxvHpNErnhZN1rm4,4422
|
78
78
|
ams/opt/expression.py,sha256=WrWnYliB61uHA_wQjtYgtAXdpgSN1pNqQmWvzHWSsdE,5569
|
79
79
|
ams/opt/objective.py,sha256=W0dQfW5dHNdWEc2DQtWYNGMuhMY6Pu-HTD0n7-izDZA,5519
|
80
80
|
ams/opt/omodel.py,sha256=hEtfKoSNssSxHgUDdep79pifNTsywytDTjgGgne7nKM,12750
|
@@ -84,14 +84,14 @@ ams/opt/var.py,sha256=cpDiELo37E7IoTDlVn_NbkuFNQ88oey23YOF6Gpg6zM,7707
|
|
84
84
|
ams/routines/__init__.py,sha256=V_IyEb5qLBrZ4zc_eVe-Rc0G_j-u881tvEzcEejhNv8,647
|
85
85
|
ams/routines/acopf.py,sha256=dLVTh84KiBvLyG2auNsIfcufsl6N-9FcXWjpdYrQfYQ,208
|
86
86
|
ams/routines/dcopf.py,sha256=QagOUPWgBIh9zhh2LQp7aZw0kx3n-JKtClVh7X3M-yI,11874
|
87
|
-
ams/routines/dcopf2.py,sha256=
|
88
|
-
ams/routines/dcpf.py,sha256=
|
87
|
+
ams/routines/dcopf2.py,sha256=GNXyydfVKRYx4gW_5mdWhnA2eDDYFSUGK-AuJnEC-fI,4899
|
88
|
+
ams/routines/dcpf.py,sha256=qZ2MSOmn53lz2Q54Cy_tIZ3TSKYJuN1YQsQez1XRukQ,8384
|
89
89
|
ams/routines/dopf.py,sha256=IRvkwYF80sYAPI0iUS5L6c2jChFT3vl8tELf7LA6V7Q,6275
|
90
90
|
ams/routines/ed.py,sha256=-OpoWiTEMDC5dHcumJikKPsp7DoyfxQ0sRXjKhWQ6vE,11870
|
91
91
|
ams/routines/grbopt.py,sha256=hEDy7L-lSd7QxSN_GAyDLaLkhIpxl6csXz6ntdKT_fw,5510
|
92
92
|
ams/routines/pflow.py,sha256=vFnf61cYv7gWJSGqcQrMOaw-aOODd2eJMLpQ4aM1PQM,9438
|
93
93
|
ams/routines/pypower.py,sha256=VnqMQZkBIvDe3tDbTJcxYz04idon5XvmGlf7OSs8kOI,27334
|
94
|
-
ams/routines/routine.py,sha256
|
94
|
+
ams/routines/routine.py,sha256=eDscTniBpFh9SZ8pTV1pmi-b_6JwL5OYOgiXmPUUNxE,39981
|
95
95
|
ams/routines/rted.py,sha256=-5UOeEGx3ZOrF0FG0M0OUPP2tIfajQmKyZHTQ3c6kaE,22058
|
96
96
|
ams/routines/type.py,sha256=lvTWSnCYIbRJXIm3HX6jA0Hv-WWYusTOUPfoW8DITlU,3877
|
97
97
|
ams/routines/uc.py,sha256=L9LpwjoqKoUzIwYq-G-r1zRTMGfbaSWSwT8GZuf_nB0,15650
|
@@ -103,14 +103,14 @@ docs/make.bat,sha256=9UgKGb4SdP006622fJiFxeFT1BeycYAs6hDbV1xwPy8,804
|
|
103
103
|
docs/source/api.rst,sha256=BRzdDFDzDwVL7Jr_Xj-O5Icgx0gt5hNNd1OjvPl7ap0,1490
|
104
104
|
docs/source/conf.py,sha256=UyoWogZTUNSJU7pQS_JaR28nKddW94zr01LYoIciZZw,6688
|
105
105
|
docs/source/genmodelref.py,sha256=IhmF7bDw8BXPvLD8V3WjQNrfc-H07r5iS-_4DHbbp-8,1420
|
106
|
-
docs/source/genroutineref.py,sha256=
|
106
|
+
docs/source/genroutineref.py,sha256=0Fac6ZPY0TVfRvunq-FY6iax-_N6EEcoeVXVZmkfV4k,2006
|
107
107
|
docs/source/index.rst,sha256=oAdRBWTLCX8nEMVatfDFkn0dtvinOK7vg4QUekT4jns,2738
|
108
|
-
docs/source/release-notes.rst,sha256=
|
108
|
+
docs/source/release-notes.rst,sha256=tsSEDXGQGi9kH8-gnGb-SslytqfRFRto6iEJDgWyrXI,14709
|
109
109
|
docs/source/_templates/autosummary/base.rst,sha256=zl3U4baR4a6YjsHyT-x9zCOrHwKZOVUdWn1NPX2u3bc,106
|
110
110
|
docs/source/_templates/autosummary/class.rst,sha256=Hv_igCsLsUpM62_zN0nqj6FSfKnS5xLyu8ZldMbfOAk,668
|
111
111
|
docs/source/_templates/autosummary/module.rst,sha256=YdbpCudOrEU-JbuSlzGvcOI2hn_KrCM6FW5HcGqkaEE,1113
|
112
112
|
docs/source/_templates/autosummary/module_toctree.rst,sha256=sg30OdqFDLyo8Y3hl9V-s2BXb1bzcjjqqWaWi-C3qFM,1126
|
113
|
-
docs/source/examples/index.rst,sha256=
|
113
|
+
docs/source/examples/index.rst,sha256=8nnW6jISleIz3IBWmqWtQcaOEdgMonY1UfWYs3NjTnM,830
|
114
114
|
docs/source/getting_started/copyright.rst,sha256=d3S7FjrbysVqQd3pEBadrrkcQOZ7sYYeDTCOS4goPC8,715
|
115
115
|
docs/source/getting_started/index.rst,sha256=mcp1NdUwbPoNzpn7Owf5Qzfd6J_--ToU52PjmrbwjBY,1512
|
116
116
|
docs/source/getting_started/install.rst,sha256=pCL5GDNxwkWnrPaO48i9c0bBPT_dYAWvD2CQ7Oi2P_0,7400
|
@@ -135,8 +135,8 @@ docs/source/modeling/index.rst,sha256=TasRAJSglc5KAZaGAj9TLMktOO2TtzZsqG5WvvZXB_
|
|
135
135
|
docs/source/modeling/model.rst,sha256=j7OSvoXnDht6rGpgwPiJklsCWrebfx4DxIN-G8r6iFo,7086
|
136
136
|
docs/source/modeling/routine.rst,sha256=BkUE3y5L1lA7LP9Nyzc4zzY-tF3t4k7egBE188kybHY,4286
|
137
137
|
docs/source/modeling/system.rst,sha256=NMOPNMOKG1_dRyNPPx-MiCKbbpadxWJxGyU6geRUsvQ,1374
|
138
|
-
ltbams-1.0.
|
139
|
-
ltbams-1.0.
|
140
|
-
ltbams-1.0.
|
141
|
-
ltbams-1.0.
|
142
|
-
ltbams-1.0.
|
138
|
+
ltbams-1.0.15.dist-info/METADATA,sha256=K6aLQwj_aKgX8n92MvowKSeKLlI72bAjR8rX-QOES0E,14333
|
139
|
+
ltbams-1.0.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
140
|
+
ltbams-1.0.15.dist-info/entry_points.txt,sha256=FA56FlhO_yVNeEf810SrorVQb7_Xsmo3_EW-W-ijUfA,37
|
141
|
+
ltbams-1.0.15.dist-info/top_level.txt,sha256=5QQ_oDY9sa52MVmqCjqjUq07BssHOKmDSaQ8EZi6DOw,9
|
142
|
+
ltbams-1.0.15.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|