PyIBIS-AMI 5.1.1__tar.gz → 5.1.4__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 (48) hide show
  1. {PyIBIS-AMI-5.1.1/src/PyIBIS_AMI.egg-info → pyibis_ami-5.1.4}/PKG-INFO +2 -2
  2. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/README.md +1 -1
  3. pyibis_ami-5.1.4/docs/source/ami.rst +24 -0
  4. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/docs/source/conf.py +67 -38
  5. pyibis_ami-5.1.4/docs/source/ibis.rst +19 -0
  6. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/docs/source/index.rst +5 -7
  7. pyibis_ami-5.1.4/docs/source/install.rst +31 -0
  8. pyibis_ami-5.1.4/docs/source/modules.rst +12 -0
  9. pyibis_ami-5.1.4/docs/source/tools.rst +9 -0
  10. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/pyproject.toml +1 -1
  11. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4/src/PyIBIS_AMI.egg-info}/PKG-INFO +2 -2
  12. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/PyIBIS_AMI.egg-info/SOURCES.txt +4 -1
  13. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/__init__.py +1 -0
  14. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/__main__.py +1 -0
  15. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ami/config.py +106 -26
  16. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ami/model.py +7 -1
  17. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ami/parser.py +1 -0
  18. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ibis/file.py +4 -3
  19. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ibis/model.py +1 -1
  20. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ibis/parser.py +2 -2
  21. PyIBIS-AMI-5.1.1/docs/source/intro.rst +0 -4
  22. PyIBIS-AMI-5.1.1/docs/source/modules.rst +0 -44
  23. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/LICENSE +0 -0
  24. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/MANIFEST.in +0 -0
  25. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/all_taps.run +0 -0
  26. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/bandwidth.run +0 -0
  27. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/dummy.em +0 -0
  28. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/examples.md +0 -0
  29. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/freq_resp.em +0 -0
  30. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/impulse.em +0 -0
  31. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/impulse_response_8ma.txt +0 -0
  32. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/mode.run +0 -0
  33. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/stratix4_ami_tx_runs/all_taps.run +0 -0
  34. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/examples/stratix4_ami_tx_runs/test_results.xml +0 -0
  35. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/setup.cfg +0 -0
  36. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/PyIBIS_AMI.egg-info/dependency_links.txt +0 -0
  37. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/PyIBIS_AMI.egg-info/entry_points.txt +0 -0
  38. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/PyIBIS_AMI.egg-info/requires.txt +0 -0
  39. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/PyIBIS_AMI.egg-info/top_level.txt +0 -0
  40. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ami/__init__.py +0 -0
  41. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ami/generic.ami.em +0 -0
  42. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ami/generic.ibs.em +0 -0
  43. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ami/parameter.py +0 -0
  44. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/ibis/__init__.py +0 -0
  45. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/tools/__init__.py +0 -0
  46. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/tools/run_tests.py +0 -0
  47. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/src/pyibisami/tools/test_results.xsl +0 -0
  48. {PyIBIS-AMI-5.1.1 → pyibis_ami-5.1.4}/tests/test_run_tests.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyIBIS-AMI
3
- Version: 5.1.1
3
+ Version: 5.1.4
4
4
  Summary: Facilitates working directly with IBIS-AMI DLLs from the Python command prompt.
5
5
  Author: David Patterson
6
6
  Author-email: David Banas <capn.freako@gmail.com>
@@ -42,7 +42,7 @@ command line applications.
42
42
  It can be installed via `conda`. PyPi support is experimental but can be installed with
43
43
  `pip install PyIBIS-AMI`.
44
44
 
