Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
dahlend committed Apr 16, 2024
1 parent aaa3341 commit 8057bcf
Showing 165 changed files with 30,045 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# This is a config file for flake-8, a python tool to detect linting issues.
# Basically a grammar checker for code, below E203 is turned off since it conflicts with
# Black formatting.
[flake8]
ignore = E203, W503
max-line-length = 88
38 changes: 38 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# This workflow will install Python dependencies, run tests, lint, and build docs
# This run for every pull request

name: Build Docs

on:
push:
branches: [ "main" ]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip setuptools
- name: Build neospy
run: |
python3 -m pip install '.[dev]' -v
- name: Build Docs
run: |
(cd doc && make clean && make html && make doctest)
- name: Archive Docs
uses: actions/upload-artifact@v2
with:
name: "docs"
path:
doc/html/*
79 changes: 79 additions & 0 deletions .github/workflows/release-wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# This workflow will create wheels files for all major distros for several versions of python.
# This only triggers on release tags.

name: Release-Wheels

on:
push:
tags: 'v[0-9]+.[0-9]+.[0-9]+'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build_wheels:
name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }}-${{ matrix.manylinux_image }}
runs-on: ${{ matrix.os }}
timeout-minutes: 30
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
matrix:
include:
# Window 64 bit
- os: windows-2019
python: 310
platform_id: win_amd64
- os: windows-2019
python: 311
platform_id: win_amd64

# Linux 64 bit manylinux2014
- os: ubuntu-latest
python: 310
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 311
platform_id: manylinux_x86_64
manylinux_image: manylinux2014

# MacOS x86_64
- os: macos-latest
python: 310
platform_id: macosx_x86_64
- os: macos-latest
python: 311
platform_id: macosx_x86_64
steps:
- uses: actions/checkout@v3
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- run: cargo test --all-features
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip setuptools
python3 -m pip install cibuildwheel
- name: Build wheels
env:
CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }}
CIBW_ARCHS: all
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_image }}
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_image }}
CIBW_TEST_SKIP: "*-macosx_arm64"
CIBW_ENVIRONMENT: 'PATH="$HOME/.cargo/bin:$PATH" CARGO_TERM_COLOR="always"'
CIBW_ENVIRONMENT_WINDOWS: 'PATH="$UserProfile\.cargo\bin;$PATH"'
CIBW_BEFORE_BUILD: rustup show
CIBW_BEFORE_BUILD_LINUX: >
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=stable --profile=minimal -y &&
rustup show
CIBW_TEST_REQUIRES: pytest
CIBW_BUILD_VERBOSITY: 1
CONDA_HOME: /usr/local/miniconda
run: python3 -m cibuildwheel --output-dir wheelhouse
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
43 changes: 43 additions & 0 deletions .github/workflows/test-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# This workflow will install Python dependencies, run tests, lint, and build docs
# This run for every pull request

name: Tests and Lint

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build:
timeout-minutes: 10
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip setuptools black mypy types-requests numpy
- name: Black Formatting
run: |
python3 -m black . --check
- name: Lint with mypy
run: |
python3 -m mypy src/neospy/
- name: Build neospy
run: |
python3 -m pip install '.[dev]' -v
- name: Test with pytest
run: |
python3 -m pytest --cov-report term-missing --cov=neospy
- name: Test with cargo
run: |
cargo test
51 changes: 51 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Visual Studio Proj Files
.venv*
.env
.vscode

# hide intellij files
.idea

# Cache
.mypy_cache
*__pycache__
*.pyc
*.coverage
.coverage*
*.pytest_cache

# database files
*.db*

# dis pkg
*egg-info
*.eggs
dist
_skbuild
build
_skbuild

# Mac files
.DS_Store

# Ignore built library
*.so
*.mod
*.lock

target/*
*.lock

# Ignore built documents
doc/html
doc/doctrees
doc/auto_examples
doc/plot_directive
doc/doctest
doc/latex
doc/sg_execution_times.rst
*.mod

# Ignored downloaded cached files
**/data/*.json.gz
**/data/neowise_diameters_albedos*
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]


## [0.2.0] - 2024-3-16

Initial Release


- Initial version release of NEOSpy!
- NEOSpy's primary goal is to enable simulations of NEOs, however it also supports any
asteroid or comet. Included are n-body orbit propagation tools, thermal and optical
modeling, tools for computing what minor planets can be seen by an observer.
Along with many helpful interfaces to web tools such as JPL Horizons or IPAC's IRSA.

### Added
[Unreleased]: https://github.com/IPAC-SW/neospy/tree/main
[0.2.0]: https://github.com/IPAC-SW/neospy/releases/tag/v0.2.0
28 changes: 28 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

[package]
name = "_rust"
version = "0.2.0"
edition = "2021"


[dependencies]
neospy_core = { version = "*", path = "src/neospy_core", features=["pyo3"]}
pyo3 = { version = "0.21", features = ["extension-module"] }
serde = { version = "*", features = ["derive"] }
bincode = {version = "2.0.0-rc.3", features=["derive", "serde"]}
ndarray = "*"
nalgebra = "*"
itertools = "*"
rayon = "*"

[lib]
name = "_rust"
path = "src/neospy/rust/lib.rs"
crate-type = ["cdylib"]

[workspace]
members = ["src/neospy_core"]
default-members = ["src/neospy_core"]

[profile.release]
opt-level = 3
3 changes: 3 additions & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
include src/neospy/data/*
include src/neospy/_rust*
exclude src/neospy/data/*.gz
Loading

0 comments on commit 8057bcf

Please sign in to comment.