Skip to content

Commit 791e0b2

Browse files
authored
Merge pull request #94 from csdms/mcflugen/add-annotations
Add type annotations
2 parents d4800a1 + 732aa55 commit 791e0b2

File tree

15 files changed

+187
-142
lines changed

15 files changed

+187
-142
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,5 @@ repos:
7171
hooks:
7272
- id: mypy
7373
additional_dependencies: [types-all]
74+
files: babelizer/.*\.py$
7475
exclude: ^babelizer/data

babelizer/_datadir.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import sys
24

35
if sys.version_info >= (3, 12): # pragma: no cover (PY12+)

babelizer/_files/bmi_py.py

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
from __future__ import annotations
2+
13
import os
4+
from collections.abc import Mapping
5+
from typing import Any
26

37

4-
def render(plugin_metadata) -> str:
8+
def render(plugin_metadata: Mapping[str, Any]) -> str:
59
"""Render _bmi.py."""
6-
languages = {
7-
library["language"] for library in plugin_metadata._meta["library"].values()
8-
}
10+
languages = {library["language"] for library in plugin_metadata["library"].values()}
911
assert len(languages) == 1
1012
language = languages.pop()
1113

@@ -15,22 +17,18 @@ def render(plugin_metadata) -> str:
1517
return _render_bmi_c(plugin_metadata)
1618

1719

18-
def _render_bmi_c(plugin_metadata) -> str:
20+
def _render_bmi_c(plugin_metadata: Mapping[str, Any]) -> str:
1921
"""Render _bmi.py for a non-python library."""
20-
languages = [
21-
library["language"] for library in plugin_metadata._meta["library"].values()
22-
]
22+
languages = [library["language"] for library in plugin_metadata["library"].values()]
2323
language = languages[0]
2424
assert language in ("c", "c++", "fortran")
2525

2626
imports = [
27-
f"from {plugin_metadata.get('package', 'name')}.lib import {cls}"
28-
for cls in plugin_metadata._meta["library"]
27+
f"from {plugin_metadata['package']['name']}.lib import {cls}"
28+
for cls in plugin_metadata["library"]
2929
]
3030

31-
names = [
32-
f" {cls!r},".replace("'", '"') for cls in plugin_metadata._meta["library"]
33-
]
31+
names = [f" {cls!r},".replace("'", '"') for cls in plugin_metadata["library"]]
3432

3533
return f"""\
3634
{os.linesep.join(sorted(imports))}
@@ -41,11 +39,9 @@ def _render_bmi_c(plugin_metadata) -> str:
4139
"""
4240

4341

44-
def _render_bmi_py(plugin_metadata) -> str:
42+
def _render_bmi_py(plugin_metadata: Mapping[str, Any]) -> str:
4543
"""Render _bmi.py for a python library."""
46-
languages = [
47-
library["language"] for library in plugin_metadata._meta["library"].values()
48-
]
44+
languages = [library["language"] for library in plugin_metadata["library"].values()]
4945
language = languages[0]
5046
assert language == "python"
5147

@@ -60,7 +56,7 @@ def _render_bmi_py(plugin_metadata) -> str:
6056

6157
imports = [
6258
f"from {component['library']} import {component['entry_point']} as {cls}"
63-
for cls, component in plugin_metadata._meta["library"].items()
59+
for cls, component in plugin_metadata["library"].items()
6460
]
6561

