Skip to content

Commit

Permalink
Merge b221653 into 830c951
Browse files Browse the repository at this point in the history
  • Loading branch information
jklenzing committed May 13, 2022
2 parents 830c951 + b221653 commit 2ce6d1c
Show file tree
Hide file tree
Showing 34 changed files with 1,126 additions and 429 deletions.
3 changes: 0 additions & 3 deletions .codeclimate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@
plugins:
radon:
enabled: true
pep8:
enabled: true
sonar-python:
enabled: true
ratings:
paths:
- "**.py"
exclude_paths:
- ".github/**/*"
- "pysatMissions/tests/**/*"
- "docs/**/*"
- "setup.py"
- ".*"
Expand Down
15 changes: 9 additions & 6 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,32 +11,35 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.7, 3.8, 3.9]
python-version: ["3.8", "3.9", "3.10"]
os: [ubuntu-latest]
numpy_ver: ["latest"]

name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
name: Python ${{ matrix.python-version }} on ${{ matrix.os }} with numpy ${{ matrix.numpy_ver }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies

- name: Install requirements for testing setup
run: |
python -m pip install --upgrade pip
pip install -r test_requirements.txt
- name: Install dependencies
run: |
pip install -r requirements.txt
# Manual install of OMMBV
pip install --no-binary :OMMBV: OMMBV
- name: Set up pysat
run: |
mkdir pysatData
python -c "import pysat; pysat.params['data_dirs'] = 'pysatData'"
- name: Test PEP8 compliance
run: flake8 . --count --select=E,F,W --show-source --statistics
run: flake8 . --count --select=D,E,F,H,W --show-source --statistics

- name: Evaluate complexity
run: flake8 . --count --exit-zero --max-complexity=10 --statistics
Expand Down
2 changes: 1 addition & 1 deletion .zenodo.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"orcid": "0000-0001-8321-6074"
},
{
"affiliation": "The University of Texas at Dallas",
"affiliation": "Stoneris",
"name": "Stoneback, Russell",
"orcid": "0000-0001-7216-4336"
},
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/).

## [0.3.0] - 2022-05-13
* Add Keplerian orbital inputs into missions_sgp4
* Update sgp4 interface to use new syntax for initialization from TLEs
* Include conversions to geodetic latitude / longitude / altitude for sgp4
* Improve metadata generation in missions_sgp4
* Update syntax to be compliant with OMMBV 1.0
* Documentation
* Improve docstrings throughout
* Added bypass for apexpy for readthedocs build
* Deprecations
* Deprecated missions_ephem, as pyephem will no longer be updated
* Testing
* Add style check for docstrings
* Added checks for deprecation warnings
* Improve checks in codeclimate

## [0.2.2] - 2021-06-18
* Migrate pyglow interface to pysatIncubator
* Style updates for consistency with pysat 3.0
Expand Down
138 changes: 79 additions & 59 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,21 @@ Contributing
Bug reports, feature suggestions and other contributions are greatly
appreciated! pysatMissions is a community-driven project and welcomes both feedback and contributions.

