Deriving from the `toasty` file structure.
This commit is contained in:
Peter Williams 2019-12-02 15:05:57 -05:00
Коммит 8ead11ce9f
23 изменённых файлов: 643 добавлений и 0 удалений

7
.coveragerc Normal file
Просмотреть файл

@ -0,0 +1,7 @@
[report]
omit = wwt_data_formats/*tests/*
exclude_lines =
pragma: no cover
if __name__ == .__main__.:
raise NotImplementedError

1
.coveralls.yml Normal file
Просмотреть файл

@ -0,0 +1 @@
service_name: travis-pro

8
.gitignore поставляемый Normal file
Просмотреть файл

@ -0,0 +1,8 @@
*.py[cod]
*.egg
*.egg-info
/dist/
/build/
/eggs/
/sdist/
__pycache__/

15
.readthedocs.yml Normal file
Просмотреть файл

@ -0,0 +1,15 @@
version: 2
build:
image: latest
python:
version: 3.7
install:
- method: pip
path: .
extra_requirements:
- docs
# Don't build any extra formats
formats: []

40
.travis.yml Normal file
Просмотреть файл

@ -0,0 +1,40 @@
language: c
os:
- linux
- osx
sudo: false
# Don't CI branches besides master. PR's still get built -- this just prevents
# PR branches from being built twice in the standard workflow.
branches:
only:
- master
notifications:
email: false
env:
global:
- CONDA_CHANNELS="conda-forge"
- CONDA_DEPENDENCIES="astropy coveralls numpydoc pytest-cov sphinx sphinx-automodapi"
- PIP_DEPENDENCIES="astropy-sphinx-theme"
matrix:
- PYTHON_VERSION=2.7
- PYTHON_VERSION=3.6
- PYTHON_VERSION=3.7
install:
- git clone git://github.com/astropy/ci-helpers.git
- source ci-helpers/travis/setup_conda.sh
script:
- python setup.py sdist
- cd dist && pip install *.tar.gz --verbose && cd ..
- python setup.py build_ext --inplace
- py.test --cov wwt_data_formats wwt_data_formats
- make -C docs html linkcheck
after_success:
- coveralls

3
CHANGES.md Normal file
Просмотреть файл

@ -0,0 +1,3 @@
# 0.0.1.dev0 (unreleased)
- First version

20
LICENSE Normal file
Просмотреть файл

@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2019 the AAS WorldWide Telescope project
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

13
MANIFEST.in Normal file
Просмотреть файл

@ -0,0 +1,13 @@
include LICENSE
include .coveragerc
include *.md
include *.yml
graft docs
prune docs/_build
global-exclude *~
global-exclude *.pyc
global-exclude *.pyo
global-exclude .git
global-exclude .ipynb_checkpoints

82
README.md Normal file
Просмотреть файл

@ -0,0 +1,82 @@
# WWT Data Formats
<!--pypi-begin--> [wwt_data_formats] is a low-level Python package that
interfaces with the various XML serialization formats used by the [AAS]
[WorldWide Telescope].
[wwt_data_formats]: https://wwt-data-formats.readthedocs.io/
[AAS]: https://aas.org/
[WorldWide Telescope]: http://www.worldwidetelescope.org/
<!--pypi-end-->
## Installation
The easiest way to install [wwt_data_formats] is through [pip]:
```
pip install wwt_data_formats
```
[pip]: https://pip.pypa.io/
## Documentation, Examples, etc.
For documentation and examples, go to:
https://wwt-data-formats.readthedocs.io/
## Contributions
Contributions to [wwt_data_formats] are welcome! See
[the WorldWide Telescope contributors guide] for applicable information. We
use a standard workflow with issues and pull requests. All participants in
[wwt_data_formats] and the WWT communities must abide by the
[WWT Code of Conduct].
[the WorldWide Telescope contributors guide]: https://worldwidetelescope.github.io/contributing/
[WWT Code of Conduct]: https://worldwidetelescope.github.io/code-of-conduct/
## Release History
Releases of [wwt_data_formats] are logged in the file [CHANGES.md](./CHANGES.md), as
well as release listings maintained by
[GitHub](https://github.com/WorldWideTelescope/wwt_data_formats/releases) and
[PyPI](https://pypi.org/project/wwt_data_formats/#history).
## Dependencies
[wwt_data_formats] is a Python package so, yes, Python is required.
- [astropy] is not a required dependency, but can be used
- [pytest] to run the test suite
[astropy]: https://www.astropy.org/
[pytest]: https://docs.pytest.org/
## Legalities
[wwt_data_formats] is copyright the AAS WorldWide Telescope Team. It is
licensed under the [MIT License](./LICENSE).
## Acknowledgments
[wwt_data_formats] is part of the AAS WorldWide Telescope system, a [.NET Foundation]
project managed by the non-profit [American Astronomical Society] (AAS). Work
on WWT has been supported by the AAS, the US [National Science Foundation]
(grants [1550701] and [1642446]), the [Gordon and Betty Moore Foundation], and
[Microsoft].
[.NET Foundation]: https://dotnetfoundation.org/
[American Astronomical Society]: https://aas.org/
[National Science Foundation]: https://www.nsf.gov/
[1550701]: https://www.nsf.gov/awardsearch/showAward?AWD_ID=1550701
[1642446]: https://www.nsf.gov/awardsearch/showAward?AWD_ID=1642446
[Gordon and Betty Moore Foundation]: https://www.moore.org/
[Microsoft]: https://www.microsoft.com/

30
RELEASE_PROCESS.md Normal file
Просмотреть файл

@ -0,0 +1,30 @@
# The wwt_data_formats release process
These are notes for the `wwt_data_formats` developers about how to create a new release.
1. Create a branch intended to become the next release.
2. Finish features, test functionality, etc.
3. `python setup.py sdist` and verify contents.
4. Make sure that `CHANGES.md` is up-to-date.
5. For the final commit, update the version number in `setup.py` and
`docs/conf.py`, and add a proper version and date to `CHANGES.md`. Commit
with message `Release version ${version}`.
6. Push to GitHub and create a pull request for the new release called
"Release PR for version $version".
7. Get it so that it passes CI, creating fixup commits as necessary.
8. When it's really really ready, `git clean -fxd && python setup.py sdist &&
twine upload dist/*.tar.gz`. If `twine` finds problems, make any final
changes and retry.
9. If needed, do a `git rebase -i` to make the version-bump commit the last
one again.
10. `git tag v${version}`
11. Update the version number to `${cur_major}.${next_minor}.0.dev0` and add a
new separator in `CHANGES.md` along the lines of `${version} (unreleased)`.
Commit with a message of `Back to development.`
12. `git push` (with `-f` if history was rewritten) to the PR branch. This had
*really* better still pass CI.
13. Merge into `master`.
14. Pull the merged `master` locally.
15. `git push --tags`
16. Create a new release on GitHub and copy the latest contents of
`CHANGES.md` into the description.

1
docs/.gitignore поставляемый Normal file
Просмотреть файл

@ -0,0 +1 @@
/_build/

20
docs/Makefile Normal file
Просмотреть файл

@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS = -W
SPHINXBUILD = python -msphinx
SPHINXPROJ = wwt_data_formats
SOURCEDIR = .
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

92
docs/_static/copybutton.js поставляемый Normal file
Просмотреть файл

@ -0,0 +1,92 @@
// Copyright (c) 2014-2018, Astropy Developers
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice, this
// list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
// * Neither the name of the Astropy Team nor the names of its contributors may be
// used to endorse or promote products derived from this software without
// specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
$(document).ready(function() {
/* Add a [>>>] button on the top-right corner of code samples to hide
* the >>> and ... prompts and the output and thus make the code
* copyable. */
var div = $('.highlight-python .highlight,' +
'.highlight-python3 .highlight,' +
'.highlight-default .highlight')
var pre = div.find('pre');
// get the styles from the current theme
pre.parent().parent().css('position', 'relative');
var hide_text = 'Hide the prompts and output';
var show_text = 'Show the prompts and output';
var border_width = pre.css('border-top-width');
var border_style = pre.css('border-top-style');
var border_color = pre.css('border-top-color');
var button_styles = {
'cursor':'pointer', 'position': 'absolute', 'top': '0', 'right': '0',
'border-color': border_color, 'border-style': border_style,
'border-width': '1px', 'color': border_color, 'font-size': '11px',
'color': '#aaaaaa',
'padding-left': '0.2em', 'padding-right': '0.2em',
'border-radius': '0 3px 0 0'
}
// create and add the button to all the code blocks that contain >>>
div.each(function(index) {
var jthis = $(this);
if (jthis.find('.gp').length > 0) {
var button = $('<span class="copybutton">Hide prompt</span>');
button.css(button_styles)
button.attr('title', hide_text);
button.data('hidden', 'false');
jthis.prepend(button);
}
// tracebacks (.gt) contain bare text elements that need to be
// wrapped in a span to work with .nextUntil() (see later)
jthis.find('pre:has(.gt)').contents().filter(function() {
return ((this.nodeType == 3) && (this.data.trim().length > 0));
}).wrap('<span>');
});
// define the behavior of the button when it's clicked
$('.copybutton').click(function(e){
e.preventDefault();
var button = $(this);
if (button.data('hidden') === 'false') {
// hide the code output
button.parent().find('.go, .gp, .gt').hide();
button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden');
// button.css('text-decoration', 'line-through');
button.text('Show prompt');
button.attr('title', show_text);
button.data('hidden', 'true');
} else {
// show the code output
button.parent().find('.go, .gp, .gt').show();
button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible');
// button.css('text-decoration', 'none');
button.text('Hide prompt');
button.attr('title', hide_text);
button.data('hidden', 'false');
}
});
});

