Skip to content

Commit

Permalink
ci(dev-deps): Update CI and dev deps to run on Python 3.12
Browse files Browse the repository at this point in the history
  • Loading branch information
chriswmackey committed Oct 16, 2024
1 parent 0cf270b commit 130ad65
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 84 deletions.
14 changes: 4 additions & 10 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
name: Unit tests
strategy:
matrix:
python-version: ['3.10']
python-version: ['3.10', '3.12']
os: [macos-latest, ubuntu-latest, windows-latest]

runs-on: ${{ matrix.os }}
Expand All @@ -26,13 +26,7 @@ jobs:
pip install -r dev-requirements.txt
pip install -r mapping-requirements.txt
- name: run tests
run: python -m pytest --cov=. tests/
- name: run test coverage
if: ${{ matrix.python-version == 3.7 }}
run: |
echo "Coveralls is no longer supported"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: python -m pytest tests/

deploy:
name: Deploy to GitHub and PyPI
Expand All @@ -44,7 +38,7 @@ jobs:
- name: set up Python
uses: actions/setup-python@v2
with:
python-version: 3.7
python-version: '3.12'
- name: set up node # we need node for for semantic release
uses: actions/setup-node@v4
with:
Expand Down Expand Up @@ -104,7 +98,7 @@ jobs:
- name: set up Python
uses: actions/setup-python@v2
with:
python-version: 3.7
python-version: '3.12'
- name: install dependencies
run: |
pip install -U .
Expand Down
31 changes: 30 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ Ladybug-comfort is a Python library that adds thermal comfort functionalities to

## Installation

To install the library use:

`pip install ladybug-comfort`

If you want to also include the dependencies needed for thermal mapping use:
Expand All @@ -40,7 +42,34 @@ print(utci_obj_exposed.percent_neutral) # comfortable percent of time with sun
print(utci_obj_protected.percent_neutral) # comfortable percent of time without sun + wind
```

### derivative work
## Local Development
1. Clone this repo locally
```console
git clone git@github.com:ladybug-tools/ladybug-comfort.git

# or