45
- [View API/Developer's Documentation.](https://htmlpreview.github.io/?https://github.com/capn-freako/PyAMI/blob/master/docs/build/html/index.html)
45
+ [View API/Developer's Documentation.](https://pyibis-ami.readthedocs.io/en/latest/)
46
46
 
47
47
  ## Command Line Tools
48
48
 
@@ -9,7 +9,7 @@ command line applications.
9
9
  It can be installed via `conda`. PyPi support is experimental but can be installed with
10
10
  `pip install PyIBIS-AMI`.
11
11
 
12
- [View API/Developer's Documentation.](https://htmlpreview.github.io/?https://github.com/capn-freako/PyAMI/blob/master/docs/build/html/index.html)
12
+ [View API/Developer's Documentation.](https://pyibis-ami.readthedocs.io/en/latest/)
13
13
 
14
14
  ## Command Line Tools
15
15
 
@@ -0,0 +1,24 @@
1
+ pyibisami.ami
2
+ =============
3
+
4
+ AMI related submodules in the *PyIBIS-AMI* package.
5
+
6
+ config
7
+ ------
8
+
9
+ .. automodule:: pyibisami.ami.config
10
+
11
+ model
12
+ -----
13
+
14
+ .. automodule:: pyibisami.ami.model
15
+
16
+ parameter
17
+ ---------
18
+
19
+ .. automodule:: pyibisami.ami.parameter
20
+
21
+ parser
22
+ ------
23
+
24
+ .. automodule:: pyibisami.ami.parser
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # PyBERT Developer Guide documentation build configuration file, created by
3
+ # PyIBIS-AMI Developer Guide documentation build configuration file, created by
4
4
  # sphinx-quickstart on Tue Feb 10 10:04:12 2015.
5
5
  #
6
6
  # This file is execfile()d with the current directory set to its
@@ -18,20 +18,44 @@ import sys
18
18
  # If extensions (or modules to document with autodoc) are in another directory,
19
19
  # add these directories to sys.path here. If the directory is relative to the
20
20
  # documentation root, use os.path.abspath to make it absolute, like shown here.
21
- # sys.path.insert(0, os.path.abspath('.'))
21
+ sys.path.insert(0, os.path.abspath("../../src"))
22
22
 
23
23
  # -- General configuration ------------------------------------------------
24
24
 
25
- # dbanas-2015_02_14
26
- autoclass_content = "both"
27
-
28
25
  # If your documentation needs a minimal Sphinx version, state it here.
29
26
  # needs_sphinx = '1.0'
30
27
 
31
28
  # Add any Sphinx extension module names here, as strings. They can be
32
29
  # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
33
30
  # ones.
34
- extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode", "sphinx.ext.napoleon", "m2r2"]
31
+ extensions = [
32
+ "sphinx.ext.autodoc",
33
+ "sphinx.ext.viewcode",
34
+ "sphinx.ext.napoleon",
35
+ "sphinx.ext.coverage",
36
+ "sphinx.ext.todo",
37
+ # "sphinx.ext.autosummary",
38
+ "m2r2",
39
+ ]
40
+ autodoc_default_options = {
41
+ "undoc-members": True,
42
+ "inherited-members": False,
43
+ "show-inheritance": True,
44
+ "members": True,
45
+ "exclude-members": "default_traits_view",
46
+ }
47
+ autodoc_mock_imports = [
48
+ "chaco",
49
+ "click",
50
+ "em",
51
+ "enable",
52
+ "matplotlib",
53
+ "numpy",
54
+ "traits",
55
+ "traitsui",
56
+ ]
57
+ autoclass_content = "both"
58
+ autodata_content = "both"
35
59
 
36
60
  # Add any paths that contain templates here, relative to this directory.
37
61
  templates_path = ["_templates"]
@@ -45,18 +69,21 @@ source_suffix = ".rst"
45
69
  # The master toctree document.
46
70
  master_doc = "index"
47
71
 
48
- # General information about the project.
49
- project = "PyIBIS-AMI Developer Guide"
72
+ # -- Project information -----------------------------------------------------
73
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
74
+ project = "PyIBIS-AMI User's Guide"
50
75
  copyright = "2015, David Banas"
76
+ author = "David Banas"
77
+ release = "v5.1.3"
51
78
 
52
79
  # The version info for the project you're documenting, acts as replacement for
53
80
  # |version| and |release|, also used in various other places throughout the
54
81
  # built documents.
55
82
  #
56
83
  # The short X.Y version.
57
- version = "4.0"
84
+ version = "5.1"
58
85
  # The full version, including alpha/beta/rc tags.
59
- release = "4.0.0"
86
+ release = "5.1.3"
60
87
 
61
88
  # The language for content autogenerated by Sphinx. Refer to documentation
62
89
  # for a list of supported languages.
@@ -73,7 +100,7 @@ language = "en"
73
100
 
74
101
  # List of patterns, relative to source directory, that match files and
75
102
  # directories to ignore when looking for source files.
76
- exclude_patterns = []
103
+ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
77
104
 
78
105
  # The reST default role (used for this markup: `text`) to use for all
79
106
  # documents.
@@ -101,10 +128,12 @@ pygments_style = "sphinx"
101
128
 
102
129
 
103
130
  # -- Options for HTML output ----------------------------------------------
131
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
104
132
 
105
133
  # The theme to use for HTML and HTML Help pages. See the documentation for
106
134
  # a list of builtin themes.
107
- html_theme = "default"
135
+ html_theme = "sphinx_rtd_theme"
136
+ todo_include_todos = True
108
137
 
109
138
  # Theme options are theme-specific and customize the look and feel of a theme
110
139
  # further. For a list of options available for each theme, see the
@@ -196,27 +225,27 @@ html_static_path = ["_static"]
196
225
  # html_search_scorer = 'scorer.js'
197
226
 
198
227
  # Output file base name for HTML help builder.
199
- htmlhelp_basename = "PyIBIS-AMIDeveloperGuidedoc"
228
+ htmlhelp_basename = "PyIBIS-AMIUserGuidedoc"
200
229
 
201
230
  # -- Options for LaTeX output ---------------------------------------------
202
231
 
203
- latex_elements = {
204
- # The paper size ('letterpaper' or 'a4paper').
205
- #'papersize': 'letterpaper',
206
- # The font size ('10pt', '11pt' or '12pt').
207
- #'pointsize': '10pt',
208
- # Additional stuff for the LaTeX preamble.
209
- #'preamble': '',
210
- # Latex figure (float) alignment
211
- #'figure_align': 'htbp',
212
- }
232
+ # latex_elements = {
233
+ # The paper size ('letterpaper' or 'a4paper').
234
+ #'papersize': 'letterpaper',
235
+ # The font size ('10pt', '11pt' or '12pt').
236
+ #'pointsize': '10pt',
237
+ # Additional stuff for the LaTeX preamble.
238
+ #'preamble': '',
239
+ # Latex figure (float) alignment
240
+ #'figure_align': 'htbp',
241
+ # }
213
242
 
214
243
  # Grouping the document tree into LaTeX files. List of tuples
215
244
  # (source start file, target name, title,
216
245
  # author, documentclass [howto, manual, or own class]).
217
- latex_documents = [
218
- ("index", "PyIBIS-AMIDeveloperGuide.tex", "PyIBIS-AMI Developer Guide Documentation", "David Banas", "manual"),
219
- ]
246
+ # latex_documents = [
247
+ # ("index", "PyIBIS-AMIDeveloperGuide.tex", "PyIBIS-AMI Developer Guide Documentation", "David Banas", "manual"),
248
+ # ]
220
249
 
221
250
  # The name of an image file (relative to this directory) to place at the top of
222
251
  # the title page.
@@ -243,7 +272,7 @@ latex_documents = [
243
272
 
244
273
  # One entry per manual page. List of tuples
245
274
  # (source start file, name, description, authors, manual section).
246
- man_pages = [("index", "pyibis-amideveloperguide", "PyIBIS-AMI Developer Guide Documentation", ["David Banas"], 1)]
275
+ # man_pages = [("index", "pyibis-amideveloperguide", "PyIBIS-AMI Developer Guide Documentation", ["David Banas"], 1)]
247
276
 
248
277
  # If true, show URL addresses after external links.
249
278
  # man_show_urls = False
@@ -254,17 +283,17 @@ man_pages = [("index", "pyibis-amideveloperguide", "PyIBIS-AMI Developer Guide D
254
283
  # Grouping the document tree into Texinfo files. List of tuples
255
284
  # (source start file, target name, title, author,
256
285
  # dir menu entry, description, category)
257
- texinfo_documents = [
258
- (
259
- "index",
260
- "PyIBIS-AMIDeveloperGuide",
261
- "PyIBIS-AMI Developer Guide Documentation",
262
- "David Banas",
263
- "PyIBIS-AMIDeveloperGuide",
264
- "One line description of project.",
265
- "Miscellaneous",
266
- ),
267
- ]
286
+ # texinfo_documents = [
287
+ # (
288
+ # "index",
289
+ # "PyIBIS-AMIDeveloperGuide",
290
+ # "PyIBIS-AMI Developer Guide Documentation",
291
+ # "David Banas",
292
+ # "PyIBIS-AMIDeveloperGuide",
293
+ # "One line description of project.",
294
+ # "Miscellaneous",
295
+ # ),
296
+ # ]
268
297
 
269
298
  # Documents to append as an appendix to all manuals.
270
299
  # texinfo_appendices = []
@@ -0,0 +1,19 @@
1
+ pyibisami.ibis
2
+ ==============
3
+
4
+ IBIS related submodules in the *PyIBIS-AMI* package.
5
+
6
+ file
7
+ ----
8
+
9
+ .. automodule:: pyibisami.ibis.file
10
+
11
+ model
12
+ -----
13
+
14
+ .. automodule:: pyibisami.ibis.model
15
+
16
+ parser
17
+ ------
18
+
19
+ .. automodule:: pyibisami.ibis.parser
@@ -3,12 +3,10 @@
3
3
  You can adapt this file completely to your liking, but it should at least
4
4
  contain the root `toctree` directive.
5
5
 
6
- ===========================================
7
- *PyIBIS-AMI* Source Code Developer's Guide
8
- ===========================================
6
+ *PyIBIS-AMI* API User's Guide
7
+ ==============================
9
8
 
10
- Welcome to the *PyIBIS-AMI Developer's Guide*!
11
- ==============================================
9
+ Welcome to the *PyIBIS-AMI* API user's documentation!
12
10
 
13
11
  Contents
14
12
  --------
@@ -16,11 +14,11 @@ Contents
16
14
  .. toctree::
17
15
  :maxdepth: 2
18
16
 
19
- intro
17
+ install
20
18
  modules
21
19
 
22
20
  Indices and tables
23
- ==================
21
+ ------------------
24
22
 
25
23
  * :ref:`genindex`
26
24
  * :ref:`modindex`
@@ -0,0 +1,31 @@
1
+ Installation Instructions
2
+ =========================
3
+
4
+ Installation into system Python environment
5
+ -------------------------------------------
6
+
7
+ If you don't mind installing *PyIBIS-AMI* into your system Python package library then installation is as simple as:
8
+
9
+ `pip install pyibis-ami`
10
+
11
+ Installation into custom virtual Python environment
12
+ ---------------------------------------------------
13
+
14
+ If, instead, you'd prefer to confine the *PyIBIS-AMI* package to a virtual environment, thus protecting your system Python installation from it, then execute these commands, in order:
15
+
16
+ 1. `python3 -m venv ~/.venv/pyibisami` (Creates a new Python virtual environment named "pyibisami".)
17
+
18
+ 2. `. ~/.venv/pyibisami/bin/activate` (on Windows: `. ~/.venv/pyibisami/Scripts/activate`) (Activates the new environment.)
19
+
20
+ - At this point, you should begin seeing "(pyibisami)" at the beginning of your command prompt, indicating that you have activated your `pyibisami` Python virtual environment activated.
21
+
22
+ 3. `pip install pyibis-ami` (Installs the *PyIBIS-AMI* package into your new virtual environment.)
23
+
24
+ Testing the installation
25
+ ------------------------
26
+
27
+ Either way, as a check on correct installation, run the following command:
28
+
29
+ `python -c "import pyibisami"`
30
+
31
+ And if you don't get a traceback/error then you've installed the package successfully!
@@ -0,0 +1,12 @@
1
+ *PyIBIS-AMI* Package
2
+ ====================
3
+
4
+ .. automodule:: pyibisami
5
+
6
+ .. toctree::
7
+ :maxdepth: 2
8
+ :caption: Modules:
9
+
10
+ ibis
11
+ ami
12
+ tools
@@ -0,0 +1,9 @@
1
+ pyibisami.tools
2
+ ===============
3
+
4
+ Misc. submodules in the *PyIBIS-AMI* package.
5
+
6
+ run_tests
7
+ ---------
8
+
9
+ .. automodule:: pyibisami.tools.run_tests
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "PyIBIS-AMI"
7
7
  description = "Facilitates working directly with IBIS-AMI DLLs from the Python command prompt."
8
- version = "5.1.1"
8
+ version = "5.1.4"
9
9
  authors = [ {name = "David Banas", email = "capn.freako@gmail.com"}
10
10
  , {name = "David Patterson"}
11
11
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyIBIS-AMI
3
- Version: 5.1.1
3
+ Version: 5.1.4
4
4
  Summary: Facilitates working directly with IBIS-AMI DLLs from the Python command prompt.
5
5
  Author: David Patterson
6
6
  Author-email: David Banas <capn.freako@gmail.com>
@@ -42,7 +42,7 @@ command line applications.
42
42
  It can be installed via `conda`. PyPi support is experimental but can be installed with
43
43
  `pip install PyIBIS-AMI`.
44
44
 
45
- [View API/Developer's Documentation.](https://htmlpreview.github.io/?https://github.com/capn-freako/PyAMI/blob/master/docs/build/html/index.html)
45
+ [View API/Developer's Documentation.](https://pyibis-ami.readthedocs.io/en/latest/)
46
46
 
47
47
  ## Command Line Tools
48
48
 
@@ -2,10 +2,13 @@ LICENSE
2
2
  MANIFEST.in
3
3
  README.md
4
4
  pyproject.toml
5
+ docs/source/ami.rst
5
6
  docs/source/conf.py
7
+ docs/source/ibis.rst
6
8
  docs/source/index.rst
7
- docs/source/intro.rst
9
+ docs/source/install.rst
8
10
  docs/source/modules.rst
11
+ docs/source/tools.rst
9
12
  examples/all_taps.run
10
13
  examples/bandwidth.run
11
14
  examples/dummy.em
@@ -8,6 +8,7 @@ Original Date: 3 July 2012
8
8
 
9
9
  Copyright (c) 2012 by David Banas; All rights reserved World wide.
10
10
  """
11
+
11
12
  from importlib.metadata import version as _get_version
12
13
 
13
14
  # Set PEP396 version attribute
@@ -1,4 +1,5 @@
1
1
  """A package of Python modules, used to configure and test IBIS-AMI models."""
2
+
2
3
  print("pyibisami is a package of sub-modules, and is not directly executable.")
3
4
  print("Perhaps, you meant:")
4
5
  print(" - pyibisami.ami.config")
@@ -6,14 +6,17 @@ Original author: David Banas
6
6
 
7
7
  Original date: February 26, 2016
8
8
 
9
+ Copyright (c) 2016 David Banas; all rights reserved World wide.
10
+
9
11
  This script gets called from a makefile, when any of the following need rebuilding:
10
12
 
11
13
  * a C++ source code file
12
14
  * a ``*.AMI`` file
13
15
  * a ``*.IBS`` file
16
+ * a ``*.TST`` file (a dummy place-holder indicating that the test run config. files have been made)
14
17
 
15
- All three will be rebuilt.
16
- (We rebuild all three, because it doesn't take very long, and we can
18
+ All files will be rebuilt.
19
+ (We rebuild all files, because it doesn't take very long, and we can
17
20
  insure consistency this way.)
18
21
 
19
22
  This gets triggered by one of two things:
@@ -21,11 +24,9 @@ This gets triggered by one of two things:
21
24
  #. The common model configuration information has changed, or
22
25
  #. One of the EmPy template files was updated.
23
26
 
24
- The idea, here, is that the ``*.IBS`` file, the ``*.AMI`` file, and the
25
- C++ source file should be configured from a common model configuration
26
- file, so as to ensure consistency between the three.
27
-
28
- Copyright (c) 2016 David Banas; all rights reserved World wide.
27
+ The idea here is that the ``*.IBS`` file, the ``*.AMI`` file, the C++ source file,
28
+ and the test run configuration files should be configured from a common model
29
+ configuration file, so as to ensure consistency between them all.
29
30
  """
30
31
  import importlib.util
31
32
  from datetime import date
@@ -36,8 +37,8 @@ import em
36
37
 
37
38
  param_types = {
38
39
  "INT": {"c_type": "int", "ami_type": "Integer", "getter": "get_param_int"},
39
- "FLOAT": {"c_type": "float", "ami_type": "Float", "getter": "get_param_float"},
40
- "TAP": {"c_type": "float", "ami_type": "Tap", "getter": "get_param_float"},
40
+ "FLOAT": {"c_type": "double", "ami_type": "Float", "getter": "get_param_float"},
41
+ "TAP": {"c_type": "double", "ami_type": "Tap", "getter": "get_param_float"},
41
42
  "BOOL": {"c_type": "bool", "ami_type": "Boolean", "getter": "get_param_bool"},
42
43
  "STRING": {"c_type": "char *", "ami_type": "String", "getter": "get_param_str"},
43
44
  }
@@ -116,20 +117,16 @@ def print_code(pname, param):
116
117
  print(" ", "node_names.pop_back();")
117
118
 
118
119
 
119
- def ami_config(py_file):
120
- """Read in the ``py_file`` and cpp.em file then generate a ibis, ami and
121
- cpp."""
122
- file_base_name = Path(py_file).stem
123
-
124
- # Read model configuration information.
125
- print(f"Reading model configuration information from file: {py_file}.")
126
- spec = importlib.util.spec_from_file_location(file_base_name, py_file)
127
- cfg = importlib.util.module_from_spec(spec)
128
- spec.loader.exec_module(cfg)
120
+ def mk_model(ibis_params, ami_params, model_name, description, out_dir="."):
121
+ """
122
+ Generate ibis, ami, and cpp files, by merging the
123
+ device specific parameterization with the templates.
124
+ """
129
125
 
130
- # Configure the 3 files.
126
+ py_file = (Path(out_dir).resolve() / model_name).with_suffix(".py")
127
+ # Configure the model files.
131
128
  for ext in ["cpp", "ami", "ibs"]:
132
- out_file = Path(py_file).with_suffix(f".{ext}")
129
+ out_file = py_file.with_suffix(f".{ext}")
133
130
  if ext == "ami":
134
131
  em_file = Path(__file__).parent.joinpath("generic.ami.em")
135
132
  elif ext == "ibs":
@@ -142,11 +139,11 @@ def ami_config(py_file):
142
139
  interpreter = em.Interpreter(
143
140
  output=out_file,
144
141
  globals={
145
- "ami_params": cfg.ami_params,
146
- "ibis_params": cfg.ibis_params,
142
+ "ami_params": ami_params,
143
+ "ibis_params": ibis_params,
147
144
  "param_types": param_types,
148
- "model_name": cfg.kFileBaseName,
149
- "description": cfg.kDescription,
145
+ "model_name": model_name,
146
+ "description": description,
150
147
  "date": str(date.today()),
151
148
  },
152
149
  )
@@ -156,10 +153,93 @@ def ami_config(py_file):
156
153
  interpreter.shutdown()
157
154
 
158
155
 
156
+ def ami_config(py_file):
157
+ """
158
+ Read in the ``py_file`` and cpp.em files,
159
+ then generate: ibis, ami, and cpp files.
160
+ """
161
+
162
+ file_base_name = Path(py_file).stem
163
+
164
+ # Read model configuration information.
165
+ print(f"Reading model configuration information from file: {py_file}.")
166
+ spec = importlib.util.spec_from_file_location(file_base_name, py_file)
167
+ cfg = importlib.util.module_from_spec(spec)
168
+ spec.loader.exec_module(cfg)
169
+
170
+ mk_model(cfg.ibis_params, cfg.ami_params, cfg.kFileBaseName, cfg.kDescription, out_dir=Path(py_file).parent)
171
+
172
+
173
+ def mk_combs(dict_items):
174
+ """Make all combinations possible from a list of dictionary items.
175
+
176
+ Args:
177
+ dict_items([(str, [T])]): List of dictionary key/value pairs.
178
+ The values are lists.
179
+
180
+ Return:
181
+ [[(str, T)]]: List of all possible combinations of key values.
182
+ """
183
+ if not dict_items:
184
+ return [
185
+ [],
186
+ ]
187
+ head, *tail = dict_items
188
+ k, vs = head
189
+ kvals = [(k, v) for v in vs]
190
+ return [[kval] + l for kval in kvals for l in mk_combs(tail)]
191
+
192
+
193
+ def mk_tests(test_defs, file_base_name, test_dir="test_runs"):
194
+ """Make the test run configuration files."""
195
+
196
+ pname = Path(test_dir).resolve()
197
+ pname.mkdir(exist_ok=True)
198
+ pname = (pname / file_base_name).resolve()
199
+ pname.mkdir(exist_ok=True)
200
+ for fname in test_defs.keys():
201
+ desc, ami_defs, sim_defs, ref_fstr = test_defs[fname]
202
+ ami_str, ami_dict = ami_defs
203
+ sim_str, sim_dict = sim_defs
204
+ with open((pname / fname).with_suffix(".run"), "w", encoding="utf-8") as f:
205
+ f.write(desc + "\n")
206
+ for ami_comb in mk_combs(ami_dict.items()):
207
+ for sim_comb in mk_combs(sim_dict.items()):
208
+ try:
209
+ pdict = dict(ami_comb)
210
+ pdict.update(dict(sim_comb))
211
+ f.write(f"\n('{ami_str.format(pdict=pdict)}_{sim_str.format(pdict=pdict)}', \\\n")
212
+ except:
213
+ print(f"ami_str: {ami_str}")
214
+ print(f"sim_str: {sim_str}")
215
+ print(f"pdict: {pdict}")
216
+ raise
217
+ f.write(f" ({{'root_name': '{file_base_name}', \\\n")
218
+ for k, v in ami_comb:
219
+ f.write(f" '{k}': {v}, \\\n")
220
+ f.write(" }, \\\n")
221
+ if sim_comb:
222
+ head, *tail = sim_comb
223
+ k, v = head
224
+ f.write(f" {{'{k}': {v}, \\\n")
225
+ for k, v in tail:
226
+ f.write(f" '{k}': {v}, \\\n")
227
+ f.write(" } \\\n")
228
+ f.write(" ), \\\n")
229
+ if ref_fstr:
230
+ f.write(f" '{ref_fstr.format(pdict=pdict)}', \\\n")
231
+ f.write(")\n")
232
+
233
+
234
+ # NOTE: The following is deprecated! Instead, make your model configurator executable
235
+ # and import what you need from this module. This is much cleaner.
159
236
  @click.command(context_settings=dict(help_option_names=["-h", "--help"]))
160
237
  @click.argument("py_file", type=click.Path(exists=True, resolve_path=True))
238
+ @click.option(
239
+ "-d", "--test_dir", show_default=True, default="test_runs", help="Output directory for test run generation."
240
+ )
161
241
  @click.version_option()
162
- def main(py_file):
242
+ def main(py_file, **kwd_args):
163
243
  """Configure IBIS-AMI model C++ source code, IBIS model, and AMI file.
164
244
 
165
245
  This command generates three files based off the input config file.
@@ -6,6 +6,7 @@ Original Date: July 3, 2012
6
6
 
7
7
  Copyright (c) 2019 David Banas; All rights reserved World wide.
8
8
  """
9
+
9
10
  import copy as cp
10
11
  from ctypes import CDLL, byref, c_char_p, c_double
11
12
  from pathlib import Path
@@ -215,7 +216,12 @@ class AMIModel:
215
216
  """
216
217
 
217
218
  def __init__(self, filename):
218
- """Load the dll and bind the 3 AMI functions."""
219
+ """
220
+ Load the dll and bind the 3 AMI functions.
221
+
222
+ Args:
223
+ filename(str): The DLL/SO file name.
224
+ """
219
225
 
220
226
  self._ami_mem_handle = None
221
227
  my_dll = CDLL(filename)
@@ -6,6 +6,7 @@ Original date: December 17, 2016
6
6
 
7
7
  Copyright (c) 2019 David Banas; all rights reserved World wide.
8
8
  """
9
+
9
10
  import re
10
11
 
11
12
  from parsec import ParseError, generate, many, many1, regex, string
@@ -7,8 +7,8 @@ Original Date: November 1, 2019
7
7
  For information regarding the IBIS modeling standard, visit:
8
8
  https://ibis.org/
9
9
 
10
- *Note:* The ``IBISModel`` class, defined here, needs to be kept separate from the
11
- other IBIS-related classes, defined in the ``ibis_model`` module, in order to
10
+ **Note:** The ``IBISModel`` class, defined here, needs to be kept separate from the
11
+ other IBIS-related classes, defined in the ``model`` module, in order to
12
12
  avoid circular imports.
13
13
 
14
14
  Copyright (c) 2019 by David Banas; All rights reserved World wide.
@@ -103,7 +103,7 @@ class IBISModel(HasTraits):
103
103
  ibis_file_name (str): The name of the IBIS file.
104
104
  is_tx (bool): True if this is a Tx model.
105
105
 
106
- KeywordArgs:
106
+ Keyword Args:
107
107
  debug (bool): Output debugging info to console when true.
108
108
  Default = False
109
109
  gui (bool): Set to `False` for command line and/or script usage.
@@ -164,6 +164,7 @@ class IBISModel(HasTraits):
164
164
  return f"IBIS Model '{self._model_dict['file_name']}'"
165
165
 
166
166
  def info(self):
167
+ """Basic information about the IBIS model."""
167
168
  res = ""
168
169
  try:
169
170
  for k in ["ibis_ver", "file_name", "file_rev"]:
@@ -25,7 +25,7 @@ class Component(HasTraits):
25
25
  def __init__(self, subDict):
26
26
  """
27
27
  Args:
28
- subDict (dict): Dictionary of [Component] sub-keywords/params.
28
+ subDict(dict): Dictionary of [Component] sub-keywords/params.
29
29
  """
30
30
 
31
31
  # Super-class initialization is ABSOLUTELY NECESSARY, in order
@@ -50,7 +50,7 @@ def logf(p, preStr=""):
50
50
  Args:
51
51
  p (Parser): The original parser.
52
52
 
53
- KeywordArgs:
53
+ Keyword Args:
54
54
  preStr (str): A prefix string to use in failure message.
55
55
  (Default = <empty string>)
56
56
  """
@@ -472,7 +472,7 @@ def parse_ibis_file(ibis_file_contents_str, debug=False):
472
472
  Args:
473
473
  ibis_file_contents_str (str): The contents of the IBIS file, as a single string.
474
474
 
475
- KeywordArgs:
475
+ Keyword Args:
476
476
  debug (bool): Output debugging info to console when true.
477
477
  Default = False
478
478
 
@@ -1,4 +0,0 @@
1
- General description of *pyibisami* package.
2
- -------------------------------------------
3
-
4
- .. automodule:: pyibisami
@@ -1,44 +0,0 @@
1
- Modules in *pyibisami* package
2
- ------------------------------
3
-
4
- ami.model - IBIS-AMI model encapsulation.
5
- *****************************************
6
-
7
- .. automodule:: pyibisami.ami.model
8
- :members:
9
-
10
- ami.parameter - IBIS-AMI parameter encapsulation.
11
- *************************************************
12
-
13
- .. automodule:: pyibisami.ami.parameter
14
- :members:
15
-
16
- ami.parse - AMI file parsing utilities.
17
- ***************************************
18
-
19
- .. automodule:: pyibisami.ami.parser
20
- :members:
21
-
22
- ami.config - Automatic configuration of: IBIS, AMI, and DLL/SO files, from Python configuration file.
23
- *****************************************************************************************************
24
-
25
- .. automodule:: pyibisami.ami.config
26
- :members:
27
-
28
- ibis.file - Encapsulation of an IBIS model file.
29
- ************************************************
30
-
31
- .. automodule:: pyibisami.ibis.file
32
- :members:
33
-
34
- ibis.model - Encapsulation of IBIS *Component* and *Model* keywords.
35
- ********************************************************************
36
-
37
- .. automodule:: pyibisami.ibis.model
38
- :members:
39
-
40
- ibis.parser - *Parsec* based parser for IBIS model files.
41
- *********************************************************
42
-
43
- .. automodule:: pyibisami.ibis.parser
44
- :members:
File without changes
File without changes
File without changes
File without changes
File without changes