Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Copier update #134

Merged
merged 3 commits into from
Aug 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .copier-answers.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Changes here will be overwritten by Copier
_commit: 2.1.0
_commit: 2.2.0
_src_path: gh:DiamondLightSource/python-copier-template
author_email: gary.yendell@diamond.ac.uk
author_name: Gary Yendell
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,4 @@
"workspaceMount": "source=${localWorkspaceFolder}/..,target=/workspaces,type=bind",
// After the container is created, install the python project in editable form
"postCreateCommand": "pip install $([ -f dev-requirements.txt ] && echo '-c dev-requirements.txt') -e '.[dev]' && pre-commit install"
}
}
2 changes: 1 addition & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ It is recommended that developers use a [vscode devcontainer](https://code.visua

This project was created using the [Diamond Light Source Copier Template](https://github.com/DiamondLightSource/python-copier-template) for Python projects.

For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/2.1.0/how-to.html).
For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/2.2.0/how-to.html).
21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: Bug Report
about: The template to use for reporting bugs and usability issues
title: " "
labels: 'bug'
assignees: ''

---

Describe the bug, including a clear and concise description of the expected behavior, the actual behavior and the context in which you encountered it (ideally include details of your environment).

## Steps To Reproduce
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error


## Acceptance Criteria
- Specific criteria that will be used to judge if the issue is fixed
13 changes: 13 additions & 0 deletions .github/ISSUE_TEMPLATE/issue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
name: Issue
about: The standard template to use for feature requests, design discussions and tasks
title: " "
labels: ''
assignees: ''

---

A brief description of the issue, including specific stakeholders and the business case where appropriate

## Acceptance Criteria
- Specific criteria that will be used to judge if the issue is fixed
8 changes: 8 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Fixes #ISSUE

### Instructions to reviewer on how to test:
1. Do thing x
2. Confirm thing y happens

### Checks for reviewer
- [ ] Would the PR title make sense to a user on a set of release notes
2 changes: 1 addition & 1 deletion .github/pages/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@
<link rel="canonical" href="main/index.html">
</head>

</html>
</html>
4 changes: 2 additions & 2 deletions .github/workflows/_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ jobs:
if: github.ref_type == 'tag' || github.ref_name == 'main'
# We pin to the SHA, not the tag, for security reasons.
# https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
uses: peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 # v3.9.3
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4.0.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: .github/pages
keep_files: true
keep_files: true
2 changes: 1 addition & 1 deletion .github/workflows/_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
- name: Create GitHub Release
# We pin to the SHA, not the tag, for security reasons.
# https://docs.github.com/en/actions/learn-github-actions/security-hardening-for-github-actions#using-third-party-actions
uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 # v2.0.4
uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8
with:
prerelease: ${{ contains(github.ref_name, 'a') || contains(github.ref_name, 'b') || contains(github.ref_name, 'rc') }}
files: "*"
Expand Down
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ repos:
- id: check-added-large-files
- id: check-yaml
- id: check-merge-conflict
- id: end-of-file-fixer