git clone https://github.com/ladybug-tools/ladybug-comfort.git
```
2. Install dependencies:
```console
cd ladybug-comfort
pip install -r dev-requirements.txt
pip install -r requirements.txt
```

3. Run Tests:
```console
python -m pytest ./tests
```

4. Generate Documentation:
```console
sphinx-apidoc -f -e -d 4 -o ./docs ./ladybug_comfort
sphinx-build -b html ./docs ./docs/_build/docs
```

### Derivative Work

Ladybug-comfort is a derivative work of the following software projects:

Expand Down
29 changes: 12 additions & 17 deletions dev-requirements.txt
Original file line number Diff line number Diff line change
@@ -1,23 +1,18 @@
coverage==5.5
coveralls==1.7.0;python_version<'3.0'
coveralls==2.2.0;python_version>='3.6'
pytest==4.6.9;python_version<'3.0'
pytest==6.2.4;python_version>='3.6'
pytest-cov==2.12.0
Sphinx==1.8.5;python_version<'3.0'
Sphinx==5.3.0;python_version>='3.6'
docutils==0.17;python_version>='3.6'
pytest==8.3.2;python_version>='3.6'
Sphinx==8.0.2;python_version>='3.6'
sphinx-bootstrap-theme==0.8.1
sphinxcontrib-fulltoc==1.2.0
sphinxcontrib-websupport==2.0.0;python_version>='3.6'
sphinx-click==6.0.0;python_version>='3.6'
twine==5.1.1;python_version>='3.6'
wheel==0.44.0;python_version>='3.6'
setuptools==75.1.0;python_version>='3.6'
importlib-metadata==8.5.0;python_version>='3.6'
pytest==4.6.9;python_version<'3.0'
Sphinx==1.8.5;python_version<'3.0'
sphinxcontrib-websupport==1.1.2;python_version<'3.0'
sphinxcontrib-websupport==1.2.4;python_version>='3.6'
sphinx-click==4.4.0
sphinx-click==4.4.0;python_version<'3.0'
twine==1.13.0;python_version<'3.0'
twine==3.4.1;python_version>='3.6'
wheel==0.38.1
wheel==0.38.1;python_version<'3.0'
setuptools==44.1.0;python_version<'3.0'
setuptools==65.5.1;python_version>='3.6'
importlib-metadata==2.0.0;python_version<'3.0'
importlib-metadata==4.8.0;python_version>='3.6'
jinja2==3.0.3;python_version>='3.6'
markupsafe==2.0.1;python_version>='3.6'
67 changes: 42 additions & 25 deletions docs/_static/custom.css
Original file line number Diff line number Diff line change
Expand Up @@ -5,44 +5,61 @@
* Sphinx stylesheet -- Bootstrap theme.
*/

/* Overwrite colors */
div.navbar-inverse {
background-color: #EB2227;
border-color: #EB2227;
}
a {
color: #EB2227;
}
a:visited {
color: #Bf0408;
}
code {
color: #Bf0408;
}
div.bs-sidenav a {
color: #333333;
}

/* The code below is based on the bootstrap website sidebar */
/* Prevent top nav from blocking docs */
div.navbar-fixed-top {
position: absolute;
}

/* Indent the side nav when in mobile mode */
@media screen and (min-width: 0px) {
div.bs-sidenav ul {
margin-bottom: 0;
padding-left: 5px;
list-style: none;
}
}

/* Show and affix the side nav when space allows it */
/* Widen and de-indent the side nav when space is restricted */
@media screen and (min-width: 992px) {
.bs-sidenav .nav > .active > ul {
display: block;
}
div.bs-sidenav ul {
margin-bottom: 0;
padding-left: 5px;
padding-left: 0px;
list-style: none;
}
div.bs-sidenav a {
color: #333333;
}
/* Widen the fixed sidenav */
.bs-sidenav.affix,
.bs-sidenav.affix-bottom {
width: 292px;
}
.bs-sidenav.affix {
position: fixed; /* Undo the static from mobile first approach */
}
.bs-sidenav.affix-bottom {
position: absolute; /* Undo the static from mobile first approach */
}
.bs-sidenav.affix-bottom .bs-sidenav,
.bs-sidenav.affix .bs-sidenav {
margin-top: 0;
margin-bottom: 0;
.bs-sidenav {
width: 300px;
}
}

/* Slightly indent the side nav when space allows it */
@media screen and (min-width: 1200px) {
/* Widen the fixed sidenav again */
.bs-sidenav.affix-bottom,
.bs-sidenav.affix {
width: 360px;
div.bs-sidenav ul {
margin-bottom: 0;
padding-left: 5px;
list-style: none;
}
.bs-sidenav {
width: 370px;
}
}
24 changes: 8 additions & 16 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
import os
import re
import sys

# The theme to use for HTML and HTML Help pages
import sphinx_bootstrap_theme

sys.path.insert(0, os.path.abspath('../'))

# -- Project information -----------------------------------------------------
Expand Down Expand Up @@ -70,7 +74,7 @@
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
language = 'en'

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
Expand All @@ -80,14 +84,11 @@
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None

# hide the class names in the nav bar
toc_object_entries_show_parents = 'hide'

# -- Options for HTML output -------------------------------------------------

# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
import sphinx_bootstrap_theme

# html_theme = 'alabaster'
html_theme = 'bootstrap'
html_theme_path = sphinx_bootstrap_theme.get_html_theme_path()
Expand Down Expand Up @@ -125,6 +126,7 @@
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
html_css_files = ['custom.css']

# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
Expand Down Expand Up @@ -598,13 +600,3 @@ def update_doc_index(proj_folder, lib_name):
create_cli_files()

# -----------------------------------------------------------------------------


def setup(app):
"""Run custom code with access to the Sphinx application object
Args:
app: the Sphinx application object
"""

# Add bootstrap theme custom stylesheet
app.add_stylesheet("custom.css")
30 changes: 15 additions & 15 deletions ladybug_comfort/cli/_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,21 +191,21 @@ def smallest_integer_dtype(array: np.ndarray):
Args:
array: NumPy array.
Returns:
A NumPy integer dtype.
"""
if np.all(array >= np.iinfo(np.int8).min) and \
np.all(array <= np.iinfo(np.int8).max):
np.all(array <= np.iinfo(np.int8).max):
return np.int8
elif np.all(array >= np.iinfo(np.int16).min) and \
np.all(array <= np.iinfo(np.int16).max):
np.all(array <= np.iinfo(np.int16).max):
return np.int16
elif np.all(array >= np.iinfo(np.int32).min) and \
np.all(array <= np.iinfo(np.int32).max):
np.all(array <= np.iinfo(np.int32).max):
return np.int32
elif np.all(array >= np.iinfo(np.int64).min) and \
np.all(array <= np.iinfo(np.int64).max):
np.all(array <= np.iinfo(np.int64).max):
return np.int64


Expand All @@ -221,20 +221,20 @@ def smallest_float_dtype(array: np.ndarray, rtol: float = 1e-5, atol: float = 1e
is 1e-5.
atol: The absolute tolerance parameter for `np.allclose`. The default
is 1e-5.
Returns:
A NumPy floating dtype.
"""
if np.all((array >= np.finfo(np.float16).min) & \
(array <= np.finfo(np.float16).max)):
if np.all((array >= np.finfo(np.float16).min) &
(array <= np.finfo(np.float16).max)):
if np.allclose(array, array.astype(np.float16), rtol=rtol, atol=atol):
return np.float16
if np.all((array >= np.finfo(np.float32).min) & \
(array <= np.finfo(np.float32).max)):
if np.all((array >= np.finfo(np.float32).min) &
(array <= np.finfo(np.float32).max)):
if np.allclose(array, array.astype(np.float32), rtol=rtol, atol=atol):
return np.float32
if np.all((array >= np.finfo(np.float64).min) & \
(array <= np.finfo(np.float64).max)):
if np.all((array >= np.finfo(np.float64).min) &
(array <= np.finfo(np.float64).max)):
if np.allclose(array, array.astype(np.float64), rtol=rtol, atol=atol):
return np.float64

Expand All @@ -248,7 +248,7 @@ def smallest_dtype(array: np.ndarray, rtol: float = 1e-5, atol: float = 1e-5):
is 1e-5. This is also used if the dtype of the array is np.floating.
atol: The absolute tolerance parameter for `np.allclose`. The default
is 1e-5. This is also used if the dtype of the array is np.floating.
Returns:
A NumPy dtype.
"""
Expand All @@ -262,14 +262,14 @@ def smallest_dtype(array: np.ndarray, rtol: float = 1e-5, atol: float = 1e-5):

def set_smallest_dtype(array: np.ndarray, rtol: float = 1e-5, atol: float = 1e-5):
"""Return a NumPy array with the smallest possible dtype.
Args:
array: NumPy array.
rtol: The relative tolerance parameter for `np.allclose`. The default
is 1e-5. This is also used if the dtype of the array is np.floating.
atol: The absolute tolerance parameter for `np.allclose`. The default
is 1e-5. This is also used if the dtype of the array is np.floating.
Returns:
A new NumPy array with a smaller dtype.
"""
Expand Down

0 comments on commit 130ad65

Please sign in to comment.