diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..4262a95f --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 51178086035f1d1f1e5d249cb1c19cb0 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/Dependency.html b/Dependency.html new file mode 100644 index 00000000..e81bf9e8 --- /dev/null +++ b/Dependency.html @@ -0,0 +1,364 @@ + + + + + + + Dependency — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Dependency

+ + + + + + + + + + + +

Libraries.io

Requires.io

Libraries.io status for latest release

Requires.io

+
+

pyEDAA.CLITool Package

+ + + + + + + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

pyTooling

≥5.0.0

Apache License, 2.0

None

pyTooling.CLIAbstraction

≥0.4.1

Apache License, 2.0

+

pyVHDLModel

≥0.27.1

Apache License, 2.0

+
+
+
+

Unit Testing / Coverage / Type Checking (Optional)

+

Additional Python packages needed for testing, code coverage collection and static type checking. These packages are +only needed for developers or on a CI server, thus sub-dependencies are not evaluated further.

+

Manually Installing Test Requirements

+

Use the tests/requirements.txt file to install all dependencies via pip3. The file will recursively install +the mandatory dependencies too.

+
pip3 install -U -r tests/requirements.txt
+
+
+

Dependency List

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

pytest

≥7.2.0

MIT

Not yet evaluated.

pytest-cov

≥4.0.0

MIT

Not yet evaluated.

Coverage

≥7.0

Apache License, 2.0

Not yet evaluated.

mypy

≥1.2

MIT

Not yet evaluated.

lxml

≥4.9

BSD 3-Clause

Not yet evaluated.

+
+
+

Sphinx Documentation (Optional)

+

Additional Python packages needed for documentation generation. These packages are only needed for developers or on a +CI server, thus sub-dependencies are not evaluated further.

+

Manually Installing Documentation Requirements

+

Use the doc/requirements.txt file to install all dependencies via pip3. The file will recursively install +the mandatory dependencies too.

+
pip3 install -U -r doc/requirements.txt
+
+
+

Dependency List

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

pyTooling

≥5.0.0

Apache License, 2.0

None

Sphinx

≥5.3.0

BSD 3-Clause

Not yet evaluated.

sphinx_btd_theme

≥0.5.2

MIT

Not yet evaluated.

!! sphinx_fontawesome

≥0.0.6

GPL 2.0

Not yet evaluated.

sphinx_autodoc_typehints

≥1.19.5

MIT

Not yet evaluated.

+
+
+

Packaging (Optional)

+

Additional Python packages needed for installation package generation. These packages are only needed for developers or +on a CI server, thus sub-dependencies are not evaluated further.

+

Manually Installing Packaging Requirements

+

Use the build/requirements.txt file to install all dependencies via pip3. The file will recursively +install the mandatory dependencies too.

+
pip3 install -U -r build/requirements.txt
+
+
+

Dependency List

+ + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

pyTooling

≥5.0.0

Apache License, 2.0

None

wheel

≥0.38.1

MIT

Not yet evaluated.

+
+
+

Publishing (CI-Server only)

+

Additional Python packages needed for publishing the generated installation package to e.g, PyPI or any equivalent +services. These packages are only needed for maintainers or on a CI server, thus sub-dependencies are not evaluated +further.

+

Manually Installing Publishing Requirements

+

Use the dist/requirements.txt file to install all dependencies via pip3. The file will recursively +install the mandatory dependencies too.

+
pip3 install -U -r dist/requirements.txt
+
+
+

Dependency List

+ + + + + + + + + + + + + + + + + + + + +

Package

Version

License

Dependencies

wheel

≥0.38.1

MIT

Not yet evaluated.

Twine

any

Apache License, 2.0

Not yet evaluated.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Doc-License.html b/Doc-License.html new file mode 100644 index 00000000..3a2875ce --- /dev/null +++ b/Doc-License.html @@ -0,0 +1,485 @@ + + + + + + + Creative Commons Attribution 4.0 International — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Creative Commons Attribution 4.0 International
  • +
  • + Edit on GitHub +
  • +
+
+
+ +
+
+ + +
+

Attention

+

This CC BY 4.0 license applies only to the documentation of this project.

+
+
+

Creative Commons Attribution 4.0 International

+

Creative Commons Corporation (“Creative Commons”) is not a law firm and does not +provide legal services or legal advice. Distribution of Creative Commons public +licenses does not create a lawyer-client or other relationship. Creative Commons +makes its licenses and related information available on an “as-is” basis. +Creative Commons gives no warranties regarding its licenses, any material +licensed under their terms and conditions, or any related information. Creative +Commons disclaims all liability for damages resulting from their use to the +fullest extent possible.

+ +

Creative Commons Attribution 4.0 International Public License

+

By exercising the Licensed Rights (defined below), You accept and agree to be +bound by the terms and conditions of this Creative Commons Attribution 4.0 +International Public License (“Public License”). To the extent this Public +License may be interpreted as a contract, You are granted the Licensed Rights +in consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the Licensor +receives from making the Licensed Material available under these terms and +conditions.

+
+

Section 1 – Definitions.

+
    +
  1. Adapted Material means material subject to Copyright and Similar +Rights that is derived from or based upon the Licensed Material and in +which the Licensed Material is translated, altered, arranged, transformed, or +otherwise modified in a manner requiring permission under the Copyright and +Similar Rights held by the Licensor. For purposes of this Public License, +where the Licensed Material is a musical work, performance, or sound +recording, Adapted Material is always produced where the Licensed Material +is synched in timed relation with a moving image.

  2. +
  3. Adapter’s License means the license You apply to Your Copyright and +Similar Rights in Your contributions to Adapted Material in accordance with +the terms and conditions of this Public License.

  4. +
  5. Copyright and Similar Rights means copyright and/or similar rights +closely related to copyright including, without limitation, performance, +broadcast, sound recording, and Sui Generis Database Rights, without regard +to how the rights are labeled or categorized. For purposes of this Public +License, the rights specified in Section 2(b)(1)-(2) are not Copyright and +Similar Rights.

  6. +
  7. Effective Technological Measures means those measures that, in the +absence of proper authority, may not be circumvented under laws fulfilling +obligations under Article 11 of the WIPO Copyright Treaty adopted on +December 20, 1996, and/or similar international agreements.

  8. +
  9. Exceptions and Limitations means fair use, fair dealing, and/or any +other exception or limitation to Copyright and Similar Rights that applies to +Your use of the Licensed Material.

  10. +
  11. Licensed Material means the artistic or literary work, database, or +other material to which the Licensor applied this Public License.

  12. +
  13. Licensed Rights means the rights granted to You subject to the terms +and conditions of this Public License, which are limited to all Copyright and +Similar Rights that apply to Your use of the Licensed Material and that the +Licensor has authority to license.

  14. +
  15. Licensor means the individual(s) or entity(ies) granting rights under +this Public License.

  16. +
  17. Share means to provide material to the public by any means or process +that requires permission under the Licensed Rights, such as reproduction, +public display, public performance, distribution, dissemination, +communication, or importation, and to make material available to the public +including in ways that members of the public may access the material from a +place and at a time individually chosen by them.

  18. +
  19. Sui Generis Database Rights means rights other than copyright +resulting from Directive 96/9/EC of the European Parliament and of the +Council of 11 March 1996 on the legal protection of databases, as amended +and/or succeeded, as well as other essentially equivalent rights anywhere +in the world.

  20. +
  21. You means the individual or entity exercising the Licensed Rights +under this Public License. Your has a corresponding meaning.

  22. +
+
+
+

Section 2 – Scope.

+
    +
  1. License grant.

    +
      +
    1. Subject to the terms and conditions of this Public License, the Licensor +hereby grants You a worldwide, royalty-free, non-sublicensable, +non-exclusive, irrevocable license to exercise the Licensed Rights in the +Licensed Material to:

      +
      +
        +
      1. reproduce and Share the Licensed Material, in whole or in part; and

      2. +
      3. produce, reproduce, and Share Adapted Material.

      4. +
      +
      +
    2. +
    3. Exceptions and Limitations. For the avoidance of doubt, where +Exceptions and Limitations apply to Your use, this Public License does not +apply, and You do not need to comply with its terms and conditions.

    4. +
    5. Term. The term of this Public License is specified in Section 6(a).

    6. +
    7. Media and formats; technical modifications allowed. The Licensor +authorizes You to exercise the Licensed Rights in all media and formats +whether now known or hereafter created, and to make technical +modifications necessary to do so. The Licensor waives and/or agrees not to +assert any right or authority to forbid You from making technical +modifications necessary to exercise the Licensed Rights, including +technical modifications necessary to circumvent Effective Technological +Measures. For purposes of this Public License, simply making modifications +authorized by this Section 2(a)(4) never produces Adapted Material.

    8. +
    9. Downstream recipients.

      +
      +
        +
      1. Offer from the Licensor – Licensed Material. Every recipient of +the Licensed Material automatically receives an offer from the +Licensor to exercise the Licensed Rights under the terms and +conditions of this Public License.

      2. +
      3. No downstream restrictions. You may not offer or impose any +additional or different terms or conditions on, or apply any Effective +Technological Measures to, the Licensed Material if doing so restricts +exercise of the Licensed Rights by any recipient of the Licensed +Material.

      4. +
      +
      +
    10. +
    11. No endorsement. Nothing in this Public License constitutes or may +be construed as permission to assert or imply that You are, or that Your +use of the Licensed Material is, connected with, or sponsored, endorsed, +or granted official status by, the Licensor or others designated to +receive attribution as provided in Section 3(a)(1)(A)(i).

    12. +
    +
  2. +
  3. Other rights.

    +
      +
    1. Moral rights, such as the right of integrity, are not licensed under this +Public License, nor are publicity, privacy, and/or other similar +personality rights; however, to the extent possible, the Licensor waives +and/or agrees not to assert any such rights held by the Licensor to the +limited extent necessary to allow You to exercise the Licensed Rights, but +not otherwise.

    2. +
    3. Patent and trademark rights are not licensed under this Public License.

    4. +
    5. To the extent possible, the Licensor waives any right to collect royalties +from You for the exercise of the Licensed Rights, whether directly or +through a collecting society under any voluntary or waivable statutory or +compulsory licensing scheme. In all other cases the Licensor expressly +reserves any right to collect such royalties.

    6. +
    +
  4. +
+
+
+

Section 3 – License Conditions.

+

Your exercise of the Licensed Rights is expressly made subject to the following conditions.

+
    +
  1. Attribution.

    +
      +
    1. If You Share the Licensed Material (including in modified form), You must:

      +
      +
        +
      1. retain the following if it is supplied by the Licensor with the +Licensed Material:

      2. +
      +
      +
        +
      1. identification of the creator(s) of the Licensed Material and any +others designated to receive attribution, in any reasonable manner +requested by the Licensor (including by pseudonym if designated);

      2. +
      3. a copyright notice;

      4. +
      5. a notice that refers to this Public License;

      6. +
      7. a notice that refers to the disclaimer of warranties;

      8. +
      9. a URI or hyperlink to the Licensed Material to the extent reasonably +practicable;

      10. +
      +
      +
        +
      1. indicate if You modified the Licensed Material and retain an +indication of any previous modifications; and

      2. +
      3. indicate the Licensed Material is licensed under this Public License, +and include the text of, or the URI or hyperlink to, this Public +License.

      4. +
      +
      +
    2. +
    3. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner +based on the medium, means, and context in which You Share the Licensed +Material. For example, it may be reasonable to satisfy the conditions by +providing a URI or hyperlink to a resource that includes the required +information.

    4. +
    5. If requested by the Licensor, You must remove any of the information +required by Section 3(a)(1)(A) to the extent reasonably practicable.

    6. +
    7. If You Share Adapted Material You produce, the Adapter’s License You apply +must not prevent recipients of the Adapted Material from complying with +this Public License.

    8. +
    +
  2. +
+
+
+

Section 4 – Sui Generis Database Rights.

+

Where the Licensed Rights include Sui Generis Database Rights that apply to Your +use of the Licensed Material:

+
    +
  1. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, +reuse, reproduce, and Share all or a substantial portion of the contents of +the database;

  2. +
  3. if You include all or a substantial portion of the database contents in a +database in which You have Sui Generis Database Rights, then the database +in which You have Sui Generis Database Rights (but not its individual +contents) is Adapted Material; and

  4. +
  5. You must comply with the conditions in Section 3(a) if You Share all or a +substantial portion of the contents of the database.

  6. +
+

For the avoidance of doubt, this Section 4 supplements and does not replace +Your obligations under this Public License where the Licensed Rights include +other Copyright and Similar Rights.

+
+
+

Section 5 – Disclaimer of Warranties and Limitation of Liability.

+
    +
  1. Unless otherwise separately undertaken by the Licensor, to the extent +possible, the Licensor offers the Licensed Material as-is and as-available, +and makes no representations or warranties of any kind concerning the +Licensed Material, whether express, implied, statutory, or other. This +includes, without limitation, warranties of title, merchantability, +fitness for a particular purpose, non-infringement, absence of latent or +other defects, accuracy, or the presence or absence of errors, whether or +not known or discoverable. Where disclaimers of warranties are not allowed +in full or in part, this disclaimer may not apply to You.

  2. +
  3. To the extent possible, in no event will the Licensor be liable to You +on any legal theory (including, without limitation, negligence) or +otherwise for any direct, special, indirect, incidental, consequential, +punitive, exemplary, or other losses, costs, expenses, or damages arising +out of this Public License or use of the Licensed Material, even if the +Licensor has been advised of the possibility of such losses, costs, expenses, +or damages. Where a limitation of liability is not allowed in full or in +part, this limitation may not apply to You.

  4. +
  5. The disclaimer of warranties and limitation of liability provided above +shall be interpreted in a manner that, to the extent possible, most +closely approximates an absolute disclaimer and waiver of all liability.

  6. +
+
+
+

Section 6 – Term and Termination.

+
    +
  1. This Public License applies for the term of the Copyright and Similar Rights +licensed here. However, if You fail to comply with this Public License, then +Your rights under this Public License terminate automatically.

  2. +
  3. Where Your right to use the Licensed Material has terminated under +Section 6(a), it reinstates:

    +
      +
    1. automatically as of the date the violation is cured, provided it is cured +within 30 days of Your discovery of the violation; or

    2. +
    3. upon express reinstatement by the Licensor.

    4. +
    +

    For the avoidance of doubt, this Section 6(b) does not affect any right the +Licensor may have to seek remedies for Your violations of this Public License.

    +
  4. +
  5. For the avoidance of doubt, the Licensor may also offer the Licensed Material +under separate terms or conditions or stop distributing the Licensed Material +at any time; however, doing so will not terminate this Public License.

  6. +
  7. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.

  8. +
+
+
+

Section 7 – Other Terms and Conditions.

+
    +
  1. The Licensor shall not be bound by any additional or different terms or +conditions communicated by You unless expressly agreed.

  2. +
  3. Any arrangements, understandings, or agreements regarding the Licensed +Material not stated herein are separate from and independent of the terms +and conditions of this Public License.

  4. +
+
+
+

Section 8 – Interpretation.

+
    +
  1. For the avoidance of doubt, this Public License does not, and shall not be +interpreted to, reduce, limit, restrict, or impose conditions on any use of +the Licensed Material that could lawfully be made without permission under +this Public License.

  2. +
  3. To the extent possible, if any provision of this Public License is deemed +unenforceable, it shall be automatically reformed to the minimum extent +necessary to make it enforceable. If the provision cannot be reformed, it +shall be severed from this Public License without affecting the +enforceability of the remaining terms and conditions.

  4. +
  5. No term or condition of this Public License will be waived and no failure to +comply consented to unless expressly agreed to by the Licensor.

  6. +
  7. Nothing in this Public License constitutes or may be interpreted as a +limitation upon, or waiver of, any privileges and immunities that apply to +the Licensor or You, including from the legal processes of any jurisdiction +or authority.

  8. +
+
+

Creative Commons is not a party to its public licenses. Notwithstanding, +Creative Commons may elect to apply one of its public licenses to material it +publishes and in those instances will be considered the “Licensor.” Except for +the limited purpose of indicating that material is shared under a Creative +Commons public license or as otherwise permitted by the Creative Commons +policies published at creativecommons.org/policies, +Creative Commons does not authorize the use of the trademark “Creative Commons” +or any other trademark or logo of Creative Commons without its prior written +consent including, without limitation, in connection with any unauthorized +modifications to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For the +avoidance of doubt, this paragraph does not form part of the public licenses.

+

Creative Commons may be contacted at creativecommons.org

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Installation.html b/Installation.html new file mode 100644 index 00000000..f6fe24cc --- /dev/null +++ b/Installation.html @@ -0,0 +1,191 @@ + + + + + + + Installation/Updates — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Installation/Updates

+
+

Using PIP

+
+

Installation from PyPI using PIP

+
pip3 install pyEDAA.CLITool
+
+
+
+
+

Updating from PyPI using PIP

+
pip3 install -U pyEDAA.CLITool
+
+
+
+
+

Uninstallation using PIP

+
pip3 uninstall pyEDAA.CLITool
+
+
+
+
+

Installation from local directory using PIP

+
pip3 install .
+
+
+
+
+
+

Using setup.py (legacy)

+

See sections above on how to use PIP.

+
+

Installation using setup.py

+
setup.py install
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/License.html b/License.html new file mode 100644 index 00000000..78e9a95d --- /dev/null +++ b/License.html @@ -0,0 +1,276 @@ + + + + + + + Apache License 2.0 — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Note

+

This is a local copy of the Apache License Version 2.0.

+
+
+

Attention

+

This Apache License, 2.0 applies to all source and configuration files of project, except documentation.

+
+
+

Apache License 2.0

+

Version 2.0, January 2004

+

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+
+

1. Definitions.

+

“License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

+

“Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

+

“Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that +entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether +by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

+

“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License.

+

“Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and +configuration files.

+

“Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object +code, generated documentation, and conversions to other media types.

+

“Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is +included in or attached to the work (an example is provided in the Appendix below).

+

“Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

+

“Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative +Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to +submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication +sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is +conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.”

+

“Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work.

+
+ +
+

3. Grant of Patent License.

+

Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such +license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of +their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim +or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then +any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

+
+
+

4. Redistribution.

+

You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions:

+
    +
  • You must give any other recipients of the Work or Derivative Works a copy of this License; and

  • +
  • You must cause any modified files to carry prominent notices stating that You changed the files; and

  • +
  • You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source +form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

  • +
  • If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the +Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE +file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, +alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

  • +
+

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise +complies with the conditions stated in this License.

+
+
+

5. Submission of Contributions.

+

Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any +separate license agreement you may have executed with Licensor regarding such Contributions.

+
+
+

6. Trademarks.

+

This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable +and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

+
+
+

7. Disclaimer of Warranty.

+

Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, +MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and +assume any risks associated with Your exercise of permissions under this License.

+
+
+

8. Limitation of Liability.

+

In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or +consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages +for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been +advised of the possibility of such damages.

+
+
+

9. Accepting Warranty or Additional Liability.

+

While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other +liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole +responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

+
+

Appendix: How to apply the Apache License to your work

+

To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets “[]” replaced with your own identifying +information. (Don’t include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or +class name and description of purpose be included on the same “printed page” as the copyright notice for easier identification within third-party archives.

+
Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Aldec/ActiveHDL.html b/Tools/Aldec/ActiveHDL.html new file mode 100644 index 00000000..078deeef --- /dev/null +++ b/Tools/Aldec/ActiveHDL.html @@ -0,0 +1,285 @@ + + + + + + + ActiveHDL — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

ActiveHDL

+
+

Todo

+

Needs documentation.

+
+
+

VHDL Library Tool

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + + + + + +

vlib Option

Argument Class

Description

<lib>

VHDLLibraryTool.ValueLibraryName

Library name to create.

+
+
+

Usage

+
vlib = VHDLLibraryTool()
+vlib[vlib.ValueLibraryName] = "PoC"
+
+print(vlib.AsArgument())
+
+
+
+
+
+

VHDL Compiler

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vcom Option

Argument Class

Description

+
+
+

Usage

+
vcom = VHDLCompiler()
+# vcom[vcom.ValueLibraryName] = "PoC"
+
+print(vcom.AsArgument())
+
+
+
+
+
+

(System-)Verilog Compiler

+
+

Todo

+

This tool is not yet wrapped in Python using CLIAbstraction.

+
+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vlog Option

Argument Class

Description

+
+
+

Usage

+
vlog = VerilogCompiler()
+# vlog[vlog.ValueLibraryName] = "PoC"
+
+print(vlog.AsArgument())
+
+
+
+
+
+

VHDL Simulator

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vsim Option

Argument Class

Description

+
+
+

Usage

+
vsim = VHDLSimulator()
+# vsim[vsim.ValueLibraryName] = "PoC"
+
+print(vsim.AsArgument())
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Aldec/RivieraPRO.html b/Tools/Aldec/RivieraPRO.html new file mode 100644 index 00000000..cff6b63e --- /dev/null +++ b/Tools/Aldec/RivieraPRO.html @@ -0,0 +1,285 @@ + + + + + + + Riviera-PRO — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Riviera-PRO

+
+

Todo

+

Needs documentation.

+
+
+

VHDL Library Tool

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + + + + + +

vlib Option

Argument Class

Description

<lib>

VHDLLibraryTool.ValueLibraryName

Library name to create.

+
+
+

Usage

+
vlib = VHDLLibraryTool()
+vlib[vlib.ValueLibraryName] = "PoC"
+
+print(vlib.AsArgument())
+
+
+
+
+
+

VHDL Compiler

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vcom Option

Argument Class

Description

+
+
+

Usage

+
vcom = VHDLCompiler()
+# vcom[vcom.ValueLibraryName] = "PoC"
+
+print(vcom.AsArgument())
+
+
+
+
+
+

(System-)Verilog Compiler

+
+

Todo

+

This tool is not yet wrapped in Python using CLIAbstraction.

+
+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vlog Option

Argument Class

Description

+
+
+

Usage

+
vlog = VerilogCompiler()
+# vlog[vlog.ValueLibraryName] = "PoC"
+
+print(vlog.AsArgument())
+
+
+
+
+
+

VHDL Simulator

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vsim Option

Argument Class

Description

+
+
+

Usage

+
vsim = VHDLSimulator()
+# vsim[vsim.ValueLibraryName] = "PoC"
+
+print(vsim.AsArgument())
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Aldec/index.html b/Tools/Aldec/index.html new file mode 100644 index 00000000..290f1d20 --- /dev/null +++ b/Tools/Aldec/index.html @@ -0,0 +1,176 @@ + + + + + + + Aldec — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Aldec

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Cadence/Incisive.html b/Tools/Cadence/Incisive.html new file mode 100644 index 00000000..aebdc2d7 --- /dev/null +++ b/Tools/Cadence/Incisive.html @@ -0,0 +1,162 @@ + + + + + + + Incisive — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Incisive

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Cadence/index.html b/Tools/Cadence/index.html new file mode 100644 index 00000000..be2086eb --- /dev/null +++ b/Tools/Cadence/index.html @@ -0,0 +1,166 @@ + + + + + + + Cadence — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Cadence

+
+

Todo

+

A list of Cadence tools is needed.

+
+
+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/IntelFPGA/Quartus.html b/Tools/IntelFPGA/Quartus.html new file mode 100644 index 00000000..0b03d6ff --- /dev/null +++ b/Tools/IntelFPGA/Quartus.html @@ -0,0 +1,162 @@ + + + + + + + Quartus — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Quartus

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/IntelFPGA/index.html b/Tools/IntelFPGA/index.html new file mode 100644 index 00000000..48dc5a60 --- /dev/null +++ b/Tools/IntelFPGA/index.html @@ -0,0 +1,162 @@ + + + + + + + IntelFPGA — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

IntelFPGA

+
+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Lattice/Diamond.html b/Tools/Lattice/Diamond.html new file mode 100644 index 00000000..38f3613a --- /dev/null +++ b/Tools/Lattice/Diamond.html @@ -0,0 +1,162 @@ + + + + + + + Diamond — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Diamond

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Lattice/index.html b/Tools/Lattice/index.html new file mode 100644 index 00000000..db210627 --- /dev/null +++ b/Tools/Lattice/index.html @@ -0,0 +1,162 @@ + + + + + + + Lattice — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Lattice

+
+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/OpenSource/GHDL.html b/Tools/OpenSource/GHDL.html new file mode 100644 index 00000000..f7321e5a --- /dev/null +++ b/Tools/OpenSource/GHDL.html @@ -0,0 +1,223 @@ + + + + + + + GHDL — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

GHDL

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GHDL Option

Argument Class

Description

help

GHDL.CommandHelp

Print help page(s).

version

GHDL.CommandVersion

Print version information.

syntax

GHDL.CommandSyntax

Check syntax.

elab-order

GHDL.CommandElaborationOrder

Display (elaboration) ordered source files.

analyze

GHDL.CommandAnalyze

Analyze VHDL source file(s).

elaborate

GHDL.CommandElaborate

Elaborate design.

elab-run

GHDL.CommandElaborationAndRun

Elaborate and simulate design.

run

GHDL.CommandRun

Simulate design.

+
+
+

Derive Variants

+
def GetGHDLAsAnalyzer(self, std: VHDLVersion = None, ieee: str = None):
+  ...
+
+def GetGHDLAsElaborator(self, std: VHDLVersion = None, ieee: str = None):
+  ...
+
+def GetGHDLAsSimulator(self, std: VHDLVersion = None, ieee: str = None):
+  ...
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/OpenSource/GTKWave.html b/Tools/OpenSource/GTKWave.html new file mode 100644 index 00000000..48d6a688 --- /dev/null +++ b/Tools/OpenSource/GTKWave.html @@ -0,0 +1,185 @@ + + + + + + + GTKWave — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

GTKWave

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + + + + + + + + + +

GTKWave Option

Argument Class

Description

--dump

GTKWave.FlagDumpFile

Waveform file to load.

--save

GTKWave.FlagSaveFile

Load waveform settings file.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/OpenSource/index.html b/Tools/OpenSource/index.html new file mode 100644 index 00000000..3506d4e9 --- /dev/null +++ b/Tools/OpenSource/index.html @@ -0,0 +1,171 @@ + + + + + + + Open Source — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Open Source

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/SiemensEDA/ModelSim.html b/Tools/SiemensEDA/ModelSim.html new file mode 100644 index 00000000..6d283c2d --- /dev/null +++ b/Tools/SiemensEDA/ModelSim.html @@ -0,0 +1,285 @@ + + + + + + + ModelSim — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

ModelSim

+
+

Todo

+

Needs documentation.

+
+
+

VHDL Library Tool

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + + + + + +

vlib Option

Argument Class

Description

<lib>

VHDLLibraryTool.ValueLibraryName

Library name to create.

+
+
+

Usage

+
vlib = VHDLLibraryTool()
+vlib[vlib.ValueLibraryName] = "PoC"
+
+print(vlib.AsArgument())
+
+
+
+
+
+

VHDL Compiler

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vcom Option

Argument Class

Description

+
+
+

Usage

+
vcom = VHDLCompiler()
+# vcom[vcom.ValueLibraryName] = "PoC"
+
+print(vcom.AsArgument())
+
+
+
+
+
+

(System-)Verilog Compiler

+
+

Todo

+

This tool is not yet wrapped in Python using CLIAbstraction.

+
+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vlog Option

Argument Class

Description

+
+
+

Usage

+
vlog = VerilogCompiler()
+# vlog[vlog.ValueLibraryName] = "PoC"
+
+print(vlog.AsArgument())
+
+
+
+
+
+

VHDL Simulator

+
+

Arguments

+
+

Todo

+

Extract the following table from source code by scanning for CLIArgument attributes.

+
+ + + + + + + +

vsim Option

Argument Class

Description

+
+
+

Usage

+
vsim = VHDLSimulator()
+# vsim[vsim.ValueLibraryName] = "PoC"
+
+print(vsim.AsArgument())
+
+
+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/SiemensEDA/QuestaSim.html b/Tools/SiemensEDA/QuestaSim.html new file mode 100644 index 00000000..5f676b76 --- /dev/null +++ b/Tools/SiemensEDA/QuestaSim.html @@ -0,0 +1,163 @@ + + + + + + + QuestaSim — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

QuestaSim

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/SiemensEDA/index.html b/Tools/SiemensEDA/index.html new file mode 100644 index 00000000..62f6c591 --- /dev/null +++ b/Tools/SiemensEDA/index.html @@ -0,0 +1,170 @@ + + + + + + + SiemensEDA — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

SiemensEDA

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Synopsys/Synplify.html b/Tools/Synopsys/Synplify.html new file mode 100644 index 00000000..9e7a0e31 --- /dev/null +++ b/Tools/Synopsys/Synplify.html @@ -0,0 +1,163 @@ + + + + + + + Synplify — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Synplify

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Synopsys/VCS.html b/Tools/Synopsys/VCS.html new file mode 100644 index 00000000..f34e2e8e --- /dev/null +++ b/Tools/Synopsys/VCS.html @@ -0,0 +1,163 @@ + + + + + + + VCS — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

VCS

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Synopsys/index.html b/Tools/Synopsys/index.html new file mode 100644 index 00000000..1ee5d640 --- /dev/null +++ b/Tools/Synopsys/index.html @@ -0,0 +1,168 @@ + + + + + + + Synopsys — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Synopsys

+
+

Todo

+

A list of Synopsys tools is needed.

+
+
+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/SystemTools/Git.html b/Tools/SystemTools/Git.html new file mode 100644 index 00000000..21f70436 --- /dev/null +++ b/Tools/SystemTools/Git.html @@ -0,0 +1,162 @@ + + + + + + + Git — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Git

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/SystemTools/index.html b/Tools/SystemTools/index.html new file mode 100644 index 00000000..e28a7b30 --- /dev/null +++ b/Tools/SystemTools/index.html @@ -0,0 +1,162 @@ + + + + + + + System Tools — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

System Tools

+
+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Xilinx/ISE.html b/Tools/Xilinx/ISE.html new file mode 100644 index 00000000..feec5314 --- /dev/null +++ b/Tools/Xilinx/ISE.html @@ -0,0 +1,165 @@ + + + + + + + ISE — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

ISE

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Xilinx/Vitis.html b/Tools/Xilinx/Vitis.html new file mode 100644 index 00000000..4ca6a12e --- /dev/null +++ b/Tools/Xilinx/Vitis.html @@ -0,0 +1,165 @@ + + + + + + + Vitis — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Vitis

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Xilinx/Vivado.html b/Tools/Xilinx/Vivado.html new file mode 100644 index 00000000..bf65bf3e --- /dev/null +++ b/Tools/Xilinx/Vivado.html @@ -0,0 +1,165 @@ + + + + + + + Vivado — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Vivado

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Xilinx/VivadoSDK.html b/Tools/Xilinx/VivadoSDK.html new file mode 100644 index 00000000..073e4bcc --- /dev/null +++ b/Tools/Xilinx/VivadoSDK.html @@ -0,0 +1,165 @@ + + + + + + + Vivado SDK — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Vivado SDK

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Xilinx/index.html b/Tools/Xilinx/index.html new file mode 100644 index 00000000..6a6eddc3 --- /dev/null +++ b/Tools/Xilinx/index.html @@ -0,0 +1,168 @@ + + + + + + + Xilinx — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Xilinx

+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Yosys/index.html b/Tools/Yosys/index.html new file mode 100644 index 00000000..c9cd7315 --- /dev/null +++ b/Tools/Yosys/index.html @@ -0,0 +1,166 @@ + + + + + + + Yosys — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Yosys

+
+

Todo

+

A list of Yosys tools is needed.

+
+
+ +
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/Yosys/nextpnr.html b/Tools/Yosys/nextpnr.html new file mode 100644 index 00000000..1e8bb9f6 --- /dev/null +++ b/Tools/Yosys/nextpnr.html @@ -0,0 +1,162 @@ + + + + + + + nextpnr — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

nextpnr

+
+

Todo

+

Needs documentation.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tools/index.html b/Tools/index.html new file mode 100644 index 00000000..aabbdbef --- /dev/null +++ b/Tools/index.html @@ -0,0 +1,233 @@ + + + + + + + Supported Tools — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Supported Tools

+
    +
  • Aldec

    +
      +
    • 🚧 Active-HDL

    • +
    • 🚧 Riviera-PRO

    • +
    +
  • +
  • Altera

    +
      +
    • 🚧 Quartus

    • +
    • 🚫 ModelSim Altera (Student) Edition

    • +
    +
  • +
  • Cadence

    +
      +
    • 🙋 need a list of tools

    • +
    +
  • +
  • IntelFPGA

    +
      +
    • 🚧 Quartus

    • +
    • 🚫 ModelSim Altera (Student) Edition

    • +
    +
  • +
  • Lattice

    +
      +
    • 🚧 Diamond

    • +
    • 🚫 Active-HDL Lattice Edition

    • +
    • 🚫 ModelSim Lattice Edition

    • +
    +
  • +
  • MentorGraphics

    +
      +
    • ✅ ModelSim DE/SE/PE

    • +
    • 🚫 QuestaSim

    • +
    +
  • +
  • SiemensEDA

    +
      +
    • 🚫 ModelSim DE/SE/PE

    • +
    • 🚫 QuestaSim

    • +
    +
  • +
  • Synopsys

    +
      +
    • 🙋 need a list of tools

    • +
    +
  • +
  • Xilinx

    +
      +
    • 🚧 ISE

    • +
    • 🚧 Vivado

    • +
    • 🚫 Vivado-SDK

    • +
    • 🚫 Vitis

    • +
    +
  • +
  • System Tools

    +
      +
    • ✅ Git

    • +
    +
  • +
  • Open Source

    +
      +
    • ✅ GHDL

    • +
    • ✅ GTKWave

    • +
    +
  • +
  • Yosys

    +
      +
    • 🙋 need a list of tools

    • +
    +
  • +
+

Legend:
+✅ → implemented and tested
+🚧 → under test
+🚫 → planned but not yet implemented → accepting PRs
+🙋 → need help

+
+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Tutorial.html b/Tutorial.html new file mode 100644 index 00000000..92b4b9b9 --- /dev/null +++ b/Tutorial.html @@ -0,0 +1,145 @@ + + + + + + + Tutorial — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Tutorial

+
+

Todo

+

This part needs to be written.

+
+
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_images/inheritance-455befb8c97d8fd4494435aebe67af42fd66bf3a.svg b/_images/inheritance-455befb8c97d8fd4494435aebe67af42fd66bf3a.svg new file mode 100644 index 00000000..9c6495e1 --- /dev/null +++ b/_images/inheritance-455befb8c97d8fd4494435aebe67af42fd66bf3a.svg @@ -0,0 +1,36 @@ + + + + + + +inheritanceefda063369 + + +CLIToolException + + +CLIToolException + + + + + +ExceptionBase + + +ExceptionBase + + + + + +ExceptionBase->CLIToolException + + + + + diff --git a/_images/inheritance-52dc6b50a20cb037b8839de7faadbae633433d10.svg b/_images/inheritance-52dc6b50a20cb037b8839de7faadbae633433d10.svg new file mode 100644 index 00000000..b31cd050 --- /dev/null +++ b/_images/inheritance-52dc6b50a20cb037b8839de7faadbae633433d10.svg @@ -0,0 +1,21 @@ + + + + + + +inheritance89e4452223 + + +GHDLVersion + + +GHDLVersion + + + + + diff --git a/_images/inheritance-560c84dd291e0776ddf56fb58e6710a99a758cb8.svg b/_images/inheritance-560c84dd291e0776ddf56fb58e6710a99a758cb8.svg new file mode 100644 index 00000000..324bb6ed --- /dev/null +++ b/_images/inheritance-560c84dd291e0776ddf56fb58e6710a99a758cb8.svg @@ -0,0 +1,51 @@ + + + + + + +inheritanceb670c1d2e2 + + +Executable + + +Executable + + + + + +GHDL + + +GHDL + + + + + +Executable->GHDL + + + + + +Program + + +Program + + + + + +Program->Executable + + + + + diff --git a/_images/inheritance-5fb343f4c2be6a10a4dd8496a0d9ffdeb078a62f.svg b/_images/inheritance-5fb343f4c2be6a10a4dd8496a0d9ffdeb078a62f.svg new file mode 100644 index 00000000..e0864065 --- /dev/null +++ b/_images/inheritance-5fb343f4c2be6a10a4dd8496a0d9ffdeb078a62f.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance1b9f6bec01 + + +Executable + + +Executable + + + + + +GTKWave + + +GTKWave + + + + + +Executable->GTKWave + + + + + +Program + + +Program + + + + + +Program->Executable + + + + + diff --git a/_images/inheritance-922c9687a268e8a6a048d52174ab2361492e980d.svg b/_images/inheritance-922c9687a268e8a6a048d52174ab2361492e980d.svg new file mode 100644 index 00000000..5f2613cb --- /dev/null +++ b/_images/inheritance-922c9687a268e8a6a048d52174ab2361492e980d.svg @@ -0,0 +1,51 @@ + + + + + + +inheritance45e55e78a8 + + +Docker + + +Docker + + + + + +Executable + + +Executable + + + + + +Executable->Docker + + + + + +Program + + +Program + + + + + +Program->Executable + + + + + diff --git a/_images/logo.svg b/_images/logo.svg new file mode 100644 index 00000000..aa21067c --- /dev/null +++ b/_images/logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 00000000..85168eaf --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,129 @@ + + + + + + Overview: module code — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Overview: module code
  • +
  • +
  • +
+
+
+ +
+
+ +

All modules for which code is available

+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyEDAA/CLITool.html b/_modules/pyEDAA/CLITool.html new file mode 100644 index 00000000..12e70a82 --- /dev/null +++ b/_modules/pyEDAA/CLITool.html @@ -0,0 +1,172 @@ + + + + + + pyEDAA.CLITool — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyEDAA.CLITool

+# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universitaet Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture    #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""An abstraction layer of EDA CLI tools."""
+__author__ =    "Patrick Lehmann"
+__email__ =     "Paebbels@gmail.com"
+__copyright__ = "2014-2023, Patrick Lehmann, Unai Martinez-Corral"
+__license__ =   "Apache License, Version 2.0"
+__version__ =   "0.3.0"
+__keywords__ =  ["cli", "abstraction layer", "eda"]
+
+from pyTooling.Decorators import export
+from pyTooling.Exceptions import ExceptionBase
+
+
+
[docs]@export +class CLIToolException(ExceptionBase): + pass
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyEDAA/CLITool/Docker.html b/_modules/pyEDAA/CLITool/Docker.html new file mode 100644 index 00000000..176b83e7 --- /dev/null +++ b/_modules/pyEDAA/CLITool/Docker.html @@ -0,0 +1,206 @@ + + + + + + pyEDAA.CLITool.Docker — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyEDAA.CLITool.Docker

+# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2021-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for `GHDL <https://github.com/ghdl/ghdl>`__."""
+from pyTooling.Decorators import export
+
+from pyTooling.CLIAbstraction            import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument   import ExecutableArgument, StringArgument
+from pyTooling.CLIAbstraction.Command    import CommandArgument
+from pyTooling.CLIAbstraction.Flag       import LongFlag
+from pyTooling.CLIAbstraction.ValuedTupleFlag import LongTupleFlag
+
+
+
[docs]@export +class Docker(Executable): + _executableNames = { + "Darwin": "docker", + "Linux": "docker", + "Windows": "docker.exe" + } + + # 'version' sub commands and options +
[docs] @CLIArgument() + class CommandVersion(CommandArgument, name="version"): ...
+ + # 'container' sub commands and options +
[docs] @CLIArgument() + class CommandContainer(CommandArgument, name="container"): ...
+ +
[docs] @CLIArgument() + class CommandRun(CommandArgument, name="run"): ...
+ +
[docs] @CLIArgument() + class FlagContainerName(LongTupleFlag, name="name"): ...
+ +
[docs] @CLIArgument() + class FlagRemoveContainer(LongFlag, name="rm"): ...
+ +
[docs] @CLIArgument() + class FlagMount(LongTupleFlag, name="mount"): ...
+ +
[docs] @CLIArgument() + class FlagVolume(LongTupleFlag, name="volume"): ...
+ +
[docs] @CLIArgument() + class ValueImageName(StringArgument): ...
+ +
[docs] @CLIArgument() + class ValueCommand(StringArgument): ...
+ +
[docs] @CLIArgument() + class Executable(ExecutableArgument): ... # XXX: no argument here
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyEDAA/CLITool/GHDL.html b/_modules/pyEDAA/CLITool/GHDL.html new file mode 100644 index 00000000..813dc991 --- /dev/null +++ b/_modules/pyEDAA/CLITool/GHDL.html @@ -0,0 +1,587 @@ + + + + + + pyEDAA.CLITool.GHDL — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyEDAA.CLITool.GHDL

+# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for `GHDL <https://github.com/ghdl/ghdl>`__."""
+from re                   import search as re_search
+from typing               import Union, Iterable, Tuple
+
+from pyTooling.Decorators import export
+from pyVHDLModel          import VHDLVersion
+
+from pyTooling.CLIAbstraction               import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument      import PathListArgument, StringArgument
+from pyTooling.CLIAbstraction.Command       import CommandArgument
+from pyTooling.CLIAbstraction.Flag          import ShortFlag, LongFlag
+from pyTooling.CLIAbstraction.BooleanFlag   import LongBooleanFlag
+from pyTooling.CLIAbstraction.ValuedFlag    import ShortValuedFlag, LongValuedFlag
+from pyTooling.CLIAbstraction.KeyValueFlag  import ShortKeyValueFlag
+
+from pyEDAA.CLITool       import CLIToolException
+
+
+
[docs]@export +class GHDLVersion: + _major: int + _minor: int + _micro: int + _dev: bool + _commitsSinceLastTag: int + _gitHash: str + _dirty: bool + _edition: str + _gnatCompiler: Tuple[int, int, int] + _backend: str + +
[docs] def __init__(self, versionLine: str, gnatLine: str, backendLine: str): + match = re_search( + r"GHDL" + r"\s(?P<major>\d+)" + r"\.(?P<minor>\d+)" + r"\.(?P<micro>\d+)" + r"(?:-(?P<suffix>dev))?" + r"\s\(" + r"(?P<major2>\d+)" + r"\.(?P<minor2>\d+)" + r"\.(?P<micro2>\d+)" + r"\.(?:r(?P<cslt>\d+))" + r"\.(?:g(?P<hash>[0-9a-f]+))" + r"(?:\.(?P<dirty>dirty))?" + r"\)\s" + r"\[(?P<edition>[\w\s]+)\]", + versionLine) + + if match is None: + raise CLIToolException(f"Unknown first GHDL version string '{versionLine}'.") + + self._major = int(match["major"]) + self._minor = int(match["minor"]) + self._micro = int(match["micro"]) + self._dev = "dev" in match.groups() + self._commitsSinceLastTag = int(match["cslt"]) + self._gitHash = match["hash"] + self._dirty = "dirty" in match.groups() + self._edition = match["edition"] + + match = re_search( + r"\s*[\w\s]+:\s(?P<major>\d+)\.(?P<minor>\d+)\.(?P<micro>\d+)", gnatLine) + + if match is None: + raise CLIToolException(f"Unknown second GHDL version string '{gnatLine}'.") + + self._gnatCompiler = (match["major"], match["minor"], match["micro"]) + + match = re_search( + r"\s*(?P<backend>\w+)\scode\sgenerator", backendLine) + + if match is None: + raise CLIToolException(f"Unknown third GHDL version string '{backendLine}'.") + + self._backend = match["backend"]
+ + @property + def Major(self) -> int: + return self._major + + @property + def Minor(self) -> int: + return self._minor + + @property + def Micro(self) -> int: + return self._micro + + @property + def Dev(self) -> bool: + return self._dev + + @property + def CommitsSinceLastTag(self) -> int: + return self._commitsSinceLastTag + + @property + def GitHash(self) -> str: + return self._gitHash + + @property + def Dirty(self) -> bool: + return self._dirty + + @property + def Edition(self) -> str: + return self._edition + +
[docs] def __str__(self) -> str: + dev = f"-dev" if self._dev else "" + return f"{self._major}.{self._minor}.{self._micro}{dev}"
+ +
[docs] def __repr__(self) -> str: + return f"{self.__str__()} (Backend: {self._backend}; Git: {self._gitHash})"
+ + +
[docs]@export +class GHDL(Executable): + _executableNames = { + "Darwin": "ghdl", + "Linux": "ghdl", + "Windows": "ghdl.exe" + } + + # XXX: overwrite __init__ and get backend variant + # XXX: check for compatible backends + +
[docs] @CLIArgument() + class CommandHelp(CommandArgument, name="help"): + """Print help page(s)."""
+ +
[docs] @CLIArgument() + class CommandVersion(CommandArgument, name="version"): + """Print version information."""
+ +
[docs] @CLIArgument() + class CommandSyntax(CommandArgument, name="syntax"): + """Check syntax."""
+ +
[docs] @CLIArgument() + class CommandElaborationOrder(CommandArgument, name="elab-order"): + """Display (elaboration) ordered source files."""
+ +
[docs] @CLIArgument() + class CommandAnalyze(CommandArgument, name="analyze"): + """Analyze VHDL source file(s)."""
+ +
[docs] @CLIArgument() + class CommandElaborate(CommandArgument, name="elaborate"): + """Elaborate design."""
+ +
[docs] @CLIArgument() + class CommandElaborationAndRun(CommandArgument, name="elab-run"): + """Elaborate and simulate design."""
+ +
[docs] @CLIArgument() + class CommandRun(CommandArgument, name="run"): + """Simulate design."""
+ +
[docs] @CLIArgument() + class CommandBind(CommandArgument, name="bind"): + """Bind design unit."""
+ + + + + +
[docs] @CLIArgument() + class CommandCompile(CommandArgument, name="compile"): + """Generate whole sequence to elaborate design from files."""
+ +
[docs] @CLIArgument() + class CommandGenerateDependencies(CommandArgument, name="gen-depends"): + """Generate dependencies of design."""
+ +
[docs] @CLIArgument() + class CommandSynthesize(CommandArgument, name="synth"): + """Synthesis from design unit."""
+ +
[docs] @CLIArgument() + class FlagVerbose(ShortFlag, name="v"): + """Run in verbose mode (print more messages)."""
+ + # Analyze and elaborate options +
[docs] @CLIArgument() + class FlagVHDLStandard(LongValuedFlag, name="std"): + """Set the used VHDL standard version.""" + _value: VHDLVersion + +
[docs] def __init__(self, value: VHDLVersion): + if value is None: + raise ValueError(f"") # XXX: add message + + self._value = value
+ + @property + def Value(self) -> VHDLVersion: + return self._value + + @Value.setter + def Value(self, value: VHDLVersion) -> None: + if value is None: + raise ValueError(f"") # XXX: add message + + self._value = value + +
[docs] def AsArgument(self) -> Union[str, Iterable[str]]: + if self._name is None: + raise ValueError(f"") # XXX: add message + + return self._pattern.format(self._name, str(self._value)[-2:])
+ +
[docs] @CLIArgument() + class FlagIEEEFlavor(LongValuedFlag, name="ieee"): + """Set the used VHDL flavor."""
+ +
[docs] @CLIArgument() + class FlagSynopsys(ShortFlag, name="fsynopsys"): + """Set used VHDL flavor to *Synopsys* and make Synopsys packages visible in library ``ìeee``."""
+ +
[docs] @CLIArgument() + class FlagRelaxed(ShortFlag, name="frelaxed"): + """Relax some LRM rules."""
+ +
[docs] @CLIArgument() + class FlagExplicit(ShortFlag, name="fexplicit"): ...
+ +
[docs] @CLIArgument() + class FlagLibrary(LongValuedFlag, name="work"): + """Set working library."""
+ +
[docs] @CLIArgument() + class FlagWorkingDirectory(LongValuedFlag, name="workdir"): + """Set working directory."""
+ +
[docs] @CLIArgument() + class FlagMultiByteComments(LongFlag, name="mb-comments"): + """Allow multi-byte comments."""
+ + @CLIArgument() + class FlagSyntesisBindingRule(LongFlag, name="syn-binding"): + """Enable synthesis binding rule.""" + +
[docs] @CLIArgument() + class FlagSearchPath(ShortValuedFlag, name="P", pattern="-{0}{1}"): + """Add search path."""
+ +
[docs] @CLIArgument() + class FlagTimeResolution(LongValuedFlag, name="time-resolution"): + """Set base time resolution. + + Allowed values are ``auto`` (default), ``fs``, ``ps``, ``ns``, ``us``, ``ms`` or ``sec``. + """
+ +
[docs] @CLIArgument() + class FlagVitalChecks(LongBooleanFlag, name="vital-checks", pattern="-{0}", falsePattern="--no-{0}"): + """Check VITAL restrictions."""
+ +
[docs] @CLIArgument() + class FlagWarnUnboundComponents(ShortFlag, name="binding", pattern="-W{0}"): + """Warns for unbound components."""
+ +
[docs] @CLIArgument() + class FlagWarnReservedWords(ShortFlag, name="reserved", pattern="-W{0}"): + """Warns if VHDL'93 reserved words are used in VHDL'87."""
+ +
[docs] @CLIArgument() + class FlagWarnRedefinedDesignUnits(ShortFlag, name="library", pattern="-W{0}"): + """Warns for redefined design unit."""
+ +
[docs] @CLIArgument() + class FlagWarnNonVitalGenericNames(ShortFlag, name="vital-generic", pattern="-W{0}"): + """Warns of non-vital generic names."""
+ +
[docs] @CLIArgument() + class FlagWarnElaborationChecks(ShortFlag, name="delayed-checks", pattern="-W{0}"): + """Warns for checks performed at elaboration."""
+ +
[docs] @CLIArgument() + class FlagWarnUnnecessaryPackageBody(ShortFlag, name="body", pattern="-W{0}"): + """Warns for unnecessary package body."""
+ +
[docs] @CLIArgument() + class FlagWarnOthersSpecifications(ShortFlag, name="specs", pattern="-W{0}"): + """Warns if an all/others specification does not apply."""
+ + @CLIArgument() + class FlagSyntesisBindingRule(ShortFlag, name="unused", pattern="-W{0}"): + """Warns for unused subprograms.""" + +
[docs] @CLIArgument() + class FlagSyntesisBindingRule(ShortFlag, name="error", pattern="-W{0}"): + """Turns warnings into errors."""
+ +
[docs] @CLIArgument() + class OptionPaths(PathListArgument): + """Add list of VHDL files to analyze."""
+ +
[docs] @CLIArgument() + class OptionTopLevel(StringArgument): + """Specify the toplevel design unit."""
+ +
[docs] @CLIArgument() + class OptionArchitecture(StringArgument): + """Specify the architecture name, if the toplevel design unit is an entity."""
+ +
[docs] @CLIArgument() + class FlagGenerics(ShortKeyValueFlag, pattern="-{0}{1}={2}"): + """Set a generic value."""
+ +
[docs] @CLIArgument() + class FlagAsserts(ShortValuedFlag, name="asserts"): + """Select how assertions are handled. + + It can be ``enable`` (the default), ``disable`` which disables all assertions and ``disable-at-0`` which disables + only at the start of simulation. + """
+ +
[docs] @CLIArgument() + class FlagIEEEAsserts(ShortValuedFlag, name="ieee-asserts"): + """Select how assertions are handled. + + It can be ``enable`` (the default), ``disable`` which disables all assertions and ``disable-at-0`` which disables + only at the start of simulation. + """
+ +
[docs] @CLIArgument() + class FlagStopTime(ShortValuedFlag, name="stop-time"): + """Stop the simulation after a given simulation time. + + The time is expressed as a time value, without any spaces. The time is the simulation time, not the real execution time. + """
+ +
[docs] @CLIArgument() + class FlagMaxDeltaCycles(ShortValuedFlag, name="stop-delta"): + """Stop the simulation after N delta cycles in the same current time."""
+ +
[docs] @CLIArgument() + class FlagDisplayDeltaCycles(ShortValuedFlag, name="disp-time"): + """Display the time and delta cycle number as simulation advances."""
+ +
[docs] @CLIArgument() + class FlagUnbufferedIO(ShortValuedFlag, name="unbuffered"): + """Disable buffering on STDOUT, STDERR and files opened in write or append mode (TEXTIO)."""
+ +
[docs] @CLIArgument() + class FlagReadWaveformOptionsFile(ShortValuedFlag, name="read-wave-opt"): + """Filter signals to be dumped to the waveform file according to the wavefile option file provided."""
+ +
[docs] @CLIArgument() + class FlagWriteWaveformOptionsFile(ShortValuedFlag, name="write-wave-opt"): + """If the wavefile option file doesn’t exist, creates it with all the signals of the design. + Otherwise, it throws an error, because it won’t erase an existing file. + """
+ +
[docs] @CLIArgument() + class FlagGHWWaveformFile(ShortValuedFlag, name="wave"): + """Write the waveforms into a GHDL Waveform (``*.ghw``) file. + + Contrary to VCD files, any VHDL type can be dumped into a GHW file. + """
+ + def _CopyParameters(self, tool: "GHDL") -> None: + for key in self.__cliParameters__: + if self._NeedsParameterInitialization(key): + value = self.__cliParameters__[key].Value + tool.__cliParameters__[key] = key(value) + else: + tool.__cliParameters__[key] = key() + + def _SetParameters(self, tool: "GHDL", std: VHDLVersion = None, ieee: str = None): + if std is not None: + tool[self.FlagVHDLStandard] = str(std) + + if ieee is not None: + tool[self.FlagVHDLStandard] = ieee + + def GetGHDLAsAnalyzer(self, std: VHDLVersion = None, ieee: str = None): + tool = GHDL(executablePath=self._executablePath) + + tool[tool.CommandAnalyze] = True + self._CopyParameters(tool) + self._SetParameters(tool, std, ieee) + + return tool + + def GetGHDLAsElaborator(self, std: VHDLVersion = None, ieee: str = None): + tool = GHDL(executablePath=self._executablePath) + + tool[tool.CommandElaborate] = True + self._CopyParameters(tool) + self._SetParameters(tool, std, ieee) + + return tool + + def GetGHDLAsSimulator(self, std: VHDLVersion = None, ieee: str = None): + tool = GHDL(executablePath=self._executablePath) + + tool[tool.CommandRun] = True + self._CopyParameters(tool) + self._SetParameters(tool, std, ieee) + + return tool + + def Help(self): + tool = GHDL(executablePath=self._executablePath) + + tool[tool.CommandHelp] = True + + tool.StartProcess() + return "\n".join(tool.GetLineReader()) + + def Version(self): + tool = GHDL(executablePath=self._executablePath) + + tool[tool.CommandVersion] = True + + tool.StartProcess() + iterator = iter(tool.GetLineReader()) + firstLine = next(iterator) + secondLine = next(iterator) + thirdLine = next(iterator) + + return GHDLVersion(firstLine, secondLine, thirdLine)
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_modules/pyEDAA/CLITool/GTKWave.html b/_modules/pyEDAA/CLITool/GTKWave.html new file mode 100644 index 00000000..d8477de1 --- /dev/null +++ b/_modules/pyEDAA/CLITool/GTKWave.html @@ -0,0 +1,180 @@ + + + + + + pyEDAA.CLITool.GTKWave — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +

Source code for pyEDAA.CLITool.GTKWave

+# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for `GTKWave <https://github.com/gtkwave/gtkwave>`__."""
+from pyTooling.Decorators import export
+
+from pyTooling.CLIAbstraction            import CLIArgument, Executable
+from pyTooling.CLIAbstraction.ValuedFlag import LongValuedFlag
+
+
+
[docs]@export +class GTKWave(Executable): + _executableNames = { + "Darwin": "gtkwave", + "Linux": "gtkwave", + "Windows": "gtkwave.exe" + } + +
[docs] @CLIArgument() + class FlagDumpFile(LongValuedFlag, name="dump"): + """Waveform file to load."""
+ +
[docs] @CLIArgument() + class FlagSaveFile(LongValuedFlag, name="save"): + """Load waveform settings file."""
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/_sources/Dependency.rst.txt b/_sources/Dependency.rst.txt new file mode 100644 index 00000000..1408d1fe --- /dev/null +++ b/_sources/Dependency.rst.txt @@ -0,0 +1,176 @@ +.. _dependency: + +Dependency +########## + +.. |img-CLITool-lib-status| image:: https://img.shields.io/librariesio/release/pypi/pyEDAA.CLITool + :alt: Libraries.io status for latest release + :height: 22 + :target: https://libraries.io/github/edaa-org/pyEDAA.CLITool +.. |img-CLITool-req-status| image:: https://img.shields.io/requires/github/pyEDAA/pyEDAA.CLITool + :alt: Requires.io + :height: 22 + :target: https://requires.io/github/edaa-org/pyEDAA.CLITool/requirements/?branch=main + ++------------------------------------------+------------------------------------------+ +| `Libraries.io `_ | `Requires.io `_ | ++==========================================+==========================================+ +| |img-CLITool-lib-status| | |img-CLITool-req-status| | ++------------------------------------------+------------------------------------------+ + + +.. _dependency-package: + +pyEDAA.CLITool Package +********************** + ++---------------------------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++=======================================================================================+=============+==========================================================================================================+=============================================================================================================================================================+ +| `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | ++---------------------------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `pyTooling.CLIAbstraction `__ | ≥0.4.1 | `Apache License, 2.0 `__ | * `pyTooling `__ (`Apache License, 2.0 `__) | +| | | | * `pyAttributes `__ (`Apache License, 2.0 `__) | +| | | | | +| | | | * `pyTooling `__ (`Apache License, 2.0 `__) | +| | | | * `argcomplete `__ (`Apache License, 2.0 `__) | ++---------------------------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `pyVHDLModel `__ | ≥0.27.1 | `Apache License, 2.0 `__ | * `pyTooling `__ (`Apache License, 2.0 `__) | ++---------------------------------------------------------------------------------------+-------------+----------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. # + | `pyAttributes `__ | ≥2.5.1 | `Apache License, 2.0 `__ | * `pyTooling `__ (`Apache License, 2.0 `__) | + | | | | * `argcomplete `__ (`Apache License, 2.0 `__) | + +---------------------------------------------------------------------------------------+-------------+-------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _dependency-testing: + +Unit Testing / Coverage / Type Checking (Optional) +************************************************** + +Additional Python packages needed for testing, code coverage collection and static type checking. These packages are +only needed for developers or on a CI server, thus sub-dependencies are not evaluated further. + + +.. rubric:: Manually Installing Test Requirements + +Use the :file:`tests/requirements.txt` file to install all dependencies via ``pip3``. The file will recursively install +the mandatory dependencies too. + +.. code-block:: shell + + pip3 install -U -r tests/requirements.txt + + +.. rubric:: Dependency List + ++-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++===========================================================+=============+========================================================================================+======================+ +| `pytest `__ | ≥7.2.0 | `MIT `__ | *Not yet evaluated.* | ++-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `pytest-cov `__ | ≥4.0.0 | `MIT `__ | *Not yet evaluated.* | ++-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `Coverage `__ | ≥7.0 | `Apache License, 2.0 `__ | *Not yet evaluated.* | ++-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `mypy `__ | ≥1.2 | `MIT `__ | *Not yet evaluated.* | ++-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ +| `lxml `__ | ≥4.9 | `BSD 3-Clause `__ | *Not yet evaluated.* | ++-----------------------------------------------------------+-------------+----------------------------------------------------------------------------------------+----------------------+ + + +.. _dependency-documentation: + +Sphinx Documentation (Optional) +******************************* + +Additional Python packages needed for documentation generation. These packages are only needed for developers or on a +CI server, thus sub-dependencies are not evaluated further. + + +.. rubric:: Manually Installing Documentation Requirements + +Use the :file:`doc/requirements.txt` file to install all dependencies via ``pip3``. The file will recursively install +the mandatory dependencies too. + +.. code-block:: shell + + pip3 install -U -r doc/requirements.txt + + +.. rubric:: Dependency List + ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++=================================================================================================+==============+==========================================================================================================+======================================================================================================================================================+ +| `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `Sphinx `__ | ≥5.3.0 | `BSD 3-Clause `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `sphinx_btd_theme `__ | ≥0.5.2 | `MIT `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| !! `sphinx_fontawesome `__ | ≥0.0.6 | `GPL 2.0 `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `sphinx_autodoc_typehints `__ | ≥1.19.5 | `MIT `__ | *Not yet evaluated.* | ++-------------------------------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +.. _dependency-packaging: + +Packaging (Optional) +******************** + +Additional Python packages needed for installation package generation. These packages are only needed for developers or +on a CI server, thus sub-dependencies are not evaluated further. + + +.. rubric:: Manually Installing Packaging Requirements + +Use the :file:`build/requirements.txt` file to install all dependencies via ``pip3``. The file will recursively +install the mandatory dependencies too. + +.. code-block:: shell + + pip3 install -U -r build/requirements.txt + + +.. rubric:: Dependency List + ++----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++============================================================================+==============+==========================================================================================================+======================================================================================================================================================+ +| `pyTooling `__ | ≥5.0.0 | `Apache License, 2.0 `__ | *None* | ++----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ +| `wheel `__ | ≥0.38.1 | `MIT `__ | *Not yet evaluated.* | ++----------------------------------------------------------------------------+--------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+ + + +.. _dependency-publishing: + +Publishing (CI-Server only) +*************************** + +Additional Python packages needed for publishing the generated installation package to e.g, PyPI or any equivalent +services. These packages are only needed for maintainers or on a CI server, thus sub-dependencies are not evaluated +further. + + +.. rubric:: Manually Installing Publishing Requirements + +Use the :file:`dist/requirements.txt` file to install all dependencies via ``pip3``. The file will recursively +install the mandatory dependencies too. + +.. code-block:: shell + + pip3 install -U -r dist/requirements.txt + + +.. rubric:: Dependency List + ++----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ +| **Package** | **Version** | **License** | **Dependencies** | ++==========================================================+==============+===========================================================================================+======================+ +| `wheel `__ | ≥0.38.1 | `MIT `__ | *Not yet evaluated.* | ++----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ +| `Twine `__ | any | `Apache License, 2.0 `__ | *Not yet evaluated.* | ++----------------------------------------------------------+--------------+-------------------------------------------------------------------------------------------+----------------------+ diff --git a/_sources/Doc-License.rst.txt b/_sources/Doc-License.rst.txt new file mode 100644 index 00000000..1258fbc2 --- /dev/null +++ b/_sources/Doc-License.rst.txt @@ -0,0 +1,353 @@ +.. _DOCLICENSE: + +.. Note:: This is a local copy of the `Creative Commons - Attribution 4.0 International (CC BY 4.0) `__. + +.. Attention:: This **CC BY 4.0** license applies only to the **documentation** of this project. + + +Creative Commons Attribution 4.0 International +############################################## + +Creative Commons Corporation (“Creative Commons”) is not a law firm and does not +provide legal services or legal advice. Distribution of Creative Commons public +licenses does not create a lawyer-client or other relationship. Creative Commons +makes its licenses and related information available on an “as-is” basis. +Creative Commons gives no warranties regarding its licenses, any material +licensed under their terms and conditions, or any related information. Creative +Commons disclaims all liability for damages resulting from their use to the +fullest extent possible. + +.. topic:: Using Creative Commons Public Licenses + + Creative Commons public licenses provide a standard set of terms and conditions + that creators and other rights holders may use to share original works of + authorship and other material subject to copyright and certain other rights + specified in the public license below. The following considerations are for + informational purposes only, are not exhaustive, and do not form part of our + licenses. + + * **Considerations for licensors:** Our public licenses are intended for use + by those authorized to give the public permission to use material in ways + otherwise restricted by copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms and conditions + of the license they choose before applying it. Licensors should also secure + all rights necessary before applying our licenses so that the public can reuse + the material as expected. Licensors should clearly mark any material not + subject to the license. This includes other CC-licensed material, or material + used under an exception or limitation to copyright. + `More considerations for licensors `__. + + * **Considerations for the public:** By using one of our public licenses, a + licensor grants the public permission to use the licensed material under + specified terms and conditions. If the licensor’s permission is not necessary + for any reason–for example, because of any applicable exception or limitation + to copyright–then that use is not regulated by the license. Our licenses grant + only permissions under copyright and certain other rights that a licensor has + authority to grant. Use of the licensed material may still be restricted for + other reasons, including because others have copyright or other rights in the + material. A licensor may make special requests, such as asking that all + changes be marked or described. Although not required by our licenses, you are + encouraged to respect those requests where reasonable. + `More considerations for the public `__. + +:xlarge:`Creative Commons Attribution 4.0 International Public License` + +By exercising the Licensed Rights (defined below), You accept and agree to be +bound by the terms and conditions of this Creative Commons Attribution 4.0 +International Public License ("Public License"). To the extent this Public +License may be interpreted as a contract, You are granted the Licensed Rights +in consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the Licensor +receives from making the Licensed Material available under these terms and +conditions. + +Section 1 – Definitions. +======================== + +a. **Adapted Material** means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material and in + which the Licensed Material is translated, altered, arranged, transformed, or + otherwise modified in a manner requiring permission under the Copyright and + Similar Rights held by the Licensor. For purposes of this Public License, + where the Licensed Material is a musical work, performance, or sound + recording, Adapted Material is always produced where the Licensed Material + is synched in timed relation with a moving image. + +b. **Adapter's License** means the license You apply to Your Copyright and + Similar Rights in Your contributions to Adapted Material in accordance with + the terms and conditions of this Public License. + +c. **Copyright and Similar Rights** means copyright and/or similar rights + closely related to copyright including, without limitation, performance, + broadcast, sound recording, and Sui Generis Database Rights, without regard + to how the rights are labeled or categorized. For purposes of this Public + License, the rights specified in Section 2(b)(1)-(2) are not Copyright and + Similar Rights. + +d. **Effective Technological Measures** means those measures that, in the + absence of proper authority, may not be circumvented under laws fulfilling + obligations under Article 11 of the WIPO Copyright Treaty adopted on + December 20, 1996, and/or similar international agreements. + +e. **Exceptions and Limitations** means fair use, fair dealing, and/or any + other exception or limitation to Copyright and Similar Rights that applies to + Your use of the Licensed Material. + +f. **Licensed Material** means the artistic or literary work, database, or + other material to which the Licensor applied this Public License. + +g. **Licensed Rights** means the rights granted to You subject to the terms + and conditions of this Public License, which are limited to all Copyright and + Similar Rights that apply to Your use of the Licensed Material and that the + Licensor has authority to license. + +h. **Licensor** means the individual(s) or entity(ies) granting rights under + this Public License. + +i. **Share** means to provide material to the public by any means or process + that requires permission under the Licensed Rights, such as reproduction, + public display, public performance, distribution, dissemination, + communication, or importation, and to make material available to the public + including in ways that members of the public may access the material from a + place and at a time individually chosen by them. + +j. **Sui Generis Database Rights** means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of the + Council of 11 March 1996 on the legal protection of databases, as amended + and/or succeeded, as well as other essentially equivalent rights anywhere + in the world. + +k. **You** means the individual or entity exercising the Licensed Rights + under this Public License. **Your** has a corresponding meaning. + +Section 2 – Scope. +================== + +a. **License grant.** + + 1. Subject to the terms and conditions of this Public License, the Licensor + hereby grants You a worldwide, royalty-free, non-sublicensable, + non-exclusive, irrevocable license to exercise the Licensed Rights in the + Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. :underline:`Exceptions and Limitations.` For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public License does not + apply, and You do not need to comply with its terms and conditions. + + 3. :underline:`Term.` The term of this Public License is specified in Section 6(a). + + 4. :underline:`Media and formats`; :underline:`technical modifications allowed.` The Licensor + authorizes You to exercise the Licensed Rights in all media and formats + whether now known or hereafter created, and to make technical + modifications necessary to do so. The Licensor waives and/or agrees not to + assert any right or authority to forbid You from making technical + modifications necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective Technological + Measures. For purposes of this Public License, simply making modifications + authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. :underline:`Downstream recipients.` + + A. :underline:`Offer from the Licensor – Licensed Material.` Every recipient of + the Licensed Material automatically receives an offer from the + Licensor to exercise the Licensed Rights under the terms and + conditions of this Public License. + + B. :underline:`No downstream restrictions.` You may not offer or impose any + additional or different terms or conditions on, or apply any Effective + Technological Measures to, the Licensed Material if doing so restricts + exercise of the Licensed Rights by any recipient of the Licensed + Material. + + 6. :underline:`No endorsement.` Nothing in this Public License constitutes or may + be construed as permission to assert or imply that You are, or that Your + use of the Licensed Material is, connected with, or sponsored, endorsed, + or granted official status by, the Licensor or others designated to + receive attribution as provided in Section 3(a)(1)(A)(i). + +b. **Other rights.** + + 1. Moral rights, such as the right of integrity, are not licensed under this + Public License, nor are publicity, privacy, and/or other similar + personality rights; however, to the extent possible, the Licensor waives + and/or agrees not to assert any such rights held by the Licensor to the + limited extent necessary to allow You to exercise the Licensed Rights, but + not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties + from You for the exercise of the Licensed Rights, whether directly or + through a collecting society under any voluntary or waivable statutory or + compulsory licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + +Section 3 – License Conditions. +=============================== + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + +a. **Attribution.** + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the + Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any + others designated to receive attribution, in any reasonable manner + requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably + practicable; + + B. indicate if You modified the Licensed Material and retain an + indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, + and include the text of, or the URI or hyperlink to, this Public + License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner + based on the medium, means, and context in which You Share the Licensed + Material. For example, it may be reasonable to satisfy the conditions by + providing a URI or hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the information + required by Section 3(a)(1)(A) to the extent reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's License You apply + must not prevent recipients of the Adapted Material from complying with + this Public License. + +Section 4 – Sui Generis Database Rights. +======================================== + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your +use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, + reuse, reproduce, and Share all or a substantial portion of the contents of + the database; + +b. if You include all or a substantial portion of the database contents in a + database in which You have Sui Generis Database Rights, then the database + in which You have Sui Generis Database Rights (but not its individual + contents) is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or a + substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace +Your obligations under this Public License where the Licensed Rights include +other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. +================================================================= + +a. **Unless otherwise separately undertaken by the Licensor, to the extent + possible, the Licensor offers the Licensed Material as-is and as-available, + and makes no representations or warranties of any kind concerning the + Licensed Material, whether express, implied, statutory, or other. This + includes, without limitation, warranties of title, merchantability, + fitness for a particular purpose, non-infringement, absence of latent or + other defects, accuracy, or the presence or absence of errors, whether or + not known or discoverable. Where disclaimers of warranties are not allowed + in full or in part, this disclaimer may not apply to You.** + +b. **To the extent possible, in no event will the Licensor be liable to You + on any legal theory (including, without limitation, negligence) or + otherwise for any direct, special, indirect, incidental, consequential, + punitive, exemplary, or other losses, costs, expenses, or damages arising + out of this Public License or use of the Licensed Material, even if the + Licensor has been advised of the possibility of such losses, costs, expenses, + or damages. Where a limitation of liability is not allowed in full or in + part, this limitation may not apply to You.** + +c. The disclaimer of warranties and limitation of liability provided above + shall be interpreted in a manner that, to the extent possible, most + closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. +================================= + +a. This Public License applies for the term of the Copyright and Similar Rights + licensed here. However, if You fail to comply with this Public License, then + Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured + within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the + Licensor may have to seek remedies for Your violations of this Public License. + +c. For the avoidance of doubt, the Licensor may also offer the Licensed Material + under separate terms or conditions or stop distributing the Licensed Material + at any time; however, doing so will not terminate this Public License. + +d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. +======================================= + +a. The Licensor shall not be bound by any additional or different terms or + conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed + Material not stated herein are separate from and independent of the terms + and conditions of this Public License. + +Section 8 – Interpretation. +=========================== + +a. For the avoidance of doubt, this Public License does not, and shall not be + interpreted to, reduce, limit, restrict, or impose conditions on any use of + the Licensed Material that could lawfully be made without permission under + this Public License. + +b. To the extent possible, if any provision of this Public License is deemed + unenforceable, it shall be automatically reformed to the minimum extent + necessary to make it enforceable. If the provision cannot be reformed, it + shall be severed from this Public License without affecting the + enforceability of the remaining terms and conditions. + +c. No term or condition of this Public License will be waived and no failure to + comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a + limitation upon, or waiver of, any privileges and immunities that apply to + the Licensor or You, including from the legal processes of any jurisdiction + or authority. + +------------------ + +Creative Commons is not a party to its public licenses. Notwithstanding, +Creative Commons may elect to apply one of its public licenses to material it +publishes and in those instances will be considered the “Licensor.” Except for +the limited purpose of indicating that material is shared under a Creative +Commons public license or as otherwise permitted by the Creative Commons +policies published at `creativecommons.org/policies `__, +Creative Commons does not authorize the use of the trademark “Creative Commons” +or any other trademark or logo of Creative Commons without its prior written +consent including, without limitation, in connection with any unauthorized +modifications to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For the +avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at `creativecommons.org `__ diff --git a/_sources/Installation.rst.txt b/_sources/Installation.rst.txt new file mode 100644 index 00000000..9d172858 --- /dev/null +++ b/_sources/Installation.rst.txt @@ -0,0 +1,56 @@ +.. _installation: + +Installation/Updates +#################### + + +.. _installation-pip: + +Using PIP +********* + +Installation from PyPI using PIP +================================ + +.. code-block:: bash + + pip3 install pyEDAA.CLITool + + +Updating from PyPI using PIP +============================ + +.. code-block:: bash + + pip3 install -U pyEDAA.CLITool + + +Uninstallation using PIP +======================== + +.. code-block:: bash + + pip3 uninstall pyEDAA.CLITool + + +Installation from local directory using PIP +=========================================== + +.. code-block:: bash + + pip3 install . + + +.. _installation-setup: + +Using ``setup.py`` (legacy) +*************************** + +See sections above on how to use PIP. + +Installation using ``setup.py`` +=============================== + +.. code-block:: bash + + setup.py install diff --git a/_sources/License.rst.txt b/_sources/License.rst.txt new file mode 100644 index 00000000..fba66a20 --- /dev/null +++ b/_sources/License.rst.txt @@ -0,0 +1,140 @@ +.. _SRCLICENSE: + +.. Note:: This is a local copy of the `Apache License Version 2.0 `__. + +.. Attention:: This **Apache License, 2.0** applies to all **source and configuration files of project**, **except documentation**. + +Apache License 2.0 +################## + +Version 2.0, January 2004 + +:xlarge:`TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION` + + +1. Definitions. +=============== +**"License"** shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +**"Licensor"** shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +**"Legal Entity"** shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that +entity. For the purposes of this definition, **"control"** means (i) the power, direct or indirect, to cause the direction or management of such entity, whether +by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +**"You"** (or **"Your"**) shall mean an individual or Legal Entity exercising permissions granted by this License. + +**"Source"** form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and +configuration files. + +**"Object"** form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object +code, generated documentation, and conversions to other media types. + +**"Work"** shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is +included in or attached to the work (an example is provided in the Appendix below). + +**"Derivative Works"** shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +**"Contribution"** shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative +Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to +submit on behalf of the copyright owner. For the purposes of this definition, **"submitted"** means any form of electronic, verbal, or written communication +sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is +conspicuously marked or otherwise designated in writing by the copyright owner as **"Not a Contribution."** + +**"Contributor"** shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. +============================== +Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. +=========================== +Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such +license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of +their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim +or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then +any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. +================== +You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +* You must give any other recipients of the Work or Derivative Works a copy of this License; and +* You must cause any modified files to carry prominent notices stating that You changed the files; and +* You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source + form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +* If the Work includes a **"NOTICE"** text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the + attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the + following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE + file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, + alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise +complies with the conditions stated in this License. + +5. Submission of Contributions. +=============================== +Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any +separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. +============== +This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable +and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. +========================== +Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, +MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and +assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. +=========================== +In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or +consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages +for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been +advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. +============================================== +While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other +liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole +responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +---------------------------------------------------------------------------------------------------------------------------------------------------------------- + +:xlarge:`Appendix: How to apply the Apache License to your work` + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying +information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or +class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +.. code-block:: none + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/_sources/Tools/Aldec/ActiveHDL.rst.txt b/_sources/Tools/Aldec/ActiveHDL.rst.txt new file mode 100644 index 00000000..a75afcd0 --- /dev/null +++ b/_sources/Tools/Aldec/ActiveHDL.rst.txt @@ -0,0 +1,114 @@ +ActiveHDL +######### + + +.. todo:: Needs documentation. + +VHDL Library Tool +***************** + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vlib Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ +| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | ++--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vlib = VHDLLibraryTool() + vlib[vlib.ValueLibraryName] = "PoC" + + print(vlib.AsArgument()) + + +VHDL Compiler +************* + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vcom Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vcom = VHDLCompiler() + # vcom[vcom.ValueLibraryName] = "PoC" + + print(vcom.AsArgument()) + + +(System-)Verilog Compiler +************************* + +.. todo:: This tool is not yet wrapped in Python using CLIAbstraction. + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vlog Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vlog = VerilogCompiler() + # vlog[vlog.ValueLibraryName] = "PoC" + + print(vlog.AsArgument()) + + +VHDL Simulator +************** + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vsim Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vsim = VHDLSimulator() + # vsim[vsim.ValueLibraryName] = "PoC" + + print(vsim.AsArgument()) + diff --git a/_sources/Tools/Aldec/RivieraPRO.rst.txt b/_sources/Tools/Aldec/RivieraPRO.rst.txt new file mode 100644 index 00000000..bb77c4c2 --- /dev/null +++ b/_sources/Tools/Aldec/RivieraPRO.rst.txt @@ -0,0 +1,112 @@ +Riviera-PRO +########### + +.. todo:: Needs documentation. + +VHDL Library Tool +***************** + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vlib Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ +| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | ++--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vlib = VHDLLibraryTool() + vlib[vlib.ValueLibraryName] = "PoC" + + print(vlib.AsArgument()) + + +VHDL Compiler +************* + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vcom Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vcom = VHDLCompiler() + # vcom[vcom.ValueLibraryName] = "PoC" + + print(vcom.AsArgument()) + + +(System-)Verilog Compiler +************************* + +.. todo:: This tool is not yet wrapped in Python using CLIAbstraction. + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vlog Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vlog = VerilogCompiler() + # vlog[vlog.ValueLibraryName] = "PoC" + + print(vlog.AsArgument()) + + +VHDL Simulator +************** + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vsim Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vsim = VHDLSimulator() + # vsim[vsim.ValueLibraryName] = "PoC" + + print(vsim.AsArgument()) diff --git a/_sources/Tools/Aldec/index.rst.txt b/_sources/Tools/Aldec/index.rst.txt new file mode 100644 index 00000000..ed877295 --- /dev/null +++ b/_sources/Tools/Aldec/index.rst.txt @@ -0,0 +1,9 @@ +Aldec +##### + +.. toctree:: + :name: TOC:Aldec + :maxdepth: 2 + + ActiveHDL + RivieraPRO diff --git a/_sources/Tools/Cadence/Incisive.rst.txt b/_sources/Tools/Cadence/Incisive.rst.txt new file mode 100644 index 00000000..4e86210b --- /dev/null +++ b/_sources/Tools/Cadence/Incisive.rst.txt @@ -0,0 +1,4 @@ +Incisive +######## + +.. todo:: Needs documentation. diff --git a/_sources/Tools/Cadence/index.rst.txt b/_sources/Tools/Cadence/index.rst.txt new file mode 100644 index 00000000..6eaf719c --- /dev/null +++ b/_sources/Tools/Cadence/index.rst.txt @@ -0,0 +1,10 @@ +Cadence +####### + +.. todo:: A list of Cadence tools is needed. + +.. toctree:: + :name: TOC:Cadence + :maxdepth: 2 + + Incisive diff --git a/_sources/Tools/IntelFPGA/Quartus.rst.txt b/_sources/Tools/IntelFPGA/Quartus.rst.txt new file mode 100644 index 00000000..71b50f90 --- /dev/null +++ b/_sources/Tools/IntelFPGA/Quartus.rst.txt @@ -0,0 +1,4 @@ +Quartus +####### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/IntelFPGA/index.rst.txt b/_sources/Tools/IntelFPGA/index.rst.txt new file mode 100644 index 00000000..4fbe0b70 --- /dev/null +++ b/_sources/Tools/IntelFPGA/index.rst.txt @@ -0,0 +1,8 @@ +IntelFPGA +######### + +.. toctree:: + :name: TOC:IntelFPGA + :maxdepth: 2 + + Quartus diff --git a/_sources/Tools/Lattice/Diamond.rst.txt b/_sources/Tools/Lattice/Diamond.rst.txt new file mode 100644 index 00000000..7d7c390c --- /dev/null +++ b/_sources/Tools/Lattice/Diamond.rst.txt @@ -0,0 +1,4 @@ +Diamond +####### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/Lattice/index.rst.txt b/_sources/Tools/Lattice/index.rst.txt new file mode 100644 index 00000000..1598332e --- /dev/null +++ b/_sources/Tools/Lattice/index.rst.txt @@ -0,0 +1,8 @@ +Lattice +####### + +.. toctree:: + :name: TOC:Lattice + :maxdepth: 2 + + Diamond diff --git a/_sources/Tools/OpenSource/GHDL.rst.txt b/_sources/Tools/OpenSource/GHDL.rst.txt new file mode 100644 index 00000000..e305719e --- /dev/null +++ b/_sources/Tools/OpenSource/GHDL.rst.txt @@ -0,0 +1,42 @@ +GHDL +#### + +Arguments +********* + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++-----------------+-----------------------------------+----------------------------------------------+ +| **GHDL Option** | **Argument Class** | **Description** | ++-----------------+-----------------------------------+----------------------------------------------+ +| ``help`` | ``GHDL.CommandHelp`` | Print help page(s). | ++-----------------+-----------------------------------+----------------------------------------------+ +| ``version`` | ``GHDL.CommandVersion`` | Print version information. | ++-----------------+-----------------------------------+----------------------------------------------+ +| ``syntax`` | ``GHDL.CommandSyntax`` | Check syntax. | ++-----------------+-----------------------------------+----------------------------------------------+ +| ``elab-order`` | ``GHDL.CommandElaborationOrder`` | Display (elaboration) ordered source files. | ++-----------------+-----------------------------------+----------------------------------------------+ +| ``analyze`` | ``GHDL.CommandAnalyze`` | Analyze VHDL source file(s). | ++-----------------+-----------------------------------+----------------------------------------------+ +| ``elaborate`` | ``GHDL.CommandElaborate`` | Elaborate design. | ++-----------------+-----------------------------------+----------------------------------------------+ +| ``elab-run`` | ``GHDL.CommandElaborationAndRun`` | Elaborate and simulate design. | ++-----------------+-----------------------------------+----------------------------------------------+ +| ``run`` | ``GHDL.CommandRun`` | Simulate design. | ++-----------------+-----------------------------------+----------------------------------------------+ + + +Derive Variants +*************** + +.. code-block:: Python + + def GetGHDLAsAnalyzer(self, std: VHDLVersion = None, ieee: str = None): + ... + + def GetGHDLAsElaborator(self, std: VHDLVersion = None, ieee: str = None): + ... + + def GetGHDLAsSimulator(self, std: VHDLVersion = None, ieee: str = None): + ... diff --git a/_sources/Tools/OpenSource/GTKWave.rst.txt b/_sources/Tools/OpenSource/GTKWave.rst.txt new file mode 100644 index 00000000..5a76f2da --- /dev/null +++ b/_sources/Tools/OpenSource/GTKWave.rst.txt @@ -0,0 +1,15 @@ +GTKWave +####### + +Arguments +********* + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+-----------------------------------+----------------------------------------------+ +| **GTKWave Option** | **Argument Class** | **Description** | ++--------------------+-----------------------------------+----------------------------------------------+ +| ``--dump`` | ``GTKWave.FlagDumpFile`` | Waveform file to load. | ++--------------------+-----------------------------------+----------------------------------------------+ +| ``--save`` | ``GTKWave.FlagSaveFile`` | Load waveform settings file. | ++--------------------+-----------------------------------+----------------------------------------------+ diff --git a/_sources/Tools/OpenSource/index.rst.txt b/_sources/Tools/OpenSource/index.rst.txt new file mode 100644 index 00000000..f13e8be0 --- /dev/null +++ b/_sources/Tools/OpenSource/index.rst.txt @@ -0,0 +1,9 @@ +Open Source +########### + +.. toctree:: + :name: TOC:OpenSource + :maxdepth: 2 + + GHDL + GTKWave diff --git a/_sources/Tools/SiemensEDA/ModelSim.rst.txt b/_sources/Tools/SiemensEDA/ModelSim.rst.txt new file mode 100644 index 00000000..84229b04 --- /dev/null +++ b/_sources/Tools/SiemensEDA/ModelSim.rst.txt @@ -0,0 +1,292 @@ +ModelSim +######## + +.. todo:: Needs documentation. + +VHDL Library Tool +***************** + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vlib Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ +| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | ++--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vlib = VHDLLibraryTool() + vlib[vlib.ValueLibraryName] = "PoC" + + print(vlib.AsArgument()) + + +VHDL Compiler +************* + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vcom Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vcom = VHDLCompiler() + # vcom[vcom.ValueLibraryName] = "PoC" + + print(vcom.AsArgument()) + +.. # + @CLIArgument() + class FlagTime(ShortFlag, name="time"): + """Print the compilation wall clock time.""" + + @CLIArgument() + class FlagExplicit(ShortFlag, name="explicit"): ... + + @CLIArgument() + class FlagQuietMode(ShortFlag, name="quiet"): + """Do not report 'Loading...' messages.""" + + @CLIArgument() + class SwitchModelSimIniFile(ShortTupleFlag, name="modelsimini"): ... + + @CLIArgument() + class FlagRangeCheck(ShortFlag, name="rangecheck"): ... + + @CLIArgument() + class SwitchCoverage(OptionalModelSimPlusArgument, name="cover"): ... + + @CLIArgument() + class FlagEnableFocusedExpressionCoverage(ShortFlag, name="coverfec"): ... + + @CLIArgument() + class FlagDisableFocusedExpressionCoverage(ShortFlag, name="nocoverfec"): ... + + @CLIArgument() + class FlagEnableRapidExpressionCoverage(ShortFlag, name="coverrec"): ... + + @CLIArgument() + class FlagDisableRapidExpressionCoverage(ShortFlag, name="nocoverrec"): ... + + @CLIArgument() + class FlagEnableRecognitionOfImplicitFSMResetTransitions(ShortFlag, name="fsmresettrans"): ... + + @CLIArgument() + class FlagDisableRecognitionOfImplicitFSMResetTransitions(ShortFlag, name="nofsmresettrans"): ... + + @CLIArgument() + class FlagEnableRecognitionOfSingleBitFSMState(ShortFlag, name="fsmsingle"): ... + + @CLIArgument() + class FlagDisableRecognitionOfSingleBitFSMState(ShortFlag, name="nofsmsingle"): ... + + @CLIArgument() + class FlagEnableRecognitionOfImplicitFSMTransitions(ShortFlag, name="fsmimplicittrans"): ... + + @CLIArgument() + class FlagDisableRecognitionOfImplicitFSMTransitions(ShortFlag, name="nofsmimplicittrans"): ... + + @CLIArgument() + class SwitchFSMVerbosityLevel(OptionalModelSimMinusArgument, name="fsmverbose"): ... + + @CLIArgument() + class FlagReportAsNote(ShortTupleFlag, name="note"): ... + + @CLIArgument() + class FlagReportAsError(ShortTupleFlag, name="error"): ... + + @CLIArgument() + class FlagReportAsWarning(ShortTupleFlag, name="warning"): ... + + @CLIArgument() + class FlagReportAsFatal(ShortTupleFlag, name="fatal"): ... + + @CLIArgument() + class FlagRelaxLanguageChecks(ShortFlag, name="permissive"): ... + + @CLIArgument() + class FlagForceLanguageChecks(ShortFlag, name="pedanticerrors"): ... + + @CLIArgument() + class SwitchVHDLVersion(StringArgument, pattern="-{0}"): ... + + @CLIArgument() + class ArgLogFile(ShortTupleFlag, name="l"): ... # what's the difference to -logfile ? + + @CLIArgument() + class SwitchVHDLLibrary(ShortTupleFlag, name="work"): ... + + +(System-)Verilog Compiler +************************* + +.. todo:: This tool is not yet wrapped in Python using CLIAbstraction. + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vlog Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vlog = VerilogCompiler() + # vlog[vlog.ValueLibraryName] = "PoC" + + print(vlog.AsArgument()) + + +VHDL Simulator +************** + +Arguments +========= + +.. todo:: Extract the following table from source code by scanning for CLIArgument attributes. + ++--------------------+---------------------------------------+----------------------------------------------+ +| **vsim Option** | **Argument Class** | **Description** | ++--------------------+---------------------------------------+----------------------------------------------+ + +.. #| ```` | ``VHDLLibraryTool.ValueLibraryName`` | Library name to create. | + +--------------------+---------------------------------------+----------------------------------------------+ + + +Usage +===== + +.. code-block:: Python + + vsim = VHDLSimulator() + # vsim[vsim.ValueLibraryName] = "PoC" + + print(vsim.AsArgument()) + +.. # + @CLIArgument() + class FlagQuietMode(ShortFlag, name="quiet"): + """Run simulation in quiet mode. (Don't show 'Loading...' messages.""" + + @CLIArgument() + class FlagBatchMode(ShortFlag, name="batch"): + """Run simulation in batch mode.""" + + @CLIArgument() + class FlagGuiMode(ShortFlag, name="gui"): + """Run simulation in GUI mode.""" + + @CLIArgument() + class SwitchBatchCommand(ShortTupleFlag, name="do"): + """Specify a Tcl batch script for the batch mode.""" + + @CLIArgument() + class FlagCommandLineMode(ShortFlag, name="c"): + """Run simulation in command line mode.""" + + @CLIArgument() + class SwitchModelSimIniFile(ShortTupleFlag, name="modelsimini"): + """Specify the used 'modelsim.ini' file.""" + + @CLIArgument() + class FlagEnableOptimization(ShortFlag, name="vopt"): + """Enabled optimization while elaborating the design.""" + + @CLIArgument() + class FlagDisableOptimization(ShortFlag, name="novopt"): + """Disabled optimization while elaborating the design.""" + + @CLIArgument() + class FlagEnableOptimizationVerbosity(ShortFlag, name="vopt_verbose"): + """Enabled optimization while elaborating the design.""" + + @CLIArgument() + class FlagEnableKeepAssertionCountsForCoverage(ShortFlag, name="assertcover"): ... + + @CLIArgument() + class FlagDisableKeepAssertionCountsForCoverage(ShortFlag, name="noassertcover"): ... + + @CLIArgument() + class FlagEnableCoverage(ShortFlag, name="coverage"): ... + + @CLIArgument() + class FlagDisableCoverage(ShortFlag, name="nocoverage"): ... + + @CLIArgument() + class FlagEnablePSL(ShortFlag, name="psl"): ... + + @CLIArgument() + class FlagDisablePSL(ShortFlag, name="nopsl"): ... + + @CLIArgument() + class FlagEnableFSMDebugging(ShortFlag, name="fsmdebug"): ... + + @CLIArgument() + class FlagReportAsNote(ShortTupleFlag, name="note"): ... + + @CLIArgument() + class FlagReportAsError(ShortTupleFlag, name="error"): ... + + @CLIArgument() + class FlagReportAsWarning(ShortTupleFlag, name="warning"): ... + + @CLIArgument() + class FlagReportAsFatal(ShortTupleFlag, name="fatal"): ... + + @CLIArgument() + class FlagRelaxLanguageChecks(ShortFlag, name="permissive"): ... + + @CLIArgument() + class FlagForceLanguageChecks(ShortFlag, name="pedanticerrors"): ... + + @CLIArgument() + class SwitchTimeResolution(ShortTupleFlag, name="t"): + """Set simulation time resolution.""" + # -t [1|10|100]fs|ps|ns|us|ms|sec Time resolution limit + + @CLIArgument() + class ArgLogFile(ShortTupleFlag, name="l"): ... + # what's the difference to -logfile ? + + @CLIArgument() + class ArgKeepStdOut(ShortFlag, name="keepstdout"): ... + + @CLIArgument() + class ArgVHDLLibraryName(ShortTupleFlag, name="lib"): ... + + @CLIArgument() + class ArgOnFinishMode(ShortTupleFlag, name="onfinish"): + """Customize the kernel shutdown behavior at the end of simulation; Valid modes: ask, stop, exit, final (Default: ask).""" + + @CLIArgument() + class SwitchTopLevel(StringArgument): + """The top-level for simulation.""" diff --git a/_sources/Tools/SiemensEDA/QuestaSim.rst.txt b/_sources/Tools/SiemensEDA/QuestaSim.rst.txt new file mode 100644 index 00000000..52dd977e --- /dev/null +++ b/_sources/Tools/SiemensEDA/QuestaSim.rst.txt @@ -0,0 +1,4 @@ +QuestaSim +######### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/SiemensEDA/index.rst.txt b/_sources/Tools/SiemensEDA/index.rst.txt new file mode 100644 index 00000000..0e8e0de3 --- /dev/null +++ b/_sources/Tools/SiemensEDA/index.rst.txt @@ -0,0 +1,9 @@ +SiemensEDA +########## + +.. toctree:: + :name: TOC:SiemensEDA + :maxdepth: 2 + + ModelSim + QuestaSim diff --git a/_sources/Tools/Synopsys/Synplify.rst.txt b/_sources/Tools/Synopsys/Synplify.rst.txt new file mode 100644 index 00000000..5ac35b4c --- /dev/null +++ b/_sources/Tools/Synopsys/Synplify.rst.txt @@ -0,0 +1,4 @@ +Synplify +######## + +.. todo:: Needs documentation. diff --git a/_sources/Tools/Synopsys/VCS.rst.txt b/_sources/Tools/Synopsys/VCS.rst.txt new file mode 100644 index 00000000..fc5910f9 --- /dev/null +++ b/_sources/Tools/Synopsys/VCS.rst.txt @@ -0,0 +1,4 @@ +VCS +### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/Synopsys/index.rst.txt b/_sources/Tools/Synopsys/index.rst.txt new file mode 100644 index 00000000..85d6e706 --- /dev/null +++ b/_sources/Tools/Synopsys/index.rst.txt @@ -0,0 +1,11 @@ +Synopsys +######## + +.. todo:: A list of Synopsys tools is needed. + +.. toctree:: + :name: TOC:Synopsys + :maxdepth: 2 + + VCS + Synplify diff --git a/_sources/Tools/SystemTools/Git.rst.txt b/_sources/Tools/SystemTools/Git.rst.txt new file mode 100644 index 00000000..18fbddae --- /dev/null +++ b/_sources/Tools/SystemTools/Git.rst.txt @@ -0,0 +1,4 @@ +Git +### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/SystemTools/index.rst.txt b/_sources/Tools/SystemTools/index.rst.txt new file mode 100644 index 00000000..e6022296 --- /dev/null +++ b/_sources/Tools/SystemTools/index.rst.txt @@ -0,0 +1,8 @@ +System Tools +############ + +.. toctree:: + :name: TOC:SystemTools + :maxdepth: 2 + + Git diff --git a/_sources/Tools/Xilinx/ISE.rst.txt b/_sources/Tools/Xilinx/ISE.rst.txt new file mode 100644 index 00000000..b1b59593 --- /dev/null +++ b/_sources/Tools/Xilinx/ISE.rst.txt @@ -0,0 +1,4 @@ +ISE +### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/Xilinx/Vitis.rst.txt b/_sources/Tools/Xilinx/Vitis.rst.txt new file mode 100644 index 00000000..0c6722f5 --- /dev/null +++ b/_sources/Tools/Xilinx/Vitis.rst.txt @@ -0,0 +1,4 @@ +Vitis +##### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/Xilinx/Vivado.rst.txt b/_sources/Tools/Xilinx/Vivado.rst.txt new file mode 100644 index 00000000..99dc6b4c --- /dev/null +++ b/_sources/Tools/Xilinx/Vivado.rst.txt @@ -0,0 +1,4 @@ +Vivado +###### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/Xilinx/VivadoSDK.rst.txt b/_sources/Tools/Xilinx/VivadoSDK.rst.txt new file mode 100644 index 00000000..518e79ec --- /dev/null +++ b/_sources/Tools/Xilinx/VivadoSDK.rst.txt @@ -0,0 +1,4 @@ +Vivado SDK +########## + +.. todo:: Needs documentation. diff --git a/_sources/Tools/Xilinx/index.rst.txt b/_sources/Tools/Xilinx/index.rst.txt new file mode 100644 index 00000000..722ca335 --- /dev/null +++ b/_sources/Tools/Xilinx/index.rst.txt @@ -0,0 +1,11 @@ +Xilinx +###### + +.. toctree:: + :name: TOC:Xilinx + :maxdepth: 2 + + ISE + Vivado + VivadoSDK + Vitis diff --git a/_sources/Tools/Yosys/index.rst.txt b/_sources/Tools/Yosys/index.rst.txt new file mode 100644 index 00000000..550601dd --- /dev/null +++ b/_sources/Tools/Yosys/index.rst.txt @@ -0,0 +1,10 @@ +Yosys +##### + +.. todo:: A list of Yosys tools is needed. + +.. toctree:: + :name: TOC:Yosys + :maxdepth: 2 + + nextpnr diff --git a/_sources/Tools/Yosys/nextpnr.rst.txt b/_sources/Tools/Yosys/nextpnr.rst.txt new file mode 100644 index 00000000..14ec64fc --- /dev/null +++ b/_sources/Tools/Yosys/nextpnr.rst.txt @@ -0,0 +1,4 @@ +nextpnr +####### + +.. todo:: Needs documentation. diff --git a/_sources/Tools/index.rst.txt b/_sources/Tools/index.rst.txt new file mode 100644 index 00000000..fbdea666 --- /dev/null +++ b/_sources/Tools/index.rst.txt @@ -0,0 +1,81 @@ +Supported Tools +############### + +* :ref:`Aldec ` + + * 🚧 Active-HDL + * 🚧 Riviera-PRO + +* Altera + + * 🚧 Quartus + * 🚫 ModelSim Altera (Student) Edition + +* :ref:`Cadence ` + + * 🙋 need a list of tools + +* :ref:`IntelFPGA ` + + * 🚧 Quartus + * 🚫 ModelSim Altera (Student) Edition + +* :ref:`Lattice ` + + * 🚧 Diamond + * 🚫 Active-HDL Lattice Edition + * 🚫 ModelSim Lattice Edition + +* MentorGraphics + + * ✅ ModelSim DE/SE/PE + * 🚫 QuestaSim + +* :ref:`SiemensEDA ` + + * 🚫 ModelSim DE/SE/PE + * 🚫 QuestaSim + +* :ref:`Synopsys ` + + * 🙋 need a list of tools + +* :ref:`Xilinx ` + + * 🚧 ISE + * 🚧 Vivado + * 🚫 Vivado-SDK + * 🚫 Vitis + +* :ref:`System Tools ` + + * ✅ Git + +* :ref:`Open Source ` + + * ✅ GHDL + * ✅ GTKWave + +* :ref:`Yosys ` + + * 🙋 need a list of tools + +**Legend:** |br| +✅ |rarr| implemented and tested |br| +🚧 |rarr| under test |br| +🚫 |rarr| planned but not yet implemented |rArr| accepting PRs |br| +🙋 |rarr| need help + +.. toctree:: + :hidden: + + Aldec/index + Cadence/index + IntelFPGA/index + Lattice/index + SiemensEDA/index + Synopsys/index + SystemTools/index + OpenSource/index + Xilinx/index + Yosys/index diff --git a/_sources/Tutorial.rst.txt b/_sources/Tutorial.rst.txt new file mode 100644 index 00000000..1e6c5cf8 --- /dev/null +++ b/_sources/Tutorial.rst.txt @@ -0,0 +1,4 @@ +Tutorial +######## + +.. todo:: This part needs to be written. diff --git a/_sources/coverage/index.rst.txt b/_sources/coverage/index.rst.txt new file mode 100644 index 00000000..80bbad2e --- /dev/null +++ b/_sources/coverage/index.rst.txt @@ -0,0 +1,4 @@ +Coverage Report +############### + +*Placeholder for the Coverage report generated with* ``pytest`` *and* ``coverage``. diff --git a/_sources/genindex.rst.txt b/_sources/genindex.rst.txt new file mode 100644 index 00000000..c07da40d --- /dev/null +++ b/_sources/genindex.rst.txt @@ -0,0 +1,4 @@ +.. This file is a placeholder and will be replaced + +Index +##### diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 00000000..71bc6dcc --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,187 @@ +.. include:: shields.inc + +.. image:: _static/logo.svg + :height: 90 px + :align: center + :target: https://GitHub.com/edaa-org/pyEDAA.CLITool + +.. raw:: html + +
+ +.. raw:: latex + + \part{Introduction} + +.. only:: html + + | |SHIELD:svg:CLITool-github| |SHIELD:svg:CLITool-src-license| |SHIELD:svg:CLITool-ghp-doc| |SHIELD:svg:CLITool-doc-license| |SHIELD:svg:CLITool-gitter| + | |SHIELD:svg:CLITool-pypi-tag| |SHIELD:svg:CLITool-pypi-status| |SHIELD:svg:CLITool-pypi-python| + | |SHIELD:svg:CLITool-gha-test| |SHIELD:svg:CLITool-lib-status| |SHIELD:svg:CLITool-codacy-quality| |SHIELD:svg:CLITool-codacy-coverage| |SHIELD:svg:CLITool-codecov-coverage| + +.. Disabled shields: |SHIELD:svg:CLITool-lib-dep| |SHIELD:svg:CLITool-req-status| |SHIELD:svg:CLITool-lib-rank| + +.. only:: latex + + |SHIELD:png:CLITool-github| |SHIELD:png:CLITool-src-license| |SHIELD:png:CLITool-ghp-doc| |SHIELD:png:CLITool-doc-license| |SHIELD:svg:CLITool-gitter| + |SHIELD:png:CLITool-pypi-tag| |SHIELD:png:CLITool-pypi-status| |SHIELD:png:CLITool-pypi-python| + |SHIELD:png:CLITool-gha-test| |SHIELD:png:CLITool-lib-status| |SHIELD:png:CLITool-codacy-quality| |SHIELD:png:CLITool-codacy-coverage| |SHIELD:png:CLITool-codecov-coverage| + +.. Disabled shields: |SHIELD:png:CLITool-lib-dep| |SHIELD:png:CLITool-req-status| |SHIELD:png:CLITool-lib-rank| + + +The pyEDAA.CLITool Documentation +################################ + +Unified interfaces to execute EDA tools via CLI from Python, agnostic to any specific configuration format/object. + + +.. _goals: + +Main Goals +********** + +* Provide a pythonic solution to construct command line calls for EDA tools based on `pyTooling.CLIAbstraction `__ +* Launch CLI tools and connect to STDIN, STDOUT, STDERR for realtime output post-processing. + + +.. _features: + +Features +******** + +* Support multiple native platforms: Linux, macOS, Windows. +* Support nested platforms like MSYS2 with MinGW32, MinGW64, UCRT64, Clang64, ... +* Find CLI programs either in ``PATH`` or specify an exact installation location. +* Generate CLI options in correct order. +* Generate correctly escaped CLI options. + +Consumers +********* + +This layer is used by: + +* 🚧 `pyEDAA.Workflow `__ +* 🚧 `pyEDAA.Launcher `__ +* 🚧 `Open Source Verification Bundle (OSVB) `__ + + +.. _news: + +News +**** + +.. only:: html + + Feb. 2022 - Supporting more Tools + ================================= + +.. only:: latex + + .. rubric:: Supporting more Tools + +* Added more CLI abstraction. +* Updated to support CLIAbstraction v0.4.0. + + +.. only:: html + + Jan. 2022 - GHDL, GTKWave, ModelSim + =================================== + +.. only:: latex + + .. rubric:: GHDL, GTKWave, ModelSim + +* Added CLI abstraction for GHDL, GTKWave and ModelSim. +* Prepared structure for other vendors and tools. + + +.. only:: html + + Dec. 2021 - Extracted CLITool from pyIPCMI + ========================================== + +.. only:: latex + + .. rubric:: Extracted CLITool from pyIPCMI + +* The EDA tool abstraction has been extracted from `pyIPCMI `__. + + +.. _contributors: + +Contributors +************ + +* `Patrick Lehmann `__ (Maintainer) +* `Unai Martinez-Corral `__ +* `and more... `__ + + +.. _license: + +License +******* + +.. only:: html + + This Python package (source code) is licensed under `Apache License 2.0 `__. |br| + The accompanying documentation is licensed under `Creative Commons - Attribution 4.0 (CC-BY 4.0) `__. + +.. only:: latex + + This Python package (source code) is licensed under **Apache License 2.0**. |br| + The accompanying documentation is licensed under **Creative Commons - Attribution 4.0 (CC-BY 4.0)**. + + +.. toctree:: + :hidden: + + Used as a layer of EDA² ➚ + +.. toctree:: + :caption: Introduction + :hidden: + + Installation + Dependency + + +.. raw:: latex + + \part{Main Documentation} + +.. toctree:: + :caption: Main Documentation + :hidden: + + Tutorial + Tools/index + + +.. raw:: latex + + \part{References} + +.. toctree:: + :caption: References + :hidden: + + pyEDAA.CLITool/index + +.. raw:: latex + + \part{Appendix} + +.. toctree:: + :caption: Appendix + :hidden: + + Coverage Report ➚ + Static Type Check Report ➚ + License + Doc-License + Glossary + genindex + py-modindex diff --git a/_sources/py-modindex.rst.txt b/_sources/py-modindex.rst.txt new file mode 100644 index 00000000..23167be6 --- /dev/null +++ b/_sources/py-modindex.rst.txt @@ -0,0 +1,4 @@ +.. This file is a placeholder and will be replaced + +Module Index +############ diff --git a/_sources/pyEDAA.CLITool/index.rst.txt b/_sources/pyEDAA.CLITool/index.rst.txt new file mode 100644 index 00000000..56a72c4d --- /dev/null +++ b/_sources/pyEDAA.CLITool/index.rst.txt @@ -0,0 +1,8 @@ +Python Class Reference +###################### + +Reference of all packages and modules: + +.. toctree:: + + pyEDAA.CLITool diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Aldec.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Aldec.rst.txt new file mode 100644 index 00000000..c401e01f --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Aldec.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================== +``pyEDAA.CLITool.Aldec`` +======================== + +.. py:module:: pyEDAA.CLITool.Aldec + + +.. currentmodule:: pyEDAA.CLITool.Aldec diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Docker.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Docker.rst.txt new file mode 100644 index 00000000..13135846 --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Docker.rst.txt @@ -0,0 +1,26 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================= +``pyEDAA.CLITool.Docker`` +========================= + +.. py:module:: pyEDAA.CLITool.Docker + + +.. currentmodule:: pyEDAA.CLITool.Docker + + +**Classes** + +- :py:class:`Docker`: + Represent a CLI executable derived from :class:`Program`, that adds an abstraction of :class:`subprocess.Popen`. + + +.. autoclass:: Docker + :members: + + .. rubric:: Inheritance + .. inheritance-diagram:: Docker + :parts: 1 diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.GHDL.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.GHDL.rst.txt new file mode 100644 index 00000000..6a390de5 --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.GHDL.rst.txt @@ -0,0 +1,36 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +======================= +``pyEDAA.CLITool.GHDL`` +======================= + +.. py:module:: pyEDAA.CLITool.GHDL + + +.. currentmodule:: pyEDAA.CLITool.GHDL + + +**Classes** + +- :py:class:`GHDLVersion`: + Undocumented. + +- :py:class:`GHDL`: + Represent a CLI executable derived from :class:`Program`, that adds an abstraction of :class:`subprocess.Popen`. + + +.. autoclass:: GHDLVersion + :members: + + .. rubric:: Inheritance + .. inheritance-diagram:: GHDLVersion + :parts: 1 + +.. autoclass:: GHDL + :members: + + .. rubric:: Inheritance + .. inheritance-diagram:: GHDL + :parts: 1 diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.GTKWave.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.GTKWave.rst.txt new file mode 100644 index 00000000..12270d0b --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.GTKWave.rst.txt @@ -0,0 +1,26 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================== +``pyEDAA.CLITool.GTKWave`` +========================== + +.. py:module:: pyEDAA.CLITool.GTKWave + + +.. currentmodule:: pyEDAA.CLITool.GTKWave + + +**Classes** + +- :py:class:`GTKWave`: + Represent a CLI executable derived from :class:`Program`, that adds an abstraction of :class:`subprocess.Popen`. + + +.. autoclass:: GTKWave + :members: + + .. rubric:: Inheritance + .. inheritance-diagram:: GTKWave + :parts: 1 diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.IntelFPGA.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.IntelFPGA.rst.txt new file mode 100644 index 00000000..28da6c72 --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.IntelFPGA.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +============================ +``pyEDAA.CLITool.IntelFPGA`` +============================ + +.. py:module:: pyEDAA.CLITool.IntelFPGA + + +.. currentmodule:: pyEDAA.CLITool.IntelFPGA diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Lattice.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Lattice.rst.txt new file mode 100644 index 00000000..a660924a --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Lattice.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================== +``pyEDAA.CLITool.Lattice`` +========================== + +.. py:module:: pyEDAA.CLITool.Lattice + + +.. currentmodule:: pyEDAA.CLITool.Lattice diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Mentor.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Mentor.rst.txt new file mode 100644 index 00000000..e9ee4bc7 --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Mentor.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================= +``pyEDAA.CLITool.Mentor`` +========================= + +.. py:module:: pyEDAA.CLITool.Mentor + + +.. currentmodule:: pyEDAA.CLITool.Mentor diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Xilinx.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Xilinx.rst.txt new file mode 100644 index 00000000..f4f097df --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.Xilinx.rst.txt @@ -0,0 +1,12 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +========================= +``pyEDAA.CLITool.Xilinx`` +========================= + +.. py:module:: pyEDAA.CLITool.Xilinx + + +.. currentmodule:: pyEDAA.CLITool.Xilinx diff --git a/_sources/pyEDAA.CLITool/pyEDAA.CLITool.rst.txt b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.rst.txt new file mode 100644 index 00000000..1b1eb818 --- /dev/null +++ b/_sources/pyEDAA.CLITool/pyEDAA.CLITool.rst.txt @@ -0,0 +1,40 @@ +.. # Template modified by Patrick Lehmann + * removed automodule on top, because private members are activated for autodoc (no doubled documentation). + * Made sections like 'submodules' bold text, but no headlines to reduce number of ToC levels. + +================== +``pyEDAA.CLITool`` +================== + +.. py:module:: pyEDAA.CLITool + + + +**Submodules** + + +.. toctree:: + + pyEDAA.CLITool.Aldec + pyEDAA.CLITool.Docker + pyEDAA.CLITool.GHDL + pyEDAA.CLITool.GTKWave + pyEDAA.CLITool.IntelFPGA + pyEDAA.CLITool.Lattice + pyEDAA.CLITool.Mentor + pyEDAA.CLITool.Xilinx + +.. currentmodule:: pyEDAA.CLITool + + +**Exceptions** + +- :py:exc:`CLIToolException`: + Base exception derived from :exc:`Exception ` for all custom exceptions. + + +.. autoexception:: CLIToolException + + .. rubric:: Inheritance + .. inheritance-diagram:: CLIToolException + :parts: 1 diff --git a/_sources/typing/index.rst.txt b/_sources/typing/index.rst.txt new file mode 100644 index 00000000..97d4ae2a --- /dev/null +++ b/_sources/typing/index.rst.txt @@ -0,0 +1,4 @@ +Static Type Checking Report +########################### + +*Placeholder for the Static Type Checking report generated with* ``mypy``. diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..7577acb1 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,903 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css new file mode 100644 index 00000000..ec0f9a89 --- /dev/null +++ b/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1f1f;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#262626;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #404040}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} \ No newline at end of file diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff b/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 00000000..6cb60000 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff2 b/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 00000000..7059e231 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff b/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 00000000..f815f63f Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff2 b/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 00000000..f2c76e5b Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_static/css/fonts/fontawesome-webfont.eot b/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/_static/css/fonts/fontawesome-webfont.svg b/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/css/fonts/fontawesome-webfont.ttf b/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_static/css/fonts/fontawesome-webfont.woff b/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/_static/css/fonts/fontawesome-webfont.woff2 b/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_static/css/fonts/lato-bold-italic.woff b/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 00000000..88ad05b9 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff differ diff --git a/_static/css/fonts/lato-bold-italic.woff2 b/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 00000000..c4e3d804 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_static/css/fonts/lato-bold.woff b/_static/css/fonts/lato-bold.woff new file mode 100644 index 00000000..c6dff51f Binary files /dev/null and b/_static/css/fonts/lato-bold.woff differ diff --git a/_static/css/fonts/lato-bold.woff2 b/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 00000000..bb195043 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff2 differ diff --git a/_static/css/fonts/lato-normal-italic.woff b/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 00000000..76114bc0 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff differ diff --git a/_static/css/fonts/lato-normal-italic.woff2 b/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 00000000..3404f37e Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_static/css/fonts/lato-normal.woff b/_static/css/fonts/lato-normal.woff new file mode 100644 index 00000000..ae1307ff Binary files /dev/null and b/_static/css/fonts/lato-normal.woff differ diff --git a/_static/css/fonts/lato-normal.woff2 b/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 00000000..3bf98433 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff2 differ diff --git a/_static/css/theme.css b/_static/css/theme.css new file mode 100644 index 00000000..2d181942 --- /dev/null +++ b/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,.wy-nav-top a,.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:15px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.rst-content .wy-breadcrumbs li tt,.wy-breadcrumbs li .rst-content tt,.wy-breadcrumbs li code{padding:5px;border:none;background:none}.rst-content .wy-breadcrumbs li tt.literal,.wy-breadcrumbs li .rst-content tt.literal,.wy-breadcrumbs li code.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:15px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:30px;display:inline-block;line-height:30px;padding:0 15px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#9b9b9b;height:30px;line-height:30px;padding:0 .809em;margin:6px 0 0;border-top:1px solid #9b9b9b;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4d4d4d;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#333;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:0;z-index:200;background-color:#333;text-align:center}.wy-side-nav-search input[type=text]{width:100%;border-radius:0;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#333;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.4045em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search>a:hover{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin:0 0 .809em;font-weight:400}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#333;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#333;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#333;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#333;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:1024px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey;font-size:95%;text-align:center}footer p{margin-bottom:0;font-size:95%}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,p{margin-bottom:12px}h1{display:none}.rst-content .toctree-wrapper>p.caption,h2{border-bottom:1px solid #e1e4e5;padding:0 0 3px;font-size:130%}h3{font-size:115%;text-decoration:underline}.section p,.simple li,section>p{text-align:justify}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1f1f;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#262626;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #404040}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.field-list>dt:after,html.writer-html5 .rst-content dl.footnote>dt:after{content:":"}html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.footnote>dt>span.brackets{margin-right:.5rem}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{font-style:italic}html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.footnote>dd p,html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{font-size:inherit;line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#b3b3b3;color:#333;border-top:3px solid #666;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:before{color:#666}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.field-list)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dl:not(.field-list)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #737373;background:#b3b3b3;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..d06a71d7 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..44e14882 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '0.3.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/favicon.svg b/_static/favicon.svg new file mode 100644 index 00000000..8adc59d5 --- /dev/null +++ b/_static/favicon.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/graphviz.css b/_static/graphviz.css new file mode 100644 index 00000000..8d81c02e --- /dev/null +++ b/_static/graphviz.css @@ -0,0 +1,19 @@ +/* + * graphviz.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- graphviz extension. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +img.graphviz { + border: 0; + max-width: 100%; +} + +object.graphviz { + max-width: 100%; +} diff --git a/_static/js/badge_only.js b/_static/js/badge_only.js new file mode 100644 index 00000000..526d7234 --- /dev/null +++ b/_static/js/badge_only.js @@ -0,0 +1 @@ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); \ No newline at end of file diff --git a/_static/js/html5shiv-printshiv.min.js b/_static/js/html5shiv-printshiv.min.js new file mode 100644 index 00000000..2b43bd06 --- /dev/null +++ b/_static/js/html5shiv-printshiv.min.js @@ -0,0 +1,4 @@ +/** +* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/html5shiv.min.js b/_static/js/html5shiv.min.js new file mode 100644 index 00000000..cd1c674f --- /dev/null +++ b/_static/js/html5shiv.min.js @@ -0,0 +1,4 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); \ No newline at end of file diff --git a/_static/js/theme.js b/_static/js/theme.js new file mode 100644 index 00000000..1fddb6ee --- /dev/null +++ b/_static/js/theme.js @@ -0,0 +1 @@ +!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/logo.svg b/_static/logo.svg new file mode 100644 index 00000000..aa21067c --- /dev/null +++ b/_static/logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 00000000..d96755fd Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 00000000..7107cec9 Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..57f1a070 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,84 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #49483e } +.highlight { background: #232629; color: #cccccc } +.highlight .c { color: #777777; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .esc { color: #cccccc } /* Escape */ +.highlight .g { color: #cccccc } /* Generic */ +.highlight .k { color: #7686bb; font-weight: bold } /* Keyword */ +.highlight .l { color: #cccccc } /* Literal */ +.highlight .n { color: #cccccc } /* Name */ +.highlight .o { color: #cccccc } /* Operator */ +.highlight .x { color: #cccccc } /* Other */ +.highlight .p { color: #cccccc } /* Punctuation */ +.highlight .ch { color: #777777; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #777777; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #777777; font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: #777777; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #777777; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #777777; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #cccccc } /* Generic.Deleted */ +.highlight .ge { color: #cccccc } /* Generic.Emph */ +.highlight .gr { color: #cccccc } /* Generic.Error */ +.highlight .gh { color: #cccccc } /* Generic.Heading */ +.highlight .gi { color: #cccccc } /* Generic.Inserted */ +.highlight .go { color: #cccccc } /* Generic.Output */ +.highlight .gp { color: #ffffff } /* Generic.Prompt */ +.highlight .gs { color: #cccccc } /* Generic.Strong */ +.highlight .gu { color: #cccccc } /* Generic.Subheading */ +.highlight .gt { color: #cccccc } /* Generic.Traceback */ +.highlight .kc { color: #7686bb; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #7686bb; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #7686bb; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #7686bb; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #7686bb; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #7686bb; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #cccccc } /* Literal.Date */ +.highlight .m { color: #4FB8CC } /* Literal.Number */ +.highlight .s { color: #51cc99 } /* Literal.String */ +.highlight .na { color: #cccccc } /* Name.Attribute */ +.highlight .nb { color: #cccccc } /* Name.Builtin */ +.highlight .nc { color: #cccccc } /* Name.Class */ +.highlight .no { color: #cccccc } /* Name.Constant */ +.highlight .nd { color: #cccccc } /* Name.Decorator */ +.highlight .ni { color: #cccccc } /* Name.Entity */ +.highlight .ne { color: #cccccc } /* Name.Exception */ +.highlight .nf { color: #6a6aff } /* Name.Function */ +.highlight .nl { color: #cccccc } /* Name.Label */ +.highlight .nn { color: #cccccc } /* Name.Namespace */ +.highlight .nx { color: #e2828e } /* Name.Other */ +.highlight .py { color: #cccccc } /* Name.Property */ +.highlight .nt { color: #cccccc } /* Name.Tag */ +.highlight .nv { color: #7AB4DB; font-weight: bold } /* Name.Variable */ +.highlight .ow { color: #cccccc } /* Operator.Word */ +.highlight .pm { color: #cccccc } /* Punctuation.Marker */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #4FB8CC } /* Literal.Number.Bin */ +.highlight .mf { color: #4FB8CC } /* Literal.Number.Float */ +.highlight .mh { color: #4FB8CC } /* Literal.Number.Hex */ +.highlight .mi { color: #4FB8CC } /* Literal.Number.Integer */ +.highlight .mo { color: #4FB8CC } /* Literal.Number.Oct */ +.highlight .sa { color: #51cc99 } /* Literal.String.Affix */ +.highlight .sb { color: #51cc99 } /* Literal.String.Backtick */ +.highlight .sc { color: #51cc99 } /* Literal.String.Char */ +.highlight .dl { color: #51cc99 } /* Literal.String.Delimiter */ +.highlight .sd { color: #51cc99 } /* Literal.String.Doc */ +.highlight .s2 { color: #51cc99 } /* Literal.String.Double */ +.highlight .se { color: #51cc99 } /* Literal.String.Escape */ +.highlight .sh { color: #51cc99 } /* Literal.String.Heredoc */ +.highlight .si { color: #51cc99 } /* Literal.String.Interpol */ +.highlight .sx { color: #51cc99 } /* Literal.String.Other */ +.highlight .sr { color: #51cc99 } /* Literal.String.Regex */ +.highlight .s1 { color: #51cc99 } /* Literal.String.Single */ +.highlight .ss { color: #51cc99 } /* Literal.String.Symbol */ +.highlight .bp { color: #cccccc } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #6a6aff } /* Name.Function.Magic */ +.highlight .vc { color: #7AB4DB; font-weight: bold } /* Name.Variable.Class */ +.highlight .vg { color: #BE646C; font-weight: bold } /* Name.Variable.Global */ +.highlight .vi { color: #7AB4DB; font-weight: bold } /* Name.Variable.Instance */ +.highlight .vm { color: #7AB4DB; font-weight: bold } /* Name.Variable.Magic */ +.highlight .il { color: #4FB8CC } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..97d56a74 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,566 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 00000000..aae669d7 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/_static/work-in-progress.png b/_static/work-in-progress.png new file mode 100644 index 00000000..3e452431 Binary files /dev/null and b/_static/work-in-progress.png differ diff --git a/coverage/coverage_html.js b/coverage/coverage_html.js new file mode 100644 index 00000000..4c321182 --- /dev/null +++ b/coverage/coverage_html.js @@ -0,0 +1,624 @@ +// Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 +// For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt + +// Coverage.py HTML report browser code. +/*jslint browser: true, sloppy: true, vars: true, plusplus: true, maxerr: 50, indent: 4 */ +/*global coverage: true, document, window, $ */ + +coverage = {}; + +// General helpers +function debounce(callback, wait) { + let timeoutId = null; + return function(...args) { + clearTimeout(timeoutId); + timeoutId = setTimeout(() => { + callback.apply(this, args); + }, wait); + }; +}; + +function checkVisible(element) { + const rect = element.getBoundingClientRect(); + const viewBottom = Math.max(document.documentElement.clientHeight, window.innerHeight); + const viewTop = 30; + return !(rect.bottom < viewTop || rect.top >= viewBottom); +} + +function on_click(sel, fn) { + const elt = document.querySelector(sel); + if (elt) { + elt.addEventListener("click", fn); + } +} + +// Helpers for table sorting +function getCellValue(row, column = 0) { + const cell = row.cells[column] + if (cell.childElementCount == 1) { + const child = cell.firstElementChild + if (child instanceof HTMLTimeElement && child.dateTime) { + return child.dateTime + } else if (child instanceof HTMLDataElement && child.value) { + return child.value + } + } + return cell.innerText || cell.textContent; +} + +function rowComparator(rowA, rowB, column = 0) { + let valueA = getCellValue(rowA, column); + let valueB = getCellValue(rowB, column); + if (!isNaN(valueA) && !isNaN(valueB)) { + return valueA - valueB + } + return valueA.localeCompare(valueB, undefined, {numeric: true}); +} + +function sortColumn(th) { + // Get the current sorting direction of the selected header, + // clear state on other headers and then set the new sorting direction + const currentSortOrder = th.getAttribute("aria-sort"); + [...th.parentElement.cells].forEach(header => header.setAttribute("aria-sort", "none")); + if (currentSortOrder === "none") { + th.setAttribute("aria-sort", th.dataset.defaultSortOrder || "ascending"); + } else { + th.setAttribute("aria-sort", currentSortOrder === "ascending" ? "descending" : "ascending"); + } + + const column = [...th.parentElement.cells].indexOf(th) + + // Sort all rows and afterwards append them in order to move them in the DOM + Array.from(th.closest("table").querySelectorAll("tbody tr")) + .sort((rowA, rowB) => rowComparator(rowA, rowB, column) * (th.getAttribute("aria-sort") === "ascending" ? 1 : -1)) + .forEach(tr => tr.parentElement.appendChild(tr) ); +} + +// Find all the elements with data-shortcut attribute, and use them to assign a shortcut key. +coverage.assign_shortkeys = function () { + document.querySelectorAll("[data-shortcut]").forEach(element => { + document.addEventListener("keypress", event => { + if (event.target.tagName.toLowerCase() === "input") { + return; // ignore keypress from search filter + } + if (event.key === element.dataset.shortcut) { + element.click(); + } + }); + }); +}; + +// Create the events for the filter box. +coverage.wire_up_filter = function () { + // Cache elements. + const table = document.querySelector("table.index"); + const table_body_rows = table.querySelectorAll("tbody tr"); + const no_rows = document.getElementById("no_rows"); + + // Observe filter keyevents. + document.getElementById("filter").addEventListener("input", debounce(event => { + // Keep running total of each metric, first index contains number of shown rows + const totals = new Array(table.rows[0].cells.length).fill(0); + // Accumulate the percentage as fraction + totals[totals.length - 1] = { "numer": 0, "denom": 0 }; + + // Hide / show elements. + table_body_rows.forEach(row => { + if (!row.cells[0].textContent.includes(event.target.value)) { + // hide + row.classList.add("hidden"); + return; + } + + // show + row.classList.remove("hidden"); + totals[0]++; + + for (let column = 1; column < totals.length; column++) { + // Accumulate dynamic totals + cell = row.cells[column] + if (column === totals.length - 1) { + // Last column contains percentage + const [numer, denom] = cell.dataset.ratio.split(" "); + totals[column]["numer"] += parseInt(numer, 10); + totals[column]["denom"] += parseInt(denom, 10); + } else { + totals[column] += parseInt(cell.textContent, 10); + } + } + }); + + // Show placeholder if no rows will be displayed. + if (!totals[0]) { + // Show placeholder, hide table. + no_rows.style.display = "block"; + table.style.display = "none"; + return; + } + + // Hide placeholder, show table. + no_rows.style.display = null; + table.style.display = null; + + const footer = table.tFoot.rows[0]; + // Calculate new dynamic sum values based on visible rows. + for (let column = 1; column < totals.length; column++) { + // Get footer cell element. + const cell = footer.cells[column]; + + // Set value into dynamic footer cell element. + if (column === totals.length - 1) { + // Percentage column uses the numerator and denominator, + // and adapts to the number of decimal places. + const match = /\.([0-9]+)/.exec(cell.textContent); + const places = match ? match[1].length : 0; + const { numer, denom } = totals[column]; + cell.dataset.ratio = `${numer} ${denom}`; + // Check denom to prevent NaN if filtered files contain no statements + cell.textContent = denom + ? `${(numer * 100 / denom).toFixed(places)}%` + : `${(100).toFixed(places)}%`; + } else { + cell.textContent = totals[column]; + } + } + })); + + // Trigger change event on setup, to force filter on page refresh + // (filter value may still be present). + document.getElementById("filter").dispatchEvent(new Event("input")); +}; + +coverage.INDEX_SORT_STORAGE = "COVERAGE_INDEX_SORT_2"; + +// Loaded on index.html +coverage.index_ready = function () { + coverage.assign_shortkeys(); + coverage.wire_up_filter(); + document.querySelectorAll("[data-sortable] th[aria-sort]").forEach( + th => th.addEventListener("click", e => sortColumn(e.target)) + ); + + // Look for a localStorage item containing previous sort settings: + const stored_list = localStorage.getItem(coverage.INDEX_SORT_STORAGE); + + if (stored_list) { + const {column, direction} = JSON.parse(stored_list); + const th = document.querySelector("[data-sortable]").tHead.rows[0].cells[column]; + th.setAttribute("aria-sort", direction === "ascending" ? "descending" : "ascending"); + th.click() + } + + // Watch for page unload events so we can save the final sort settings: + window.addEventListener("unload", function () { + const th = document.querySelector('[data-sortable] th[aria-sort="ascending"], [data-sortable] [aria-sort="descending"]'); + if (!th) { + return; + } + localStorage.setItem(coverage.INDEX_SORT_STORAGE, JSON.stringify({ + column: [...th.parentElement.cells].indexOf(th), + direction: th.getAttribute("aria-sort"), + })); + }); + + on_click(".button_prev_file", coverage.to_prev_file); + on_click(".button_next_file", coverage.to_next_file); + + on_click(".button_show_hide_help", coverage.show_hide_help); +}; + +// -- pyfile stuff -- + +coverage.LINE_FILTERS_STORAGE = "COVERAGE_LINE_FILTERS"; + +coverage.pyfile_ready = function () { + // If we're directed to a particular line number, highlight the line. + var frag = location.hash; + if (frag.length > 2 && frag[1] === "t") { + document.querySelector(frag).closest(".n").classList.add("highlight"); + coverage.set_sel(parseInt(frag.substr(2), 10)); + } else { + coverage.set_sel(0); + } + + on_click(".button_toggle_run", coverage.toggle_lines); + on_click(".button_toggle_mis", coverage.toggle_lines); + on_click(".button_toggle_exc", coverage.toggle_lines); + on_click(".button_toggle_par", coverage.toggle_lines); + + on_click(".button_next_chunk", coverage.to_next_chunk_nicely); + on_click(".button_prev_chunk", coverage.to_prev_chunk_nicely); + on_click(".button_top_of_page", coverage.to_top); + on_click(".button_first_chunk", coverage.to_first_chunk); + + on_click(".button_prev_file", coverage.to_prev_file); + on_click(".button_next_file", coverage.to_next_file); + on_click(".button_to_index", coverage.to_index); + + on_click(".button_show_hide_help", coverage.show_hide_help); + + coverage.filters = undefined; + try { + coverage.filters = localStorage.getItem(coverage.LINE_FILTERS_STORAGE); + } catch(err) {} + + if (coverage.filters) { + coverage.filters = JSON.parse(coverage.filters); + } + else { + coverage.filters = {run: false, exc: true, mis: true, par: true}; + } + + for (cls in coverage.filters) { + coverage.set_line_visibilty(cls, coverage.filters[cls]); + } + + coverage.assign_shortkeys(); + coverage.init_scroll_markers(); + coverage.wire_up_sticky_header(); + + document.querySelectorAll("[id^=ctxs]").forEach( + cbox => cbox.addEventListener("click", coverage.expand_contexts) + ); + + // Rebuild scroll markers when the window height changes. + window.addEventListener("resize", coverage.build_scroll_markers); +}; + +coverage.toggle_lines = function (event) { + const btn = event.target.closest("button"); + const category = btn.value + const show = !btn.classList.contains("show_" + category); + coverage.set_line_visibilty(category, show); + coverage.build_scroll_markers(); + coverage.filters[category] = show; + try { + localStorage.setItem(coverage.LINE_FILTERS_STORAGE, JSON.stringify(coverage.filters)); + } catch(err) {} +}; + +coverage.set_line_visibilty = function (category, should_show) { + const cls = "show_" + category; + const btn = document.querySelector(".button_toggle_" + category); + if (btn) { + if (should_show) { + document.querySelectorAll("#source ." + category).forEach(e => e.classList.add(cls)); + btn.classList.add(cls); + } + else { + document.querySelectorAll("#source ." + category).forEach(e => e.classList.remove(cls)); + btn.classList.remove(cls); + } + } +}; + +// Return the nth line div. +coverage.line_elt = function (n) { + return document.getElementById("t" + n)?.closest("p"); +}; + +// Set the selection. b and e are line numbers. +coverage.set_sel = function (b, e) { + // The first line selected. + coverage.sel_begin = b; + // The next line not selected. + coverage.sel_end = (e === undefined) ? b+1 : e; +}; + +coverage.to_top = function () { + coverage.set_sel(0, 1); + coverage.scroll_window(0); +}; + +coverage.to_first_chunk = function () { + coverage.set_sel(0, 1); + coverage.to_next_chunk(); +}; + +coverage.to_prev_file = function () { + window.location = document.getElementById("prevFileLink").href; +} + +coverage.to_next_file = function () { + window.location = document.getElementById("nextFileLink").href; +} + +coverage.to_index = function () { + location.href = document.getElementById("indexLink").href; +} + +coverage.show_hide_help = function () { + const helpCheck = document.getElementById("help_panel_state") + helpCheck.checked = !helpCheck.checked; +} + +// Return a string indicating what kind of chunk this line belongs to, +// or null if not a chunk. +coverage.chunk_indicator = function (line_elt) { + const classes = line_elt?.className; + if (!classes) { + return null; + } + const match = classes.match(/\bshow_\w+\b/); + if (!match) { + return null; + } + return match[0]; +}; + +coverage.to_next_chunk = function () { + const c = coverage; + + // Find the start of the next colored chunk. + var probe = c.sel_end; + var chunk_indicator, probe_line; + while (true) { + probe_line = c.line_elt(probe); + if (!probe_line) { + return; + } + chunk_indicator = c.chunk_indicator(probe_line); + if (chunk_indicator) { + break; + } + probe++; + } + + // There's a next chunk, `probe` points to it. + var begin = probe; + + // Find the end of this chunk. + var next_indicator = chunk_indicator; + while (next_indicator === chunk_indicator) { + probe++; + probe_line = c.line_elt(probe); + next_indicator = c.chunk_indicator(probe_line); + } + c.set_sel(begin, probe); + c.show_selection(); +}; + +coverage.to_prev_chunk = function () { + const c = coverage; + + // Find the end of the prev colored chunk. + var probe = c.sel_begin-1; + var probe_line = c.line_elt(probe); + if (!probe_line) { + return; + } + var chunk_indicator = c.chunk_indicator(probe_line); + while (probe > 1 && !chunk_indicator) { + probe--; + probe_line = c.line_elt(probe); + if (!probe_line) { + return; + } + chunk_indicator = c.chunk_indicator(probe_line); + } + + // There's a prev chunk, `probe` points to its last line. + var end = probe+1; + + // Find the beginning of this chunk. + var prev_indicator = chunk_indicator; + while (prev_indicator === chunk_indicator) { + probe--; + if (probe <= 0) { + return; + } + probe_line = c.line_elt(probe); + prev_indicator = c.chunk_indicator(probe_line); + } + c.set_sel(probe+1, end); + c.show_selection(); +}; + +// Returns 0, 1, or 2: how many of the two ends of the selection are on +// the screen right now? +coverage.selection_ends_on_screen = function () { + if (coverage.sel_begin === 0) { + return 0; + } + + const begin = coverage.line_elt(coverage.sel_begin); + const end = coverage.line_elt(coverage.sel_end-1); + + return ( + (checkVisible(begin) ? 1 : 0) + + (checkVisible(end) ? 1 : 0) + ); +}; + +coverage.to_next_chunk_nicely = function () { + if (coverage.selection_ends_on_screen() === 0) { + // The selection is entirely off the screen: + // Set the top line on the screen as selection. + + // This will select the top-left of the viewport + // As this is most likely the span with the line number we take the parent + const line = document.elementFromPoint(0, 0).parentElement; + if (line.parentElement !== document.getElementById("source")) { + // The element is not a source line but the header or similar + coverage.select_line_or_chunk(1); + } else { + // We extract the line number from the id + coverage.select_line_or_chunk(parseInt(line.id.substring(1), 10)); + } + } + coverage.to_next_chunk(); +}; + +coverage.to_prev_chunk_nicely = function () { + if (coverage.selection_ends_on_screen() === 0) { + // The selection is entirely off the screen: + // Set the lowest line on the screen as selection. + + // This will select the bottom-left of the viewport + // As this is most likely the span with the line number we take the parent + const line = document.elementFromPoint(document.documentElement.clientHeight-1, 0).parentElement; + if (line.parentElement !== document.getElementById("source")) { + // The element is not a source line but the header or similar + coverage.select_line_or_chunk(coverage.lines_len); + } else { + // We extract the line number from the id + coverage.select_line_or_chunk(parseInt(line.id.substring(1), 10)); + } + } + coverage.to_prev_chunk(); +}; + +// Select line number lineno, or if it is in a colored chunk, select the +// entire chunk +coverage.select_line_or_chunk = function (lineno) { + var c = coverage; + var probe_line = c.line_elt(lineno); + if (!probe_line) { + return; + } + var the_indicator = c.chunk_indicator(probe_line); + if (the_indicator) { + // The line is in a highlighted chunk. + // Search backward for the first line. + var probe = lineno; + var indicator = the_indicator; + while (probe > 0 && indicator === the_indicator) { + probe--; + probe_line = c.line_elt(probe); + if (!probe_line) { + break; + } + indicator = c.chunk_indicator(probe_line); + } + var begin = probe + 1; + + // Search forward for the last line. + probe = lineno; + indicator = the_indicator; + while (indicator === the_indicator) { + probe++; + probe_line = c.line_elt(probe); + indicator = c.chunk_indicator(probe_line); + } + + coverage.set_sel(begin, probe); + } + else { + coverage.set_sel(lineno); + } +}; + +coverage.show_selection = function () { + // Highlight the lines in the chunk + document.querySelectorAll("#source .highlight").forEach(e => e.classList.remove("highlight")); + for (let probe = coverage.sel_begin; probe < coverage.sel_end; probe++) { + coverage.line_elt(probe).querySelector(".n").classList.add("highlight"); + } + + coverage.scroll_to_selection(); +}; + +coverage.scroll_to_selection = function () { + // Scroll the page if the chunk isn't fully visible. + if (coverage.selection_ends_on_screen() < 2) { + const element = coverage.line_elt(coverage.sel_begin); + coverage.scroll_window(element.offsetTop - 60); + } +}; + +coverage.scroll_window = function (to_pos) { + window.scroll({top: to_pos, behavior: "smooth"}); +}; + +coverage.init_scroll_markers = function () { + // Init some variables + coverage.lines_len = document.querySelectorAll("#source > p").length; + + // Build html + coverage.build_scroll_markers(); +}; + +coverage.build_scroll_markers = function () { + const temp_scroll_marker = document.getElementById("scroll_marker") + if (temp_scroll_marker) temp_scroll_marker.remove(); + // Don't build markers if the window has no scroll bar. + if (document.body.scrollHeight <= window.innerHeight) { + return; + } + + const marker_scale = window.innerHeight / document.body.scrollHeight; + const line_height = Math.min(Math.max(3, window.innerHeight / coverage.lines_len), 10); + + let previous_line = -99, last_mark, last_top; + + const scroll_marker = document.createElement("div"); + scroll_marker.id = "scroll_marker"; + document.getElementById("source").querySelectorAll( + "p.show_run, p.show_mis, p.show_exc, p.show_exc, p.show_par" + ).forEach(element => { + const line_top = Math.floor(element.offsetTop * marker_scale); + const line_number = parseInt(element.querySelector(".n a").id.substr(1)); + + if (line_number === previous_line + 1) { + // If this solid missed block just make previous mark higher. + last_mark.style.height = `${line_top + line_height - last_top}px`; + } else { + // Add colored line in scroll_marker block. + last_mark = document.createElement("div"); + last_mark.id = `m${line_number}`; + last_mark.classList.add("marker"); + last_mark.style.height = `${line_height}px`; + last_mark.style.top = `${line_top}px`; + scroll_marker.append(last_mark); + last_top = line_top; + } + + previous_line = line_number; + }); + + // Append last to prevent layout calculation + document.body.append(scroll_marker); +}; + +coverage.wire_up_sticky_header = function () { + const header = document.querySelector("header"); + const header_bottom = ( + header.querySelector(".content h2").getBoundingClientRect().top - + header.getBoundingClientRect().top + ); + + function updateHeader() { + if (window.scrollY > header_bottom) { + header.classList.add("sticky"); + } else { + header.classList.remove("sticky"); + } + } + + window.addEventListener("scroll", updateHeader); + updateHeader(); +}; + +coverage.expand_contexts = function (e) { + var ctxs = e.target.parentNode.querySelector(".ctxs"); + + if (!ctxs.classList.contains("expanded")) { + var ctxs_text = ctxs.textContent; + var width = Number(ctxs_text[0]); + ctxs.textContent = ""; + for (var i = 1; i < ctxs_text.length; i += width) { + key = ctxs_text.substring(i, i + width).trim(); + ctxs.appendChild(document.createTextNode(contexts[key])); + ctxs.appendChild(document.createElement("br")); + } + ctxs.classList.add("expanded"); + } +}; + +document.addEventListener("DOMContentLoaded", () => { + if (document.body.classList.contains("indexfile")) { + coverage.index_ready(); + } else { + coverage.pyfile_ready(); + } +}); diff --git a/coverage/d_17bd492d087794b9_GHDL_py.html b/coverage/d_17bd492d087794b9_GHDL_py.html new file mode 100644 index 00000000..57e10620 --- /dev/null +++ b/coverage/d_17bd492d087794b9_GHDL_py.html @@ -0,0 +1,252 @@ + + + + + Coverage for tests/unit/GHDL.py: 32% + + + + + +
+
+

+ Coverage for tests/unit/GHDL.py: + 32% +

+ +

+ 93 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.2.7, + created at 2023-07-08 17:53 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# _____ ____ _ _ ____ _ ___ _____ _ # 

+

3# _ __ _ _| ____| _ \ / \ / \ / ___| | |_ _|_ _|__ ___ | | # 

+

4# | '_ \| | | | _| | | | |/ _ \ / _ \ | | | | | | | |/ _ \ / _ \| | # 

+

5# | |_) | |_| | |___| |_| / ___ \ / ___ \ | |___| |___ | | | | (_) | (_) | | # 

+

6# | .__/ \__, |_____|____/_/ \_\/_/ \_(_)____|_____|___| |_|\___/ \___/|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# # 

+

16# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

17# you may not use this file except in compliance with the License. # 

+

18# You may obtain a copy of the License at # 

+

19# # 

+

20# http://www.apache.org/licenses/LICENSE-2.0 # 

+

21# # 

+

22# Unless required by applicable law or agreed to in writing, software # 

+

23# distributed under the License is distributed on an "AS IS" BASIS, # 

+

24# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

25# See the License for the specific language governing permissions and # 

+

26# limitations under the License. # 

+

27# # 

+

28# SPDX-License-Identifier: Apache-2.0 # 

+

29# ==================================================================================================================== # 

+

30# 

+

31"""Unit tests for executable ``ghdl``.""" 

+

32from sys import platform as sys_platform 

+

33from os import getenv as os_getenv 

+

34from pathlib import Path 

+

35from unittest import TestCase 

+

36 

+

37from pyEDAA.CLITool.GHDL import GHDL 

+

38from . import Helper 

+

39 

+

40 

+

41class CommonOptions(TestCase, Helper): 

+

42 _binaryDirectoryPath = Path(os_getenv("GHDL_PREFIX", default="/usr/local/lib/ghdl")) / "../../bin" 

+

43 

+

44 @classmethod 

+

45 def setUpClass(cls) -> None: 

+

46 # print(f"\nPlatform: {sys_platform}") 

+

47 if sys_platform in ("linux", "darwin"): 47 ↛ exitline 47 didn't return from function 'setUpClass', because the condition on line 47 was never false

+

48 ghdlBinaryPath: Path = cls._binaryDirectoryPath / "ghdl" 

+

49 print(f"Creating dummy file '{ghdlBinaryPath}': ", end="") 

+

50 ghdlBinaryPath.touch() 

+

51 print(f"DONE" if ghdlBinaryPath.exists() else f"FAILED") 

+

52 

+

53 def test_Help(self): 

+

54 print() 

+

55 

+

56 tool = GHDL(binaryDirectoryPath=self._binaryDirectoryPath) 

+

57 tool[tool.CommandHelp] = True 

+

58 

+

59 executable = self.getExecutablePath("ghdl", self._binaryDirectoryPath) 

+

60 self.assertEqual(f"[\"{executable}\", \"help\"]", repr(tool)) 

+

61 

+

62 helpText = tool.Help() 

+

63 print(helpText) 

+

64 

+

65 def test_Version(self): 

+

66 print() 

+

67 

+

68 tool = GHDL(binaryDirectoryPath=self._binaryDirectoryPath) 

+

69 tool[tool.CommandVersion] = True 

+

70 

+

71 executable = self.getExecutablePath("ghdl", self._binaryDirectoryPath) 

+

72 self.assertEqual(f"[\"{executable}\", \"version\"]", repr(tool)) 

+

73 

+

74 version = tool.Version() 

+

75 print(str(version)) 

+

76 print(repr(version)) 

+

77 

+

78 

+

79class Analyze(TestCase, Helper): 

+

80 _binaryDirectoryPath = Path(os_getenv("GHDL_PREFIX", default="/usr/local/lib/ghdl")) / "../../bin" 

+

81 

+

82 @classmethod 

+

83 def setUpClass(cls) -> None: 

+

84 # print(f"\nPlatform: {sys_platform}") 

+

85 if sys_platform in ("linux", "darwin"): 85 ↛ exitline 85 didn't return from function 'setUpClass', because the condition on line 85 was never false

+

86 ghdlBinaryPath: Path = cls._binaryDirectoryPath / "ghdl" 

+

87 print(f"Creating dummy file '{ghdlBinaryPath}': ", end="") 

+

88 ghdlBinaryPath.touch() 

+

89 print(f"DONE" if ghdlBinaryPath.exists() else f"FAILED") 

+

90 

+

91 def test_Analyze(self): 

+

92 print() 

+

93 

+

94 tool = GHDL(binaryDirectoryPath=self._binaryDirectoryPath) 

+

95 tool[tool.CommandAnalyze] = True 

+

96 tool[tool.FlagVHDLStandard] = "08" 

+

97 tool[tool.FlagSynopsys] = True 

+

98 tool[tool.FlagRelaxed] = True 

+

99 tool[tool.FlagExplicit] = True 

+

100 tool[tool.FlagMultiByteComments] = True 

+

101 tool[tool.FlagLibrary] = "lib_Test" 

+

102 

+

103 executable = self.getExecutablePath("ghdl", self._binaryDirectoryPath) 

+

104 self.assertEqual(f"[\"{executable}\", \"analyze\", \"--std=08\", \"-fsynopsys\", \"-frelaxed\", \"-fexplicit\", \"--work=lib_Test\", \"--mb-comments\"]", repr(tool)) 

+

105 

+

106 tool.StartProcess() 

+

107 for line in tool.GetLineReader(): 

+

108 print(line) 

+

109 tool.Terminate() 

+

110 print(tool.ExitCode) 

+

111 

+

112 def test_AnalyzeFile(self): 

+

113 print() 

+

114 

+

115 tool = GHDL(binaryDirectoryPath=self._binaryDirectoryPath) 

+

116 tool[tool.CommandAnalyze] = True 

+

117 tool[tool.FlagVHDLStandard] = "08" 

+

118 tool[tool.FlagSynopsys] = True 

+

119 tool[tool.FlagRelaxed] = True 

+

120 tool[tool.FlagExplicit] = True 

+

121 tool[tool.FlagMultiByteComments] = True 

+

122 tool[tool.FlagLibrary] = "lib_Test" 

+

123 tool[tool.OptionPaths] = (Path("example/file_A1.vhdl"), ) 

+

124 

+

125 executable = self.getExecutablePath("ghdl", self._binaryDirectoryPath) 

+

126 self.assertEqual(f"[\"{executable}\", \"analyze\", \"--std=08\", \"-fsynopsys\", \"-frelaxed\", \"-fexplicit\", \"--work=lib_Test\", \"--mb-comments\", \"example\\file_A1.vhdl\"]", repr(tool)) 

+

127 

+

128 tool.StartProcess() 

+

129 for line in tool.GetLineReader(): 

+

130 print(line) 

+

131 tool.Terminate() 

+

132 print(tool.ExitCode) 

+

133 

+

134 def test_DeriveAnalyzer(self): 

+

135 print() 

+

136 

+

137 tool = GHDL(binaryDirectoryPath=self._binaryDirectoryPath) 

+

138 tool[tool.FlagVHDLStandard] = "08" 

+

139 tool[tool.FlagSynopsys] = True 

+

140 tool[tool.FlagRelaxed] = True 

+

141 tool[tool.FlagExplicit] = True 

+

142 tool[tool.FlagMultiByteComments] = True 

+

143 

+

144 derived = tool.GetGHDLAsAnalyzer() 

+

145 derived[derived.FlagLibrary] = "lib_Test" 

+

146 

+

147 executable = self.getExecutablePath("ghdl", self._binaryDirectoryPath) 

+

148 self.assertEqual(f"[\"{executable}\", \"analyze\", \"--std=08\", \"-fsynopsys\", \"-frelaxed\", \"-fexplicit\", \"--work=lib_Test\", \"--mb-comments\"]", repr(derived)) 

+

149 

+

150 derived.StartProcess() 

+

151 for line in derived.GetLineReader(): 

+

152 print(line) 

+

153 print(derived.ExitCode) 

+
+ + + diff --git a/coverage/d_17bd492d087794b9___init___py.html b/coverage/d_17bd492d087794b9___init___py.html new file mode 100644 index 00000000..31fa074f --- /dev/null +++ b/coverage/d_17bd492d087794b9___init___py.html @@ -0,0 +1,151 @@ + + + + + Coverage for tests/unit/__init__.py: 88% + + + + + +
+
+

+ Coverage for tests/unit/__init__.py: + 88% +

+ +

+ 13 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.2.7, + created at 2023-07-08 17:53 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# _____ ____ _ _ ____ _ ___ _____ _ # 

+

3# _ __ _ _| ____| _ \ / \ / \ / ___| | |_ _|_ _|__ ___ | | # 

+

4# | '_ \| | | | _| | | | |/ _ \ / _ \ | | | | | | | |/ _ \ / _ \| | # 

+

5# | |_) | |_| | |___| |_| / ___ \ / ___ \ | |___| |___ | | | | (_) | (_) | | # 

+

6# | .__/ \__, |_____|____/_/ \_\/_/ \_(_)____|_____|___| |_|\___/ \___/|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Bötzingen, Germany # 

+

15# # 

+

16# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

17# you may not use this file except in compliance with the License. # 

+

18# You may obtain a copy of the License at # 

+

19# # 

+

20# http://www.apache.org/licenses/LICENSE-2.0 # 

+

21# # 

+

22# Unless required by applicable law or agreed to in writing, software # 

+

23# distributed under the License is distributed on an "AS IS" BASIS, # 

+

24# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

25# See the License for the specific language governing permissions and # 

+

26# limitations under the License. # 

+

27# # 

+

28# SPDX-License-Identifier: Apache-2.0 # 

+

29# ==================================================================================================================== # 

+

30# 

+

31""" 

+

32Helper classes for unit tests. 

+

33 

+

34:copyright: Copyright 2007-2023 Patrick Lehmann - Bötzingen, Germany 

+

35:license: Apache License, Version 2.0 

+

36""" 

+

37from pathlib import Path 

+

38from platform import system 

+

39from sys import platform as sys_platform 

+

40 

+

41 

+

42class Helper: 

+

43 _system = system() 

+

44 

+

45 @classmethod 

+

46 def getExecutablePath(cls, programName: str, binaryDirectory: Path = None) -> str: 

+

47 extensions = ".exe" if cls._system == "Windows" else "" 

+

48 programName = f"{programName}{extensions}" 

+

49 if binaryDirectory is not None: 49 ↛ 50line 49 didn't jump to line 50, because the condition on line 49 was never true

+

50 return str(binaryDirectory / programName) 

+

51 else: 

+

52 return programName 

+
+ + + diff --git a/coverage/d_934c7d71d0bc0dba_GHDL_py.html b/coverage/d_934c7d71d0bc0dba_GHDL_py.html new file mode 100644 index 00000000..e7b1f5cf --- /dev/null +++ b/coverage/d_934c7d71d0bc0dba_GHDL_py.html @@ -0,0 +1,559 @@ + + + + + Coverage for pyEDAA/CLITool/GHDL.py: 76% + + + + + +
+
+

+ Coverage for pyEDAA/CLITool/GHDL.py: + 76% +

+ +

+ 235 statements   + + + + +

+

+ « prev     + ^ index     + » next +       + coverage.py v7.2.7, + created at 2023-07-08 17:53 +0000 +

+ +
+
+
+

1# ==================================================================================================================== # 

+

2# _____ ____ _ _ ____ _ ___ _____ _ # 

+

3# _ __ _ _| ____| _ \ / \ / \ / ___| | |_ _|_ _|__ ___ | | # 

+

4# | '_ \| | | | _| | | | |/ _ \ / _ \ | | | | | | | |/ _ \ / _ \| | # 

+

5# | |_) | |_| | |___| |_| / ___ \ / ___ \ | |___| |___ | | | | (_) | (_) | | # 

+

6# | .__/ \__, |_____|____/_/ \_\/_/ \_(_)____|_____|___| |_|\___/ \___/|_| # 

+

7# |_| |___/ # 

+

8# ==================================================================================================================== # 

+

9# Authors: # 

+

10# Patrick Lehmann # 

+

11# # 

+

12# License: # 

+

13# ==================================================================================================================== # 

+

14# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany # 

+

15# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture # 

+

16# # 

+

17# Licensed under the Apache License, Version 2.0 (the "License"); # 

+

18# you may not use this file except in compliance with the License. # 

+

19# You may obtain a copy of the License at # 

+

20# # 

+

21# http://www.apache.org/licenses/LICENSE-2.0 # 

+

22# # 

+

23# Unless required by applicable law or agreed to in writing, software # 

+

24# distributed under the License is distributed on an "AS IS" BASIS, # 

+

25# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # 

+

26# See the License for the specific language governing permissions and # 

+

27# limitations under the License. # 

+

28# # 

+

29# SPDX-License-Identifier: Apache-2.0 # 

+

30# ==================================================================================================================== # 

+

31# 

+

32"""This module contains the CLI abstraction layer for `GHDL <https://github.com/ghdl/ghdl>`__.""" 

+

33from re import search as re_search 

+

34from typing import Union, Iterable, Tuple 

+

35 

+

36from pyTooling.Decorators import export 

+

37from pyVHDLModel import VHDLVersion 

+

38 

+

39from pyTooling.CLIAbstraction import CLIArgument, Executable 

+

40from pyTooling.CLIAbstraction.Argument import PathListArgument, StringArgument 

+

41from pyTooling.CLIAbstraction.Command import CommandArgument 

+

42from pyTooling.CLIAbstraction.Flag import ShortFlag, LongFlag 

+

43from pyTooling.CLIAbstraction.BooleanFlag import LongBooleanFlag 

+

44from pyTooling.CLIAbstraction.ValuedFlag import ShortValuedFlag, LongValuedFlag 

+

45from pyTooling.CLIAbstraction.KeyValueFlag import ShortKeyValueFlag 

+

46 

+

47from pyEDAA.CLITool import CLIToolException 

+

48 

+

49 

+

50@export 

+

51class GHDLVersion: 

+

52 _major: int 

+

53 _minor: int 

+

54 _micro: int 

+

55 _dev: bool 

+

56 _commitsSinceLastTag: int 

+

57 _gitHash: str 

+

58 _dirty: bool 

+

59 _edition: str 

+

60 _gnatCompiler: Tuple[int, int, int] 

+

61 _backend: str 

+

62 

+

63 def __init__(self, versionLine: str, gnatLine: str, backendLine: str): 

+

64 match = re_search( 

+

65 r"GHDL" 

+

66 r"\s(?P<major>\d+)" 

+

67 r"\.(?P<minor>\d+)" 

+

68 r"\.(?P<micro>\d+)" 

+

69 r"(?:-(?P<suffix>dev))?" 

+

70 r"\s\(" 

+

71 r"(?P<major2>\d+)" 

+

72 r"\.(?P<minor2>\d+)" 

+

73 r"\.(?P<micro2>\d+)" 

+

74 r"\.(?:r(?P<cslt>\d+))" 

+

75 r"\.(?:g(?P<hash>[0-9a-f]+))" 

+

76 r"(?:\.(?P<dirty>dirty))?" 

+

77 r"\)\s" 

+

78 r"\[(?P<edition>[\w\s]+)\]", 

+

79 versionLine) 

+

80 

+

81 if match is None: 

+

82 raise CLIToolException(f"Unknown first GHDL version string '{versionLine}'.") 

+

83 

+

84 self._major = int(match["major"]) 

+

85 self._minor = int(match["minor"]) 

+

86 self._micro = int(match["micro"]) 

+

87 self._dev = "dev" in match.groups() 

+

88 self._commitsSinceLastTag = int(match["cslt"]) 

+

89 self._gitHash = match["hash"] 

+

90 self._dirty = "dirty" in match.groups() 

+

91 self._edition = match["edition"] 

+

92 

+

93 match = re_search( 

+

94 r"\s*[\w\s]+:\s(?P<major>\d+)\.(?P<minor>\d+)\.(?P<micro>\d+)", gnatLine) 

+

95 

+

96 if match is None: 

+

97 raise CLIToolException(f"Unknown second GHDL version string '{gnatLine}'.") 

+

98 

+

99 self._gnatCompiler = (match["major"], match["minor"], match["micro"]) 

+

100 

+

101 match = re_search( 

+

102 r"\s*(?P<backend>\w+)\scode\sgenerator", backendLine) 

+

103 

+

104 if match is None: 

+

105 raise CLIToolException(f"Unknown third GHDL version string '{backendLine}'.") 

+

106 

+

107 self._backend = match["backend"] 

+

108 

+

109 @property 

+

110 def Major(self) -> int: 

+

111 return self._major 

+

112 

+

113 @property 

+

114 def Minor(self) -> int: 

+

115 return self._minor 

+

116 

+

117 @property 

+

118 def Micro(self) -> int: 

+

119 return self._micro 

+

120 

+

121 @property 

+

122 def Dev(self) -> bool: 

+

123 return self._dev 

+

124 

+

125 @property 

+

126 def CommitsSinceLastTag(self) -> int: 

+

127 return self._commitsSinceLastTag 

+

128 

+

129 @property 

+

130 def GitHash(self) -> str: 

+

131 return self._gitHash 

+

132 

+

133 @property 

+

134 def Dirty(self) -> bool: 

+

135 return self._dirty 

+

136 

+

137 @property 

+

138 def Edition(self) -> str: 

+

139 return self._edition 

+

140 

+

141 def __str__(self) -> str: 

+

142 dev = f"-dev" if self._dev else "" 

+

143 return f"{self._major}.{self._minor}.{self._micro}{dev}" 

+

144 

+

145 def __repr__(self) -> str: 

+

146 return f"{self.__str__()} (Backend: {self._backend}; Git: {self._gitHash})" 

+

147 

+

148 

+

149@export 

+

150class GHDL(Executable): 

+

151 _executableNames = { 

+

152 "Darwin": "ghdl", 

+

153 "Linux": "ghdl", 

+

154 "Windows": "ghdl.exe" 

+

155 } 

+

156 

+

157 # XXX: overwrite __init__ and get backend variant 

+

158 # XXX: check for compatible backends 

+

159 

+

160 @CLIArgument() 

+

161 class CommandHelp(CommandArgument, name="help"): 

+

162 """Print help page(s).""" 

+

163 

+

164 @CLIArgument() 

+

165 class CommandVersion(CommandArgument, name="version"): 

+

166 """Print version information.""" 

+

167 

+

168 @CLIArgument() 

+

169 class CommandSyntax(CommandArgument, name="syntax"): 

+

170 """Check syntax.""" 

+

171 

+

172 @CLIArgument() 

+

173 class CommandElaborationOrder(CommandArgument, name="elab-order"): 

+

174 """Display (elaboration) ordered source files.""" 

+

175 

+

176 @CLIArgument() 

+

177 class CommandAnalyze(CommandArgument, name="analyze"): 

+

178 """Analyze VHDL source file(s).""" 

+

179 

+

180 @CLIArgument() 

+

181 class CommandElaborate(CommandArgument, name="elaborate"): 

+

182 """Elaborate design.""" 

+

183 

+

184 @CLIArgument() 

+

185 class CommandElaborationAndRun(CommandArgument, name="elab-run"): 

+

186 """Elaborate and simulate design.""" 

+

187 

+

188 @CLIArgument() 

+

189 class CommandRun(CommandArgument, name="run"): 

+

190 """Simulate design.""" 

+

191 

+

192 @CLIArgument() 

+

193 class CommandBind(CommandArgument, name="bind"): 

+

194 """Bind design unit.""" 

+

195 

+

196 @CLIArgument() 

+

197 class CommandLink(CommandArgument, name="link"): 

+

198 """Link design unit.""" 

+

199 

+

200 @CLIArgument() 

+

201 class CommandListLink(CommandArgument, name="list-link"): 

+

202 """List objects file to link a design unit.""" 

+

203 

+

204 @CLIArgument() 

+

205 class CommandCompile(CommandArgument, name="compile"): 

+

206 """Generate whole sequence to elaborate design from files.""" 

+

207 

+

208 @CLIArgument() 

+

209 class CommandGenerateDependencies(CommandArgument, name="gen-depends"): 

+

210 """Generate dependencies of design.""" 

+

211 

+

212 @CLIArgument() 

+

213 class CommandSynthesize(CommandArgument, name="synth"): 

+

214 """Synthesis from design unit.""" 

+

215 

+

216 @CLIArgument() 

+

217 class FlagVerbose(ShortFlag, name="v"): 

+

218 """Run in verbose mode (print more messages).""" 

+

219 

+

220 # Analyze and elaborate options 

+

221 @CLIArgument() 

+

222 class FlagVHDLStandard(LongValuedFlag, name="std"): 

+

223 """Set the used VHDL standard version.""" 

+

224 _value: VHDLVersion 

+

225 

+

226 def __init__(self, value: VHDLVersion): 

+

227 if value is None: 227 ↛ 228line 227 didn't jump to line 228, because the condition on line 227 was never true

+

228 raise ValueError(f"") # XXX: add message 

+

229 

+

230 self._value = value 

+

231 

+

232 @property 

+

233 def Value(self) -> VHDLVersion: 

+

234 return self._value 

+

235 

+

236 @Value.setter 

+

237 def Value(self, value: VHDLVersion) -> None: 

+

238 if value is None: 

+

239 raise ValueError(f"") # XXX: add message 

+

240 

+

241 self._value = value 

+

242 

+

243 def AsArgument(self) -> Union[str, Iterable[str]]: 

+

244 if self._name is None: 244 ↛ 245line 244 didn't jump to line 245, because the condition on line 244 was never true

+

245 raise ValueError(f"") # XXX: add message 

+

246 

+

247 return self._pattern.format(self._name, str(self._value)[-2:]) 

+

248 

+

249 @CLIArgument() 

+

250 class FlagIEEEFlavor(LongValuedFlag, name="ieee"): 

+

251 """Set the used VHDL flavor.""" 

+

252 

+

253 @CLIArgument() 

+

254 class FlagSynopsys(ShortFlag, name="fsynopsys"): 

+

255 """Set used VHDL flavor to *Synopsys* and make Synopsys packages visible in library ``ìeee``.""" 

+

256 

+

257 @CLIArgument() 

+

258 class FlagRelaxed(ShortFlag, name="frelaxed"): 

+

259 """Relax some LRM rules.""" 

+

260 

+

261 @CLIArgument() 

+

262 class FlagExplicit(ShortFlag, name="fexplicit"): ... 

+

263 

+

264 @CLIArgument() 

+

265 class FlagLibrary(LongValuedFlag, name="work"): 

+

266 """Set working library.""" 

+

267 

+

268 @CLIArgument() 

+

269 class FlagWorkingDirectory(LongValuedFlag, name="workdir"): 

+

270 """Set working directory.""" 

+

271 

+

272 @CLIArgument() 

+

273 class FlagMultiByteComments(LongFlag, name="mb-comments"): 

+

274 """Allow multi-byte comments.""" 

+

275 

+

276 @CLIArgument() 

+

277 class FlagSyntesisBindingRule(LongFlag, name="syn-binding"): 

+

278 """Enable synthesis binding rule.""" 

+

279 

+

280 @CLIArgument() 

+

281 class FlagSearchPath(ShortValuedFlag, name="P", pattern="-{0}{1}"): 

+

282 """Add search path.""" 

+

283 

+

284 @CLIArgument() 

+

285 class FlagTimeResolution(LongValuedFlag, name="time-resolution"): 

+

286 """Set base time resolution. 

+

287 

+

288 Allowed values are ``auto`` (default), ``fs``, ``ps``, ``ns``, ``us``, ``ms`` or ``sec``. 

+

289 """ 

+

290 

+

291 @CLIArgument() 

+

292 class FlagVitalChecks(LongBooleanFlag, name="vital-checks", pattern="-{0}", falsePattern="--no-{0}"): 

+

293 """Check VITAL restrictions.""" 

+

294 

+

295 @CLIArgument() 

+

296 class FlagWarnUnboundComponents(ShortFlag, name="binding", pattern="-W{0}"): 

+

297 """Warns for unbound components.""" 

+

298 

+

299 @CLIArgument() 

+

300 class FlagWarnReservedWords(ShortFlag, name="reserved", pattern="-W{0}"): 

+

301 """Warns if VHDL'93 reserved words are used in VHDL'87.""" 

+

302 

+

303 @CLIArgument() 

+

304 class FlagWarnRedefinedDesignUnits(ShortFlag, name="library", pattern="-W{0}"): 

+

305 """Warns for redefined design unit.""" 

+

306 

+

307 @CLIArgument() 

+

308 class FlagWarnNonVitalGenericNames(ShortFlag, name="vital-generic", pattern="-W{0}"): 

+

309 """Warns of non-vital generic names.""" 

+

310 

+

311 @CLIArgument() 

+

312 class FlagWarnElaborationChecks(ShortFlag, name="delayed-checks", pattern="-W{0}"): 

+

313 """Warns for checks performed at elaboration.""" 

+

314 

+

315 @CLIArgument() 

+

316 class FlagWarnUnnecessaryPackageBody(ShortFlag, name="body", pattern="-W{0}"): 

+

317 """Warns for unnecessary package body.""" 

+

318 

+

319 @CLIArgument() 

+

320 class FlagWarnOthersSpecifications(ShortFlag, name="specs", pattern="-W{0}"): 

+

321 """Warns if an all/others specification does not apply.""" 

+

322 

+

323 @CLIArgument() 

+

324 class FlagSyntesisBindingRule(ShortFlag, name="unused", pattern="-W{0}"): 

+

325 """Warns for unused subprograms.""" 

+

326 

+

327 @CLIArgument() 

+

328 class FlagSyntesisBindingRule(ShortFlag, name="error", pattern="-W{0}"): 

+

329 """Turns warnings into errors.""" 

+

330 

+

331 @CLIArgument() 

+

332 class OptionPaths(PathListArgument): 

+

333 """Add list of VHDL files to analyze.""" 

+

334 

+

335 @CLIArgument() 

+

336 class OptionTopLevel(StringArgument): 

+

337 """Specify the toplevel design unit.""" 

+

338 

+

339 @CLIArgument() 

+

340 class OptionArchitecture(StringArgument): 

+

341 """Specify the architecture name, if the toplevel design unit is an entity.""" 

+

342 

+

343 @CLIArgument() 

+

344 class FlagGenerics(ShortKeyValueFlag, pattern="-{0}{1}={2}"): 

+

345 """Set a generic value.""" 

+

346 

+

347 @CLIArgument() 

+

348 class FlagAsserts(ShortValuedFlag, name="asserts"): 

+

349 """Select how assertions are handled. 

+

350 

+

351 It can be ``enable`` (the default), ``disable`` which disables all assertions and ``disable-at-0`` which disables 

+

352 only at the start of simulation. 

+

353 """ 

+

354 

+

355 @CLIArgument() 

+

356 class FlagIEEEAsserts(ShortValuedFlag, name="ieee-asserts"): 

+

357 """Select how assertions are handled. 

+

358 

+

359 It can be ``enable`` (the default), ``disable`` which disables all assertions and ``disable-at-0`` which disables 

+

360 only at the start of simulation. 

+

361 """ 

+

362 

+

363 @CLIArgument() 

+

364 class FlagStopTime(ShortValuedFlag, name="stop-time"): 

+

365 """Stop the simulation after a given simulation time. 

+

366 

+

367 The time is expressed as a time value, without any spaces. The time is the simulation time, not the real execution time. 

+

368 """ 

+

369 

+

370 @CLIArgument() 

+

371 class FlagMaxDeltaCycles(ShortValuedFlag, name="stop-delta"): 

+

372 """Stop the simulation after N delta cycles in the same current time.""" 

+

373 

+

374 @CLIArgument() 

+

375 class FlagDisplayDeltaCycles(ShortValuedFlag, name="disp-time"): 

+

376 """Display the time and delta cycle number as simulation advances.""" 

+

377 

+

378 @CLIArgument() 

+

379 class FlagUnbufferedIO(ShortValuedFlag, name="unbuffered"): 

+

380 """Disable buffering on STDOUT, STDERR and files opened in write or append mode (TEXTIO).""" 

+

381 

+

382 @CLIArgument() 

+

383 class FlagReadWaveformOptionsFile(ShortValuedFlag, name="read-wave-opt"): 

+

384 """Filter signals to be dumped to the waveform file according to the wavefile option file provided.""" 

+

385 

+

386 @CLIArgument() 

+

387 class FlagWriteWaveformOptionsFile(ShortValuedFlag, name="write-wave-opt"): 

+

388 """If the wavefile option file doesn’t exist, creates it with all the signals of the design. 

+

389 Otherwise, it throws an error, because it won’t erase an existing file. 

+

390 """ 

+

391 

+

392 @CLIArgument() 

+

393 class FlagGHWWaveformFile(ShortValuedFlag, name="wave"): 

+

394 """Write the waveforms into a GHDL Waveform (``*.ghw``) file. 

+

395 

+

396 Contrary to VCD files, any VHDL type can be dumped into a GHW file. 

+

397 """ 

+

398 

+

399 def _CopyParameters(self, tool: "GHDL") -> None: 

+

400 for key in self.__cliParameters__: 

+

401 if self._NeedsParameterInitialization(key): 

+

402 value = self.__cliParameters__[key].Value 

+

403 tool.__cliParameters__[key] = key(value) 

+

404 else: 

+

405 tool.__cliParameters__[key] = key() 

+

406 

+

407 def _SetParameters(self, tool: "GHDL", std: VHDLVersion = None, ieee: str = None): 

+

408 if std is not None: 

+

409 tool[self.FlagVHDLStandard] = str(std) 

+

410 

+

411 if ieee is not None: 

+

412 tool[self.FlagVHDLStandard] = ieee 

+

413 

+

414 def GetGHDLAsAnalyzer(self, std: VHDLVersion = None, ieee: str = None): 

+

415 tool = GHDL(executablePath=self._executablePath) 

+

416 

+

417 tool[tool.CommandAnalyze] = True 

+

418 self._CopyParameters(tool) 

+

419 self._SetParameters(tool, std, ieee) 

+

420 

+

421 return tool 

+

422 

+

423 def GetGHDLAsElaborator(self, std: VHDLVersion = None, ieee: str = None): 

+

424 tool = GHDL(executablePath=self._executablePath) 

+

425 

+

426 tool[tool.CommandElaborate] = True 

+

427 self._CopyParameters(tool) 

+

428 self._SetParameters(tool, std, ieee) 

+

429 

+

430 return tool 

+

431 

+

432 def GetGHDLAsSimulator(self, std: VHDLVersion = None, ieee: str = None): 

+

433 tool = GHDL(executablePath=self._executablePath) 

+

434 

+

435 tool[tool.CommandRun] = True 

+

436 self._CopyParameters(tool) 

+

437 self._SetParameters(tool, std, ieee) 

+

438 

+

439 return tool 

+

440 

+

441 def Help(self): 

+

442 tool = GHDL(executablePath=self._executablePath) 

+

443 

+

444 tool[tool.CommandHelp] = True 

+

445 

+

446 tool.StartProcess() 

+

447 return "\n".join(tool.GetLineReader()) 

+

448 

+

449 def Version(self): 

+

450 tool = GHDL(executablePath=self._executablePath) 

+

451 

+

452 tool[tool.CommandVersion] = True 

+

453 

+

454 tool.StartProcess() 

+

455 iterator = iter(tool.GetLineReader()) 

+

456 firstLine = next(iterator) 

+

457 secondLine = next(iterator) 

+

458 thirdLine = next(iterator) 

+

459 

+

460 return GHDLVersion(firstLine, secondLine, thirdLine) 

+
+ + + diff --git a/coverage/favicon_32.png b/coverage/favicon_32.png new file mode 100644 index 00000000..8649f047 Binary files /dev/null and b/coverage/favicon_32.png differ diff --git a/coverage/index.html b/coverage/index.html new file mode 100644 index 00000000..00ee0521 --- /dev/null +++ b/coverage/index.html @@ -0,0 +1,129 @@ + + + + + Coverage report + + + + + +
+
+

Coverage report: + 74% +

+ +
+ +
+

+ coverage.py v7.2.7, + created at 2023-07-08 17:53 +0000 +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modulestatementsmissingexcludedbranchespartialcoverage
pyEDAA/CLITool/GHDL.py235720142276%
tests/unit/GHDL.py9365014232%
tests/unit/__init__.py13104188%
Total4521380194574%
+

+ No items found using the specified filter. +

+

5 files skipped due to complete coverage.

+
+ + + diff --git a/coverage/keybd_closed.png b/coverage/keybd_closed.png new file mode 100644 index 00000000..ba119c47 Binary files /dev/null and b/coverage/keybd_closed.png differ diff --git a/coverage/keybd_open.png b/coverage/keybd_open.png new file mode 100644 index 00000000..a8bac6c9 Binary files /dev/null and b/coverage/keybd_open.png differ diff --git a/coverage/status.json b/coverage/status.json new file mode 100644 index 00000000..c3cbe33c --- /dev/null +++ b/coverage/status.json @@ -0,0 +1 @@ +{"format":2,"version":"7.2.7","globals":"bc5e1f548203439af86bd5be25cd9013","files":{"d_934c7d71d0bc0dba_GHDL_py":{"hash":"27c93970d8ab046ca729dace8f051fe3","index":{"nums":[0,1,235,0,72,142,2,18],"html_filename":"d_934c7d71d0bc0dba_GHDL_py.html","relative_filename":"pyEDAA/CLITool/GHDL.py"}},"d_17bd492d087794b9_GHDL_py":{"hash":"f848368d2cc734124811291f9710348f","index":{"nums":[0,1,93,0,65,14,2,8],"html_filename":"d_17bd492d087794b9_GHDL_py.html","relative_filename":"tests/unit/GHDL.py"}},"d_17bd492d087794b9___init___py":{"hash":"730f9271ac7a28625833b37b5479edf0","index":{"nums":[0,1,13,0,1,4,1,1],"html_filename":"d_17bd492d087794b9___init___py.html","relative_filename":"tests/unit/__init__.py"}}}} \ No newline at end of file diff --git a/coverage/style.css b/coverage/style.css new file mode 100644 index 00000000..11b24c4e --- /dev/null +++ b/coverage/style.css @@ -0,0 +1,309 @@ +@charset "UTF-8"; +/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */ +/* For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt */ +/* Don't edit this .css file. Edit the .scss file instead! */ +html, body, h1, h2, h3, p, table, td, th { margin: 0; padding: 0; border: 0; font-weight: inherit; font-style: inherit; font-size: 100%; font-family: inherit; vertical-align: baseline; } + +body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 1em; background: #fff; color: #000; } + +@media (prefers-color-scheme: dark) { body { background: #1e1e1e; } } + +@media (prefers-color-scheme: dark) { body { color: #eee; } } + +html > body { font-size: 16px; } + +a:active, a:focus { outline: 2px dashed #007acc; } + +p { font-size: .875em; line-height: 1.4em; } + +table { border-collapse: collapse; } + +td { vertical-align: top; } + +table tr.hidden { display: none !important; } + +p#no_rows { display: none; font-size: 1.2em; } + +a.nav { text-decoration: none; color: inherit; } + +a.nav:hover { text-decoration: underline; color: inherit; } + +.hidden { display: none; } + +header { background: #f8f8f8; width: 100%; z-index: 2; border-bottom: 1px solid #ccc; } + +@media (prefers-color-scheme: dark) { header { background: black; } } + +@media (prefers-color-scheme: dark) { header { border-color: #333; } } + +header .content { padding: 1rem 3.5rem; } + +header h2 { margin-top: .5em; font-size: 1em; } + +header p.text { margin: .5em 0 -.5em; color: #666; font-style: italic; } + +@media (prefers-color-scheme: dark) { header p.text { color: #aaa; } } + +header.sticky { position: fixed; left: 0; right: 0; height: 2.5em; } + +header.sticky .text { display: none; } + +header.sticky h1, header.sticky h2 { font-size: 1em; margin-top: 0; display: inline-block; } + +header.sticky .content { padding: 0.5rem 3.5rem; } + +header.sticky .content p { font-size: 1em; } + +header.sticky ~ #source { padding-top: 6.5em; } + +main { position: relative; z-index: 1; } + +footer { margin: 1rem 3.5rem; } + +footer .content { padding: 0; color: #666; font-style: italic; } + +@media (prefers-color-scheme: dark) { footer .content { color: #aaa; } } + +#index { margin: 1rem 0 0 3.5rem; } + +h1 { font-size: 1.25em; display: inline-block; } + +#filter_container { float: right; margin: 0 2em 0 0; } + +#filter_container input { width: 10em; padding: 0.2em 0.5em; border: 2px solid #ccc; background: #fff; color: #000; } + +@media (prefers-color-scheme: dark) { #filter_container input { border-color: #444; } } + +@media (prefers-color-scheme: dark) { #filter_container input { background: #1e1e1e; } } + +@media (prefers-color-scheme: dark) { #filter_container input { color: #eee; } } + +#filter_container input:focus { border-color: #007acc; } + +header button { font-family: inherit; font-size: inherit; border: 1px solid; border-radius: .2em; color: inherit; padding: .1em .5em; margin: 1px calc(.1em + 1px); cursor: pointer; border-color: #ccc; } + +@media (prefers-color-scheme: dark) { header button { border-color: #444; } } + +header button:active, header button:focus { outline: 2px dashed #007acc; } + +header button.run { background: #eeffee; } + +@media (prefers-color-scheme: dark) { header button.run { background: #373d29; } } + +header button.run.show_run { background: #dfd; border: 2px solid #00dd00; margin: 0 .1em; } + +@media (prefers-color-scheme: dark) { header button.run.show_run { background: #373d29; } } + +header button.mis { background: #ffeeee; } + +@media (prefers-color-scheme: dark) { header button.mis { background: #4b1818; } } + +header button.mis.show_mis { background: #fdd; border: 2px solid #ff0000; margin: 0 .1em; } + +@media (prefers-color-scheme: dark) { header button.mis.show_mis { background: #4b1818; } } + +header button.exc { background: #f7f7f7; } + +@media (prefers-color-scheme: dark) { header button.exc { background: #333; } } + +header button.exc.show_exc { background: #eee; border: 2px solid #808080; margin: 0 .1em; } + +@media (prefers-color-scheme: dark) { header button.exc.show_exc { background: #333; } } + +header button.par { background: #ffffd5; } + +@media (prefers-color-scheme: dark) { header button.par { background: #650; } } + +header button.par.show_par { background: #ffa; border: 2px solid #bbbb00; margin: 0 .1em; } + +@media (prefers-color-scheme: dark) { header button.par.show_par { background: #650; } } + +#help_panel, #source p .annotate.long { display: none; position: absolute; z-index: 999; background: #ffffcc; border: 1px solid #888; border-radius: .2em; color: #333; padding: .25em .5em; } + +#source p .annotate.long { white-space: normal; float: right; top: 1.75em; right: 1em; height: auto; } + +#help_panel_wrapper { float: right; position: relative; } + +#keyboard_icon { margin: 5px; } + +#help_panel_state { display: none; } + +#help_panel { top: 25px; right: 0; padding: .75em; border: 1px solid #883; color: #333; } + +#help_panel .keyhelp p { margin-top: .75em; } + +#help_panel .legend { font-style: italic; margin-bottom: 1em; } + +.indexfile #help_panel { width: 25em; } + +.pyfile #help_panel { width: 18em; } + +#help_panel_state:checked ~ #help_panel { display: block; } + +kbd { border: 1px solid black; border-color: #888 #333 #333 #888; padding: .1em .35em; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-weight: bold; background: #eee; border-radius: 3px; } + +#source { padding: 1em 0 1em 3.5rem; font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; } + +#source p { position: relative; white-space: pre; } + +#source p * { box-sizing: border-box; } + +#source p .n { float: left; text-align: right; width: 3.5rem; box-sizing: border-box; margin-left: -3.5rem; padding-right: 1em; color: #999; } + +@media (prefers-color-scheme: dark) { #source p .n { color: #777; } } + +#source p .n.highlight { background: #ffdd00; } + +#source p .n a { margin-top: -4em; padding-top: 4em; text-decoration: none; color: #999; } + +@media (prefers-color-scheme: dark) { #source p .n a { color: #777; } } + +#source p .n a:hover { text-decoration: underline; color: #999; } + +@media (prefers-color-scheme: dark) { #source p .n a:hover { color: #777; } } + +#source p .t { display: inline-block; width: 100%; box-sizing: border-box; margin-left: -.5em; padding-left: 0.3em; border-left: 0.2em solid #fff; } + +@media (prefers-color-scheme: dark) { #source p .t { border-color: #1e1e1e; } } + +#source p .t:hover { background: #f2f2f2; } + +@media (prefers-color-scheme: dark) { #source p .t:hover { background: #282828; } } + +#source p .t:hover ~ .r .annotate.long { display: block; } + +#source p .t .com { color: #008000; font-style: italic; line-height: 1px; } + +@media (prefers-color-scheme: dark) { #source p .t .com { color: #6a9955; } } + +#source p .t .key { font-weight: bold; line-height: 1px; } + +#source p .t .str { color: #0451a5; } + +@media (prefers-color-scheme: dark) { #source p .t .str { color: #9cdcfe; } } + +#source p.mis .t { border-left: 0.2em solid #ff0000; } + +#source p.mis.show_mis .t { background: #fdd; } + +@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t { background: #4b1818; } } + +#source p.mis.show_mis .t:hover { background: #f2d2d2; } + +@media (prefers-color-scheme: dark) { #source p.mis.show_mis .t:hover { background: #532323; } } + +#source p.run .t { border-left: 0.2em solid #00dd00; } + +#source p.run.show_run .t { background: #dfd; } + +@media (prefers-color-scheme: dark) { #source p.run.show_run .t { background: #373d29; } } + +#source p.run.show_run .t:hover { background: #d2f2d2; } + +@media (prefers-color-scheme: dark) { #source p.run.show_run .t:hover { background: #404633; } } + +#source p.exc .t { border-left: 0.2em solid #808080; } + +#source p.exc.show_exc .t { background: #eee; } + +@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t { background: #333; } } + +#source p.exc.show_exc .t:hover { background: #e2e2e2; } + +@media (prefers-color-scheme: dark) { #source p.exc.show_exc .t:hover { background: #3c3c3c; } } + +#source p.par .t { border-left: 0.2em solid #bbbb00; } + +#source p.par.show_par .t { background: #ffa; } + +@media (prefers-color-scheme: dark) { #source p.par.show_par .t { background: #650; } } + +#source p.par.show_par .t:hover { background: #f2f2a2; } + +@media (prefers-color-scheme: dark) { #source p.par.show_par .t:hover { background: #6d5d0c; } } + +#source p .r { position: absolute; top: 0; right: 2.5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; } + +#source p .annotate { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; color: #666; padding-right: .5em; } + +@media (prefers-color-scheme: dark) { #source p .annotate { color: #ddd; } } + +#source p .annotate.short:hover ~ .long { display: block; } + +#source p .annotate.long { width: 30em; right: 2.5em; } + +#source p input { display: none; } + +#source p input ~ .r label.ctx { cursor: pointer; border-radius: .25em; } + +#source p input ~ .r label.ctx::before { content: "▶ "; } + +#source p input ~ .r label.ctx:hover { background: #e8f4ff; color: #666; } + +@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { background: #0f3a42; } } + +@media (prefers-color-scheme: dark) { #source p input ~ .r label.ctx:hover { color: #aaa; } } + +#source p input:checked ~ .r label.ctx { background: #d0e8ff; color: #666; border-radius: .75em .75em 0 0; padding: 0 .5em; margin: -.25em 0; } + +@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { background: #056; } } + +@media (prefers-color-scheme: dark) { #source p input:checked ~ .r label.ctx { color: #aaa; } } + +#source p input:checked ~ .r label.ctx::before { content: "▼ "; } + +#source p input:checked ~ .ctxs { padding: .25em .5em; overflow-y: scroll; max-height: 10.5em; } + +#source p label.ctx { color: #999; display: inline-block; padding: 0 .5em; font-size: .8333em; } + +@media (prefers-color-scheme: dark) { #source p label.ctx { color: #777; } } + +#source p .ctxs { display: block; max-height: 0; overflow-y: hidden; transition: all .2s; padding: 0 .5em; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; white-space: nowrap; background: #d0e8ff; border-radius: .25em; margin-right: 1.75em; text-align: right; } + +@media (prefers-color-scheme: dark) { #source p .ctxs { background: #056; } } + +#index { font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.875em; } + +#index table.index { margin-left: -.5em; } + +#index td, #index th { text-align: right; width: 5em; padding: .25em .5em; border-bottom: 1px solid #eee; } + +@media (prefers-color-scheme: dark) { #index td, #index th { border-color: #333; } } + +#index td.name, #index th.name { text-align: left; width: auto; } + +#index th { font-style: italic; color: #333; cursor: pointer; } + +@media (prefers-color-scheme: dark) { #index th { color: #ddd; } } + +#index th:hover { background: #eee; } + +@media (prefers-color-scheme: dark) { #index th:hover { background: #333; } } + +#index th[aria-sort="ascending"], #index th[aria-sort="descending"] { white-space: nowrap; background: #eee; padding-left: .5em; } + +@media (prefers-color-scheme: dark) { #index th[aria-sort="ascending"], #index th[aria-sort="descending"] { background: #333; } } + +#index th[aria-sort="ascending"]::after { font-family: sans-serif; content: " ↑"; } + +#index th[aria-sort="descending"]::after { font-family: sans-serif; content: " ↓"; } + +#index td.name a { text-decoration: none; color: inherit; } + +#index tr.total td, #index tr.total_dynamic td { font-weight: bold; border-top: 1px solid #ccc; border-bottom: none; } + +#index tr.file:hover { background: #eee; } + +@media (prefers-color-scheme: dark) { #index tr.file:hover { background: #333; } } + +#index tr.file:hover td.name { text-decoration: underline; color: inherit; } + +#scroll_marker { position: fixed; z-index: 3; right: 0; top: 0; width: 16px; height: 100%; background: #fff; border-left: 1px solid #eee; will-change: transform; } + +@media (prefers-color-scheme: dark) { #scroll_marker { background: #1e1e1e; } } + +@media (prefers-color-scheme: dark) { #scroll_marker { border-color: #333; } } + +#scroll_marker .marker { background: #ccc; position: absolute; min-height: 3px; width: 100%; } + +@media (prefers-color-scheme: dark) { #scroll_marker .marker { background: #444; } } diff --git a/genindex.html b/genindex.html new file mode 100644 index 00000000..0fc32bca --- /dev/null +++ b/genindex.html @@ -0,0 +1,1362 @@ + + + + + + Index — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ + +

Index

+ +
+ _ + | A + | C + | D + | E + | G + | M + | N + | P + | V + | W + +
+

_

+ + + +
+ +

A

+ + +
+ +

C

+ + +
+ +

D

+ + + +
+ +

E

+ + +
+ +

G

+ + + +
+ +

M

+ + +
+ +

N

+ + +
+ +

P

+ + + +
    +
  • + pyEDAA.CLITool + +
  • +
  • + pyEDAA.CLITool.Aldec + +
  • +
  • + pyEDAA.CLITool.Docker + +
  • +
  • + pyEDAA.CLITool.GHDL + +
  • +
  • + pyEDAA.CLITool.GTKWave + +
  • +
    +
  • + pyEDAA.CLITool.IntelFPGA + +
  • +
  • + pyEDAA.CLITool.Lattice + +
  • +
  • + pyEDAA.CLITool.Mentor + +
  • +
  • + pyEDAA.CLITool.Xilinx + +
  • +
+ +

V

+ + +
+ +

W

+ + +
+ + + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..e05da521 --- /dev/null +++ b/index.html @@ -0,0 +1,207 @@ + + + + + + + The pyEDAA.CLITool Documentation — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
+ + _images/logo.svg +
+
Sourcecode on GitHub Code license Documentation - Read Now! Documentation License Documentation License
+
PyPI - Tag PyPI - Status PyPI - Python Version
+
GitHub Workflow - Build and Test Status Libraries.io status for latest release Codacy - Quality Codacy - Line Coverage Codecov - Branch Coverage
+
+
+

The pyEDAA.CLITool Documentation

+

Unified interfaces to execute EDA tools via CLI from Python, agnostic to any specific configuration format/object.

+
+

Main Goals

+
    +
  • Provide a pythonic solution to construct command line calls for EDA tools based on pyTooling.CLIAbstraction

  • +
  • Launch CLI tools and connect to STDIN, STDOUT, STDERR for realtime output post-processing.

  • +
+
+
+

Features

+
    +
  • Support multiple native platforms: Linux, macOS, Windows.

  • +
  • Support nested platforms like MSYS2 with MinGW32, MinGW64, UCRT64, Clang64, …

  • +
  • Find CLI programs either in PATH or specify an exact installation location.

  • +
  • Generate CLI options in correct order.

  • +
  • Generate correctly escaped CLI options.

  • +
+
+
+

Consumers

+

This layer is used by:

+ +
+
+

News

+
+

Feb. 2022 - Supporting more Tools

+
+
    +
  • Added more CLI abstraction.

  • +
  • Updated to support CLIAbstraction v0.4.0.

  • +
+
+

Jan. 2022 - GHDL, GTKWave, ModelSim

+
+
    +
  • Added CLI abstraction for GHDL, GTKWave and ModelSim.

  • +
  • Prepared structure for other vendors and tools.

  • +
+
+

Dec. 2021 - Extracted CLITool from pyIPCMI

+
+
    +
  • The EDA tool abstraction has been extracted from pyIPCMI.

  • +
+
+
+

Contributors

+ +
+
+

License

+

This Python package (source code) is licensed under Apache License 2.0.
+The accompanying documentation is licensed under Creative Commons - Attribution 4.0 (CC-BY 4.0).

+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 00000000..074d8a3a Binary files /dev/null and b/objects.inv differ diff --git a/py-modindex.html b/py-modindex.html new file mode 100644 index 00000000..2f7680e7 --- /dev/null +++ b/py-modindex.html @@ -0,0 +1,191 @@ + + + + + + Python Module Index — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ + +

Python Module Index

+ +
+ p +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ p
+ pyEDAA +
    + pyEDAA.CLITool +
    + pyEDAA.CLITool.Aldec +
    + pyEDAA.CLITool.Docker +
    + pyEDAA.CLITool.GHDL +
    + pyEDAA.CLITool.GTKWave +
    + pyEDAA.CLITool.IntelFPGA +
    + pyEDAA.CLITool.Lattice +
    + pyEDAA.CLITool.Mentor +
    + pyEDAA.CLITool.Xilinx +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/index.html b/pyEDAA.CLITool/index.html new file mode 100644 index 00000000..df7a472a --- /dev/null +++ b/pyEDAA.CLITool/index.html @@ -0,0 +1,809 @@ + + + + + + + Python Class Reference — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

Python Class Reference

+

Reference of all packages and modules:

+
+ +
+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.Aldec.html b/pyEDAA.CLITool/pyEDAA.CLITool.Aldec.html new file mode 100644 index 00000000..fa7bc276 --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.Aldec.html @@ -0,0 +1,157 @@ + + + + + + + pyEDAA.CLITool.Aldec — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool.Aldec

+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.Docker.html b/pyEDAA.CLITool/pyEDAA.CLITool.Docker.html new file mode 100644 index 00000000..95fc145c --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.Docker.html @@ -0,0 +1,1180 @@ + + + + + + + pyEDAA.CLITool.Docker — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool.Docker

+

Classes

+ +
+
+class pyEDAA.CLITool.Docker.Docker(executablePath=None, binaryDirectoryPath=None, dryRun=False)[source]
+

Inheritance

+
+

Inheritance diagram of Docker

+
+
Parameters:
+
    +
  • executablePath (Path) –

  • +
  • binaryDirectoryPath (Path) –

  • +
  • dryRun (bool) –

  • +
+
+
+
+
+_executableNames: ClassVar[Dict[str, str]] = {'Darwin': 'docker', 'Linux': 'docker', 'Windows': 'docker.exe'}
+

Dictionary of platform specific executable names.

+
+ +
+
+class CommandVersion(*args, **kwargs)[source]
+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandContainer(*args, **kwargs)[source]
+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandRun(*args, **kwargs)[source]
+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagContainerName(value)[source]
+
+
+AsArgument()
+

Convert this argument instance to a sequence of string representations with proper escaping using the matching +pattern based on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument as tuple of strings.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Comma separated sequence of arguments formatted and each enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Space separated sequence of arguments formatted and each enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagRemoveContainer(*args, **kwargs)[source]
+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagMount(value)[source]
+
+
+AsArgument()
+

Convert this argument instance to a sequence of string representations with proper escaping using the matching +pattern based on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument as tuple of strings.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Comma separated sequence of arguments formatted and each enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Space separated sequence of arguments formatted and each enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagVolume(value)[source]
+
+
+AsArgument()
+

Convert this argument instance to a sequence of string representations with proper escaping using the matching +pattern based on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument as tuple of strings.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Comma separated sequence of arguments formatted and each enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Space separated sequence of arguments formatted and each enclosed in double quotes.

+
+
+
+ +
+ +
+
+class ValueImageName(value)[source]
+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+

Initializes a ValuedArgument instance.

+
+
Parameters:
+

value (TypeVar(ValueT)) – Value to be stored internally.

+
+
Raises:
+

TypeError – If parameter ‘value’ is None.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class ValueCommand(value)[source]
+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+

Initializes a ValuedArgument instance.

+
+
Parameters:
+

value (TypeVar(ValueT)) – Value to be stored internally.

+
+
Raises:
+

TypeError – If parameter ‘value’ is None.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class Executable(executable)[source]
+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal path to the wrapped executable.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
+
+ +
+
+property Executable: Path
+

Get the internal path to the wrapped executable.

+
+
Returns:
+

Internal path to the executable.

+
+
+
+ +
+
+__init__(executable)
+

Initializes a ExecutableArgument instance.

+
+
Parameters:
+

executable (Path) – Path to the executable.

+
+
Raises:
+

TypeError – If parameter ‘executable’ is not of type Path.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern=None, **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern (Optional[str]) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+__cliOptions__: ClassVar[Dict[Type[CommandLineArgument], int]] = {<class 'pyEDAA.CLITool.Docker.Docker.CommandVersion'>: 0, <class 'pyEDAA.CLITool.Docker.Docker.CommandContainer'>: 1, <class 'pyEDAA.CLITool.Docker.Docker.CommandRun'>: 2, <class 'pyEDAA.CLITool.Docker.Docker.FlagContainerName'>: 3, <class 'pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer'>: 4, <class 'pyEDAA.CLITool.Docker.Docker.FlagMount'>: 5, <class 'pyEDAA.CLITool.Docker.Docker.FlagVolume'>: 6, <class 'pyEDAA.CLITool.Docker.Docker.ValueImageName'>: 7, <class 'pyEDAA.CLITool.Docker.Docker.ValueCommand'>: 8, <class 'pyEDAA.CLITool.Docker.Docker.Executable'>: 9}
+

List of all possible CLI options.

+
+ +
+
+__getitem__(key)
+

Access to a CLI parameter by CLI option (key must be of type CommandLineArgument), which is already used.

+
+ +
+
+__init__(executablePath=None, binaryDirectoryPath=None, dryRun=False)
+
+
Parameters:
+
    +
  • executablePath (Path | None) –

  • +
  • binaryDirectoryPath (Path | None) –

  • +
  • dryRun (bool) –

  • +
+
+
+
+ +
+
+classmethod __init_subclass__(*args, **kwargs)
+

Whenever a subclass is derived from :class:Program, all nested classes declared within Program and which are +marked with pyAttribute CLIOption are collected and then listed in the __cliOptions__ dictionary.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__str__()
+

Return str(self).

+
+ +
+
+_platform: str
+

Current platform the executable runs on (Linux, Windows, …)

+
+ +
+
+_executablePath: Path
+

The path to the executable (binary, script, …).

+
+ +
+
+_dryRun: bool
+

True, if program shall run in dry-run mode.

+
+ +
+
+__cliParameters__: Dict[Type[CommandLineArgument], Optional[CommandLineArgument]]
+

List of all CLI parameters (used CLI options).

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.GHDL.html b/pyEDAA.CLITool/pyEDAA.CLITool.GHDL.html new file mode 100644 index 00000000..4629f34e --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.GHDL.html @@ -0,0 +1,4647 @@ + + + + + + + pyEDAA.CLITool.GHDL — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool.GHDL

+

Classes

+ +
+
+class pyEDAA.CLITool.GHDL.GHDLVersion(versionLine, gnatLine, backendLine)[source]
+

Inheritance

+
+

Inheritance diagram of GHDLVersion

+
+
Parameters:
+
    +
  • versionLine (str) –

  • +
  • gnatLine (str) –

  • +
  • backendLine (str) –

  • +
+
+
+
+
+__init__(versionLine, gnatLine, backendLine)[source]
+
+
Parameters:
+
    +
  • versionLine (str) –

  • +
  • gnatLine (str) –

  • +
  • backendLine (str) –

  • +
+
+
+
+ +
+
+__str__()[source]
+

Return str(self).

+
+
Return type:
+

str

+
+
+
+ +
+
+__repr__()[source]
+

Return repr(self).

+
+
Return type:
+

str

+
+
+
+ +
+ +
+
+class pyEDAA.CLITool.GHDL.GHDL(executablePath=None, binaryDirectoryPath=None, dryRun=False)[source]
+

Inheritance

+
+

Inheritance diagram of GHDL

+
+
Parameters:
+
    +
  • executablePath (Path) –

  • +
  • binaryDirectoryPath (Path) –

  • +
  • dryRun (bool) –

  • +
+
+
+
+
+_executableNames: ClassVar[Dict[str, str]] = {'Darwin': 'ghdl', 'Linux': 'ghdl', 'Windows': 'ghdl.exe'}
+

Dictionary of platform specific executable names.

+
+ +
+
+class CommandHelp(*args, **kwargs)[source]
+

Print help page(s).

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandVersion(*args, **kwargs)[source]
+

Print version information.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandSyntax(*args, **kwargs)[source]
+

Check syntax.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandElaborationOrder(*args, **kwargs)[source]
+

Display (elaboration) ordered source files.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandAnalyze(*args, **kwargs)[source]
+

Analyze VHDL source file(s).

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandElaborate(*args, **kwargs)[source]
+

Elaborate design.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandElaborationAndRun(*args, **kwargs)[source]
+

Elaborate and simulate design.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandRun(*args, **kwargs)[source]
+

Simulate design.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandBind(*args, **kwargs)[source]
+

Bind design unit.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+ +

Link design unit.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+ +

List objects file to link a design unit.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandCompile(*args, **kwargs)[source]
+

Generate whole sequence to elaborate design from files.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandGenerateDependencies(*args, **kwargs)[source]
+

Generate dependencies of design.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class CommandSynthesize(*args, **kwargs)[source]
+

Synthesis from design unit.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagVerbose(*args, **kwargs)[source]
+

Run in verbose mode (print more messages).

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagVHDLStandard(value)[source]
+

Set the used VHDL standard version.

+
+
Parameters:
+

value (VHDLVersion) –

+
+
+
+
+__init__(value)[source]
+
+
Parameters:
+

value (VHDLVersion) –

+
+
+
+ +
+
+property Value: VHDLVersion
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+AsArgument()[source]
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagIEEEFlavor(value)[source]
+

Set the used VHDL flavor.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagSynopsys(*args, **kwargs)[source]
+

Set used VHDL flavor to Synopsys and make Synopsys packages visible in library ìeee.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagRelaxed(*args, **kwargs)[source]
+

Relax some LRM rules.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagExplicit(*args, **kwargs)[source]
+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagLibrary(value)[source]
+

Set working library.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWorkingDirectory(value)[source]
+

Set working directory.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagMultiByteComments(*args, **kwargs)[source]
+

Allow multi-byte comments.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagSearchPath(value)[source]
+

Add search path.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagTimeResolution(value)[source]
+

Set base time resolution.

+

Allowed values are auto (default), fs, ps, ns, us, ms or sec.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagVitalChecks(value)[source]
+

Check VITAL restrictions.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+

Initializes a BooleanFlag instance.

+
+
Parameters:
+

value (bool) – Initial value set for this argument instance.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='--with-{0}', falsePattern='--without-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument when the value is True.

  • +
  • falsePattern – This pattern is used to format an argument when the value is False.

  • +
  • kwargs – Any keyword argument.

  • +
  • name (str | None) –

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWarnUnboundComponents(*args, **kwargs)[source]
+

Warns for unbound components.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWarnReservedWords(*args, **kwargs)[source]
+

Warns if VHDL’93 reserved words are used in VHDL’87.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWarnRedefinedDesignUnits(*args, **kwargs)[source]
+

Warns for redefined design unit.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWarnNonVitalGenericNames(*args, **kwargs)[source]
+

Warns of non-vital generic names.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWarnElaborationChecks(*args, **kwargs)[source]
+

Warns for checks performed at elaboration.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWarnUnnecessaryPackageBody(*args, **kwargs)[source]
+

Warns for unnecessary package body.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWarnOthersSpecifications(*args, **kwargs)[source]
+

Warns if an all/others specification does not apply.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagSyntesisBindingRule(*args, **kwargs)[source]
+

Turns warnings into errors.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class OptionPaths(paths)[source]
+

Add list of VHDL files to analyze.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Sequence of formatted arguments.

+
+
+
+ +
+
+property Value: List[Path]
+

Get the internal list of path objects.

+
+
Returns:
+

Reference to the internal list of path objects.

+
+
+
+ +
+
+__init__(paths)
+

Initializes a PathListArgument instance.

+
+
Parameters:
+

paths (Iterable[Path]) – An iterable os Path instances.

+
+
Raises:
+

TypeError – If iterable parameter ‘paths’ contains elements not of type Path.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern=None, **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern (Optional[str]) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Comma separated sequence of arguments formatted and each enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Space separated sequence of arguments formatted and each enclosed in double quotes.

+
+
+
+ +
+ +
+
+class OptionTopLevel(value)[source]
+

Specify the toplevel design unit.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+

Initializes a ValuedArgument instance.

+
+
Parameters:
+

value (TypeVar(ValueT)) – Value to be stored internally.

+
+
Raises:
+

TypeError – If parameter ‘value’ is None.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class OptionArchitecture(value)[source]
+

Specify the architecture name, if the toplevel design unit is an entity.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+

Initializes a ValuedArgument instance.

+
+
Parameters:
+

value (TypeVar(ValueT)) – Value to be stored internally.

+
+
Raises:
+

TypeError – If parameter ‘value’ is None.

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='{0}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern (str) – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagGenerics(keyValuePairs)[source]
+

Set a generic value.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: Dict[str, str]
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(keyValuePairs)
+
+
Parameters:
+

keyValuePairs (Dict[str, str]) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, name=None, pattern='-{0}{1}={2}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • name (Optional[str]) – Name of the argument.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagAsserts(value)[source]
+

Select how assertions are handled.

+

It can be enable (the default), disable which disables all assertions and disable-at-0 which disables +only at the start of simulation.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagIEEEAsserts(value)[source]
+

Select how assertions are handled.

+

It can be enable (the default), disable which disables all assertions and disable-at-0 which disables +only at the start of simulation.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagStopTime(value)[source]
+

Stop the simulation after a given simulation time.

+

The time is expressed as a time value, without any spaces. The time is the simulation time, not the real execution time.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+__cliOptions__: ClassVar[Dict[Type[CommandLineArgument], int]] = {<class 'pyEDAA.CLITool.GHDL.GHDL.CommandHelp'>: 0, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandVersion'>: 1, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandSyntax'>: 2, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder'>: 3, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze'>: 4, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandElaborate'>: 5, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun'>: 6, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandRun'>: 7, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandBind'>: 8, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandLink'>: 9, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandListLink'>: 10, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandCompile'>: 11, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies'>: 12, <class 'pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize'>: 13, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagVerbose'>: 14, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard'>: 15, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor'>: 16, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys'>: 17, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed'>: 18, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagExplicit'>: 19, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagLibrary'>: 20, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory'>: 21, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments'>: 22, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath'>: 23, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution'>: 24, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks'>: 25, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents'>: 26, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords'>: 27, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits'>: 28, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames'>: 29, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks'>: 30, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody'>: 31, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications'>: 32, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule'>: 33, <class 'pyEDAA.CLITool.GHDL.GHDL.OptionPaths'>: 34, <class 'pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel'>: 35, <class 'pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture'>: 36, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagGenerics'>: 37, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagAsserts'>: 38, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts'>: 39, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagStopTime'>: 40, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles'>: 41, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles'>: 42, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO'>: 43, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile'>: 44, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile'>: 45, <class 'pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile'>: 46}
+

List of all possible CLI options.

+
+ +
+
+__getitem__(key)
+

Access to a CLI parameter by CLI option (key must be of type CommandLineArgument), which is already used.

+
+ +
+
+__init__(executablePath=None, binaryDirectoryPath=None, dryRun=False)
+
+
Parameters:
+
    +
  • executablePath (Path | None) –

  • +
  • binaryDirectoryPath (Path | None) –

  • +
  • dryRun (bool) –

  • +
+
+
+
+ +
+
+classmethod __init_subclass__(*args, **kwargs)
+

Whenever a subclass is derived from :class:Program, all nested classes declared within Program and which are +marked with pyAttribute CLIOption are collected and then listed in the __cliOptions__ dictionary.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__str__()
+

Return str(self).

+
+ +
+
+_platform: str
+

Current platform the executable runs on (Linux, Windows, …)

+
+ +
+
+_executablePath: Path
+

The path to the executable (binary, script, …).

+
+ +
+
+_dryRun: bool
+

True, if program shall run in dry-run mode.

+
+ +
+
+__cliParameters__: Dict[Type[CommandLineArgument], Optional[CommandLineArgument]]
+

List of all CLI parameters (used CLI options).

+
+ +
+
+class FlagMaxDeltaCycles(value)[source]
+

Stop the simulation after N delta cycles in the same current time.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagDisplayDeltaCycles(value)[source]
+

Display the time and delta cycle number as simulation advances.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagUnbufferedIO(value)[source]
+

Disable buffering on STDOUT, STDERR and files opened in write or append mode (TEXTIO).

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagReadWaveformOptionsFile(value)[source]
+

Filter signals to be dumped to the waveform file according to the wavefile option file provided.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagWriteWaveformOptionsFile(value)[source]
+

If the wavefile option file doesn’t exist, creates it with all the signals of the design. +Otherwise, it throws an error, because it won’t erase an existing file.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagGHWWaveformFile(value)[source]
+

Write the waveforms into a GHDL Waveform (*.ghw) file.

+

Contrary to VCD files, any VHDL type can be dumped into a GHW file.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='-{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.GTKWave.html b/pyEDAA.CLITool/pyEDAA.CLITool.GTKWave.html new file mode 100644 index 00000000..5a26c3bc --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.GTKWave.html @@ -0,0 +1,465 @@ + + + + + + + pyEDAA.CLITool.GTKWave — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool.GTKWave

+

Classes

+ +
+
+class pyEDAA.CLITool.GTKWave.GTKWave(executablePath=None, binaryDirectoryPath=None, dryRun=False)[source]
+

Inheritance

+
+

Inheritance diagram of GTKWave

+
+
Parameters:
+
    +
  • executablePath (Path) –

  • +
  • binaryDirectoryPath (Path) –

  • +
  • dryRun (bool) –

  • +
+
+
+
+
+_executableNames: ClassVar[Dict[str, str]] = {'Darwin': 'gtkwave', 'Linux': 'gtkwave', 'Windows': 'gtkwave.exe'}
+

Dictionary of platform specific executable names.

+
+ +
+
+class FlagDumpFile(value)[source]
+

Waveform file to load.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+class FlagSaveFile(value)[source]
+

Load waveform settings file.

+
+
+AsArgument()
+

Convert this argument instance to a string representation with proper escaping using the matching pattern based +on the internal name and value.

+
+
Return type:
+

Union[str, Iterable[str]]

+
+
Returns:
+

Formatted argument.

+
+
Raises:
+

ValueError – If internal name is None.

+
+
+
+ +
+
+property Name: str
+

Get the internal name.

+
+
Returns:
+

Internal name.

+
+
+
+ +
+
+property Value: ValueT
+

Get the internal value.

+
+
Returns:
+

Internal value.

+
+
+
+ +
+
+__init__(value)
+
+
Parameters:
+

value (ValueT) –

+
+
+
+ +
+
+classmethod __init_subclass__(*args, pattern='--{0}={1}', **kwargs)
+

This method is called when a class is derived.

+
+
Parameters:
+
    +
  • args – Any positional arguments.

  • +
  • pattern – This pattern is used to format an argument.

  • +
  • kwargs – Any keyword argument.

  • +
+
+
+
+ +
+
+static __new__(cls, *args, **kwargs)
+
+ +
+
+__repr__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+
+__str__()
+

Return a string representation of this argument instance.

+
+
Return type:
+

str

+
+
Returns:
+

Argument formatted and enclosed in double quotes.

+
+
+
+ +
+ +
+
+__cliOptions__: ClassVar[Dict[Type[CommandLineArgument], int]] = {<class 'pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile'>: 0, <class 'pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile'>: 1}
+

List of all possible CLI options.

+
+ +
+
+__getitem__(key)
+

Access to a CLI parameter by CLI option (key must be of type CommandLineArgument), which is already used.

+
+ +
+
+__init__(executablePath=None, binaryDirectoryPath=None, dryRun=False)
+
+
Parameters:
+
    +
  • executablePath (Path | None) –

  • +
  • binaryDirectoryPath (Path | None) –

  • +
  • dryRun (bool) –

  • +
+
+
+
+ +
+
+classmethod __init_subclass__(*args, **kwargs)
+

Whenever a subclass is derived from :class:Program, all nested classes declared within Program and which are +marked with pyAttribute CLIOption are collected and then listed in the __cliOptions__ dictionary.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__str__()
+

Return str(self).

+
+ +
+
+_platform: str
+

Current platform the executable runs on (Linux, Windows, …)

+
+ +
+
+_executablePath: Path
+

The path to the executable (binary, script, …).

+
+ +
+
+_dryRun: bool
+

True, if program shall run in dry-run mode.

+
+ +
+
+__cliParameters__: Dict[Type[CommandLineArgument], Optional[CommandLineArgument]]
+

List of all CLI parameters (used CLI options).

+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.IntelFPGA.html b/pyEDAA.CLITool/pyEDAA.CLITool.IntelFPGA.html new file mode 100644 index 00000000..9543c66f --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.IntelFPGA.html @@ -0,0 +1,157 @@ + + + + + + + pyEDAA.CLITool.IntelFPGA — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool.IntelFPGA

+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.Lattice.html b/pyEDAA.CLITool/pyEDAA.CLITool.Lattice.html new file mode 100644 index 00000000..979c60dd --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.Lattice.html @@ -0,0 +1,157 @@ + + + + + + + pyEDAA.CLITool.Lattice — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool.Lattice

+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.Mentor.html b/pyEDAA.CLITool/pyEDAA.CLITool.Mentor.html new file mode 100644 index 00000000..5d7290a2 --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.Mentor.html @@ -0,0 +1,157 @@ + + + + + + + pyEDAA.CLITool.Mentor — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool.Mentor

+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.Xilinx.html b/pyEDAA.CLITool/pyEDAA.CLITool.Xilinx.html new file mode 100644 index 00000000..6a64f7c9 --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.Xilinx.html @@ -0,0 +1,157 @@ + + + + + + + pyEDAA.CLITool.Xilinx — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool.Xilinx

+
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/pyEDAA.CLITool/pyEDAA.CLITool.html b/pyEDAA.CLITool/pyEDAA.CLITool.html new file mode 100644 index 00000000..a95f3e38 --- /dev/null +++ b/pyEDAA.CLITool/pyEDAA.CLITool.html @@ -0,0 +1,916 @@ + + + + + + + pyEDAA.CLITool — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+ +
+
+ +
+
+ +
+

pyEDAA.CLITool

+

Submodules

+
+ +
+

Exceptions

+ +
+
+exception pyEDAA.CLITool.CLIToolException(message='')[source]
+

Inheritance

+
+

Inheritance diagram of CLIToolException

+
+
Parameters:
+

message (str) –

+
+
+
+
+__cause__
+

exception cause

+
+ +
+
+__context__
+

exception context

+
+ +
+
+__delattr__(name, /)
+

Implement delattr(self, name).

+
+ +
+
+__getattribute__(name, /)
+

Return getattr(self, name).

+
+ +
+
+__init__(message='')
+

ExceptionBase initializer.

+
+
Parameters:
+

message (str) – The exception message.

+
+
+
+ +
+
+__new__(**kwargs)
+
+ +
+
+__reduce__()
+

Helper for pickle.

+
+ +
+
+__repr__()
+

Return repr(self).

+
+ +
+
+__setattr__(name, value, /)
+

Implement setattr(self, name, value).

+
+ +
+
+__str__()
+

Returns the exception’s message text.

+
+
Return type:
+

str

+
+
+
+ +
+
+with_traceback(tb)
+

Exception.with_traceback(tb) – +set self.__traceback__ to tb and return self.

+
+
Return type:
+

None

+
+
+
+ +
+ +
+ + +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/search.html b/search.html new file mode 100644 index 00000000..e3323171 --- /dev/null +++ b/search.html @@ -0,0 +1,145 @@ + + + + + + Search — pyEDAA.CLITool 0.3.0 documentation + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +
+
    +
  • »
  • +
  • Search
  • +
  • +
  • +
+
+
+ +
+
+ + + + +
+ +
+ +
+
+
+ +
+ +
+

© Copyright 2014-2023, Patrick Lehmann, Unai Martinez-Corral. + Last updated on 08.07.2023. +

+
Built with Sphinx using a + theme + provided by Build the Docs. + + +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 00000000..604aad14 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["Dependency", "Doc-License", "Installation", "License", "Tools/Aldec/ActiveHDL", "Tools/Aldec/RivieraPRO", "Tools/Aldec/index", "Tools/Cadence/Incisive", "Tools/Cadence/index", "Tools/IntelFPGA/Quartus", "Tools/IntelFPGA/index", "Tools/Lattice/Diamond", "Tools/Lattice/index", "Tools/OpenSource/GHDL", "Tools/OpenSource/GTKWave", "Tools/OpenSource/index", "Tools/SiemensEDA/ModelSim", "Tools/SiemensEDA/QuestaSim", "Tools/SiemensEDA/index", "Tools/Synopsys/Synplify", "Tools/Synopsys/VCS", "Tools/Synopsys/index", "Tools/SystemTools/Git", "Tools/SystemTools/index", "Tools/Xilinx/ISE", "Tools/Xilinx/Vitis", "Tools/Xilinx/Vivado", "Tools/Xilinx/VivadoSDK", "Tools/Xilinx/index", "Tools/Yosys/index", "Tools/Yosys/nextpnr", "Tools/index", "Tutorial", "coverage/index", "genindex", "index", "py-modindex", "pyEDAA.CLITool/index", "pyEDAA.CLITool/pyEDAA.CLITool", "pyEDAA.CLITool/pyEDAA.CLITool.Aldec", "pyEDAA.CLITool/pyEDAA.CLITool.Docker", "pyEDAA.CLITool/pyEDAA.CLITool.GHDL", "pyEDAA.CLITool/pyEDAA.CLITool.GTKWave", "pyEDAA.CLITool/pyEDAA.CLITool.IntelFPGA", "pyEDAA.CLITool/pyEDAA.CLITool.Lattice", "pyEDAA.CLITool/pyEDAA.CLITool.Mentor", "pyEDAA.CLITool/pyEDAA.CLITool.Xilinx", "typing/index"], "filenames": ["Dependency.rst", "Doc-License.rst", "Installation.rst", "License.rst", "Tools/Aldec/ActiveHDL.rst", "Tools/Aldec/RivieraPRO.rst", "Tools/Aldec/index.rst", "Tools/Cadence/Incisive.rst", "Tools/Cadence/index.rst", "Tools/IntelFPGA/Quartus.rst", "Tools/IntelFPGA/index.rst", "Tools/Lattice/Diamond.rst", "Tools/Lattice/index.rst", "Tools/OpenSource/GHDL.rst", "Tools/OpenSource/GTKWave.rst", "Tools/OpenSource/index.rst", "Tools/SiemensEDA/ModelSim.rst", "Tools/SiemensEDA/QuestaSim.rst", "Tools/SiemensEDA/index.rst", "Tools/Synopsys/Synplify.rst", "Tools/Synopsys/VCS.rst", "Tools/Synopsys/index.rst", "Tools/SystemTools/Git.rst", "Tools/SystemTools/index.rst", "Tools/Xilinx/ISE.rst", "Tools/Xilinx/Vitis.rst", "Tools/Xilinx/Vivado.rst", "Tools/Xilinx/VivadoSDK.rst", "Tools/Xilinx/index.rst", "Tools/Yosys/index.rst", "Tools/Yosys/nextpnr.rst", "Tools/index.rst", "Tutorial.rst", "coverage/index.rst", "genindex.rst", "index.rst", "py-modindex.rst", "pyEDAA.CLITool/index.rst", "pyEDAA.CLITool/pyEDAA.CLITool.rst", "pyEDAA.CLITool/pyEDAA.CLITool.Aldec.rst", "pyEDAA.CLITool/pyEDAA.CLITool.Docker.rst", "pyEDAA.CLITool/pyEDAA.CLITool.GHDL.rst", "pyEDAA.CLITool/pyEDAA.CLITool.GTKWave.rst", "pyEDAA.CLITool/pyEDAA.CLITool.IntelFPGA.rst", "pyEDAA.CLITool/pyEDAA.CLITool.Lattice.rst", "pyEDAA.CLITool/pyEDAA.CLITool.Mentor.rst", "pyEDAA.CLITool/pyEDAA.CLITool.Xilinx.rst", "typing/index.rst"], "titles": ["Dependency", "Creative Commons Attribution 4.0 International", "Installation/Updates", "Apache License 2.0", "ActiveHDL", "Riviera-PRO", "Aldec", "Incisive", "Cadence", "Quartus", "IntelFPGA", "Diamond", "Lattice", "GHDL", "GTKWave", "Open Source", "ModelSim", "QuestaSim", "SiemensEDA", "Synplify", "VCS", "Synopsys", "Git", "System Tools", "ISE", "Vitis", "Vivado", "Vivado SDK", "Xilinx", "Yosys", "nextpnr", "Supported Tools", "Tutorial", "Coverage Report", "Index", "The pyEDAA.CLITool Documentation", "Module Index", "Python Class Reference", "pyEDAA.CLITool", "pyEDAA.CLITool.Aldec", "pyEDAA.CLITool.Docker", "pyEDAA.CLITool.GHDL", "pyEDAA.CLITool.GTKWave", "pyEDAA.CLITool.IntelFPGA", "pyEDAA.CLITool.Lattice", "pyEDAA.CLITool.Mentor", "pyEDAA.CLITool.Xilinx", "Static Type Checking Report"], "terms": {"\u00bd": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u00bc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u215b": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u00be": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u215c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u215d": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u215e": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "_": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u00b5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03c9": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u00aa": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u00ba": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u00b9": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u00b2": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u00b3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u212c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2145": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u212d": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2102": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2146": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03dd": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2130": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2147": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2131": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u02c7": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u210f": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u210b": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2111": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2148": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2110": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2124": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2112": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2133": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2115": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2134": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u210c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2119": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u210d": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u211a": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u211c": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u211b": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u211d": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03f5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03d5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03c5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03b5": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03f0": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03c6": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03d6": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03f1": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03c2": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u03d1": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "\u2128": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47], "librari": [0, 6, 18, 41], "io": 0, "requir": [0, 1, 3], "version": [0, 3, 13, 41], "licens": 0, "pytool": [0, 35, 38, 40, 41, 42], "5": [0, 40, 41], "0": [0, 35, 40, 41, 42], "apach": [0, 35], "2": [0, 35, 40, 41], "none": [0, 13, 38, 40, 41, 42], "cliabstract": [0, 4, 5, 16, 35, 40, 41, 42], "4": [0, 35, 40, 41], "1": [0, 40, 41, 42], "pyattribut": [0, 40, 41, 42], "argcomplet": 0, "pyvhdlmodel": 0, "27": [0, 41], "addit": [0, 1], "python": [0, 4, 5, 16, 35], "need": [0, 1, 4, 5, 7, 8, 9, 11, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 32], "code": [0, 3, 4, 5, 13, 14, 16, 35], "collect": [0, 1, 40, 41, 42], "static": [0, 40, 41, 42], "These": 0, "ar": [0, 1, 3, 40, 41, 42], "develop": 0, "thu": 0, "sub": 0, "evalu": 0, "further": 0, "manual": 0, "instal": [0, 35], "us": [0, 3, 4, 5, 16, 35, 40, 41, 42], "txt": 0, "file": [0, 3, 13, 14, 41, 42], "all": [0, 1, 3, 37, 38, 40, 41, 42], "via": [0, 35], "pip3": [0, 2], "The": [0, 1, 3, 38, 40, 41, 42], "recurs": 0, "mandatori": 0, "too": 0, "u": [0, 2, 41], "r": 0, "list": [0, 3, 8, 21, 29, 31, 40, 41, 42], "pytest": [0, 33], "7": [0, 40, 41], "mit": 0, "Not": [0, 3], "yet": [0, 4, 5, 16, 31], "cov": 0, "mypi": [0, 47], "lxml": 0, "9": [0, 1, 40, 41], "bsd": 0, "3": [0, 40, 41], "claus": 0, "gener": [0, 3, 33, 35, 41, 47], "doc": 0, "sphinx_btd_them": 0, "sphinx_fontawesom": 0, "6": [0, 40, 41], "gpl": 0, "sphinx_autodoc_typehint": 0, "19": [0, 41], "build": 0, "wheel": 0, "38": [0, 41], "e": 0, "g": 0, "pypi": 0, "ani": [0, 1, 3, 35, 40, 41, 42], "equival": [0, 1], "servic": [0, 1, 3], "maintain": [0, 35], "dist": 0, "twine": 0, "thi": [1, 3, 4, 5, 16, 32, 35, 40, 41, 42], "i": [1, 3, 4, 5, 8, 16, 21, 29, 35, 40, 41, 42], "local": [1, 3], "copi": [1, 3], "cc": [1, 35], "BY": [1, 35], "appli": [1, 3, 41], "onli": [1, 3, 41], "document": [1, 3, 4, 5, 7, 9, 11, 16, 17, 19, 20, 22, 24, 25, 26, 27, 30], "project": [1, 3], "corpor": 1, "law": [1, 3], "firm": 1, "doe": [1, 3, 41], "provid": [1, 3, 35, 41], "legal": [1, 3], "advic": 1, "distribut": [1, 3], "creat": [1, 4, 5, 16, 41], "lawyer": 1, "client": 1, "relationship": 1, "make": [1, 3, 41], "its": [1, 3], "relat": 1, "inform": [1, 3, 13, 41], "avail": [1, 3], "an": [1, 3, 35, 40, 41, 42], "basi": [1, 3], "give": [1, 3], "regard": [1, 3], "materi": 1, "under": [1, 3, 31, 35], "damag": [1, 3], "result": [1, 3], "from": [1, 3, 4, 5, 13, 14, 16, 38, 40, 41, 42], "fullest": 1, "extent": 1, "possibl": [1, 3, 40, 41, 42], "standard": [1, 41], "set": [1, 14, 38, 41, 42], "creator": 1, "holder": 1, "mai": [1, 3], "share": [1, 3], "origin": [1, 3], "work": [1, 3, 41], "authorship": [1, 3], "subject": [1, 3], "copyright": 1, "certain": 1, "specifi": [1, 35, 41], "below": [1, 3], "follow": [1, 3, 4, 5, 13, 14, 16], "consider": 1, "purpos": [1, 3], "exhaust": 1, "do": [1, 3], "form": [1, 3], "part": [1, 3, 32], "our": 1, "licensor": [1, 3], "intend": 1, "those": [1, 3], "author": [1, 3], "permiss": [1, 3], "wai": 1, "otherwis": [1, 3, 41], "restrict": [1, 41], "irrevoc": [1, 3], "should": [1, 3], "read": 1, "understand": 1, "thei": 1, "choos": [1, 3], "befor": 1, "also": [1, 3], "secur": 1, "necessari": 1, "so": 1, "can": [1, 41], "reus": 1, "expect": 1, "clearli": 1, "mark": [1, 3, 40, 41, 42], "includ": [1, 3], "except": [1, 3, 38], "more": [1, 3, 41], "By": 1, "one": [1, 3], "grant": 1, "If": [1, 3, 40, 41, 42], "": [1, 3, 13, 38, 41], "reason": [1, 3], "exampl": [1, 3], "becaus": [1, 41], "applic": [1, 3], "regul": 1, "ha": [1, 3, 35], "still": 1, "have": [1, 3], "A": [1, 3, 8, 21, 29], "special": [1, 3], "request": 1, "ask": 1, "chang": [1, 3], "describ": [1, 3], "although": 1, "you": [1, 3], "encourag": 1, "respect": 1, "where": [1, 3], "exercis": [1, 3], "defin": [1, 3], "accept": [1, 31], "agre": [1, 3], "bound": 1, "To": [1, 3], "contract": [1, 3], "your": [1, 3], "benefit": 1, "receiv": [1, 3], "adapt": 1, "mean": [1, 3], "similar": 1, "deriv": [1, 3, 15, 38, 40, 41, 42], "base": [1, 3, 35, 38, 40, 41, 42], "upon": 1, "which": [1, 3, 40, 41, 42], "translat": [1, 3], "alter": 1, "arrang": 1, "transform": [1, 3], "modifi": [1, 3], "manner": 1, "held": 1, "For": [1, 3], "music": 1, "perform": [1, 3, 41], "sound": 1, "record": 1, "alwai": 1, "produc": 1, "synch": 1, "time": [1, 41], "move": 1, "imag": 1, "contribut": 1, "accord": [1, 41], "close": 1, "without": [1, 3, 41], "broadcast": 1, "how": [1, 2, 3, 41], "label": 1, "categor": 1, "b": 1, "effect": 1, "technolog": 1, "measur": 1, "absenc": 1, "proper": [1, 40, 41, 42], "circumv": 1, "fulfil": 1, "oblig": [1, 3], "articl": 1, "11": [1, 41], "wipo": 1, "treati": 1, "adopt": 1, "decemb": 1, "20": [1, 41], "1996": 1, "agreement": [1, 3], "fair": 1, "deal": 1, "artist": 1, "literari": 1, "individu": [1, 3], "entiti": [1, 3, 41], "process": [1, 35], "reproduct": [1, 3], "displai": [1, 3, 13, 41], "dissemin": 1, "commun": [1, 3], "import": [1, 3], "member": 1, "access": [1, 40, 41, 42], "place": [1, 3], "chosen": 1, "them": 1, "than": 1, "direct": [1, 3], "96": 1, "ec": 1, "european": 1, "parliament": 1, "council": 1, "march": 1, "protect": 1, "amend": 1, "succeed": 1, "well": 1, "essenti": 1, "anywher": 1, "world": 1, "correspond": 1, "herebi": [1, 3], "worldwid": [1, 3], "royalti": [1, 3], "free": [1, 3], "non": [1, 3, 41], "sublicens": [1, 3], "exclus": [1, 3], "reproduc": [1, 3], "whole": [1, 3, 41], "avoid": 1, "doubt": 1, "compli": [1, 3], "media": [1, 3], "format": [1, 3, 35, 40, 41, 42], "technic": 1, "modif": [1, 3], "allow": [1, 41], "whether": [1, 3], "now": 1, "known": 1, "hereaft": 1, "waiv": 1, "assert": [1, 3, 41], "forbid": 1, "simpli": 1, "never": 1, "downstream": 1, "recipi": [1, 3], "offer": [1, 3], "everi": 1, "automat": 1, "No": 1, "impos": 1, "differ": [1, 3], "endors": 1, "noth": [1, 3], "constitut": [1, 3], "constru": [1, 3], "impli": [1, 3], "connect": [1, 35], "sponsor": 1, "offici": 1, "statu": 1, "design": [1, 3, 13, 41], "moral": 1, "integr": 1, "nor": 1, "privaci": 1, "person": 1, "howev": [1, 3], "patent": 1, "trademark": 1, "directli": 1, "through": [1, 3], "societi": 1, "voluntari": 1, "waivabl": 1, "statutori": 1, "compulsori": 1, "scheme": 1, "In": [1, 3], "case": 1, "expressli": 1, "reserv": [1, 41], "made": [1, 3], "must": [1, 3, 40, 41, 42], "retain": [1, 3], "suppli": 1, "identif": [1, 3], "pseudonym": 1, "notic": [1, 3], "refer": [1, 41], "uri": 1, "hyperlink": 1, "practic": 1, "indic": [1, 3], "previou": 1, "text": [1, 3, 38], "satisfi": 1, "medium": [1, 3], "context": [1, 38], "resourc": 1, "remov": 1, "prevent": 1, "extract": [1, 4, 5, 13, 14, 16], "substanti": 1, "portion": 1, "content": [1, 3], "supplement": 1, "replac": [1, 3], "unless": [1, 3], "separ": [1, 3, 40, 41], "undertaken": 1, "represent": [1, 40, 41, 42], "kind": [1, 3], "concern": 1, "express": [1, 3, 41], "titl": [1, 3], "merchant": [1, 3], "fit": [1, 3], "particular": [1, 3], "infring": [1, 3], "latent": 1, "defect": 1, "accuraci": 1, "presenc": 1, "error": [1, 41], "discover": 1, "full": 1, "event": [1, 3], "liabl": [1, 3], "theori": [1, 3], "neglig": [1, 3], "indirect": [1, 3], "incident": [1, 3], "consequenti": [1, 3], "punit": 1, "exemplari": 1, "loss": [1, 3], "cost": 1, "expens": 1, "aris": [1, 3], "out": [1, 3], "even": [1, 3], "been": [1, 3, 35], "advis": [1, 3], "abov": [1, 2, 3], "shall": [1, 3, 40, 41, 42], "most": 1, "approxim": 1, "absolut": 1, "waiver": 1, "here": 1, "fail": 1, "reinstat": 1, "date": [1, 3], "violat": 1, "cure": 1, "within": [1, 3, 40, 41, 42], "30": [1, 41], "dai": 1, "discoveri": 1, "affect": 1, "seek": 1, "remedi": 1, "stop": [1, 41], "surviv": 1, "state": [1, 3], "herein": [1, 3], "independ": 1, "reduc": 1, "could": 1, "lawfulli": 1, "provis": 1, "deem": 1, "unenforc": 1, "reform": 1, "minimum": 1, "enforc": 1, "cannot": [1, 3], "sever": 1, "remain": [1, 3], "failur": [1, 3], "consent": 1, "privileg": 1, "immun": 1, "jurisdict": 1, "parti": [1, 3], "notwithstand": [1, 3], "elect": 1, "publish": 1, "instanc": [1, 40, 41, 42], "consid": 1, "permit": 1, "polici": 1, "creativecommon": 1, "org": [1, 3], "logo": 1, "prior": 1, "written": [1, 3, 32], "unauthor": 1, "paragraph": 1, "contact": 1, "pyedaa": [2, 37], "clitool": [2, 37], "see": [2, 3], "section": [2, 3], "sourc": [3, 4, 5, 13, 14, 16, 31, 35, 38, 40, 41, 42], "configur": [3, 35], "januari": 3, "2004": 3, "term": 3, "AND": 3, "condit": 3, "FOR": 3, "owner": 3, "union": [3, 40, 41, 42], "act": 3, "other": [3, 35, 41], "control": 3, "common": [3, 35], "power": 3, "caus": [3, 38], "manag": 3, "ii": 3, "ownership": 3, "fifti": 3, "percent": 3, "50": 3, "outstand": 3, "iii": 3, "benefici": 3, "prefer": 3, "softwar": 3, "object": [3, 35, 41], "mechan": 3, "compil": [3, 6, 18], "convers": 3, "type": [3, 38, 40, 41, 42], "attach": 3, "appendix": 3, "editori": 3, "revis": 3, "annot": 3, "elabor": [3, 13, 41], "repres": [3, 40, 41, 42], "mere": 3, "link": [3, 41], "bind": [3, 41], "name": [3, 4, 5, 16, 37, 38, 40, 41, 42], "interfac": [3, 35], "thereof": 3, "intention": 3, "submit": 3, "inclus": 3, "behalf": 3, "electron": 3, "verbal": 3, "sent": 3, "mail": 3, "system": [3, 6, 18, 31], "issu": 3, "track": 3, "discuss": 3, "improv": 3, "exclud": 3, "conspicu": 3, "write": [3, 41], "contributor": 3, "whom": 3, "subsequ": 3, "incorpor": 3, "each": [3, 40, 41], "perpetu": 3, "charg": 3, "prepar": [3, 35], "publicli": 3, "sell": 3, "transfer": 3, "claim": 3, "necessarili": 3, "alon": 3, "combin": 3, "wa": 3, "institut": 3, "litig": 3, "against": 3, "cross": 3, "counterclaim": 3, "lawsuit": 3, "alleg": 3, "contributori": 3, "termin": 3, "meet": 3, "carri": 3, "promin": 3, "attribut": [3, 4, 5, 13, 14, 16, 35], "pertain": 3, "readabl": 3, "contain": [3, 41], "least": 3, "along": 3, "wherev": 3, "third": 3, "normal": 3, "appear": 3, "add": [3, 40, 41, 42], "own": 3, "alongsid": 3, "addendum": 3, "statement": 3, "explicitli": 3, "supersed": 3, "execut": [3, 35, 37, 38, 40, 41, 42], "trade": 3, "product": 3, "customari": 3, "AS": 3, "OR": 3, "OF": 3, "either": [3, 35], "sole": 3, "respons": 3, "determin": 3, "appropri": 3, "assum": 3, "risk": 3, "associ": 3, "tort": 3, "deliber": 3, "grossli": 3, "charact": 3, "inabl": 3, "goodwil": 3, "stoppag": 3, "comput": 3, "malfunct": 3, "commerci": 3, "while": 3, "fee": 3, "support": 3, "indemn": 3, "right": 3, "consist": 3, "indemnifi": 3, "defend": 3, "hold": 3, "harmless": 3, "incur": 3, "boilerpl": 3, "field": 3, "enclos": [3, 40, 41, 42], "bracket": 3, "identifi": 3, "don": 3, "t": [3, 41], "comment": [3, 41], "syntax": [3, 13, 41], "we": 3, "recommend": 3, "class": [3, 4, 5, 13, 14, 16, 40, 41, 42], "descript": [3, 4, 5, 13, 14, 16], "same": [3, 41], "print": [3, 4, 5, 13, 16, 41], "page": [3, 13, 41], "easier": 3, "archiv": 3, "yyyi": 3, "complianc": 3, "obtain": 3, "http": 3, "www": 3, "specif": [3, 35, 40, 41, 42], "languag": 3, "govern": 3, "tabl": [4, 5, 13, 14, 16], "scan": [4, 5, 13, 14, 16], "cliargument": [4, 5, 13, 14, 16], "vlib": [4, 5, 16], "option": [4, 5, 13, 14, 16, 35, 40, 41, 42], "lib": [4, 5, 16], "vhdllibrarytool": [4, 5, 16], "valuelibrarynam": [4, 5, 16], "poc": [4, 5, 16], "asargu": [4, 5, 16, 37, 38, 40, 41, 42], "vcom": [4, 5, 16], "vhdlcompil": [4, 5, 16], "wrap": [4, 5, 16, 40], "vlog": [4, 5, 16], "verilogcompil": [4, 5, 16], "vsim": [4, 5, 16], "vhdlsimul": [4, 5, 16], "activehdl": 6, "vhdl": [6, 13, 18, 41], "tool": [6, 8, 18, 21, 29], "verilog": [6, 18], "simul": [6, 13, 18, 41], "riviera": [6, 31], "pro": [6, 31], "incis": 8, "quartu": [10, 31], "diamond": [12, 31], "help": [13, 31, 41], "commandhelp": [13, 37, 38, 41], "commandvers": [13, 37, 38, 40, 41], "commandsyntax": [13, 37, 38, 41], "check": [13, 41], "elab": 13, "order": [13, 35, 41], "commandelaborationord": [13, 37, 38, 41], "analyz": [13, 41], "commandanalyz": [13, 37, 38, 41], "commandelabor": [13, 37, 38, 41], "run": [13, 40, 41, 42], "commandelaborationandrun": [13, 37, 38, 41], "commandrun": [13, 37, 38, 40, 41], "def": 13, "getghdlasanalyz": 13, "self": [13, 38, 40, 41, 42], "std": 13, "vhdlversion": [13, 41], "ieee": 13, "str": [13, 38, 40, 41, 42], "getghdlaselabor": 13, "getghdlassimul": 13, "dump": [14, 41], "flagdumpfil": [14, 37, 38, 42], "waveform": [14, 41, 42], "load": [14, 42], "save": 14, "flagsavefil": [14, 37, 38, 42], "ghdl": [15, 31, 37, 38], "argument": [15, 40, 41, 42], "variant": 15, "gtkwave": [15, 31, 37, 38], "modelsim": [18, 31], "questasim": [18, 31], "vc": 21, "synplifi": 21, "git": [23, 31], "ISE": [28, 31], "vivado": [28, 31], "sdk": [28, 31], "viti": [28, 31], "nextpnr": 29, "aldec": [31, 37, 38], "activ": 31, "hdl": 31, "altera": 31, "student": 31, "edit": 31, "cadenc": 31, "intelfpga": [31, 37, 38], "lattic": [31, 37, 38], "mentorgraph": 31, "de": 31, "se": 31, "pe": 31, "siemenseda": 31, "synopsi": [31, 41], "xilinx": [31, 37, 38], "open": [31, 35, 41], "yosi": 31, "legend": 31, "implement": [31, 38], "test": 31, "plan": 31, "pr": 31, "placehold": [33, 47], "unifi": 35, "eda": 35, "cli": [35, 40, 41, 42], "agnost": 35, "solut": 35, "construct": 35, "command": 35, "line": 35, "call": [35, 40, 41, 42], "launch": 35, "stdin": 35, "stdout": [35, 41], "stderr": [35, 41], "realtim": 35, "output": 35, "post": 35, "multipl": 35, "nativ": 35, "platform": [35, 40, 41, 42], "linux": [35, 40, 41, 42], "maco": 35, "window": [35, 40, 41, 42], "nest": [35, 40, 41, 42], "like": 35, "msys2": 35, "mingw32": 35, "mingw64": 35, "ucrt64": 35, "clang64": 35, "find": 35, "program": [35, 40, 41, 42], "path": [35, 40, 41, 42], "exact": 35, "locat": 35, "correct": 35, "correctli": 35, "escap": [35, 40, 41, 42], "layer": 35, "workflow": 35, "launcher": 35, "verif": 35, "bundl": 35, "osvb": 35, "ad": 35, "abstract": [35, 40, 41, 42], "updat": 35, "v0": 35, "structur": 35, "vendor": 35, "patrick": 35, "lehmann": 35, "unai": 35, "martinez": 35, "corral": 35, "packag": [35, 37, 41], "accompani": 35, "creativ": 35, "modul": 37, "docker": [37, 38], "_executablenam": [37, 38, 40, 41, 42], "__init_subclass__": [37, 38, 40, 41, 42], "__new__": [37, 38, 40, 41, 42], "__repr__": [37, 38, 40, 41, 42], "__str__": [37, 38, 40, 41, 42], "commandcontain": [37, 38, 40], "flagcontainernam": [37, 38, 40], "valu": [37, 38, 40, 41, 42], "__init__": [37, 38, 40, 41, 42], "flagremovecontain": [37, 38, 40], "flagmount": [37, 38, 40], "flagvolum": [37, 38, 40], "valueimagenam": [37, 38, 40], "valuecommand": [37, 38, 40], "__clioptions__": [37, 38, 40, 41, 42], "__getitem__": [37, 38, 40, 41, 42], "_platform": [37, 38, 40, 41, 42], "_executablepath": [37, 38, 40, 41, 42], "_dryrun": [37, 38, 40, 41, 42], "__cliparameters__": [37, 38, 40, 41, 42], "ghdlversion": [37, 38, 41], "commandbind": [37, 38, 41], "commandlink": [37, 38, 41], "commandlistlink": [37, 38, 41], "commandcompil": [37, 38, 41], "commandgeneratedepend": [37, 38, 41], "commandsynthes": [37, 38, 41], "flagverbos": [37, 38, 41], "flagvhdlstandard": [37, 38, 41], "flagieeeflavor": [37, 38, 41], "flagsynopsi": [37, 38, 41], "flagrelax": [37, 38, 41], "flagexplicit": [37, 38, 41], "flaglibrari": [37, 38, 41], "flagworkingdirectori": [37, 38, 41], "flagmultibytecom": [37, 38, 41], "flagsearchpath": [37, 38, 41], "flagtimeresolut": [37, 38, 41], "flagvitalcheck": [37, 38, 41], "flagwarnunboundcompon": [37, 38, 41], "flagwarnreservedword": [37, 38, 41], "flagwarnredefineddesignunit": [37, 38, 41], "flagwarnnonvitalgenericnam": [37, 38, 41], "flagwarnelaborationcheck": [37, 38, 41], "flagwarnunnecessarypackagebodi": [37, 38, 41], "flagwarnothersspecif": [37, 38, 41], "flagsyntesisbindingrul": [37, 38, 41], "optionpath": [37, 38, 41], "optiontoplevel": [37, 38, 41], "optionarchitectur": [37, 38, 41], "flaggener": [37, 38, 41], "flagassert": [37, 38, 41], "flagieeeassert": [37, 38, 41], "flagstoptim": [37, 38, 41], "flagmaxdeltacycl": [37, 38, 41], "flagdisplaydeltacycl": [37, 38, 41], "flagunbufferedio": [37, 38, 41], "flagreadwaveformoptionsfil": [37, 38, 41], "flagwritewaveformoptionsfil": [37, 38, 41], "flagghwwaveformfil": [37, 38, 41], "mentor": [37, 38], "clitoolexcept": [37, 38], "__cause__": [37, 38], "__context__": [37, 38], "__delattr__": [37, 38], "__getattribute__": [37, 38], "__reduce__": [37, 38], "__setattr__": [37, 38], "with_traceback": [37, 38], "submodul": 38, "custom": 38, "messag": [38, 41], "inherit": [38, 40, 41, 42], "exceptionbas": 38, "paramet": [38, 40, 41, 42], "delattr": 38, "return": [38, 40, 41, 42], "getattr": 38, "initi": [38, 40, 41], "kwarg": [38, 40, 41, 42], "helper": 38, "pickl": 38, "repr": [38, 40, 41, 42], "setattr": 38, "tb": 38, "__traceback__": 38, "subprocess": [40, 41, 42], "popen": [40, 41, 42], "executablepath": [40, 41, 42], "binarydirectorypath": [40, 41, 42], "dryrun": [40, 41, 42], "fals": [40, 41, 42], "bool": [40, 41, 42], "classvar": [40, 41, 42], "dict": [40, 41, 42], "darwin": [40, 41, 42], "ex": [40, 41, 42], "dictionari": [40, 41, 42], "arg": [40, 41, 42], "convert": [40, 41, 42], "string": [40, 41, 42], "match": [40, 41, 42], "pattern": [40, 41, 42], "intern": [40, 41, 42], "iter": [40, 41, 42], "rais": [40, 41, 42], "valueerror": [40, 41, 42], "properti": [40, 41, 42], "get": [40, 41, 42], "classmethod": [40, 41, 42], "method": [40, 41, 42], "when": [40, 41, 42], "posit": [40, 41, 42], "keyword": [40, 41, 42], "cl": [40, 41, 42], "doubl": [40, 41, 42], "quot": [40, 41, 42], "sequenc": [40, 41], "tupl": 40, "valuet": [40, 41, 42], "comma": [40, 41], "space": [40, 41], "valuedargu": [40, 41], "typevar": [40, 41], "store": [40, 41], "typeerror": [40, 41], "executableargu": 40, "commandlineargu": [40, 41, 42], "int": [40, 41, 42], "8": [40, 41], "kei": [40, 41, 42], "alreadi": [40, 41, 42], "whenev": [40, 41, 42], "subclass": [40, 41, 42], "declar": [40, 41, 42], "clioption": [40, 41, 42], "current": [40, 41, 42], "binari": [40, 41, 42], "script": [40, 41, 42], "true": [40, 41, 42], "dry": [40, 41, 42], "mode": [40, 41, 42], "undocu": 41, "versionlin": 41, "gnatlin": 41, "backendlin": 41, "unit": 41, "depend": 41, "synthesi": 41, "verbos": 41, "flavor": 41, "visibl": 41, "\u00eceee": 41, "relax": 41, "some": 41, "lrm": 41, "rule": 41, "directori": 41, "multi": 41, "byte": 41, "search": 41, "resolut": 41, "auto": 41, "default": 41, "f": 41, "p": 41, "n": 41, "m": 41, "sec": 41, "vital": 41, "booleanflag": 41, "falsepattern": 41, "warn": 41, "unbound": 41, "compon": 41, "93": 41, "word": 41, "87": 41, "redefin": 41, "unnecessari": 41, "bodi": 41, "turn": 41, "pathlistargu": 41, "o": 41, "element": 41, "toplevel": 41, "architectur": 41, "keyvaluepair": 41, "select": 41, "handl": 41, "It": 41, "enabl": 41, "disabl": 41, "start": 41, "after": 41, "given": 41, "real": 41, "10": 41, "12": 41, "13": 41, "14": 41, "15": 41, "16": 41, "17": 41, "18": 41, "21": 41, "22": 41, "23": 41, "24": 41, "25": 41, "26": 41, "28": 41, "29": 41, "31": 41, "32": 41, "33": 41, "34": 41, "35": 41, "36": 41, "37": 41, "39": 41, "40": 41, "41": 41, "42": 41, "43": 41, "44": 41, "45": 41, "46": 41, "delta": 41, "cycl": 41, "number": 41, "advanc": 41, "buffer": 41, "append": 41, "textio": 41, "filter": 41, "signal": 41, "wavefil": 41, "doesn": 41, "exist": 41, "throw": 41, "won": 41, "eras": 41, "ghw": 41, "contrari": 41, "vcd": 41}, "objects": {"pyEDAA": [[38, 0, 0, "-", "CLITool"]], "pyEDAA.CLITool": [[39, 0, 0, "-", "Aldec"], [38, 1, 1, "", "CLIToolException"], [40, 0, 0, "-", "Docker"], [41, 0, 0, "-", "GHDL"], [42, 0, 0, "-", "GTKWave"], [43, 0, 0, "-", "IntelFPGA"], [44, 0, 0, "-", "Lattice"], [45, 0, 0, "-", "Mentor"], [46, 0, 0, "-", "Xilinx"]], "pyEDAA.CLITool.CLIToolException": [[38, 2, 1, "", "__cause__"], [38, 2, 1, "", "__context__"], [38, 3, 1, "", "__delattr__"], [38, 3, 1, "", "__getattribute__"], [38, 3, 1, "", "__init__"], [38, 3, 1, "", "__new__"], [38, 3, 1, "", "__reduce__"], [38, 3, 1, "", "__repr__"], [38, 3, 1, "", "__setattr__"], [38, 3, 1, "", "__str__"], [38, 3, 1, "", "with_traceback"]], "pyEDAA.CLITool.Docker": [[40, 4, 1, "", "Docker"]], "pyEDAA.CLITool.Docker.Docker": [[40, 4, 1, "", "CommandContainer"], [40, 4, 1, "", "CommandRun"], [40, 4, 1, "", "CommandVersion"], [40, 4, 1, "", "Executable"], [40, 4, 1, "", "FlagContainerName"], [40, 4, 1, "", "FlagMount"], [40, 4, 1, "", "FlagRemoveContainer"], [40, 4, 1, "", "FlagVolume"], [40, 4, 1, "", "ValueCommand"], [40, 4, 1, "", "ValueImageName"], [40, 2, 1, "", "__cliOptions__"], [40, 2, 1, "", "__cliParameters__"], [40, 3, 1, "", "__getitem__"], [40, 3, 1, "", "__init__"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"], [40, 2, 1, "", "_dryRun"], [40, 2, 1, "", "_executableNames"], [40, 2, 1, "", "_executablePath"], [40, 2, 1, "", "_platform"]], "pyEDAA.CLITool.Docker.Docker.CommandContainer": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Name"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.CommandRun": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Name"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.CommandVersion": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Name"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.Executable": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Executable"], [40, 3, 1, "", "__init__"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.FlagContainerName": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Name"], [40, 5, 1, "", "Value"], [40, 3, 1, "", "__init__"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.FlagMount": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Name"], [40, 5, 1, "", "Value"], [40, 3, 1, "", "__init__"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Name"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.FlagVolume": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Name"], [40, 5, 1, "", "Value"], [40, 3, 1, "", "__init__"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.ValueCommand": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Value"], [40, 3, 1, "", "__init__"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.Docker.Docker.ValueImageName": [[40, 3, 1, "", "AsArgument"], [40, 5, 1, "", "Value"], [40, 3, 1, "", "__init__"], [40, 3, 1, "", "__init_subclass__"], [40, 3, 1, "", "__new__"], [40, 3, 1, "", "__repr__"], [40, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL": [[41, 4, 1, "", "GHDL"], [41, 4, 1, "", "GHDLVersion"]], "pyEDAA.CLITool.GHDL.GHDL": [[41, 4, 1, "", "CommandAnalyze"], [41, 4, 1, "", "CommandBind"], [41, 4, 1, "", "CommandCompile"], [41, 4, 1, "", "CommandElaborate"], [41, 4, 1, "", "CommandElaborationAndRun"], [41, 4, 1, "", "CommandElaborationOrder"], [41, 4, 1, "", "CommandGenerateDependencies"], [41, 4, 1, "", "CommandHelp"], [41, 4, 1, "", "CommandLink"], [41, 4, 1, "", "CommandListLink"], [41, 4, 1, "", "CommandRun"], [41, 4, 1, "", "CommandSyntax"], [41, 4, 1, "", "CommandSynthesize"], [41, 4, 1, "", "CommandVersion"], [41, 4, 1, "", "FlagAsserts"], [41, 4, 1, "", "FlagDisplayDeltaCycles"], [41, 4, 1, "", "FlagExplicit"], [41, 4, 1, "", "FlagGHWWaveformFile"], [41, 4, 1, "", "FlagGenerics"], [41, 4, 1, "", "FlagIEEEAsserts"], [41, 4, 1, "", "FlagIEEEFlavor"], [41, 4, 1, "", "FlagLibrary"], [41, 4, 1, "", "FlagMaxDeltaCycles"], [41, 4, 1, "", "FlagMultiByteComments"], [41, 4, 1, "", "FlagReadWaveformOptionsFile"], [41, 4, 1, "", "FlagRelaxed"], [41, 4, 1, "", "FlagSearchPath"], [41, 4, 1, "", "FlagStopTime"], [41, 4, 1, "", "FlagSynopsys"], [41, 4, 1, "", "FlagSyntesisBindingRule"], [41, 4, 1, "", "FlagTimeResolution"], [41, 4, 1, "", "FlagUnbufferedIO"], [41, 4, 1, "", "FlagVHDLStandard"], [41, 4, 1, "", "FlagVerbose"], [41, 4, 1, "", "FlagVitalChecks"], [41, 4, 1, "", "FlagWarnElaborationChecks"], [41, 4, 1, "", "FlagWarnNonVitalGenericNames"], [41, 4, 1, "", "FlagWarnOthersSpecifications"], [41, 4, 1, "", "FlagWarnRedefinedDesignUnits"], [41, 4, 1, "", "FlagWarnReservedWords"], [41, 4, 1, "", "FlagWarnUnboundComponents"], [41, 4, 1, "", "FlagWarnUnnecessaryPackageBody"], [41, 4, 1, "", "FlagWorkingDirectory"], [41, 4, 1, "", "FlagWriteWaveformOptionsFile"], [41, 4, 1, "", "OptionArchitecture"], [41, 4, 1, "", "OptionPaths"], [41, 4, 1, "", "OptionTopLevel"], [41, 2, 1, "", "__cliOptions__"], [41, 2, 1, "", "__cliParameters__"], [41, 3, 1, "", "__getitem__"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"], [41, 2, 1, "", "_dryRun"], [41, 2, 1, "", "_executableNames"], [41, 2, 1, "", "_executablePath"], [41, 2, 1, "", "_platform"]], "pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandBind": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandCompile": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandElaborate": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandHelp": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandLink": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandListLink": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandRun": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandSyntax": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.CommandVersion": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagExplicit": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagVerbose": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Name"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.OptionPaths": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel": [[41, 3, 1, "", "AsArgument"], [41, 5, 1, "", "Value"], [41, 3, 1, "", "__init__"], [41, 3, 1, "", "__init_subclass__"], [41, 3, 1, "", "__new__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GHDL.GHDLVersion": [[41, 3, 1, "", "__init__"], [41, 3, 1, "", "__repr__"], [41, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GTKWave": [[42, 4, 1, "", "GTKWave"]], "pyEDAA.CLITool.GTKWave.GTKWave": [[42, 4, 1, "", "FlagDumpFile"], [42, 4, 1, "", "FlagSaveFile"], [42, 2, 1, "", "__cliOptions__"], [42, 2, 1, "", "__cliParameters__"], [42, 3, 1, "", "__getitem__"], [42, 3, 1, "", "__init__"], [42, 3, 1, "", "__init_subclass__"], [42, 3, 1, "", "__repr__"], [42, 3, 1, "", "__str__"], [42, 2, 1, "", "_dryRun"], [42, 2, 1, "", "_executableNames"], [42, 2, 1, "", "_executablePath"], [42, 2, 1, "", "_platform"]], "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile": [[42, 3, 1, "", "AsArgument"], [42, 5, 1, "", "Name"], [42, 5, 1, "", "Value"], [42, 3, 1, "", "__init__"], [42, 3, 1, "", "__init_subclass__"], [42, 3, 1, "", "__new__"], [42, 3, 1, "", "__repr__"], [42, 3, 1, "", "__str__"]], "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile": [[42, 3, 1, "", "AsArgument"], [42, 5, 1, "", "Name"], [42, 5, 1, "", "Value"], [42, 3, 1, "", "__init__"], [42, 3, 1, "", "__init_subclass__"], [42, 3, 1, "", "__new__"], [42, 3, 1, "", "__repr__"], [42, 3, 1, "", "__str__"]]}, "objtypes": {"0": "py:module", "1": "py:exception", "2": "py:attribute", "3": "py:method", "4": "py:class", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "exception", "Python exception"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "method", "Python method"], "4": ["py", "class", "Python class"], "5": ["py", "property", "Python property"]}, "titleterms": {"depend": 0, "pyedaa": [0, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46], "clitool": [0, 35, 38, 39, 40, 41, 42, 43, 44, 45, 46], "packag": 0, "unit": 0, "test": 0, "coverag": [0, 33], "type": [0, 47], "check": [0, 47], "option": 0, "sphinx": 0, "document": [0, 35], "publish": 0, "ci": 0, "server": 0, "onli": 0, "creativ": 1, "common": 1, "attribut": 1, "4": [1, 3], "0": [1, 3], "intern": 1, "us": [1, 2], "public": 1, "licens": [1, 3, 35], "section": 1, "1": [1, 3], "definit": [1, 3], "2": [1, 3], "scope": 1, "3": [1, 3], "condit": 1, "sui": 1, "generi": 1, "databas": 1, "right": 1, "5": [1, 3], "disclaim": [1, 3], "warranti": [1, 3], "limit": [1, 3], "liabil": [1, 3], "6": [1, 3], "term": 1, "termin": 1, "7": [1, 3], "other": 1, "8": [1, 3], "interpret": 1, "instal": 2, "updat": 2, "pip": 2, "from": [2, 35], "pypi": 2, "uninstal": 2, "local": 2, "directori": 2, "setup": 2, "py": 2, "legaci": 2, "apach": 3, "grant": 3, "copyright": 3, "patent": 3, "redistribut": 3, "submiss": 3, "contribut": 3, "trademark": 3, "9": 3, "accept": 3, "addit": 3, "activehdl": 4, "todo": [4, 5, 7, 8, 9, 11, 13, 14, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 32], "vhdl": [4, 5, 16], "librari": [4, 5, 16], "tool": [4, 5, 16, 23, 31, 35], "argument": [4, 5, 13, 14, 16], "usag": [4, 5, 16], "compil": [4, 5, 16], "system": [4, 5, 16, 23], "verilog": [4, 5, 16], "simul": [4, 5, 16], "riviera": 5, "pro": 5, "aldec": [6, 39], "incis": 7, "cadenc": 8, "quartu": 9, "intelfpga": [10, 43], "diamond": 11, "lattic": [12, 44], "ghdl": [13, 35, 41], "deriv": 13, "variant": 13, "gtkwave": [14, 35, 42], "open": 15, "sourc": 15, "modelsim": [16, 35], "questasim": 17, "siemenseda": 18, "synplifi": 19, "vc": 20, "synopsi": 21, "git": 22, "ISE": 24, "viti": 25, "vivado": [26, 27], "sdk": 27, "xilinx": [28, 46], "yosi": 29, "nextpnr": 30, "support": [31, 35], "tutori": 32, "report": [33, 47], "index": [34, 36], "The": 35, "main": 35, "goal": 35, "featur": 35, "consum": 35, "new": 35, "feb": 35, "2022": 35, "more": 35, "jan": 35, "dec": 35, "2021": 35, "extract": 35, "pyipcmi": 35, "contributor": 35, "modul": 36, "python": 37, "class": 37, "refer": 37, "docker": 40, "mentor": 45, "static": 47}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"Dependency": [[0, "dependency"]], "pyEDAA.CLITool Package": [[0, "pyedaa-clitool-package"]], "Unit Testing / Coverage / Type Checking (Optional)": [[0, "unit-testing-coverage-type-checking-optional"]], "Sphinx Documentation (Optional)": [[0, "sphinx-documentation-optional"]], "Packaging (Optional)": [[0, "packaging-optional"]], "Publishing (CI-Server only)": [[0, "publishing-ci-server-only"]], "Creative Commons Attribution 4.0 International": [[1, "creative-commons-attribution-4-0-international"]], "Using Creative Commons Public Licenses": [[1, null]], "Section 1 \u2013 Definitions.": [[1, "section-1-definitions"]], "Section 2 \u2013 Scope.": [[1, "section-2-scope"]], "Section 3 \u2013 License Conditions.": [[1, "section-3-license-conditions"]], "Section 4 \u2013 Sui Generis Database Rights.": [[1, "section-4-sui-generis-database-rights"]], "Section 5 \u2013 Disclaimer of Warranties and Limitation of Liability.": [[1, "section-5-disclaimer-of-warranties-and-limitation-of-liability"]], "Section 6 \u2013 Term and Termination.": [[1, "section-6-term-and-termination"]], "Section 7 \u2013 Other Terms and Conditions.": [[1, "section-7-other-terms-and-conditions"]], "Section 8 \u2013 Interpretation.": [[1, "section-8-interpretation"]], "Installation/Updates": [[2, "installation-updates"]], "Using PIP": [[2, "using-pip"]], "Installation from PyPI using PIP": [[2, "installation-from-pypi-using-pip"]], "Updating from PyPI using PIP": [[2, "updating-from-pypi-using-pip"]], "Uninstallation using PIP": [[2, "uninstallation-using-pip"]], "Installation from local directory using PIP": [[2, "installation-from-local-directory-using-pip"]], "Using setup.py (legacy)": [[2, "using-setup-py-legacy"]], "Installation using setup.py": [[2, "installation-using-setup-py"]], "Apache License 2.0": [[3, "apache-license-2-0"]], "1. Definitions.": [[3, "definitions"]], "2. Grant of Copyright License.": [[3, "grant-of-copyright-license"]], "3. Grant of Patent License.": [[3, "grant-of-patent-license"]], "4. Redistribution.": [[3, "redistribution"]], "5. Submission of Contributions.": [[3, "submission-of-contributions"]], "6. Trademarks.": [[3, "trademarks"]], "7. Disclaimer of Warranty.": [[3, "disclaimer-of-warranty"]], "8. Limitation of Liability.": [[3, "limitation-of-liability"]], "9. Accepting Warranty or Additional Liability.": [[3, "accepting-warranty-or-additional-liability"]], "ActiveHDL": [[4, "activehdl"]], "Todo": [[4, "id1"], [4, "id2"], [4, "id4"], [4, "id6"], [4, "id8"], [4, "id11"], [5, "id1"], [5, "id2"], [5, "id4"], [5, "id6"], [5, "id8"], [5, "id11"], [7, "id1"], [8, "id1"], [9, "id1"], [11, "id1"], [13, "id1"], [14, "id1"], [16, "id1"], [16, "id2"], [16, "id4"], [16, "id6"], [16, "id8"], [16, "id11"], [17, "id1"], [19, "id1"], [20, "id1"], [21, "id1"], [22, "id1"], [24, "id1"], [25, "id1"], [26, "id1"], [27, "id1"], [29, "id1"], [30, "id1"], [32, "id1"]], "VHDL Library Tool": [[4, "vhdl-library-tool"], [5, "vhdl-library-tool"], [16, "vhdl-library-tool"]], "Arguments": [[4, "arguments"], [4, "id3"], [4, "id7"], [4, "id10"], [5, "arguments"], [5, "id3"], [5, "id7"], [5, "id10"], [13, "arguments"], [14, "arguments"], [16, "arguments"], [16, "id3"], [16, "id7"], [16, "id10"]], "Usage": [[4, "usage"], [4, "id5"], [4, "id9"], [4, "id12"], [5, "usage"], [5, "id5"], [5, "id9"], [5, "id12"], [16, "usage"], [16, "id5"], [16, "id9"], [16, "id12"]], "VHDL Compiler": [[4, "vhdl-compiler"], [5, "vhdl-compiler"], [16, "vhdl-compiler"]], "(System-)Verilog Compiler": [[4, "system-verilog-compiler"], [5, "system-verilog-compiler"], [16, "system-verilog-compiler"]], "VHDL Simulator": [[4, "vhdl-simulator"], [5, "vhdl-simulator"], [16, "vhdl-simulator"]], "Riviera-PRO": [[5, "riviera-pro"]], "Aldec": [[6, "aldec"]], "Incisive": [[7, "incisive"]], "Cadence": [[8, "cadence"]], "Quartus": [[9, "quartus"]], "IntelFPGA": [[10, "intelfpga"]], "Diamond": [[11, "diamond"]], "Lattice": [[12, "lattice"]], "GHDL": [[13, "ghdl"]], "Derive Variants": [[13, "derive-variants"]], "GTKWave": [[14, "gtkwave"]], "Open Source": [[15, "open-source"]], "ModelSim": [[16, "modelsim"]], "QuestaSim": [[17, "questasim"]], "SiemensEDA": [[18, "siemenseda"]], "Synplify": [[19, "synplify"]], "VCS": [[20, "vcs"]], "Synopsys": [[21, "synopsys"]], "Git": [[22, "git"]], "System Tools": [[23, "system-tools"]], "ISE": [[24, "ise"]], "Vitis": [[25, "vitis"]], "Vivado": [[26, "vivado"]], "Vivado SDK": [[27, "vivado-sdk"]], "Xilinx": [[28, "xilinx"]], "Yosys": [[29, "yosys"]], "nextpnr": [[30, "nextpnr"]], "Supported Tools": [[31, "supported-tools"]], "Tutorial": [[32, "tutorial"]], "Coverage Report": [[33, "coverage-report"]], "Index": [[34, "index"]], "The pyEDAA.CLITool Documentation": [[35, "the-pyedaa-clitool-documentation"]], "Main Goals": [[35, "main-goals"]], "Features": [[35, "features"]], "Consumers": [[35, "consumers"]], "News": [[35, "news"]], "Feb. 2022 - Supporting more Tools": [[35, "feb-2022-supporting-more-tools"]], "Jan. 2022 - GHDL, GTKWave, ModelSim": [[35, "jan-2022-ghdl-gtkwave-modelsim"]], "Dec. 2021 - Extracted CLITool from pyIPCMI": [[35, "dec-2021-extracted-clitool-from-pyipcmi"]], "Contributors": [[35, "contributors"]], "License": [[35, "license"]], "Module Index": [[36, "module-index"]], "Python Class Reference": [[37, "python-class-reference"]], "pyEDAA.CLITool": [[38, "module-pyEDAA.CLITool"]], "pyEDAA.CLITool.Aldec": [[39, "module-pyEDAA.CLITool.Aldec"]], "pyEDAA.CLITool.Docker": [[40, "module-pyEDAA.CLITool.Docker"]], "pyEDAA.CLITool.GHDL": [[41, "module-pyEDAA.CLITool.GHDL"]], "pyEDAA.CLITool.GTKWave": [[42, "module-pyEDAA.CLITool.GTKWave"]], "pyEDAA.CLITool.IntelFPGA": [[43, "module-pyEDAA.CLITool.IntelFPGA"]], "pyEDAA.CLITool.Lattice": [[44, "module-pyEDAA.CLITool.Lattice"]], "pyEDAA.CLITool.Mentor": [[45, "module-pyEDAA.CLITool.Mentor"]], "pyEDAA.CLITool.Xilinx": [[46, "module-pyEDAA.CLITool.Xilinx"]], "Static Type Checking Report": [[47, "static-type-checking-report"]]}, "indexentries": {"clitoolexception": [[38, "pyEDAA.CLITool.CLIToolException"]], "__cause__ (pyedaa.clitool.clitoolexception attribute)": [[38, "pyEDAA.CLITool.CLIToolException.__cause__"]], "__context__ (pyedaa.clitool.clitoolexception attribute)": [[38, "pyEDAA.CLITool.CLIToolException.__context__"]], "__delattr__() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.__delattr__"]], "__getattribute__() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.__getattribute__"]], "__init__() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.__init__"]], "__new__() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.__new__"]], "__reduce__() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.__reduce__"]], "__repr__() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.__repr__"]], "__setattr__() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.__setattr__"]], "__str__() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.__str__"]], "module": [[38, "module-pyEDAA.CLITool"], [39, "module-pyEDAA.CLITool.Aldec"], [40, "module-pyEDAA.CLITool.Docker"], [41, "module-pyEDAA.CLITool.GHDL"], [42, "module-pyEDAA.CLITool.GTKWave"], [43, "module-pyEDAA.CLITool.IntelFPGA"], [44, "module-pyEDAA.CLITool.Lattice"], [45, "module-pyEDAA.CLITool.Mentor"], [46, "module-pyEDAA.CLITool.Xilinx"]], "pyedaa.clitool": [[38, "module-pyEDAA.CLITool"]], "with_traceback() (pyedaa.clitool.clitoolexception method)": [[38, "pyEDAA.CLITool.CLIToolException.with_traceback"]], "pyedaa.clitool.aldec": [[39, "module-pyEDAA.CLITool.Aldec"]], "asargument() (pyedaa.clitool.docker.docker.commandcontainer method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandContainer.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.commandrun method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandRun.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.commandversion method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandVersion.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.executable method)": [[40, "pyEDAA.CLITool.Docker.Docker.Executable.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.flagcontainername method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.flagmount method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.flagremovecontainer method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.flagvolume method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.valuecommand method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueCommand.AsArgument"]], "asargument() (pyedaa.clitool.docker.docker.valueimagename method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueImageName.AsArgument"]], "docker (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker"]], "docker.commandcontainer (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandContainer"]], "docker.commandrun (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandRun"]], "docker.commandversion (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandVersion"]], "docker.executable (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.Executable"]], "docker.flagcontainername (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName"]], "docker.flagmount (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount"]], "docker.flagremovecontainer (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer"]], "docker.flagvolume (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume"]], "docker.valuecommand (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueCommand"]], "docker.valueimagename (class in pyedaa.clitool.docker)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueImageName"]], "executable (pyedaa.clitool.docker.docker.executable property)": [[40, "pyEDAA.CLITool.Docker.Docker.Executable.Executable"]], "name (pyedaa.clitool.docker.docker.commandcontainer property)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandContainer.Name"]], "name (pyedaa.clitool.docker.docker.commandrun property)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandRun.Name"]], "name (pyedaa.clitool.docker.docker.commandversion property)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandVersion.Name"]], "name (pyedaa.clitool.docker.docker.flagcontainername property)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName.Name"]], "name (pyedaa.clitool.docker.docker.flagmount property)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount.Name"]], "name (pyedaa.clitool.docker.docker.flagremovecontainer property)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer.Name"]], "name (pyedaa.clitool.docker.docker.flagvolume property)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume.Name"]], "value (pyedaa.clitool.docker.docker.flagcontainername property)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName.Value"]], "value (pyedaa.clitool.docker.docker.flagmount property)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount.Value"]], "value (pyedaa.clitool.docker.docker.flagvolume property)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume.Value"]], "value (pyedaa.clitool.docker.docker.valuecommand property)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueCommand.Value"]], "value (pyedaa.clitool.docker.docker.valueimagename property)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueImageName.Value"]], "__clioptions__ (pyedaa.clitool.docker.docker attribute)": [[40, "pyEDAA.CLITool.Docker.Docker.__cliOptions__"]], "__cliparameters__ (pyedaa.clitool.docker.docker attribute)": [[40, "pyEDAA.CLITool.Docker.Docker.__cliParameters__"]], "__getitem__() (pyedaa.clitool.docker.docker method)": [[40, "pyEDAA.CLITool.Docker.Docker.__getitem__"]], "__init__() (pyedaa.clitool.docker.docker method)": [[40, "pyEDAA.CLITool.Docker.Docker.__init__"]], "__init__() (pyedaa.clitool.docker.docker.executable method)": [[40, "pyEDAA.CLITool.Docker.Docker.Executable.__init__"]], "__init__() (pyedaa.clitool.docker.docker.flagcontainername method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName.__init__"]], "__init__() (pyedaa.clitool.docker.docker.flagmount method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount.__init__"]], "__init__() (pyedaa.clitool.docker.docker.flagvolume method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume.__init__"]], "__init__() (pyedaa.clitool.docker.docker.valuecommand method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueCommand.__init__"]], "__init__() (pyedaa.clitool.docker.docker.valueimagename method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueImageName.__init__"]], "__init_subclass__() (pyedaa.clitool.docker.docker class method)": [[40, "pyEDAA.CLITool.Docker.Docker.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.commandcontainer class method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandContainer.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.commandrun class method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandRun.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.commandversion class method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandVersion.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.executable class method)": [[40, "pyEDAA.CLITool.Docker.Docker.Executable.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.flagcontainername class method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.flagmount class method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.flagremovecontainer class method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.flagvolume class method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.valuecommand class method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueCommand.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.docker.docker.valueimagename class method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueImageName.__init_subclass__"]], "__new__() (pyedaa.clitool.docker.docker.commandcontainer static method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandContainer.__new__"]], "__new__() (pyedaa.clitool.docker.docker.commandrun static method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandRun.__new__"]], "__new__() (pyedaa.clitool.docker.docker.commandversion static method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandVersion.__new__"]], "__new__() (pyedaa.clitool.docker.docker.executable static method)": [[40, "pyEDAA.CLITool.Docker.Docker.Executable.__new__"]], "__new__() (pyedaa.clitool.docker.docker.flagcontainername static method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName.__new__"]], "__new__() (pyedaa.clitool.docker.docker.flagmount static method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount.__new__"]], "__new__() (pyedaa.clitool.docker.docker.flagremovecontainer static method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer.__new__"]], "__new__() (pyedaa.clitool.docker.docker.flagvolume static method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume.__new__"]], "__new__() (pyedaa.clitool.docker.docker.valuecommand static method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueCommand.__new__"]], "__new__() (pyedaa.clitool.docker.docker.valueimagename static method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueImageName.__new__"]], "__repr__() (pyedaa.clitool.docker.docker method)": [[40, "pyEDAA.CLITool.Docker.Docker.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.commandcontainer method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandContainer.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.commandrun method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandRun.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.commandversion method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandVersion.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.executable method)": [[40, "pyEDAA.CLITool.Docker.Docker.Executable.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.flagcontainername method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.flagmount method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.flagremovecontainer method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.flagvolume method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.valuecommand method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueCommand.__repr__"]], "__repr__() (pyedaa.clitool.docker.docker.valueimagename method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueImageName.__repr__"]], "__str__() (pyedaa.clitool.docker.docker method)": [[40, "pyEDAA.CLITool.Docker.Docker.__str__"]], "__str__() (pyedaa.clitool.docker.docker.commandcontainer method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandContainer.__str__"]], "__str__() (pyedaa.clitool.docker.docker.commandrun method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandRun.__str__"]], "__str__() (pyedaa.clitool.docker.docker.commandversion method)": [[40, "pyEDAA.CLITool.Docker.Docker.CommandVersion.__str__"]], "__str__() (pyedaa.clitool.docker.docker.executable method)": [[40, "pyEDAA.CLITool.Docker.Docker.Executable.__str__"]], "__str__() (pyedaa.clitool.docker.docker.flagcontainername method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagContainerName.__str__"]], "__str__() (pyedaa.clitool.docker.docker.flagmount method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagMount.__str__"]], "__str__() (pyedaa.clitool.docker.docker.flagremovecontainer method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagRemoveContainer.__str__"]], "__str__() (pyedaa.clitool.docker.docker.flagvolume method)": [[40, "pyEDAA.CLITool.Docker.Docker.FlagVolume.__str__"]], "__str__() (pyedaa.clitool.docker.docker.valuecommand method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueCommand.__str__"]], "__str__() (pyedaa.clitool.docker.docker.valueimagename method)": [[40, "pyEDAA.CLITool.Docker.Docker.ValueImageName.__str__"]], "_dryrun (pyedaa.clitool.docker.docker attribute)": [[40, "pyEDAA.CLITool.Docker.Docker._dryRun"]], "_executablenames (pyedaa.clitool.docker.docker attribute)": [[40, "pyEDAA.CLITool.Docker.Docker._executableNames"]], "_executablepath (pyedaa.clitool.docker.docker attribute)": [[40, "pyEDAA.CLITool.Docker.Docker._executablePath"]], "_platform (pyedaa.clitool.docker.docker attribute)": [[40, "pyEDAA.CLITool.Docker.Docker._platform"]], "pyedaa.clitool.docker": [[40, "module-pyEDAA.CLITool.Docker"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandanalyze method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandbind method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandBind.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandcompile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandCompile.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandelaborate method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborate.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandelaborationandrun method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandelaborationorder method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandgeneratedependencies method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandhelp method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandHelp.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandlink method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandLink.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandlistlink method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandListLink.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandrun method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandRun.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandsyntax method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSyntax.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandsynthesize method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.commandversion method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandVersion.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagasserts method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagdisplaydeltacycles method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagexplicit method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagExplicit.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagghwwaveformfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flaggenerics method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagieeeasserts method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagieeeflavor method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flaglibrary method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagmaxdeltacycles method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagmultibytecomments method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagreadwaveformoptionsfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagrelaxed method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagsearchpath method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagstoptime method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagsynopsys method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagsyntesisbindingrule method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagtimeresolution method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagunbufferedio method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagvhdlstandard method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagverbose method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVerbose.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagvitalchecks method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagwarnelaborationchecks method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagwarnnonvitalgenericnames method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagwarnothersspecifications method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagwarnredefineddesignunits method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagwarnreservedwords method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagwarnunboundcomponents method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagwarnunnecessarypackagebody method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagworkingdirectory method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.flagwritewaveformoptionsfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.optionarchitecture method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.optionpaths method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionPaths.AsArgument"]], "asargument() (pyedaa.clitool.ghdl.ghdl.optiontoplevel method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel.AsArgument"]], "ghdl (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL"]], "ghdl.commandanalyze (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze"]], "ghdl.commandbind (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandBind"]], "ghdl.commandcompile (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandCompile"]], "ghdl.commandelaborate (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborate"]], "ghdl.commandelaborationandrun (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun"]], "ghdl.commandelaborationorder (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder"]], "ghdl.commandgeneratedependencies (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies"]], "ghdl.commandhelp (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandHelp"]], "ghdl.commandlink (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandLink"]], "ghdl.commandlistlink (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandListLink"]], "ghdl.commandrun (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandRun"]], "ghdl.commandsyntax (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSyntax"]], "ghdl.commandsynthesize (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize"]], "ghdl.commandversion (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandVersion"]], "ghdl.flagasserts (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts"]], "ghdl.flagdisplaydeltacycles (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles"]], "ghdl.flagexplicit (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagExplicit"]], "ghdl.flagghwwaveformfile (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile"]], "ghdl.flaggenerics (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics"]], "ghdl.flagieeeasserts (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts"]], "ghdl.flagieeeflavor (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor"]], "ghdl.flaglibrary (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary"]], "ghdl.flagmaxdeltacycles (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles"]], "ghdl.flagmultibytecomments (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments"]], "ghdl.flagreadwaveformoptionsfile (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile"]], "ghdl.flagrelaxed (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed"]], "ghdl.flagsearchpath (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath"]], "ghdl.flagstoptime (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime"]], "ghdl.flagsynopsys (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys"]], "ghdl.flagsyntesisbindingrule (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule"]], "ghdl.flagtimeresolution (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution"]], "ghdl.flagunbufferedio (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO"]], "ghdl.flagvhdlstandard (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard"]], "ghdl.flagverbose (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVerbose"]], "ghdl.flagvitalchecks (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks"]], "ghdl.flagwarnelaborationchecks (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks"]], "ghdl.flagwarnnonvitalgenericnames (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames"]], "ghdl.flagwarnothersspecifications (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications"]], "ghdl.flagwarnredefineddesignunits (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits"]], "ghdl.flagwarnreservedwords (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords"]], "ghdl.flagwarnunboundcomponents (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents"]], "ghdl.flagwarnunnecessarypackagebody (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody"]], "ghdl.flagworkingdirectory (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory"]], "ghdl.flagwritewaveformoptionsfile (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile"]], "ghdl.optionarchitecture (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture"]], "ghdl.optionpaths (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionPaths"]], "ghdl.optiontoplevel (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel"]], "ghdlversion (class in pyedaa.clitool.ghdl)": [[41, "pyEDAA.CLITool.GHDL.GHDLVersion"]], "name (pyedaa.clitool.ghdl.ghdl.commandanalyze property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandbind property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandBind.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandcompile property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandCompile.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandelaborate property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborate.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandelaborationandrun property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandelaborationorder property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandgeneratedependencies property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandhelp property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandHelp.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandlink property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandLink.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandlistlink property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandListLink.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandrun property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandRun.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandsyntax property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSyntax.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandsynthesize property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize.Name"]], "name (pyedaa.clitool.ghdl.ghdl.commandversion property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandVersion.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagasserts property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagdisplaydeltacycles property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagexplicit property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagExplicit.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagghwwaveformfile property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flaggenerics property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagieeeasserts property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagieeeflavor property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flaglibrary property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagmaxdeltacycles property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagmultibytecomments property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagreadwaveformoptionsfile property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagrelaxed property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagsearchpath property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagstoptime property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagsynopsys property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagsyntesisbindingrule property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagtimeresolution property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagunbufferedio property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagvhdlstandard property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagverbose property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVerbose.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagvitalchecks property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagwarnelaborationchecks property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagwarnnonvitalgenericnames property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagwarnothersspecifications property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagwarnredefineddesignunits property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagwarnreservedwords property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagwarnunboundcomponents property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagwarnunnecessarypackagebody property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagworkingdirectory property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory.Name"]], "name (pyedaa.clitool.ghdl.ghdl.flagwritewaveformoptionsfile property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile.Name"]], "value (pyedaa.clitool.ghdl.ghdl.flagasserts property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagdisplaydeltacycles property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagghwwaveformfile property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flaggenerics property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagieeeasserts property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagieeeflavor property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flaglibrary property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagmaxdeltacycles property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagreadwaveformoptionsfile property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagsearchpath property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagstoptime property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagtimeresolution property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagunbufferedio property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagvhdlstandard property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagvitalchecks property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagworkingdirectory property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory.Value"]], "value (pyedaa.clitool.ghdl.ghdl.flagwritewaveformoptionsfile property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile.Value"]], "value (pyedaa.clitool.ghdl.ghdl.optionarchitecture property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture.Value"]], "value (pyedaa.clitool.ghdl.ghdl.optionpaths property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionPaths.Value"]], "value (pyedaa.clitool.ghdl.ghdl.optiontoplevel property)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel.Value"]], "__clioptions__ (pyedaa.clitool.ghdl.ghdl attribute)": [[41, "pyEDAA.CLITool.GHDL.GHDL.__cliOptions__"]], "__cliparameters__ (pyedaa.clitool.ghdl.ghdl attribute)": [[41, "pyEDAA.CLITool.GHDL.GHDL.__cliParameters__"]], "__getitem__() (pyedaa.clitool.ghdl.ghdl method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.__getitem__"]], "__init__() (pyedaa.clitool.ghdl.ghdl method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagasserts method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagdisplaydeltacycles method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagghwwaveformfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flaggenerics method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagieeeasserts method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagieeeflavor method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flaglibrary method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagmaxdeltacycles method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagreadwaveformoptionsfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagsearchpath method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagstoptime method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagtimeresolution method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagunbufferedio method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagvhdlstandard method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagvitalchecks method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagworkingdirectory method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.flagwritewaveformoptionsfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.optionarchitecture method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.optionpaths method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionPaths.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdl.optiontoplevel method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel.__init__"]], "__init__() (pyedaa.clitool.ghdl.ghdlversion method)": [[41, "pyEDAA.CLITool.GHDL.GHDLVersion.__init__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandanalyze class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandbind class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandBind.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandcompile class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandCompile.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandelaborate class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborate.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandelaborationandrun class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandelaborationorder class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandgeneratedependencies class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandhelp class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandHelp.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandlink class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandLink.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandlistlink class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandListLink.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandrun class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandRun.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandsyntax class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSyntax.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandsynthesize class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.commandversion class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandVersion.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagasserts class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagdisplaydeltacycles class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagexplicit class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagExplicit.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagghwwaveformfile class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flaggenerics class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagieeeasserts class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagieeeflavor class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flaglibrary class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagmaxdeltacycles class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagmultibytecomments class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagreadwaveformoptionsfile class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagrelaxed class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagsearchpath class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagstoptime class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagsynopsys class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagsyntesisbindingrule class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagtimeresolution class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagunbufferedio class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagvhdlstandard class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagverbose class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVerbose.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagvitalchecks class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagwarnelaborationchecks class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagwarnnonvitalgenericnames class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagwarnothersspecifications class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagwarnredefineddesignunits class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagwarnreservedwords class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagwarnunboundcomponents class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagwarnunnecessarypackagebody class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagworkingdirectory class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.flagwritewaveformoptionsfile class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.optionarchitecture class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.optionpaths class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionPaths.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.ghdl.ghdl.optiontoplevel class method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel.__init_subclass__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandanalyze static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandbind static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandBind.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandcompile static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandCompile.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandelaborate static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborate.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandelaborationandrun static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandelaborationorder static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandgeneratedependencies static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandhelp static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandHelp.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandlink static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandLink.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandlistlink static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandListLink.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandrun static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandRun.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandsyntax static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSyntax.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandsynthesize static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.commandversion static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandVersion.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagasserts static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagdisplaydeltacycles static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagexplicit static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagExplicit.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagghwwaveformfile static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flaggenerics static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagieeeasserts static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagieeeflavor static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flaglibrary static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagmaxdeltacycles static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagmultibytecomments static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagreadwaveformoptionsfile static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagrelaxed static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagsearchpath static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagstoptime static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagsynopsys static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagsyntesisbindingrule static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagtimeresolution static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagunbufferedio static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagvhdlstandard static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagverbose static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVerbose.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagvitalchecks static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagwarnelaborationchecks static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagwarnnonvitalgenericnames static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagwarnothersspecifications static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagwarnredefineddesignunits static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagwarnreservedwords static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagwarnunboundcomponents static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagwarnunnecessarypackagebody static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagworkingdirectory static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.flagwritewaveformoptionsfile static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.optionarchitecture static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.optionpaths static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionPaths.__new__"]], "__new__() (pyedaa.clitool.ghdl.ghdl.optiontoplevel static method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel.__new__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandanalyze method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandbind method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandBind.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandcompile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandCompile.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandelaborate method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborate.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandelaborationandrun method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandelaborationorder method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandgeneratedependencies method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandhelp method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandHelp.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandlink method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandLink.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandlistlink method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandListLink.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandrun method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandRun.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandsyntax method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSyntax.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandsynthesize method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.commandversion method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandVersion.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagasserts method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagdisplaydeltacycles method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagexplicit method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagExplicit.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagghwwaveformfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flaggenerics method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagieeeasserts method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagieeeflavor method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flaglibrary method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagmaxdeltacycles method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagmultibytecomments method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagreadwaveformoptionsfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagrelaxed method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagsearchpath method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagstoptime method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagsynopsys method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagsyntesisbindingrule method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagtimeresolution method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagunbufferedio method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagvhdlstandard method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagverbose method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVerbose.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagvitalchecks method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagwarnelaborationchecks method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagwarnnonvitalgenericnames method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagwarnothersspecifications method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagwarnredefineddesignunits method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagwarnreservedwords method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagwarnunboundcomponents method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagwarnunnecessarypackagebody method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagworkingdirectory method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.flagwritewaveformoptionsfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.optionarchitecture method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.optionpaths method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionPaths.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdl.optiontoplevel method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel.__repr__"]], "__repr__() (pyedaa.clitool.ghdl.ghdlversion method)": [[41, "pyEDAA.CLITool.GHDL.GHDLVersion.__repr__"]], "__str__() (pyedaa.clitool.ghdl.ghdl method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandanalyze method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandAnalyze.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandbind method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandBind.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandcompile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandCompile.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandelaborate method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborate.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandelaborationandrun method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationAndRun.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandelaborationorder method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandElaborationOrder.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandgeneratedependencies method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandGenerateDependencies.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandhelp method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandHelp.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandlink method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandLink.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandlistlink method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandListLink.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandrun method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandRun.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandsyntax method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSyntax.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandsynthesize method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandSynthesize.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.commandversion method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.CommandVersion.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagasserts method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagAsserts.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagdisplaydeltacycles method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagDisplayDeltaCycles.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagexplicit method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagExplicit.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagghwwaveformfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGHWWaveformFile.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flaggenerics method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagGenerics.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagieeeasserts method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEAsserts.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagieeeflavor method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagIEEEFlavor.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flaglibrary method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagLibrary.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagmaxdeltacycles method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMaxDeltaCycles.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagmultibytecomments method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagMultiByteComments.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagreadwaveformoptionsfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagReadWaveformOptionsFile.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagrelaxed method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagRelaxed.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagsearchpath method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSearchPath.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagstoptime method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagStopTime.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagsynopsys method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSynopsys.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagsyntesisbindingrule method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagSyntesisBindingRule.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagtimeresolution method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagTimeResolution.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagunbufferedio method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagUnbufferedIO.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagvhdlstandard method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVHDLStandard.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagverbose method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVerbose.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagvitalchecks method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagVitalChecks.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagwarnelaborationchecks method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnElaborationChecks.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagwarnnonvitalgenericnames method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnNonVitalGenericNames.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagwarnothersspecifications method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnOthersSpecifications.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagwarnredefineddesignunits method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnRedefinedDesignUnits.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagwarnreservedwords method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnReservedWords.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagwarnunboundcomponents method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnboundComponents.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagwarnunnecessarypackagebody method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWarnUnnecessaryPackageBody.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagworkingdirectory method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWorkingDirectory.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.flagwritewaveformoptionsfile method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.FlagWriteWaveformOptionsFile.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.optionarchitecture method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionArchitecture.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.optionpaths method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionPaths.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdl.optiontoplevel method)": [[41, "pyEDAA.CLITool.GHDL.GHDL.OptionTopLevel.__str__"]], "__str__() (pyedaa.clitool.ghdl.ghdlversion method)": [[41, "pyEDAA.CLITool.GHDL.GHDLVersion.__str__"]], "_dryrun (pyedaa.clitool.ghdl.ghdl attribute)": [[41, "pyEDAA.CLITool.GHDL.GHDL._dryRun"]], "_executablenames (pyedaa.clitool.ghdl.ghdl attribute)": [[41, "pyEDAA.CLITool.GHDL.GHDL._executableNames"]], "_executablepath (pyedaa.clitool.ghdl.ghdl attribute)": [[41, "pyEDAA.CLITool.GHDL.GHDL._executablePath"]], "_platform (pyedaa.clitool.ghdl.ghdl attribute)": [[41, "pyEDAA.CLITool.GHDL.GHDL._platform"]], "pyedaa.clitool.ghdl": [[41, "module-pyEDAA.CLITool.GHDL"]], "asargument() (pyedaa.clitool.gtkwave.gtkwave.flagdumpfile method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile.AsArgument"]], "asargument() (pyedaa.clitool.gtkwave.gtkwave.flagsavefile method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile.AsArgument"]], "gtkwave (class in pyedaa.clitool.gtkwave)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave"]], "gtkwave.flagdumpfile (class in pyedaa.clitool.gtkwave)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile"]], "gtkwave.flagsavefile (class in pyedaa.clitool.gtkwave)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile"]], "name (pyedaa.clitool.gtkwave.gtkwave.flagdumpfile property)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile.Name"]], "name (pyedaa.clitool.gtkwave.gtkwave.flagsavefile property)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile.Name"]], "value (pyedaa.clitool.gtkwave.gtkwave.flagdumpfile property)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile.Value"]], "value (pyedaa.clitool.gtkwave.gtkwave.flagsavefile property)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile.Value"]], "__clioptions__ (pyedaa.clitool.gtkwave.gtkwave attribute)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.__cliOptions__"]], "__cliparameters__ (pyedaa.clitool.gtkwave.gtkwave attribute)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.__cliParameters__"]], "__getitem__() (pyedaa.clitool.gtkwave.gtkwave method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.__getitem__"]], "__init__() (pyedaa.clitool.gtkwave.gtkwave method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.__init__"]], "__init__() (pyedaa.clitool.gtkwave.gtkwave.flagdumpfile method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile.__init__"]], "__init__() (pyedaa.clitool.gtkwave.gtkwave.flagsavefile method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile.__init__"]], "__init_subclass__() (pyedaa.clitool.gtkwave.gtkwave class method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.gtkwave.gtkwave.flagdumpfile class method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile.__init_subclass__"]], "__init_subclass__() (pyedaa.clitool.gtkwave.gtkwave.flagsavefile class method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile.__init_subclass__"]], "__new__() (pyedaa.clitool.gtkwave.gtkwave.flagdumpfile static method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile.__new__"]], "__new__() (pyedaa.clitool.gtkwave.gtkwave.flagsavefile static method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile.__new__"]], "__repr__() (pyedaa.clitool.gtkwave.gtkwave method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.__repr__"]], "__repr__() (pyedaa.clitool.gtkwave.gtkwave.flagdumpfile method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile.__repr__"]], "__repr__() (pyedaa.clitool.gtkwave.gtkwave.flagsavefile method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile.__repr__"]], "__str__() (pyedaa.clitool.gtkwave.gtkwave method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.__str__"]], "__str__() (pyedaa.clitool.gtkwave.gtkwave.flagdumpfile method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagDumpFile.__str__"]], "__str__() (pyedaa.clitool.gtkwave.gtkwave.flagsavefile method)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave.FlagSaveFile.__str__"]], "_dryrun (pyedaa.clitool.gtkwave.gtkwave attribute)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave._dryRun"]], "_executablenames (pyedaa.clitool.gtkwave.gtkwave attribute)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave._executableNames"]], "_executablepath (pyedaa.clitool.gtkwave.gtkwave attribute)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave._executablePath"]], "_platform (pyedaa.clitool.gtkwave.gtkwave attribute)": [[42, "pyEDAA.CLITool.GTKWave.GTKWave._platform"]], "pyedaa.clitool.gtkwave": [[42, "module-pyEDAA.CLITool.GTKWave"]], "pyedaa.clitool.intelfpga": [[43, "module-pyEDAA.CLITool.IntelFPGA"]], "pyedaa.clitool.lattice": [[44, "module-pyEDAA.CLITool.Lattice"]], "pyedaa.clitool.mentor": [[45, "module-pyEDAA.CLITool.Mentor"]], "pyedaa.clitool.xilinx": [[46, "module-pyEDAA.CLITool.Xilinx"]]}}) \ No newline at end of file diff --git a/typing/html/CLITool/Aldec/ActiveHDL.py.html b/typing/html/CLITool/Aldec/ActiveHDL.py.html new file mode 100644 index 00000000..c1b6938e --- /dev/null +++ b/typing/html/CLITool/Aldec/ActiveHDL.py.html @@ -0,0 +1,225 @@ + + + + + + +

CLITool.Aldec.ActiveHDL

+ + + + + + +
CLITool/Aldec/ActiveHDL.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for Active-HDL."""
+from pyTooling.Decorators               import export
+from pyTooling.CLIAbstraction           import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument  import StringArgument, PathArgument
+from pyTooling.CLIAbstraction.Flag      import LongFlag
+from pyTooling.CLIAbstraction.ValuedTupleFlag import ShortTupleFlag
+from pyEDAA.CLITool                     import ToolMixIn
+
+
+@export
+class VHDLLibraryTool(Executable, ToolMixIn):
+	"""Abstraction of Active-HDL's VHDL library management tool ``vlib``."""
+
+	_executableNames = {
+		"Linux":   "vlib",
+		"Windows": "vlib.exe"
+	}
+
+	@CLIArgument()
+	class ValueLibraryName(StringArgument):
+		"""Name of the VHDL library."""
+
+
+@export
+class VHDLCompiler(Executable, ToolMixIn):
+	"""Abstraction of Active-HDL's VHDL compiler ``vcom``."""
+
+	_executableNames = {
+		"Linux":   "vcom",
+		"Windows": "vcom.exe"
+	}
+
+	@CLIArgument()
+	class FlagNoRangeCheck(LongFlag, name="norangecheck"): ...
+
+	@CLIArgument()
+	class SwitchVHDLVersion(StringArgument, pattern="-{0}"):
+		"""Option to set the VHDL language revision."""
+
+	@CLIArgument()
+	class SwitchVHDLLibrary(ShortTupleFlag, name="work"):
+		"""
+		Option to set the VHDL library the design file is compiled into.
+
+		Also known as *working library*.
+		"""
+
+	@CLIArgument()
+	class ArgSourceFile(PathArgument):
+		"""The path to a VHDL source file."""
+
+	# -reorder                      enables automatic file ordering
+	# -O[0 | 1 | 2 | 3]             set optimization level
+	# -93                                conform to VHDL 1076-1993
+	# -2002                              conform to VHDL 1076-2002 (default)
+	# -2008                              conform to VHDL 1076-2008
+	# -relax                             allow 32-bit integer literals
+	# -incr                              switching compiler to fast incremental mode
+
+
+@export
+class VHDLSimulator(Executable, ToolMixIn):
+	"""Abstraction of Active-HDL's simulator ``vsim``."""
+
+	_executableNames = {
+		"Linux":   "vsim",
+		"Windows": "vsim.exe"
+	}
+
+	@CLIArgument()
+	class SwitchBatchCommand(ShortTupleFlag, name="do"):
+		"""Tcl command(s) to execute in the simulator."""
+
+ + diff --git a/typing/html/CLITool/Aldec/RivieraPRO.py.html b/typing/html/CLITool/Aldec/RivieraPRO.py.html new file mode 100644 index 00000000..e9018e2d --- /dev/null +++ b/typing/html/CLITool/Aldec/RivieraPRO.py.html @@ -0,0 +1,214 @@ + + + + + + +

CLITool.Aldec.RivieraPRO

+ + + + + + +
CLITool/Aldec/RivieraPRO.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for Riviera-PRO."""
+from pyTooling.Decorators               import export
+from pyTooling.CLIAbstraction           import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument  import StringArgument, PathArgument
+from pyTooling.CLIAbstraction.Flag      import ShortFlag
+from pyTooling.CLIAbstraction.ValuedTupleFlag import ShortTupleFlag
+from pyEDAA.CLITool                     import ToolMixIn
+
+
+@export
+class VHDLLibraryTool(Executable, ToolMixIn):
+	"""Abstraction of Riviera-PRO's VHDL library management tool ``vlib``."""
+
+	_executableNames = {
+		"Linux":   "vlib",
+		"Windows": "vlib.exe"
+	}
+
+	@CLIArgument()
+	class SwitchLibraryName(StringArgument): ...
+
+
+class VHDLCompiler(Executable, ToolMixIn):
+	"""Abstraction of Riviera-PRO's VHDL compiler ``vcom``."""
+
+	_executableNames = {
+		"Linux":   "vcom",
+		"Windows": "vcom.exe"
+	}
+
+	# class FlagNoRangeCheck(metaclass=LongFlagArgument):
+	# 	_name =   "norangecheck"
+
+	@CLIArgument()
+	class SwitchVHDLVersion(StringArgument, pattern="-{0}"): ...
+
+	@CLIArgument()
+	class SwitchVHDLLibrary(ShortTupleFlag, name="work"): ...
+
+	@CLIArgument()
+	class ArgSourceFile(PathArgument): ...
+
+
+@export
+class VHDLSimulator(Executable, ToolMixIn):
+	"""Abstraction of Riviera-PRO's HDL simulator ``vsim``."""
+
+	_executableNames = {
+		"Linux":   "vsim",
+		"Windows": "vsim.exe"
+	}
+
+	@CLIArgument()
+	class SwitchBatchCommand(ShortTupleFlag, name="do"):
+		"""Specify a Tcl batch script for the batch mode."""
+
+	@CLIArgument()
+	class FlagCommandLineMode(ShortFlag, name="c"):
+		"""Run simulation in command line mode."""
+
+	@CLIArgument()
+	class SwitchTimeResolution(ShortTupleFlag, name="t"):   # -t [1|10|100]fs|ps|ns|us|ms|sec  Time resolution limit
+		"""Set simulation time resolution."""
+
+	@CLIArgument()
+	class SwitchTopLevel(StringArgument):
+		"""The top-level for simulation."""
+
+ + diff --git a/typing/html/CLITool/Aldec/__init__.py.html b/typing/html/CLITool/Aldec/__init__.py.html new file mode 100644 index 00000000..e8f18b0f --- /dev/null +++ b/typing/html/CLITool/Aldec/__init__.py.html @@ -0,0 +1,80 @@ + + + + + + +

CLITool.Aldec

+ + + + + + +
CLITool/Aldec/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This package contains the CLI abstraction layer for Aldec tools."""
+
+ + diff --git a/typing/html/CLITool/Docker.py.html b/typing/html/CLITool/Docker.py.html new file mode 100644 index 00000000..e00163b7 --- /dev/null +++ b/typing/html/CLITool/Docker.py.html @@ -0,0 +1,175 @@ + + + + + + +

CLITool.Docker

+ + + + + + +
CLITool/Docker.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2021-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for `GHDL <https://github.com/ghdl/ghdl>`__."""
+from pyTooling.Decorators import export
+
+from pyTooling.CLIAbstraction            import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument   import ExecutableArgument, StringArgument
+from pyTooling.CLIAbstraction.Command    import CommandArgument
+from pyTooling.CLIAbstraction.Flag       import LongFlag
+from pyTooling.CLIAbstraction.ValuedTupleFlag import LongTupleFlag
+
+
+@export
+class Docker(Executable):
+	_executableNames = {
+		"Darwin":  "docker",
+		"Linux":   "docker",
+		"Windows": "docker.exe"
+	}
+
+	# 'version' sub commands and options
+	@CLIArgument()
+	class CommandVersion(CommandArgument, name="version"): ...
+
+	# 'container' sub commands and options
+	@CLIArgument()
+	class CommandContainer(CommandArgument, name="container"): ...
+
+	@CLIArgument()
+	class CommandRun(CommandArgument, name="run"): ...
+
+	@CLIArgument()
+	class FlagContainerName(LongTupleFlag, name="name"): ...
+
+	@CLIArgument()
+	class FlagRemoveContainer(LongFlag, name="rm"): ...
+
+	@CLIArgument()
+	class FlagMount(LongTupleFlag, name="mount"): ...
+
+	@CLIArgument()
+	class FlagVolume(LongTupleFlag, name="volume"): ...
+
+	@CLIArgument()
+	class ValueImageName(StringArgument): ...
+
+	@CLIArgument()
+	class ValueCommand(StringArgument): ...
+
+	@CLIArgument()
+	class Executable(ExecutableArgument): ...  # XXX: no argument here
+
+ + diff --git a/typing/html/CLITool/GHDL.py.html b/typing/html/CLITool/GHDL.py.html new file mode 100644 index 00000000..e367abb4 --- /dev/null +++ b/typing/html/CLITool/GHDL.py.html @@ -0,0 +1,985 @@ + + + + + + +

CLITool.GHDL

+ + + + + + +
CLITool/GHDL.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+288
+289
+290
+291
+292
+293
+294
+295
+296
+297
+298
+299
+300
+301
+302
+303
+304
+305
+306
+307
+308
+309
+310
+311
+312
+313
+314
+315
+316
+317
+318
+319
+320
+321
+322
+323
+324
+325
+326
+327
+328
+329
+330
+331
+332
+333
+334
+335
+336
+337
+338
+339
+340
+341
+342
+343
+344
+345
+346
+347
+348
+349
+350
+351
+352
+353
+354
+355
+356
+357
+358
+359
+360
+361
+362
+363
+364
+365
+366
+367
+368
+369
+370
+371
+372
+373
+374
+375
+376
+377
+378
+379
+380
+381
+382
+383
+384
+385
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400
+401
+402
+403
+404
+405
+406
+407
+408
+409
+410
+411
+412
+413
+414
+415
+416
+417
+418
+419
+420
+421
+422
+423
+424
+425
+426
+427
+428
+429
+430
+431
+432
+433
+434
+435
+436
+437
+438
+439
+440
+441
+442
+443
+444
+445
+446
+447
+448
+449
+450
+451
+452
+453
+454
+455
+456
+457
+458
+459
+460
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for `GHDL <https://github.com/ghdl/ghdl>`__."""
+from re                   import search as re_search
+from typing               import Union, Iterable, Tuple
+
+from pyTooling.Decorators import export
+from pyVHDLModel          import VHDLVersion
+
+from pyTooling.CLIAbstraction               import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument      import PathListArgument, StringArgument
+from pyTooling.CLIAbstraction.Command       import CommandArgument
+from pyTooling.CLIAbstraction.Flag          import ShortFlag, LongFlag
+from pyTooling.CLIAbstraction.BooleanFlag   import LongBooleanFlag
+from pyTooling.CLIAbstraction.ValuedFlag    import ShortValuedFlag, LongValuedFlag
+from pyTooling.CLIAbstraction.KeyValueFlag  import ShortKeyValueFlag
+
+from pyEDAA.CLITool       import CLIToolException
+
+
+@export
+class GHDLVersion:
+	_major: int
+	_minor: int
+	_micro: int
+	_dev: bool
+	_commitsSinceLastTag: int
+	_gitHash: str
+	_dirty: bool
+	_edition: str
+	_gnatCompiler: Tuple[int, int, int]
+	_backend: str
+
+	def __init__(self, versionLine: str, gnatLine: str, backendLine: str):
+		match = re_search(
+			r"GHDL"
+			r"\s(?P<major>\d+)"
+			r"\.(?P<minor>\d+)"
+			r"\.(?P<micro>\d+)"
+			r"(?:-(?P<suffix>dev))?"
+			r"\s\("
+			r"(?P<major2>\d+)"
+			r"\.(?P<minor2>\d+)"
+			r"\.(?P<micro2>\d+)"
+			r"\.(?:r(?P<cslt>\d+))"
+			r"\.(?:g(?P<hash>[0-9a-f]+))"
+			r"(?:\.(?P<dirty>dirty))?"
+			r"\)\s"
+			r"\[(?P<edition>[\w\s]+)\]",
+			versionLine)
+
+		if match is None:
+			raise CLIToolException(f"Unknown first GHDL version string '{versionLine}'.")
+
+		self._major = int(match["major"])
+		self._minor = int(match["minor"])
+		self._micro = int(match["micro"])
+		self._dev = "dev" in match.groups()
+		self._commitsSinceLastTag = int(match["cslt"])
+		self._gitHash = match["hash"]
+		self._dirty = "dirty" in match.groups()
+		self._edition = match["edition"]
+
+		match = re_search(
+			r"\s*[\w\s]+:\s(?P<major>\d+)\.(?P<minor>\d+)\.(?P<micro>\d+)", gnatLine)
+
+		if match is None:
+			raise CLIToolException(f"Unknown second GHDL version string '{gnatLine}'.")
+
+		self._gnatCompiler = (match["major"], match["minor"], match["micro"])
+
+		match = re_search(
+			r"\s*(?P<backend>\w+)\scode\sgenerator", backendLine)
+
+		if match is None:
+			raise CLIToolException(f"Unknown third GHDL version string '{backendLine}'.")
+
+		self._backend = match["backend"]
+
+	@property
+	def Major(self) -> int:
+		return self._major
+
+	@property
+	def Minor(self) -> int:
+		return self._minor
+
+	@property
+	def Micro(self) -> int:
+		return self._micro
+
+	@property
+	def Dev(self) -> bool:
+		return self._dev
+
+	@property
+	def CommitsSinceLastTag(self) -> int:
+		return self._commitsSinceLastTag
+
+	@property
+	def GitHash(self) -> str:
+		return self._gitHash
+
+	@property
+	def Dirty(self) -> bool:
+		return self._dirty
+
+	@property
+	def Edition(self) -> str:
+		return self._edition
+
+	def __str__(self) -> str:
+		dev = f"-dev" if self._dev else ""
+		return f"{self._major}.{self._minor}.{self._micro}{dev}"
+
+	def __repr__(self) -> str:
+		return f"{self.__str__()} (Backend: {self._backend}; Git: {self._gitHash})"
+
+
+@export
+class GHDL(Executable):
+	_executableNames = {
+		"Darwin":  "ghdl",
+		"Linux":   "ghdl",
+		"Windows": "ghdl.exe"
+	}
+
+	# XXX: overwrite __init__ and get backend variant
+	# XXX: check for compatible backends
+
+	@CLIArgument()
+	class CommandHelp(CommandArgument, name="help"):
+		"""Print help page(s)."""
+
+	@CLIArgument()
+	class CommandVersion(CommandArgument, name="version"):
+		"""Print version information."""
+
+	@CLIArgument()
+	class CommandSyntax(CommandArgument, name="syntax"):
+		"""Check syntax."""
+
+	@CLIArgument()
+	class CommandElaborationOrder(CommandArgument, name="elab-order"):
+		"""Display (elaboration) ordered source files."""
+
+	@CLIArgument()
+	class CommandAnalyze(CommandArgument, name="analyze"):
+		"""Analyze VHDL source file(s)."""
+
+	@CLIArgument()
+	class CommandElaborate(CommandArgument, name="elaborate"):
+		"""Elaborate design."""
+
+	@CLIArgument()
+	class CommandElaborationAndRun(CommandArgument, name="elab-run"):
+		"""Elaborate and simulate design."""
+
+	@CLIArgument()
+	class CommandRun(CommandArgument, name="run"):
+		"""Simulate design."""
+
+	@CLIArgument()
+	class CommandBind(CommandArgument, name="bind"):
+		"""Bind design unit."""
+
+	@CLIArgument()
+	class CommandLink(CommandArgument, name="link"):
+		"""Link design unit."""
+
+	@CLIArgument()
+	class CommandListLink(CommandArgument, name="list-link"):
+		"""List objects file to link a design unit."""
+
+	@CLIArgument()
+	class CommandCompile(CommandArgument, name="compile"):
+		"""Generate whole sequence to elaborate design from files."""
+
+	@CLIArgument()
+	class CommandGenerateDependencies(CommandArgument, name="gen-depends"):
+		"""Generate dependencies of design."""
+
+	@CLIArgument()
+	class CommandSynthesize(CommandArgument, name="synth"):
+		"""Synthesis from design unit."""
+
+	@CLIArgument()
+	class FlagVerbose(ShortFlag, name="v"):
+		"""Run in verbose mode (print more messages)."""
+
+	# Analyze and elaborate options
+	@CLIArgument()
+	class FlagVHDLStandard(LongValuedFlag, name="std"):
+		"""Set the used VHDL standard version."""
+		_value: VHDLVersion
+
+		def __init__(self, value: VHDLVersion):
+			if value is None:
+				raise ValueError(f"")  # XXX: add message
+
+			self._value = value
+
+		@property
+		def Value(self) -> VHDLVersion:
+			return self._value
+
+		@Value.setter
+		def Value(self, value: VHDLVersion) -> None:
+			if value is None:
+				raise ValueError(f"")  # XXX: add message
+
+			self._value = value
+
+		def AsArgument(self) -> Union[str, Iterable[str]]:
+			if self._name is None:
+				raise ValueError(f"")  # XXX: add message
+
+			return self._pattern.format(self._name, str(self._value)[-2:])
+
+	@CLIArgument()
+	class FlagIEEEFlavor(LongValuedFlag, name="ieee"):
+		"""Set the used VHDL flavor."""
+
+	@CLIArgument()
+	class FlagSynopsys(ShortFlag, name="fsynopsys"):
+		"""Set used VHDL flavor to *Synopsys* and make Synopsys packages visible in library ``ìeee``."""
+
+	@CLIArgument()
+	class FlagRelaxed(ShortFlag, name="frelaxed"):
+		"""Relax some LRM rules."""
+
+	@CLIArgument()
+	class FlagExplicit(ShortFlag, name="fexplicit"): ...
+
+	@CLIArgument()
+	class FlagLibrary(LongValuedFlag, name="work"):
+		"""Set working library."""
+
+	@CLIArgument()
+	class FlagWorkingDirectory(LongValuedFlag, name="workdir"):
+		"""Set working directory."""
+
+	@CLIArgument()
+	class FlagMultiByteComments(LongFlag, name="mb-comments"):
+		"""Allow multi-byte comments."""
+
+	@CLIArgument()
+	class FlagSyntesisBindingRule(LongFlag, name="syn-binding"):
+		"""Enable synthesis binding rule."""
+
+	@CLIArgument()
+	class FlagSearchPath(ShortValuedFlag, name="P", pattern="-{0}{1}"):
+		"""Add search path."""
+
+	@CLIArgument()
+	class FlagTimeResolution(LongValuedFlag, name="time-resolution"):
+		"""Set base time resolution.
+
+		Allowed values are ``auto`` (default), ``fs``, ``ps``, ``ns``, ``us``, ``ms`` or ``sec``.
+		"""
+
+	@CLIArgument()
+	class FlagVitalChecks(LongBooleanFlag, name="vital-checks", pattern="-{0}", falsePattern="--no-{0}"):
+		"""Check VITAL restrictions."""
+
+	@CLIArgument()
+	class FlagWarnUnboundComponents(ShortFlag, name="binding", pattern="-W{0}"):
+		"""Warns for unbound components."""
+
+	@CLIArgument()
+	class FlagWarnReservedWords(ShortFlag, name="reserved", pattern="-W{0}"):
+		"""Warns if VHDL'93 reserved words are used in VHDL'87."""
+
+	@CLIArgument()
+	class FlagWarnRedefinedDesignUnits(ShortFlag, name="library", pattern="-W{0}"):
+		"""Warns for redefined design unit."""
+
+	@CLIArgument()
+	class FlagWarnNonVitalGenericNames(ShortFlag, name="vital-generic", pattern="-W{0}"):
+		"""Warns of non-vital generic names."""
+
+	@CLIArgument()
+	class FlagWarnElaborationChecks(ShortFlag, name="delayed-checks", pattern="-W{0}"):
+		"""Warns for checks performed at elaboration."""
+
+	@CLIArgument()
+	class FlagWarnUnnecessaryPackageBody(ShortFlag, name="body", pattern="-W{0}"):
+		"""Warns for unnecessary package body."""
+
+	@CLIArgument()
+	class FlagWarnOthersSpecifications(ShortFlag, name="specs", pattern="-W{0}"):
+		"""Warns if an all/others specification does not apply."""
+
+	@CLIArgument()
+	class FlagSyntesisBindingRule(ShortFlag, name="unused", pattern="-W{0}"):
+		"""Warns for unused subprograms."""
+
+	@CLIArgument()
+	class FlagSyntesisBindingRule(ShortFlag, name="error", pattern="-W{0}"):
+		"""Turns warnings into errors."""
+
+	@CLIArgument()
+	class OptionPaths(PathListArgument):
+		"""Add list of VHDL files to analyze."""
+
+	@CLIArgument()
+	class OptionTopLevel(StringArgument):
+		"""Specify the toplevel design unit."""
+
+	@CLIArgument()
+	class OptionArchitecture(StringArgument):
+		"""Specify the architecture name, if the toplevel design unit is an entity."""
+
+	@CLIArgument()
+	class FlagGenerics(ShortKeyValueFlag, pattern="-{0}{1}={2}"):
+		"""Set a generic value."""
+
+	@CLIArgument()
+	class FlagAsserts(ShortValuedFlag, name="asserts"):
+		"""Select how assertions are handled.
+
+		It can be ``enable`` (the default), ``disable`` which disables all assertions and ``disable-at-0`` which disables
+		only at the start of simulation.
+		"""
+
+	@CLIArgument()
+	class FlagIEEEAsserts(ShortValuedFlag, name="ieee-asserts"):
+		"""Select how assertions are handled.
+
+		It can be ``enable`` (the default), ``disable`` which disables all assertions and ``disable-at-0`` which disables
+		only at the start of simulation.
+		"""
+
+	@CLIArgument()
+	class FlagStopTime(ShortValuedFlag, name="stop-time"):
+		"""Stop the simulation after a given simulation time.
+
+		The time is expressed as a time value, without any spaces. The time is the simulation time, not the real execution time.
+		"""
+
+	@CLIArgument()
+	class FlagMaxDeltaCycles(ShortValuedFlag, name="stop-delta"):
+		"""Stop the simulation after N delta cycles in the same current time."""
+
+	@CLIArgument()
+	class FlagDisplayDeltaCycles(ShortValuedFlag, name="disp-time"):
+		"""Display the time and delta cycle number as simulation advances."""
+
+	@CLIArgument()
+	class FlagUnbufferedIO(ShortValuedFlag, name="unbuffered"):
+		"""Disable buffering on STDOUT, STDERR and files opened in write or append mode (TEXTIO)."""
+
+	@CLIArgument()
+	class FlagReadWaveformOptionsFile(ShortValuedFlag, name="read-wave-opt"):
+		"""Filter signals to be dumped to the waveform file according to the wavefile option file provided."""
+
+	@CLIArgument()
+	class FlagWriteWaveformOptionsFile(ShortValuedFlag, name="write-wave-opt"):
+		"""If the wavefile option file doesn’t exist, creates it with all the signals of the design.
+		Otherwise, it throws an error, because it won’t erase an existing file.
+		"""
+
+	@CLIArgument()
+	class FlagGHWWaveformFile(ShortValuedFlag, name="wave"):
+		"""Write the waveforms into a GHDL Waveform (``*.ghw``) file.
+
+		Contrary to VCD files, any VHDL type can be dumped into a GHW file.
+		"""
+
+	def _CopyParameters(self, tool: "GHDL") -> None:
+		for key in self.__cliParameters__:
+			if self._NeedsParameterInitialization(key):
+				value = self.__cliParameters__[key].Value
+				tool.__cliParameters__[key] = key(value)
+			else:
+				tool.__cliParameters__[key] = key()
+
+	def _SetParameters(self, tool: "GHDL", std: VHDLVersion = None, ieee: str = None):
+		if std is not None:
+			tool[self.FlagVHDLStandard] = str(std)
+
+		if ieee is not None:
+			tool[self.FlagVHDLStandard] = ieee
+
+	def GetGHDLAsAnalyzer(self, std: VHDLVersion = None, ieee: str = None):
+		tool = GHDL(executablePath=self._executablePath)
+
+		tool[tool.CommandAnalyze] = True
+		self._CopyParameters(tool)
+		self._SetParameters(tool, std, ieee)
+
+		return tool
+
+	def GetGHDLAsElaborator(self, std: VHDLVersion = None, ieee: str = None):
+		tool = GHDL(executablePath=self._executablePath)
+
+		tool[tool.CommandElaborate] = True
+		self._CopyParameters(tool)
+		self._SetParameters(tool, std, ieee)
+
+		return tool
+
+	def GetGHDLAsSimulator(self, std: VHDLVersion = None, ieee: str = None):
+		tool = GHDL(executablePath=self._executablePath)
+
+		tool[tool.CommandRun] = True
+		self._CopyParameters(tool)
+		self._SetParameters(tool, std, ieee)
+
+		return tool
+
+	def Help(self):
+		tool = GHDL(executablePath=self._executablePath)
+
+		tool[tool.CommandHelp] = True
+
+		tool.StartProcess()
+		return "\n".join(tool.GetLineReader())
+
+	def Version(self):
+		tool = GHDL(executablePath=self._executablePath)
+
+		tool[tool.CommandVersion] = True
+
+		tool.StartProcess()
+		iterator = iter(tool.GetLineReader())
+		firstLine = next(iterator)
+		secondLine = next(iterator)
+		thirdLine = next(iterator)
+
+		return GHDLVersion(firstLine, secondLine, thirdLine)
+
+ + diff --git a/typing/html/CLITool/GTKWave.py.html b/typing/html/CLITool/GTKWave.py.html new file mode 100644 index 00000000..d8bd21cf --- /dev/null +++ b/typing/html/CLITool/GTKWave.py.html @@ -0,0 +1,123 @@ + + + + + + +

CLITool.GTKWave

+ + + + + + +
CLITool/GTKWave.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for `GTKWave <https://github.com/gtkwave/gtkwave>`__."""
+from pyTooling.Decorators import export
+
+from pyTooling.CLIAbstraction            import CLIArgument, Executable
+from pyTooling.CLIAbstraction.ValuedFlag import LongValuedFlag
+
+
+@export
+class GTKWave(Executable):
+	_executableNames = {
+		"Darwin":  "gtkwave",
+		"Linux":   "gtkwave",
+		"Windows": "gtkwave.exe"
+	}
+
+	@CLIArgument()
+	class FlagDumpFile(LongValuedFlag, name="dump"):
+		"""Waveform file to load."""
+
+	@CLIArgument()
+	class FlagSaveFile(LongValuedFlag, name="save"):
+		"""Load waveform settings file."""
+
+ + diff --git a/typing/html/CLITool/IntelFPGA/Quartus.py.html b/typing/html/CLITool/IntelFPGA/Quartus.py.html new file mode 100644 index 00000000..aeb36ee7 --- /dev/null +++ b/typing/html/CLITool/IntelFPGA/Quartus.py.html @@ -0,0 +1,156 @@ + + + + + + +

CLITool.IntelFPGA.Quartus

+ + + + + + +
CLITool/IntelFPGA/Quartus.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for Quartus."""
+from pyTooling.Decorators               import export
+from pyTooling.CLIAbstraction           import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument  import StringArgument
+from pyTooling.CLIAbstraction.Flag      import ShortFlag
+from pyTooling.CLIAbstraction.ValuedFlag import ShortValuedFlag, LongValuedFlag
+from pyEDAA.CLITool                     import ToolMixIn
+
+
+@export
+class Map(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "quartus_map",
+		"Windows": "quartus_map.exe"
+	}
+
+	@CLIArgument()
+	class ArgProjectName(StringArgument): ...
+
+	@CLIArgument()
+	class SwitchArgumentFile(ShortValuedFlag, name="f"): ...
+
+	@CLIArgument()
+	class SwitchDeviceFamily(LongValuedFlag, name="family"): ...
+
+	@CLIArgument()
+	class SwitchDevicePart(LongValuedFlag, name="part"): ...
+
+
+@export
+class TclShell(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "quartus_sh",
+		"Windows": "quartus_sh.exe"
+	}
+
+	@CLIArgument()
+	class SwitchShell(ShortFlag, name="s"): ...
+
+ + diff --git a/typing/html/CLITool/IntelFPGA/__init__.py.html b/typing/html/CLITool/IntelFPGA/__init__.py.html new file mode 100644 index 00000000..5ec1b0c7 --- /dev/null +++ b/typing/html/CLITool/IntelFPGA/__init__.py.html @@ -0,0 +1,80 @@ + + + + + + +

CLITool.IntelFPGA

+ + + + + + +
CLITool/IntelFPGA/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This package contains the CLI abstraction layer for IntelFPGA (former Altera) tools."""
+
+ + diff --git a/typing/html/CLITool/Lattice/Diamond.py.html b/typing/html/CLITool/Lattice/Diamond.py.html new file mode 100644 index 00000000..a76e1f97 --- /dev/null +++ b/typing/html/CLITool/Lattice/Diamond.py.html @@ -0,0 +1,111 @@ + + + + + + +

CLITool.Lattice.Diamond

+ + + + + + +
CLITool/Lattice/Diamond.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for Diamond."""
+from pyTooling.Decorators               import export
+from pyTooling.CLIAbstraction           import CLIArgument, Executable
+from pyTooling.CLIAbstraction.ValuedTupleFlag import ShortTupleFlag
+from pyEDAA.CLITool                     import ToolMixIn
+
+
+@export
+class Synth(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "synthesis",
+		"Windows": "synthesis.exe"
+	}
+
+	@CLIArgument()
+	class SwitchProjectFile(ShortTupleFlag, name="f"): ...
+
+ + diff --git a/typing/html/CLITool/Lattice/__init__.py.html b/typing/html/CLITool/Lattice/__init__.py.html new file mode 100644 index 00000000..d8eb018a --- /dev/null +++ b/typing/html/CLITool/Lattice/__init__.py.html @@ -0,0 +1,80 @@ + + + + + + +

CLITool.Lattice

+ + + + + + +
CLITool/Lattice/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This package contains the CLI abstraction layer for Lattice tools."""
+
+ + diff --git a/typing/html/CLITool/Mentor/ModelSim.py.html b/typing/html/CLITool/Mentor/ModelSim.py.html new file mode 100644 index 00000000..fc0c87f5 --- /dev/null +++ b/typing/html/CLITool/Mentor/ModelSim.py.html @@ -0,0 +1,599 @@ + + + + + + +

CLITool.Mentor.ModelSim

+ + + + + + +
CLITool/Mentor/ModelSim.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242
+243
+244
+245
+246
+247
+248
+249
+250
+251
+252
+253
+254
+255
+256
+257
+258
+259
+260
+261
+262
+263
+264
+265
+266
+267
+268
+269
+270
+271
+272
+273
+274
+275
+276
+277
+278
+279
+280
+281
+282
+283
+284
+285
+286
+287
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for ModelSim."""
+from enum import Enum
+
+from flags import Flags
+
+from pyTooling.Decorators               import export
+from pyTooling.CLIAbstraction           import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument  import StringArgument
+from pyTooling.CLIAbstraction.Flag      import ShortFlag
+from pyTooling.CLIAbstraction.OptionalValuedFlag import OptionalValuedFlag
+from pyTooling.CLIAbstraction.ValuedTupleFlag import ShortTupleFlag
+from pyEDAA.CLITool                     import ToolMixIn
+
+
+@export
+class OptionalModelSimMinusArgument(OptionalValuedFlag, pattern="-{0}", patternWithValue="-{0} {1}"):
+	pass
+
+
+@export
+class OptionalModelSimPlusArgument(OptionalValuedFlag, pattern="-{0}", patternWithValue="+{0} {1}"):
+	pass
+
+
+@export
+class VHDLLibraryTool(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "vlib",
+		"Windows": "vlib.exe"
+	}
+
+	@CLIArgument()
+	class ValueLibraryName(StringArgument):
+		"""VHDL library name to create."""
+
+@export
+class VHDLCompilerCoverageOptions(Flags):
+	__no_flags_name__ =   "Default"
+	__all_flags_name__ =  "All"
+	Statement =           "s"
+	Branch =              "b"
+	Condition =           "c"
+	Expression =          "e"
+	StateMachine =        "f"
+	Toggle =              "t"
+
+	def __str__(self):
+		return "".join([i.value for i in self])
+
+
+@export
+class VHDLCompilerFSMVerbosityLevel(Enum):
+	Default =         ""
+	Basic =           "b"
+	TransitionTable = "t"
+	AnyWarning =      "w"
+
+	def __str__(self):
+		return self.value
+
+
+@export
+class VHDLCompiler(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "vcom",
+		"Windows": "vcom.exe"
+	}
+
+	@CLIArgument()
+	class FlagTime(ShortFlag, name="time"):
+		"""Print the compilation wall clock time."""
+
+	@CLIArgument()
+	class FlagExplicit(ShortFlag, name="explicit"): ...
+
+	@CLIArgument()
+	class FlagQuietMode(ShortFlag, name="quiet"):
+		"""Do not report 'Loading...' messages."""
+
+	@CLIArgument()
+	class SwitchModelSimIniFile(ShortTupleFlag, name="modelsimini"): ...
+
+	@CLIArgument()
+	class FlagRangeCheck(ShortFlag, name="rangecheck"): ...
+
+	@CLIArgument()
+	class SwitchCoverage(OptionalModelSimPlusArgument, name="cover"): ...
+
+	@CLIArgument()
+	class FlagEnableFocusedExpressionCoverage(ShortFlag, name="coverfec"): ...
+
+	@CLIArgument()
+	class FlagDisableFocusedExpressionCoverage(ShortFlag, name="nocoverfec"): ...
+
+	@CLIArgument()
+	class FlagEnableRapidExpressionCoverage(ShortFlag, name="coverrec"): ...
+
+	@CLIArgument()
+	class FlagDisableRapidExpressionCoverage(ShortFlag, name="nocoverrec"): ...
+
+	@CLIArgument()
+	class FlagEnableRecognitionOfImplicitFSMResetTransitions(ShortFlag, name="fsmresettrans"): ...
+
+	@CLIArgument()
+	class FlagDisableRecognitionOfImplicitFSMResetTransitions(ShortFlag, name="nofsmresettrans"): ...
+
+	@CLIArgument()
+	class FlagEnableRecognitionOfSingleBitFSMState(ShortFlag, name="fsmsingle"): ...
+
+	@CLIArgument()
+	class FlagDisableRecognitionOfSingleBitFSMState(ShortFlag, name="nofsmsingle"): ...
+
+	@CLIArgument()
+	class FlagEnableRecognitionOfImplicitFSMTransitions(ShortFlag, name="fsmimplicittrans"): ...
+
+	@CLIArgument()
+	class FlagDisableRecognitionOfImplicitFSMTransitions(ShortFlag, name="nofsmimplicittrans"): ...
+
+	@CLIArgument()
+	class SwitchFSMVerbosityLevel(OptionalModelSimMinusArgument, name="fsmverbose"): ...
+
+	@CLIArgument()
+	class FlagReportAsNote(ShortTupleFlag, name="note"): ...
+
+	@CLIArgument()
+	class FlagReportAsError(ShortTupleFlag, name="error"): ...
+
+	@CLIArgument()
+	class FlagReportAsWarning(ShortTupleFlag, name="warning"): ...
+
+	@CLIArgument()
+	class FlagReportAsFatal(ShortTupleFlag, name="fatal"): ...
+
+	@CLIArgument()
+	class FlagRelaxLanguageChecks(ShortFlag, name="permissive"): ...
+
+	@CLIArgument()
+	class FlagForceLanguageChecks(ShortFlag, name="pedanticerrors"): ...
+
+	@CLIArgument()
+	class SwitchVHDLVersion(StringArgument, pattern="-{0}"): ...
+
+	@CLIArgument()
+	class ArgLogFile(ShortTupleFlag, name="l"): ...			# what's the difference to -logfile ?
+
+	@CLIArgument()
+	class SwitchVHDLLibrary(ShortTupleFlag, name="work"): ...
+
+	# @CLIArgument()
+	# class ArgSourceFile(PathArgument): ...
+
+
+@export
+class VHDLSimulator(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "vsim",
+		"Windows": "vsim.exe"
+	}
+
+	@CLIArgument()
+	class FlagQuietMode(ShortFlag, name="quiet"):
+		"""Run simulation in quiet mode. (Don't show 'Loading...' messages."""
+
+	@CLIArgument()
+	class FlagBatchMode(ShortFlag, name="batch"):
+		"""Run simulation in batch mode."""
+
+	@CLIArgument()
+	class FlagGuiMode(ShortFlag, name="gui"):
+		"""Run simulation in GUI mode."""
+
+	@CLIArgument()
+	class SwitchBatchCommand(ShortTupleFlag, name="do"):
+		"""Specify a Tcl batch script for the batch mode."""
+
+	@CLIArgument()
+	class FlagCommandLineMode(ShortFlag, name="c"):
+		"""Run simulation in command line mode."""
+
+	@CLIArgument()
+	class SwitchModelSimIniFile(ShortTupleFlag, name="modelsimini"):
+		"""Specify the used 'modelsim.ini' file."""
+
+	@CLIArgument()
+	class FlagEnableOptimization(ShortFlag, name="vopt"):
+		"""Enabled optimization while elaborating the design."""
+
+	@CLIArgument()
+	class FlagDisableOptimization(ShortFlag, name="novopt"):
+		"""Disabled optimization while elaborating the design."""
+
+	@CLIArgument()
+	class FlagEnableOptimizationVerbosity(ShortFlag, name="vopt_verbose"):
+		"""Enabled optimization while elaborating the design."""
+
+	@CLIArgument()
+	class FlagEnableKeepAssertionCountsForCoverage(ShortFlag, name="assertcover"): ...
+
+	@CLIArgument()
+	class FlagDisableKeepAssertionCountsForCoverage(ShortFlag, name="noassertcover"): ...
+
+	@CLIArgument()
+	class FlagEnableCoverage(ShortFlag, name="coverage"): ...
+
+	@CLIArgument()
+	class FlagDisableCoverage(ShortFlag, name="nocoverage"): ...
+
+	@CLIArgument()
+	class FlagEnablePSL(ShortFlag, name="psl"): ...
+
+	@CLIArgument()
+	class FlagDisablePSL(ShortFlag, name="nopsl"): ...
+
+	@CLIArgument()
+	class FlagEnableFSMDebugging(ShortFlag, name="fsmdebug"): ...
+
+	@CLIArgument()
+	class FlagReportAsNote(ShortTupleFlag, name="note"): ...
+
+	@CLIArgument()
+	class FlagReportAsError(ShortTupleFlag, name="error"): ...
+
+	@CLIArgument()
+	class FlagReportAsWarning(ShortTupleFlag, name="warning"): ...
+
+	@CLIArgument()
+	class FlagReportAsFatal(ShortTupleFlag, name="fatal"): ...
+
+	@CLIArgument()
+	class FlagRelaxLanguageChecks(ShortFlag, name="permissive"): ...
+
+	@CLIArgument()
+	class FlagForceLanguageChecks(ShortFlag, name="pedanticerrors"): ...
+
+	@CLIArgument()
+	class SwitchTimeResolution(ShortTupleFlag, name="t"):
+		"""Set simulation time resolution."""
+		# -t [1|10|100]fs|ps|ns|us|ms|sec  Time resolution limit
+
+	@CLIArgument()
+	class ArgLogFile(ShortTupleFlag, name="l"): ...
+		# what's the difference to -logfile ?
+
+	@CLIArgument()
+	class ArgKeepStdOut(ShortFlag, name="keepstdout"): ...
+
+	@CLIArgument()
+	class ArgVHDLLibraryName(ShortTupleFlag, name="lib"): ...
+
+	@CLIArgument()
+	class ArgOnFinishMode(ShortTupleFlag, name="onfinish"):
+		"""Customize the kernel shutdown behavior at the end of simulation; Valid modes: ask, stop, exit, final (Default: ask)."""
+
+	@CLIArgument()
+	class SwitchTopLevel(StringArgument):
+		"""The top-level for simulation."""
+
+ + diff --git a/typing/html/CLITool/Mentor/__init__.py.html b/typing/html/CLITool/Mentor/__init__.py.html new file mode 100644 index 00000000..94dfd91a --- /dev/null +++ b/typing/html/CLITool/Mentor/__init__.py.html @@ -0,0 +1,80 @@ + + + + + + +

CLITool.Mentor

+ + + + + + +
CLITool/Mentor/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This package contains the CLI abstraction layer for Mentor Graphic (now Siemens EDA) tools."""
+
+ + diff --git a/typing/html/CLITool/Xilinx/ISE.py.html b/typing/html/CLITool/Xilinx/ISE.py.html new file mode 100644 index 00000000..e2cb6d36 --- /dev/null +++ b/typing/html/CLITool/Xilinx/ISE.py.html @@ -0,0 +1,266 @@ + + + + + + +

CLITool.Xilinx.ISE

+ + + + + + +
CLITool/Xilinx/ISE.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for ISE."""
+from pyTooling.Decorators               import export
+from pyTooling.CLIAbstraction           import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument  import StringArgument
+from pyTooling.CLIAbstraction.Flag      import ShortFlag
+from pyTooling.CLIAbstraction.ValuedTupleFlag import ShortTupleFlag
+from pyEDAA.CLITool                     import ToolMixIn
+
+
+@export
+class Fuse(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "fuse",
+		"Windows": "fuse.exe"
+	}
+
+	@CLIArgument()
+	class FlagIncremental(ShortFlag, name="incremental"): ...
+
+	# FlagIncremental = ShortFlagArgument(_name="incremntal")
+
+	@CLIArgument()
+	class FlagRangeCheck(ShortFlag, name="rangecheck"): ...
+
+	@CLIArgument()
+	class SwitchMultiThreading(ShortTupleFlag, name="mt"): ...
+
+	@CLIArgument()
+	class SwitchTimeResolution(ShortTupleFlag, name="timeprecision_vhdl"): ...
+
+	@CLIArgument()
+	class SwitchProjectFile(ShortTupleFlag, name="prj"): ...
+
+	@CLIArgument()
+	class SwitchOutputFile(ShortTupleFlag, name="o"): ...
+
+	@CLIArgument()
+	class ArgTopLevel(StringArgument): ...
+
+
+@export
+class ISESimulator(Executable):
+	_executableNames = {
+		"Linux":   "isim",
+		"Windows": "isim.exe"
+	}
+
+	@CLIArgument()
+	class SwitchLogFile(ShortTupleFlag, name="log"): ...
+
+	@CLIArgument()
+	class FlagGuiMode(ShortFlag, name="gui"): ...
+
+	@CLIArgument()
+	class SwitchTclBatchFile(ShortTupleFlag, name="tclbatch"): ...
+
+	@CLIArgument()
+	class SwitchWaveformFile(ShortTupleFlag, name="view"): ...
+
+
+@export
+class Xst(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "xst",
+		"Windows": "xst.exe"
+	}
+
+	@CLIArgument()
+	class SwitchIntStyle(ShortTupleFlag, name="intstyle"): ...
+
+	@CLIArgument()
+	class SwitchXstFile(ShortTupleFlag, name="ifn"): ...
+
+	@CLIArgument()
+	class SwitchReportFile(ShortTupleFlag, name="ofn"): ...
+
+
+@export
+class CoreGenerator(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "coregen",
+		"Windows": "coregen.exe"
+	}
+
+	@CLIArgument()
+	class FlagRegenerate(ShortFlag, name="r"): ...
+
+	@CLIArgument()
+	class SwitchProjectFile(ShortTupleFlag, name="p"): ...
+
+	@CLIArgument()
+	class SwitchBatchFile(ShortTupleFlag, name="b"): ...
+
+ + diff --git a/typing/html/CLITool/Xilinx/Vivado.py.html b/typing/html/CLITool/Xilinx/Vivado.py.html new file mode 100644 index 00000000..8f92f06f --- /dev/null +++ b/typing/html/CLITool/Xilinx/Vivado.py.html @@ -0,0 +1,296 @@ + + + + + + +

CLITool.Xilinx.Vivado

+ + + + + + +
CLITool/Xilinx/Vivado.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This module contains the CLI abstraction layer for Vivado."""
+from pyTooling.Decorators               import export
+from pyTooling.CLIAbstraction           import CLIArgument, Executable
+from pyTooling.CLIAbstraction.Argument  import StringArgument, StringListArgument
+from pyTooling.CLIAbstraction.Flag      import ShortFlag
+from pyTooling.CLIAbstraction.ValuedFlag import ShortValuedFlag
+from pyTooling.CLIAbstraction.ValuedTupleFlag import ShortTupleFlag
+from pyEDAA.CLITool                     import ToolMixIn
+
+
+@export
+class Vvgl(Executable):
+	_executableNames = {
+		"Windows": "unwrapped/win64.o/vvgl.exe"
+	}
+
+	@CLIArgument()
+	class ValueWrappedExecutable(StringArgument):
+		"""Executable to be wrapped by vvgl."""
+
+	@CLIArgument()
+	class Arguments(StringListArgument):
+		"""List of arguments to be passed to the wrapped executable."""
+
+
+@export
+class XElab(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "xelab",
+		"Windows": "xelab.bat"
+	}
+
+	@CLIArgument()
+	class FlagRangeCheck(ShortFlag, name="rangecheck"): ...
+
+	@CLIArgument()
+	class SwitchMultiThreading(ShortTupleFlag, name="mt"): ...
+
+	@CLIArgument()
+	class SwitchVerbose(ShortTupleFlag, name="verbose"): ...
+
+	@CLIArgument()
+	class SwitchDebug(ShortTupleFlag, name="debug"): ...
+
+	# class SwitchVHDL2008(ShortFlagArgument):
+	# 	_name =    "vhdl2008"
+	# 	_value =  None
+
+	@CLIArgument()
+	class SwitchOptimization(ShortValuedFlag, name="O"): ...
+		# _pattern = "--{0}{1}"
+
+	@CLIArgument()
+	class SwitchTimeResolution(ShortTupleFlag, name="timeprecision_vhdl"): ...
+
+	@CLIArgument()
+	class SwitchProjectFile(ShortTupleFlag, name="prj"): ...
+
+	@CLIArgument()
+	class SwitchLogFile(ShortTupleFlag, name="log"): ...
+
+	@CLIArgument()
+	class SwitchSnapshot(ShortTupleFlag, name="s"): ...
+
+	@CLIArgument()
+	class ArgTopLevel(StringArgument): ...
+
+
+@export
+class XSim(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "xsim",
+		"Windows": "xsim.bat"
+	}
+
+	@CLIArgument()
+	class SwitchLogFile(ShortTupleFlag, name="log"): ...
+
+	@CLIArgument()
+	class FlagGuiMode(ShortFlag, name="gui"): ...
+
+	@CLIArgument()
+	class SwitchTclBatchFile(ShortTupleFlag, name="tclbatch"): ...
+
+	@CLIArgument()
+	class SwitchWaveformFile(ShortTupleFlag, name="view"): ...
+
+	@CLIArgument()
+	class SwitchSnapshot(StringArgument): ...
+
+
+@export
+class Synth(Executable, ToolMixIn):
+	_executableNames = {
+		"Linux":   "vivado",
+		"Windows": "vivado.bat"
+	}
+
+	@CLIArgument()
+	class SwitchLogFile(ShortTupleFlag, name="log"): ...
+
+	@CLIArgument()
+	class SwitchSourceFile(ShortTupleFlag, name="source"): ...
+
+	@CLIArgument()
+	class SwitchMode(ShortTupleFlag, name="mode"): ...
+		# _value =  "batch"
+
+ + diff --git a/typing/html/CLITool/Xilinx/__init__.py.html b/typing/html/CLITool/Xilinx/__init__.py.html new file mode 100644 index 00000000..3d42e4fd --- /dev/null +++ b/typing/html/CLITool/Xilinx/__init__.py.html @@ -0,0 +1,80 @@ + + + + + + +

CLITool.Xilinx

+ + + + + + +
CLITool/Xilinx/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universität Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture     #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""This package contains the CLI abstraction layer for Xilinx (now AMD) tools."""
+
+ + diff --git a/typing/html/CLITool/__init__.py.html b/typing/html/CLITool/__init__.py.html new file mode 100644 index 00000000..23388605 --- /dev/null +++ b/typing/html/CLITool/__init__.py.html @@ -0,0 +1,109 @@ + + + + + + +

CLITool

+ + + + + + +
CLITool/__init__.py
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+
# ==================================================================================================================== #
+#              _____ ____    _        _      ____ _     ___ _____           _                                          #
+#  _ __  _   _| ____|  _ \  / \      / \    / ___| |   |_ _|_   _|__   ___ | |                                         #
+# | '_ \| | | |  _| | | | |/ _ \    / _ \  | |   | |    | |  | |/ _ \ / _ \| |                                         #
+# | |_) | |_| | |___| |_| / ___ \  / ___ \ | |___| |___ | |  | | (_) | (_) | |                                         #
+# | .__/ \__, |_____|____/_/   \_\/_/   \_(_)____|_____|___| |_|\___/ \___/|_|                                         #
+# |_|    |___/                                                                                                         #
+# ==================================================================================================================== #
+# Authors:                                                                                                             #
+#   Patrick Lehmann                                                                                                    #
+#                                                                                                                      #
+# License:                                                                                                             #
+# ==================================================================================================================== #
+# Copyright 2017-2023 Patrick Lehmann - Boetzingen, Germany                                                            #
+# Copyright 2014-2016 Technische Universitaet Dresden - Germany, Chair of VLSI-Design, Diagnostics and Architecture    #
+#                                                                                                                      #
+# Licensed under the Apache License, Version 2.0 (the "License");                                                      #
+# you may not use this file except in compliance with the License.                                                     #
+# You may obtain a copy of the License at                                                                              #
+#                                                                                                                      #
+#   http://www.apache.org/licenses/LICENSE-2.0                                                                         #
+#                                                                                                                      #
+# Unless required by applicable law or agreed to in writing, software                                                  #
+# distributed under the License is distributed on an "AS IS" BASIS,                                                    #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                             #
+# See the License for the specific language governing permissions and                                                  #
+# limitations under the License.                                                                                       #
+#                                                                                                                      #
+# SPDX-License-Identifier: Apache-2.0                                                                                  #
+# ==================================================================================================================== #
+#
+"""An abstraction layer of EDA CLI tools."""
+__author__ =    "Patrick Lehmann"
+__email__ =     "Paebbels@gmail.com"
+__copyright__ = "2014-2023, Patrick Lehmann, Unai Martinez-Corral"
+__license__ =   "Apache License, Version 2.0"
+__version__ =   "0.3.0"
+__keywords__ =  ["cli", "abstraction layer", "eda"]
+
+from pyTooling.Decorators import export
+from pyTooling.Exceptions import ExceptionBase
+
+
+@export
+class CLIToolException(ExceptionBase):
+	pass
+
+ + diff --git a/typing/index.html b/typing/index.html new file mode 100644 index 00000000..a8bc1230 --- /dev/null +++ b/typing/index.html @@ -0,0 +1,104 @@ + + + + + + +

Mypy Type Check Coverage Summary

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary from index
FileImprecisionLines
Total3.01% imprecise1663 LOC
CLITool0.00% imprecise46 LOC
CLITool.Aldec0.00% imprecise32 LOC
CLITool.Aldec.ActiveHDL0.97% imprecise103 LOC
CLITool.Aldec.RivieraPRO1.02% imprecise98 LOC
CLITool.Docker0.00% imprecise79 LOC
CLITool.GHDL8.26% imprecise460 LOC
CLITool.GTKWave0.00% imprecise53 LOC
CLITool.IntelFPGA0.00% imprecise32 LOC
CLITool.IntelFPGA.Quartus1.45% imprecise69 LOC
CLITool.Lattice0.00% imprecise32 LOC
CLITool.Lattice.Diamond2.13% imprecise47 LOC
CLITool.Mentor0.00% imprecise32 LOC
CLITool.Mentor.ModelSim2.09% imprecise287 LOC
CLITool.Xilinx0.00% imprecise32 LOC
CLITool.Xilinx.ISE0.81% imprecise123 LOC
CLITool.Xilinx.Vivado0.72% imprecise138 LOC
+ + diff --git a/typing/mypy-html.css b/typing/mypy-html.css new file mode 100644 index 00000000..ec2bdf9c --- /dev/null +++ b/typing/mypy-html.css @@ -0,0 +1,104 @@ +/* CSS for type check coverage reports */ + +/* + Used by both summary and file. +*/ +body { + font-family: "Helvetica Neue", sans-serif; +} + +/* + Used only by summary. +*/ + +h1 { + text-align: center; + font-size: 135%; + margin: 20px; +} + +table.summary { + border-collapse: collapse; + margin-left: 7%; + margin-right: 7%; + width: 85%; +} + +table caption { + margin: 1em; +} + +table.summary, tr.summary, th.summary, td.summary { + border: 1px solid #aaa; +} + +th.summary, td.summary { + padding: 0.4em; +} + +td.summary a { + text-decoration: none; +} + +.summary-quality-0 { + background-color: #dfd; +} + +.summary-quality-1 { + background-color: #ffa; +} + +.summary-quality-2 { + background-color: #faa; +} + +td.summary-filename, th.summary-filename { + text-align: left; +} + +td.summary-filename { + width: 50%; +} + +.summary-precision { + text-align: center; +} + +.summary-lines { + text-align: center; +} + +/* + Used only by file. +*/ + +td.table-lines { + text-align: right; + padding-right: 0.5em; +} + +td.table-code { } + +span.lineno { + text-align: right; +} + +a:link.lineno, a:visited.lineno { + color: #999; text-decoration: none; +} + +a:hover.lineno, a:active.lineno { + color: #000; text-decoration: underline; +} + +.line-empty, .line-precise { + background-color: #dfd; +} + +.line-imprecise { + background-color: #ffa; +} + +.line-any, .line-unanalyzed { + background-color: #faa; +}