- repo: local
hooks:
Expand Down
2 changes: 1 addition & 1 deletion .vscode/extensions.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"recommendations": [
"ms-vscode-remote.remote-containers",
]
}
}
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -416,4 +416,4 @@
],
},
]
}
}
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"editor.codeActionsOnSave": {
"source.organizeImports": "explicit"
},
"files.insertFinalNewline": true,
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
},
}
}
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
"problemMatcher": [],
}
]
}
}
4 changes: 2 additions & 2 deletions catalog-info.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ metadata:
title: pvi
description: EPICS PV Interface described in YAML
spec:
type: documentation
type: library
lifecycle: experimental
owner: mef65357
owner: mef65357
2 changes: 1 addition & 1 deletion docs/how-to/contribute.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
```{include} ../../.github/CONTRIBUTING.md
```
```
20 changes: 10 additions & 10 deletions docs/images/dls-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/tutorials/create-pvi-device.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,4 @@ pvi reconvert simDetector.pvi.device.yaml simDetector.template simDetectorExtras

:::{note}
See `pvi reconvert --help` for a full list of options.
:::
:::
25 changes: 16 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[build-system]
requires = ["setuptools>=64", "setuptools_scm[toml]>=6.2"]
requires = ["setuptools>=64", "setuptools_scm[toml]>=8"]
build-backend = "setuptools.build_meta"

[project]
Expand Down Expand Up @@ -62,7 +62,7 @@ pvi = "pvi.__main__:app"
GitHub = "https://github.com/epics-containers/pvi"

[tool.setuptools_scm]
write_to = "src/pvi/_version.py"
version_file = "src/pvi/_version.py"

[tool.pyright]
reportMissingImports = false # Ignore missing stubs in imported modules
Expand Down Expand Up @@ -113,11 +113,18 @@ commands =
src = ["src", "tests"]
line-length = 88
lint.select = [
"B", # flake8-bugbear - https://docs.astral.sh/ruff/rules/#flake8-bugbear-b
"C4", # flake8-comprehensions - https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
"E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e
"F", # pyflakes rules - https://docs.astral.sh/ruff/rules/#pyflakes-f
"W", # pycodestyle warnings - https://docs.astral.sh/ruff/rules/#warning-w
"I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
"UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
"B", # flake8-bugbear - https://docs.astral.sh/ruff/rules/#flake8-bugbear-b
"C4", # flake8-comprehensions - https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
"E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e
"F", # pyflakes rules - https://docs.astral.sh/ruff/rules/#pyflakes-f
"W", # pycodestyle warnings - https://docs.astral.sh/ruff/rules/#warning-w
"I", # isort - https://docs.astral.sh/ruff/rules/#isort-i
"UP", # pyupgrade - https://docs.astral.sh/ruff/rules/#pyupgrade-up
"SLF", # self - https://docs.astral.sh/ruff/settings/#lintflake8-self
]

[tool.ruff.lint.per-file-ignores]
# By default, private member access is allowed in tests
# See https://github.com/DiamondLightSource/python-copier-template/issues/154
# Remove this line to forbid private member access in tests
"tests/**/*" = ["SLF001"]
2 changes: 1 addition & 1 deletion schemas/pvi.device.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -1230,4 +1230,4 @@
],
"title": "Device",
"type": "object"
}
}
2 changes: 1 addition & 1 deletion schemas/pvi.formatter.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,4 @@
"$ref": "#/$defs/DLSFormatter"
}
]
}
}
2 changes: 1 addition & 1 deletion src/pvi/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def schema(
typer.echo(f"Don't know how to create {output.name}")
raise typer.Exit(code=1)

output.write_text(json.dumps(schema, indent=2))
output.write_text(json.dumps(schema, indent=2) + "\n")


@app.command()
Expand Down
2 changes: 1 addition & 1 deletion src/pvi/_format/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def create_schema(cls) -> dict[str, Any]:
Formatter itself is not included, as it should not be instanstiated directly.

"""
cls._rebuild_child_models()
cls.rebuild_child_models()
return cls.type_adapter().json_schema()

def format(self, device: Device, path: Path) -> None:
Expand Down
1 change: 0 additions & 1 deletion src/pvi/_format/dls.edl
Original file line number Diff line number Diff line change
Expand Up @@ -338,4 +338,3 @@ indicatorPv "None"
font "arial-bold-r-14.0"
orientation "horizontal"
endObjectProperties

1 change: 0 additions & 1 deletion src/pvi/_format/pvi.template.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ record("*", "{{ record.pv }}") {
}
{% endfor %}
### End of PV Interface for {{ device }} ###

2 changes: 1 addition & 1 deletion src/pvi/_format/template.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,4 @@ def format_template(device: Device, pv_prefix: str, output: Path):
template_txt = Template(template.read()).render(
device=device.label, pv_prefix=pv_prefix, records=records
)
expanded.write(template_txt)
expanded.write(template_txt + "\n")
6 changes: 3 additions & 3 deletions src/pvi/typed_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,16 @@ def model_json_schema(
):
"""Ensure all child models have type field added before generating schema."""
if not cls.models_typed:
TypedModel._rebuild_child_models()
TypedModel.rebuild_child_models()

return super().model_json_schema(by_alias, ref_template, schema_generator, mode)

@classmethod
def _rebuild_child_models(cls):
def rebuild_child_models(cls):
"""Recursively rebuild all subclass models to add type into core schema."""
for subclass in cls.__subclasses__():
subclass.model_rebuild(force=True)
subclass._rebuild_child_models()
subclass.rebuild_child_models()

@classmethod
def _tag(cls):
Expand Down
2 changes: 1 addition & 1 deletion tests/format/input/dls.bob.pvi.formatter.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ title_height: 26
max_height: 900
label_width: 120
widget_width: 120
widget_height: 20
widget_height: 20
2 changes: 1 addition & 1 deletion tests/format/input/dls.edl.pvi.formatter.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# yaml-language-server: $schema=../../../schemas/pvi.formatter.schema.json
type: DLSFormatter
type: DLSFormatter