6662
rename = [
@@ -70,12 +66,10 @@ def _render_bmi_py(plugin_metadata) -> str:
7066
""".replace(
7167
"'", '"'
7268
)
73-
for cls in plugin_metadata._meta["library"]
69+
for cls in plugin_metadata["library"]
7470
]
7571

76-
names = [
77-
f" {cls!r},".replace("'", '"') for cls in plugin_metadata._meta["library"]
78-
]
72+
names = [f" {cls!r},".replace("'", '"') for cls in plugin_metadata["library"]]
7973

8074
return f"""\
8175
{header}

babelizer/_files/gitignore.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
from __future__ import annotations
2+
13
import os
4+
from collections.abc import Mapping
5+
from typing import Any
26

37

4-
def render(plugin_metadata) -> str:
8+
def render(plugin_metadata: Mapping[str, Any]) -> str:
59
"""Render a .gitignore file."""
610
package_name = plugin_metadata["package"]["name"]
711

babelizer/_files/init_py.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1+
from __future__ import annotations
2+
13
import os
4+
from collections.abc import Mapping
5+
from typing import Any
26

37

4-
def render(plugin_metadata) -> str:
8+
def render(plugin_metadata: Mapping[str, Any]) -> str:
59
"""Render __init__.py."""
6-
package_name = plugin_metadata.get("package", "name")
10+
package_name = plugin_metadata["package"]["name"]
711

812
imports = [f"from {package_name}._version import __version__"]
913
imports += [
10-
f"from {package_name}._bmi import {cls}"
11-
for cls in plugin_metadata._meta["library"]
14+
f"from {package_name}._bmi import {cls}" for cls in plugin_metadata["library"]
1215
]
1316

14-
names = [
15-
f" {cls!r},".replace("'", '"') for cls in plugin_metadata._meta["library"]
16-
]
17+
names = [f" {cls!r},".replace("'", '"') for cls in plugin_metadata["library"]]
1718

1819
return f"""\
1920
{os.linesep.join(sorted(imports))}

babelizer/_files/lib_init_py.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1+
from __future__ import annotations
2+
13
import os
4+
from collections.abc import Mapping
5+
from typing import Any
26

37

4-
def render(plugin_metadata) -> str:
8+
def render(plugin_metadata: Mapping[str, Any]) -> str:
59
"""Render lib/__init__.py."""
6-
package_name = plugin_metadata.get("package", "name")
10+
package_name = plugin_metadata["package"]["name"]
711
imports = [
812
f"from {package_name}.lib.{cls.lower()} import {cls}"
9-
for cls in plugin_metadata._meta["library"]
13+
for cls in plugin_metadata["library"]
1014
]
1115

12-
names = [
13-
f" {cls!r},".replace("'", '"') for cls in plugin_metadata._meta["library"]
14-
]
16+
names = [f" {cls!r},".replace("'", '"') for cls in plugin_metadata["library"]]
1517

1618
return f"""\
1719
{os.linesep.join(sorted(imports))}

babelizer/_files/license_rst.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
from __future__ import annotations
2+
3+
from collections.abc import Mapping
14
from datetime import datetime
5+
from typing import Any
26

37

4-
def render(plugin_metadata) -> str:
8+
def render(plugin_metadata: Mapping[str, Any]) -> str:
59
"""Render LICENSE.rst."""
610
license_name = plugin_metadata["info"]["package_license"]
711
kwds = {

babelizer/_files/meson_build.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import os
24
from collections import defaultdict
35
from collections.abc import Iterable
@@ -60,7 +62,7 @@ def render(paths: Iterable[str], install: Iterable[str] = ()) -> str:
6062
return (2 * os.linesep).join(contents)
6163

6264

63-
def _render_install_block(install: Iterable[str]):
65+
def _render_install_block(install: Iterable[str]) -> str:
6466
install_sources = defaultdict(list)
6567
for root, fname in (os.path.split(src) for src in install):
6668
install_sources[root].append(fname)

babelizer/_files/readme.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
from __future__ import annotations
2+
3+
from typing import Any
4+
15
from jinja2 import Environment
26
from jinja2 import FileSystemLoader
37

48
from babelizer._datadir import get_datadir
59

610

7-
def render(context):
11+
def render(context: dict[str, Any]) -> str:
812
env = Environment(loader=FileSystemLoader(get_datadir()))
913
template = env.get_template("{{cookiecutter.package_name}}/README.rst")
1014

0 commit comments

Comments
 (0)