Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cleaning up surmisebandsdk.md #143

Merged
merged 1 commit into from
Sep 16, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 17 additions & 17 deletions surmisebandsdk.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@

| # | Policy |Support| Notes |
|---|-----------------------|-------|-------------------------|
| 1. | Support BAND community GNU Autoconf, CMake, or other build options |Full| surmise is a Python package and provides a setup.py file for installation. This is compatible with Python's built-in installation feature (``python setup.py install``) and with the pip installer. GNU Autoconf or CMake are unsuitable for a Python package. |
| 2. | Have a README file in the top directory that states a specific set of testing procedures for a user to verify the software was installed and run correctly. | Full| README explains full test procedure.|
| 3. | Provide a documented, reliable way to contact the development team |Full| The surmise team can be contacted through the public [issues page on GitHub](https://github.com/bandframework/surmise/issues) or via an e-mail to [the surmise team](SUPPORT.rst).|
| 4. | Come with an open-source license |Full| surmise uses the MIT license. [M4 details](#m4-details)|
| 5. | Provide a runtime API to return the current version number of the software |Full| The version can be returned within Python via: `surmise.__version__`.|
| 6. | Provide a BAND team-accessible repository |Full| https://github.com/bandframework/surmise |
| 7. | Must allow installing, building, and linking against an outside copy of all imported software that is externally developed and maintained |Full| surmise does not contain any other package's source code within. Note that Python packages are imported using the conventional `sys.path` system. Alternative instances of a package can be used, for example, by including them through an appropriate definition of the PYTHONPATH environment variable.|
| 8. | Have no hardwired print or IO statements that cannot be turned off |Full| There are no mandatory print statements: any print statements for code feedback in a method can be suppressed via `verbose` argument. |
| 1. | Support BAND community GNU Autoconf, CMake, or other build options. |Full| surmise is a Python package and provides a setup.py file for installation. This is compatible with Python's built-in installation feature (``python setup.py install``) and with the pip installer. GNU Autoconf or CMake are unsuitable for a Python package. |
| 2. | Have a README file in the top directory that states a specific set of testing procedures for a user to verify the software was installed and run correctly. | Full| README explains full test procedure. |
| 3. | Provide a documented, reliable way to contact the development team. |Full| The surmise team can be contacted through the public [issues page on GitHub](https://github.com/bandframework/surmise/issues) or via an e-mail to [the surmise team](SUPPORT.rst). |
| 4. | Come with an open-source license |Full| surmise uses the MIT license. [M4 details](#m4-details) |
| 5. | Provide a runtime API to return the current version number of the software. |Full| The version can be returned within Python via: `surmise.__version__`. |
| 6. | Provide a BAND team-accessible repository. |Full| https://github.com/bandframework/surmise |
| 7. | Must allow installing, building, and linking against an outside copy of all imported software that is externally developed and maintained. |Full| surmise does not contain any other package's source code within. Note that Python packages are imported using the conventional `sys.path` system. Alternative instances of a package can be used, for example, by including them through an appropriate definition of the PYTHONPATH environment variable. |
| 8. | Have no hardwired print or IO statements that cannot be turned off. |Full| There are no mandatory print statements: any print statements for code feedback in a method can be suppressed via `verbose` argument. |

M4 details <a id="m4-details"></a>: This was chosen based on the MIT license being the default license for BAND.

Expand All @@ -48,16 +48,16 @@ M4 details <a id="m4-details"></a>: This was chosen based on the MIT license bei
|**R1.**| Have a public repository. |Full| https://github.com/bandframework/surmise is publicly available. |
|**R2.**| Free all system resources acquired as soon as they are no longer needed. |Full| Python has built-in garbage collection that frees memory when it becomes unreferenced. |
|**R3.**| Provide a mechanism to export ordered list of library dependencies. |Full| The dependencies for surmise are given in `setup.py` and when pip install or pip setup.py egg_info are run, a file is created `surmise.egg-info/requires.txt` containing the list of required and optional dependencies. If installing through pip, these will automatically be installed if they do not exist. `pip install surmise` installs required dependencies. |
|**R4.**| Document versions of packages that it works with or depends upon, preferably in machine-readable form. |Full| The detailed installation instructions come with a full list of tested external dependencies (available on github `README.rst`). |
|**R4.**| Document versions of packages that it works with or depends upon, preferably in machine-readable form. |Full| The detailed installation instructions come with a full list of tested external dependencies (available on github `README.rst`). |
|**R5.**| Have README, SUPPORT, LICENSE, and CHANGELOG files in top directory. |Full| All files are included in the repository. |
|**R6.**| Have sufficient documentation to support use and further development. |Full| surmise provides documentation through a *Sphinx* framework. It is published on [readthedocs](https://surmise.readthedocs.io), which includes a user guide covering quick-start, installation, and many usage details. There are several tutorials and examples. The developer guide contains information on internal modules. |
|**R7.**| Be buildable using 64-bit pointers; 32-bit is optional |Full| There is no explicit use of pointers in surmise, as Python handles pointers internally and depends on the install of Python, which will generally be 64-bit on supported systems.|
|**R8.**| Do not assume a full MPI communicator; allow for user-provided MPI communicator |N/a| None. |
|**R9.**| Use a limited and well-defined name space (e.g., symbol, macro, library, include) |Full| surmise uses `surmise` namespace. Modules have `surmise` prefix, and in `surmise` folder.|
|**R10.**| Give best effort at portability to key architectures |Full| surmise is being regularly tested on Mac OS, Linux, and MS Windows. The current set of automatically tested, common architectures is viewable [here](https://github.com/bandframework/surmise/blob/main/.github/workflows/python-package.yml) |
|**R11.**| Install headers and libraries under `<prefix>/include` and `<prefix>/lib`, respectively |Full| The standard Python installation is used for Python dependencies. This installs external Python packages under `<install-prefix>/lib/python<X.Y>/site-packages/`.|
|**R12.**| All BAND compatibility changes should be sustainable |Full| The BAND-compatible package is in the standard release path. All the changes here should be sustainable.|
|**R13.**| Respect system resources and settings made by other previously called packages |Full| surmise does not modify system resources or settings.|
|**R14.**| Provide a comprehensive test suite for correctness of installation verification |Full| surmise contains a comprehensive set of unit tests that can be run, individually or all at once, via pytest with a high coverage. Running the provided ``.\run_tests.sh`` performs comprehensive testing. [R14 details](#r14-details)|
|**R7.**| Be buildable using 64-bit pointers; 32-bit is optional. |Full| There is no explicit use of pointers in surmise, as Python handles pointers internally and depends on the install of Python, which will generally be 64-bit on supported systems. |
|**R8.**| Do not assume a full MPI communicator; allow for user-provided MPI communicator. |N/a| None. |
|**R9.**| Use a limited and well-defined name space (e.g., symbol, macro, library, include). |Full| surmise uses `surmise` namespace. Modules have `surmise` prefix, and in `surmise` folder. |
|**R10.**| Give best effort at portability to key architectures. |Full| surmise is being regularly tested on Mac OS, Linux, and MS Windows. The current set of automatically tested, common architectures is viewable [here](https://github.com/bandframework/surmise/blob/main/.github/workflows/python-package.yml). |
|**R11.**| Install headers and libraries under `<prefix>/include` and `<prefix>/lib`, respectively. |Full| The standard Python installation is used for Python dependencies. This installs external Python packages under `<install-prefix>/lib/python<X.Y>/site-packages/`. |
|**R12.**| All BAND compatibility changes should be sustainable. |Full| The BAND-compatible package is in the standard release path. All the changes here should be sustainable. |
|**R13.**| Respect system resources and settings made by other previously called packages. |Full| surmise does not modify system resources or settings. |
|**R14.**| Provide a comprehensive test suite for correctness of installation verification. |Full| surmise contains a comprehensive set of unit tests that can be run, individually or all at once, via pytest with a high coverage. Running the provided ``.\run_tests.sh`` performs comprehensive testing. [R14 details](#r14-details) |

R14 details <a id="r14-details"></a>: See the `README.rst` file in the `tests` directory.