Come join us on Slack! An invitation to the pysat workspace is available
in the 'About' section of the
[pysat GitHub Repository.](https://github.com/pysat/pysat) Development meetings
are generally held fortnightly.

Short version
-------------

* Submit bug reports and feature requests at `GitHub <https://github.com/pysat/pysatMissions/issues>`_
* Submit bug reports and feature requests at [GitHub](https://github.com/pysat/pysatMissions/issues)
* Make pull requests to the ``develop`` branch

Bug reports
-----------

When `reporting a bug <https://github.com/pysat/pysatMissions/issues>`_ please
When [reporting a bug](https://github.com/pysat/pysatMissions/issues) please
include:

* Your operating system name and version
Expand All @@ -24,7 +29,7 @@ Feature requests and feedback
-----------------------------

The best way to send feedback is to file an issue at
`GitHub <https://github.com/pysat/pysatMissions/issues>`_.
[GitHub](https://github.com/pysat/pysatMissions/issues).

If you are proposing a feature:

Expand All @@ -38,14 +43,17 @@ Development

To set up `pysatMissions` for local development:

1. `Fork pysat on GitHub <https://github.com/pysat/pysatMissions/fork>`_.
2. Clone your fork locally::

git clone git@github.com:your_name_here/pysatMissions.git
1. [Fork pysat on GitHub](https://github.com/pysat/pysatMissions/fork).

3. Create a branch for local development::
3. Clone your fork locally:
```
git clone git@github.com:your_name_here/pysatMissions.git
```

git checkout -b name-of-your-bugfix-or-feature
3. Create a branch for local development:
```
git checkout -b name-of-your-bugfix-or-feature
```

Now you can make your changes locally. Tests for new instruments are
performed automatically. Tests for custom functions should be added to
Expand All @@ -55,19 +63,31 @@ To set up `pysatMissions` for local development:
``test_``.

4. When you're done making changes, run all the checks to ensure that nothing
is broken on your local system::

pytest -vs
is broken on your local system:
```
pytest -vs
```

5. Update/add documentation (in ``docs``), if relevant

5. Commit your changes and push your branch to GitHub::
6. Add your name to the .zenodo.json file as an author

7. Commit your changes:
```
git add .
git commit -m "AAA: Brief description of your changes"
```
Where AAA is a standard shorthand for the type of change (eg, BUG or DOC).
`pysat` follows the [numpy development workflow](https://numpy.org/doc/stable/dev/development_workflow.html),
see the discussion there for a full list of this shorthand notation.

git add .
git commit -m "Brief description of your changes"
git push origin name-of-your-bugfix-or-feature
8. Once you are happy with the local changes, push to Github:
```
git push origin name-of-your-bugfix-or-feature
```
Note that each push will trigger the Continuous Integration workflow.

6. Submit a pull request through the GitHub website. Pull requests should be
9. Submit a pull request through the GitHub website. Pull requests should be
made to the ``develop`` branch.

Pull Request Guidelines
Expand All @@ -81,45 +101,45 @@ For merging, you should:
1. Include an example for use
2. Add a note to ``CHANGELOG.md`` about the changes
3. Ensure that all checks passed (current checks include GitHub Actions
and Coveralls) [1]_

.. [1] If you don't have all the necessary Python versions available locally or
have trouble building all the testing environments, you can rely on
GitHub Actions to run the tests for each change you add in the pull
request. Because testing here will delay tests by other developers,
please ensure that the code passes all tests on your local system first.

Project Style Guidelines
^^^^^^^^^^^^^^^^^^^^^^^^

In general, pysat follows PEP8 and numpydoc guidelines. Pytest runs the unit
and integration tests, flake8 checks for style, and sphinx-build performs
documentation tests. However, there are certain additional style elements that
have been settled on to ensure the project maintains a consistent coding style.
These include:

* Line breaks should occur before a binary operator (ignoring flake8 W503)
* Combine long strings using `join`
* Preferably break long lines on open parentheses rather than using `\`
* Use no more than 80 characters per line
* Avoid using Instrument class key attribute names as unrelated variable names:
`platform`, `name`, `tag`, and `inst_id`
* The pysat logger is imported into each sub-module and provides status updates
at the info and warning levels (as appropriate)
* Several dependent packages have common nicknames, including:
* `import datetime as dt`
* `import numpy as np`
* `import pandas as pds`
* `import xarray as xr`
* All classes should have `__repr__` and `__str__` functions
* Docstrings use `Note` instead of `Notes`
* Try to avoid creating a try/except statement where except passes
* Use setup and teardown in test classes
* Use pytest parametrize in test classes when appropriate
* Provide testing class methods with informative failure statements and
descriptive, one-line docstrings
* Block and inline comments should use proper English grammar and punctuation
with the exception of single sentences in a block, which may then omit the
final period
* When casting is necessary, use `np.int64` and `np.float64` to ensure operating
system agnosticism
and Coveralls)

If you don't have all the necessary Python versions available locally or
have trouble building all the testing environments, you can rely on
the project's Continuous Integration (CI) service to run the tests for each change you add in the pull
request. Because testing here will delay tests by other developers,
please ensure that the code passes all tests on your local system first.

Project Style Guidelines
^^^^^^^^^^^^^^^^^^^^^^^^

In general, pysat follows PEP8 and numpydoc guidelines. Pytest runs the unit
and integration tests, flake8 checks for style, and sphinx-build performs
documentation tests. However, there are certain additional style elements that
have been settled on to ensure the project maintains a consistent coding style.
These include:

* Line breaks should occur before a binary operator (ignoring flake8 W503)
* Combine long strings using `join`
* Preferably break long lines on open parentheses rather than using `\`
* Use no more than 80 characters per line
* Avoid using Instrument class key attribute names as unrelated variable names:
`platform`, `name`, `tag`, and `inst_id`
* The pysat logger is imported into each sub-module and provides status updates
at the info and warning levels (as appropriate)
* Several dependent packages have common nicknames, including:
* `import datetime as dt`
* `import numpy as np`
* `import pandas as pds`
* `import xarray as xr`
* All classes should have `__repr__` and `__str__` functions
* Docstrings use `Note` instead of `Notes`
* Try to avoid creating a try/except statement where except passes
* Use setup and teardown in test classes
* Use pytest parametrize in test classes when appropriate
* Provide testing class methods with informative failure statements and
descriptive, one-line docstrings
* Block and inline comments should use proper English grammar and punctuation
with the exception of single sentences in a block, which may then omit the
final period
* When casting is necessary, use `np.int64` and `np.float64` to ensure operating
system agnosticism
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ pysatMissions allows users to run build simulated satellites for Two-Line Elemen
Main Features
-------------
- Simulate satellite orbits from TLEs and add data from empirical models
- Import ionosphere and thermosphere model values through pyglow
- Import magnetic coordinates through apexpy and aacgmv2
- Import geomagnetic basis vectors through OMMBV

Expand All @@ -31,14 +30,14 @@ Documentation

pysatMissions uses common Python modules, as well as modules developed by
and for the Space Physics community. This module officially supports
Python 3.7+.
Python 3.8+.

| Common modules | Community modules |
| -------------- | ----------------- |
| numpy | aacgmv2 |
| pandas | apexpy |
| pyEphem | OMMBV |
| sgp4 | pysat>=3.0 |
| pyEphem | OMMBV>=1.0 |
| sgp4>=2.7 | pysat>=3.0 |


One way to install is through pip. Just type
Expand Down
24 changes: 15 additions & 9 deletions docs/conf.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# https://www.sphinx-doc.org/en/master/config

"""Configuration file for the Sphinx documentation builder.
Note
----
For a full list see the documentation:
https://www.sphinx-doc.org/en/master/config
"""

# -- Path setup --------------------------------------------------------------

Expand All @@ -22,8 +25,8 @@
project = 'pysatMissions'
title = '{:s} Documentation'.format(project)
zenodo = json.loads(open('../.zenodo.json').read())
author = ', '.join([x['name'] for x in zenodo['creators']])
copyright = ', '.join(['2021', author])
author = ', '.join([creator['name'] for creator in zenodo['creators']])
copyright = ', '.join(['2022', author])
description = 'Tools for generating simulated instruments in pysat.'

# The short X.Y version
Expand Down Expand Up @@ -52,11 +55,14 @@
'sphinx.ext.imgmath',
'sphinx.ext.autosummary',
'sphinx.ext.napoleon',
'sphinx.ext.githubpages',
'sphinx.ext.autosectionlabel',
'numpydoc',
'IPython.sphinxext.ipython_console_highlighting',
'm2r2']

numpydoc_show_class_members = False
autosectionlabel_prefix_document = True
autosectionlabel_maxdepth = 3

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
Expand Down
1 change: 1 addition & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ as well as apply geomagnetic field models to existing pysat instruments.
installation.rst
citing.rst
supported_instruments.rst
methods.rst
tutorial.rst
references.rst
develop_guide.rst
Expand Down
29 changes: 27 additions & 2 deletions docs/installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ Python 3.7+ and pysat 3.0.0+.
================ ==================
numpy aacgmv2
pandas apexpy
pyEphem OMMBV
sgp4 pysat>=3.0
pyEphem OMMBV>=1.0
sgp4>=2.7 pysat>=3.0
================ ==================


Expand Down Expand Up @@ -55,3 +55,28 @@ Python 3.7+ and pysat 3.0.0+.


python setup.py develop --user


.. _post-install:

Post Installation
-----------------

After installation, you may register the :py:mod:`pysatMissions`
:py:class:`Instrument` sub-modules with pysat. If this is your first time using
pysat, check out the `quickstart guide
<https://pysat.readthedocs.io/en/latest/quickstart.html>`_ for pysat. Once pysat
is set up, you may choose to register the the :py:mod:`pysatMissions`
:py:class:`Instruments` sub-modules by:

.. code:: python
import pysat
import pysatMissions
pysat.utils.registry.register_by_module(pysatMissions.instruments)
You may then use the pysat :py:attr:`platform` and :py:attr:`name` keywords to
initialize the model :py:class:`Instrument` instead of the
:py:attr:`inst_module` keyword argument.

0 comments on commit 2ce6d1c

Please sign in to comment.