24
docs/_templates/layout.html поставляемый Normal file
Просмотреть файл

@ -0,0 +1,24 @@
{% extends "!layout.html" %}
{%- block extrahead %}
{% if not embedded %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="{{ pathto('_static/copybutton.js', 1) }}"></script>
{% endif %}
{% endblock %}
{# astropy hardcodes a link to astropy.org in the header bar, which we don't want #}
{# It also hardcodes an Astropy logo in the `a.brand` element that we remove #}
{% block header %}
<div class="topbar">
<a class="brand" title="{{ _('Documentation Home') }}" href="{{ pathto(master_doc) }}" style="background: transparent;"><span id="logotext1">{{ theme_logotext1 }}</span><span id="logotext2">{{ theme_logotext2 }}</span><span id="logotext3">{{ theme_logotext3 }}</span></a>
<ul>
<li><a title="{{ _('General Index') }}" href="{{ pathto('genindex') }}">Index</a></li>
<li><a title="{{ _('Module Index') }}" href="{{ pathto('py-modindex') }}">Modules</a></li>
<li>
{% block sidebarsearch %}
{% include "searchbox.html" %}
{% endblock %}
</li>
</ul>
</div>
{% endblock %}

6
docs/api.rst Normal file
Просмотреть файл

@ -0,0 +1,6 @@
API Documentation
=================
.. automodapi:: wwt_data_formats
:no-inheritance-diagram:
:no-inherited-members:

66
docs/conf.py Normal file
Просмотреть файл

@ -0,0 +1,66 @@
# -*- coding: utf-8 -*-
project = 'wwt_data_formats'
author = 'The AAS WorldWide Telescope Team'
copyright = '2019, ' + author
release = '0.0.1.dev0' # the full version string; also update ../setup.py
version = '0.0.1.dev0' # the "short" version
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.doctest',
'sphinx.ext.intersphinx',
'sphinx.ext.mathjax',
'sphinx.ext.viewcode',
'sphinx_automodapi.automodapi',
'sphinx_automodapi.smart_resolver',
'numpydoc',
]
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
language = None
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
pygments_style = 'sphinx'
todo_include_todos = False
html_theme = 'bootstrap-astropy'
html_theme_options = {
'logotext1': 'wwt_data_formats',
'logotext2': '',
'logotext3': ':docs',
'astropy_project_menubar': False,
}
html_static_path = ['_static']
htmlhelp_basename = 'wwtdataformatsdoc'
intersphinx_mapping = {
'python': (
'https://docs.python.org/3/',
(None, 'http://data.astropy.org/intersphinx/python3.inv')
),
'numpy': (
'https://docs.scipy.org/doc/numpy/',
(None, 'http://data.astropy.org/intersphinx/numpy.inv')
),
'astropy': (
'http://docs.astropy.org/en/stable/',
None
),
}
numpydoc_show_class_members = False
nitpicky = True
nitpick_ignore = [('py:class', 'ipywidgets.widgets.domwidget.DOMWidget')]
default_role = 'obj'
html_logo = 'images/logo.png'
linkcheck_retries = 5
linkcheck_timeout = 10

Двоичные данные
docs/images/logo.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 266 KiB

46
docs/index.rst Normal file
Просмотреть файл

@ -0,0 +1,46 @@
=============================================================================
wwt_data_formats: low-level interface to AAS WorldWide Telescope data formats
=============================================================================
`wwt_data_formats`_ is a low-level Python package that interfaces with the
various XML serialization formats used by the AAS_ `WorldWide Telescope`_.
.. _wwt_data_formats: https://wwt-data-formats.readthedocs.io/
.. _AAS: https://aas.org/
.. _WorldWide Telescope: http://www.worldwidetelescope.org/home
User guide
==========
.. toctree::
:maxdepth: 1
installation
api
Getting help
============
If you run into any issues when using `wwt_data_formats`_, please open an
issue `on its GitHub repository
<https://github.com/WorldWideTelescope/wwt_data_formats/issues>`_.
Acknowledgments
===============
`wwt_data_formats`_ is part of the `AAS`_ `WorldWide Telescope`_ system, a
`.NET Foundation`_ project managed by the non-profit `American Astronomical
Society`_ (AAS). Work on WWT has been supported by the AAS, the US `National
Science Foundation`_ (grants 1550701_ and 1642446_), the `Gordon and Betty
Moore Foundation`_, and `Microsoft`_.
.. _.NET Foundation: https://dotnetfoundation.org/
.. _American Astronomical Society: https://aas.org/
.. _National Science Foundation: https://www.nsf.gov/
.. _1550701: https://www.nsf.gov/awardsearch/showAward?AWD_ID=1550701
.. _1642446: https://www.nsf.gov/awardsearch/showAward?AWD_ID=1642446
.. _Gordon and Betty Moore Foundation: https://www.moore.org/
.. _Microsoft: https://www.microsoft.com/

39
docs/installation.rst Normal file
Просмотреть файл

@ -0,0 +1,39 @@
===========================
Installing wwt_data_formats
===========================
Installing wwt_data_formats with pip
====================================
You can also install the latest release of ``wwt_data_formats`` using pip_::
pip install wwt_data_formats
.. _pip: https://pip.pypa.io/
Dependencies
============
If you install ``wwt_data_formats`` using pip_ as described above, any
required dependencies will get installed automatically. The `README in the Git
repository`_ lists the current dependencies if you would like to see an
explict list.
.. _README in the Git repository: https://github.com/WorldWideTelescope/wwt_data_formats/#readme
Installing the developer version
================================
If you want to use the very latest developer version, you should clone `this
repository <https://github.com/WorldWideTelescope/wwt_data_formats/>`_ and manually
install the package in “editable” mode::
git clone https://github.com/WorldWideTelescope/wwt_data_formats.git
cd wwt_data_formats
pip install -e .
You can run the test suite with the command::
pytest wwt_data_formats

36
docs/make.bat Normal file
Просмотреть файл

@ -0,0 +1,36 @@
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=python -msphinx
)
set SOURCEDIR=.
set BUILDDIR=_build
set SPHINXPROJ=wwt_data_formats
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The Sphinx module was not found. Make sure you have Sphinx installed,
echo.then set the SPHINXBUILD environment variable to point to the full
echo.path of the 'sphinx-build' executable. Alternatively you may add the
echo.Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
:end
popd

86
setup.py Normal file
Просмотреть файл

@ -0,0 +1,86 @@
# -*- mode: python; coding: utf-8 -*-
# Copyright 2019 the AAS WorldWide Telescope team
# Licensed under the MIT License
from __future__ import absolute_import, division, print_function
import os
from setuptools import setup, Extension
def get_long_desc():
in_preamble = True
lines = []
with open('README.md') as f:
for line in f:
if in_preamble:
if line.startswith('<!--pypi-begin-->'):
in_preamble = False
else:
if line.startswith('<!--pypi-end-->'):
break
else:
lines.append(line)
lines.append('''
For more information, including installation instructions, please visit [the
project homepage].
[the project homepage]: https://wwt-data-formats.readthedocs.io/
''')
return ''.join(lines)
setup_args = dict(
name = 'wwt_data_formats',
version = '0.0.1.dev0', # also update docs/conf.py
description = 'Low-level interface to AAS WorldWide Telescope data formats',
long_description = get_long_desc(),
long_description_content_type = 'text/markdown',
url = 'https://wwt-data-formats.readthedocs.io/',
license = 'MIT',
platforms = 'Linux, Mac OS X',
author = 'AAS WorldWide Telescope Team',
author_email = 'wwt@aas.org',
classifiers = [
'Intended Audience :: Science/Research',
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Topic :: Scientific/Engineering :: Astronomy',
'Topic :: Scientific/Engineering :: Visualization',
],
packages = [
'wwt_data_formats',
'wwt_data_formats.tests',
],
include_package_data = True,
install_requires = [
],
extras_require = {
'test': [
'coveralls',
'pytest-cov',
],
'docs': [
'astropy-sphinx-theme',
'numpydoc',
'sphinx',
'sphinx-automodapi',
],
},
)
# That was fun.
if __name__ == '__main__':
setup(**setup_args)

Просмотреть файл

@ -0,0 +1,5 @@
# -*- mode: python; coding: utf-8 -*-
# Copyright 2019 the AAS WorldWide Telescope project
# Licensed under the MIT License.
from __future__ import absolute_import, division, print_function

Просмотреть файл

@ -0,0 +1,3 @@
# -*- mode: python; coding: utf-8 -*-
# Copyright 2019 the AAS WorldWide Telescope project
# Licensed under the MIT License.