maidr 1.4.4__tar.gz → 1.4.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- maidr-1.4.8/.commitlintrc.cjs +10 -0
- maidr-1.4.8/.editorconfig +17 -0
- maidr-1.4.8/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- maidr-1.4.8/.github/ISSUE_TEMPLATE/feature_request.md +37 -0
- maidr-1.4.8/.github/PULL_REQUEST_TEMPLATE.md +53 -0
- maidr-1.4.8/.github/copilot-instructions.md +5 -0
- maidr-1.4.8/.github/workflows/ci.yml +86 -0
- maidr-1.4.8/.github/workflows/docs.yml +51 -0
- maidr-1.4.8/.github/workflows/release.yml +129 -0
- maidr-1.4.8/.gitignore +177 -0
- maidr-1.4.8/.pre-commit-config.yaml +6 -0
- maidr-1.4.8/.vscode/extensions.json +44 -0
- maidr-1.4.8/.vscode/settings.json +74 -0
- maidr-1.4.8/CHANGELOG.md +1302 -0
- maidr-1.4.8/CONDUCT.md +43 -0
- maidr-1.4.8/CONTRIBUTING.md +21 -0
- {maidr-1.4.4 → maidr-1.4.8}/PKG-INFO +28 -20
- maidr-1.4.8/docs/.gitignore +11 -0
- maidr-1.4.8/docs/CNAME +1 -0
- maidr-1.4.8/docs/_environment +1 -0
- maidr-1.4.8/docs/_extensions/machow/interlinks/.gitignore +3 -0
- maidr-1.4.8/docs/_extensions/machow/interlinks/_extension.yml +7 -0
- maidr-1.4.8/docs/_extensions/machow/interlinks/interlinks.lua +254 -0
- maidr-1.4.8/docs/_extensions/shafayetShafee/line-highlight/_extension.yml +8 -0
- maidr-1.4.8/docs/_extensions/shafayetShafee/line-highlight/line-highlight.lua +167 -0
- maidr-1.4.8/docs/_extensions/shafayetShafee/line-highlight/resources/css/line-highlight.css +35 -0
- maidr-1.4.8/docs/_extensions/shafayetShafee/line-highlight/resources/js/line-highlight.js +132 -0
- maidr-1.4.8/docs/_quarto.yml +110 -0
- maidr-1.4.8/docs/examples.qmd +606 -0
- maidr-1.4.8/docs/index.qmd +376 -0
- maidr-1.4.8/docs/styles.css +1 -0
- maidr-1.4.8/example/bar/example_bar_plot.ipynb +142 -0
- maidr-1.4.8/example/bar/matplotlib/example_mpl_bar_plot.py +18 -0
- maidr-1.4.8/example/bar/seaborn/example_sns_bar_plot.py +19 -0
- maidr-1.4.8/example/box/example_box_plot.ipynb +230 -0
- maidr-1.4.8/example/box/matplotlib/example_mpl_box.py +64 -0
- maidr-1.4.8/example/box/seaborn/example_sns_box.py +42 -0
- maidr-1.4.8/example/candle_stick/legacy_candlestick_example.py +241 -0
- maidr-1.4.8/example/candle_stick/mplfinance_candlestick_example.py +46 -0
- maidr-1.4.8/example/candle_stick/volcandat.csv +21 -0
- maidr-1.4.8/example/count/example_count_plot.ipynb +88 -0
- maidr-1.4.8/example/count/seaborn/example_sns_count_plot.py +16 -0
- maidr-1.4.8/example/dodged/matplotlib/example_mpl_dodged.py +47 -0
- maidr-1.4.8/example/dodged/seaborn/example_sns_dodged.py +74 -0
- maidr-1.4.8/example/facet-subplots/matplotlib/example_mpl_facet_bar_plot.py +61 -0
- maidr-1.4.8/example/facet-subplots/matplotlib/example_mpl_facet_combined_plot.py +119 -0
- maidr-1.4.8/example/facet-subplots/seaborn/example_sns_facet_bar_plot.py +95 -0
- maidr-1.4.8/example/facet-subplots/seaborn/example_sns_facet_combined_plot.py +238 -0
- maidr-1.4.8/example/heatmap/example_heatmap_plot.ipynb +170 -0
- maidr-1.4.8/example/heatmap/matplotlib/example_mpl_heatmap.py +59 -0
- maidr-1.4.8/example/heatmap/seaborn/example_sns_heatmap.py +16 -0
- maidr-1.4.8/example/histogram/example_histogram_plot.ipynb +129 -0
- maidr-1.4.8/example/histogram/matplotlib/example_mpl_hist.py +19 -0
- maidr-1.4.8/example/histogram/matplotlib/histogram_with_kde_matplotlib.py +35 -0
- maidr-1.4.8/example/histogram/seaborn/example_sns_hist.py +21 -0
- maidr-1.4.8/example/histogram/seaborn/histogram_with_kde_seaborn.py +39 -0
- maidr-1.4.8/example/kde/example_kde_plots.ipynb +244 -0
- maidr-1.4.8/example/kde/matplotlib/multiple_kde_matplotlib.py +43 -0
- maidr-1.4.8/example/kde/matplotlib/single_kde_matplotlib.py +37 -0
- maidr-1.4.8/example/kde/seaborn/multiple_kde_seaborn.py +33 -0
- maidr-1.4.8/example/kde/seaborn/single_kde_seaborn.py +15 -0
- maidr-1.4.8/example/line/example_line_plot.ipynb +153 -0
- maidr-1.4.8/example/line/matplotlib/example_mpl_line.py +29 -0
- maidr-1.4.8/example/line/seaborn/example_sns_line.py +27 -0
- maidr-1.4.8/example/multilayer/example_mpl_multilayer.py +55 -0
- maidr-1.4.8/example/multilayer/example_multilayer_plot.ipynb +129 -0
- maidr-1.4.8/example/multiline/example_multiline_plot.ipynb +187 -0
- maidr-1.4.8/example/multiline/matplotlib/example_mpl_multiline.py +41 -0
- maidr-1.4.8/example/multiline/seaborn/example_sns_multiline.py +47 -0
- maidr-1.4.8/example/multipanel/example_multipanel_plot.ipynb +215 -0
- maidr-1.4.8/example/multipanel/matplotlib/example_mpl_multipanel.py +55 -0
- maidr-1.4.8/example/multipanel/seaborn/example_sns_multipanel.py +62 -0
- maidr-1.4.8/example/quarto/demo.qmd +116 -0
- maidr-1.4.8/example/reg/example_reg_plots.ipynb +126 -0
- maidr-1.4.8/example/reg/matplotlib/example_matplotlib_smooth_plot.py +26 -0
- maidr-1.4.8/example/reg/seaborn/example_sns_reg.py +25 -0
- maidr-1.4.8/example/scatter/example_scatter_plot.ipynb +201 -0
- maidr-1.4.8/example/scatter/matplotlib/example_mpl_scatter.py +20 -0
- maidr-1.4.8/example/scatter/seaborn/example_sns_scatter.py +21 -0
- maidr-1.4.8/example/shiny/example_shiny_scatter.py +52 -0
- maidr-1.4.8/example/stacked/matplotlib/example_mpl_stacked.html +9 -0
- maidr-1.4.8/example/stacked/matplotlib/example_mpl_stacked.py +31 -0
- maidr-1.4.8/example/stacked/seaborn/example_sns_stacked.html +479 -0
- maidr-1.4.8/example/stacked/seaborn/example_sns_stacked.py +41 -0
- maidr-1.4.8/example/streamlit/example_streamlit_app.py +67 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/__init__.py +1 -1
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/maidr.py +5 -7
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/barplot.py +3 -1
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/candlestick.py +11 -8
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/lineplot.py +0 -1
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/mplfinance_barplot.py +3 -1
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/mplfinance_lineplot.py +0 -1
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/barplot.py +0 -2
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/lineplot.py +0 -1
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/mplfinance.py +2 -1
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/mplfinance_utils.py +75 -69
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/plot_detection.py +2 -2
- {maidr-1.4.4 → maidr-1.4.8}/pyproject.toml +62 -35
- maidr-1.4.8/tests/__init__.py +0 -0
- maidr-1.4.8/tests/conftest.py +37 -0
- maidr-1.4.8/tests/core/__init__.py +0 -0
- maidr-1.4.8/tests/core/enum/__init__.py +0 -0
- maidr-1.4.8/tests/core/plot/__init__.py +0 -0
- maidr-1.4.8/tests/core/test_figure_manager.py +76 -0
- maidr-1.4.8/tests/core/test_maidr_plot.py +8 -0
- maidr-1.4.8/tests/core/test_maidr_plot_factory.py +45 -0
- maidr-1.4.8/tests/fixture/__init__.py +0 -0
- maidr-1.4.8/tests/fixture/library_factory.py +11 -0
- maidr-1.4.8/tests/fixture/matplotlib_factory.py +46 -0
- maidr-1.4.8/tests/fixture/seaborn_factory.py +37 -0
- maidr-1.4.8/tox.ini +19 -0
- maidr-1.4.8/uv.lock +3994 -0
- {maidr-1.4.4 → maidr-1.4.8}/LICENSE +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/README.md +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/api.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/__init__.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/context_manager.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/enum/__init__.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/enum/library.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/enum/maidr_key.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/enum/plot_type.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/enum/smooth_keywords.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/figure_manager.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/__init__.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/boxplot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/grouped_barplot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/heatmap.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/histogram.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/maidr_plot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/maidr_plot_factory.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/regplot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/core/plot/scatterplot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/exception/__init__.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/exception/extraction_error.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/__init__.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/boxplot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/candlestick.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/clear.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/common.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/heatmap.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/highlight.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/histogram.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/kdeplot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/regplot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/patch/scatterplot.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/__init__.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/dedup_utils.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/environment.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/mixin/__init__.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/mixin/extractor_mixin.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/mixin/merger_mixin.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/regression_line_utils.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/util/svg_utils.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/widget/__init__.py +0 -0
- {maidr-1.4.4 → maidr-1.4.8}/maidr/widget/shiny.py +0 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
extends: ["@commitlint/config-conventional"],
|
|
3
|
+
rules: {
|
|
4
|
+
"body-max-line-length": [0, "always", 0], // Disable line length checking for the body
|
|
5
|
+
"body-max-length": [0, "always", Infinity], // Disable total body length checking
|
|
6
|
+
"header-max-length": [0, "always", 0], // Disable header length checking
|
|
7
|
+
"footer-max-line-length": [0, "always", 0], // Disable line length checking for the footer
|
|
8
|
+
"footer-max-length": [0, "always", Infinity], // Disable total footer length checking
|
|
9
|
+
},
|
|
10
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Check http://editorconfig.org for more information
|
|
2
|
+
# This is the main config file for this project:
|
|
3
|
+
root = true
|
|
4
|
+
|
|
5
|
+
[*]
|
|
6
|
+
charset = utf-8
|
|
7
|
+
trim_trailing_whitespace = true
|
|
8
|
+
end_of_line = lf
|
|
9
|
+
indent_style = space
|
|
10
|
+
insert_final_newline = true
|
|
11
|
+
indent_size = 2
|
|
12
|
+
|
|
13
|
+
[*.{rs,py,pyi}]
|
|
14
|
+
indent_size = 4
|
|
15
|
+
|
|
16
|
+
[*.md]
|
|
17
|
+
max_line_length = 120
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
title: "fix(): address an issue where "
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Bug Report
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
<!-- Please provide a clear and concise description of the bug. -->
|
|
13
|
+
|
|
14
|
+
## Steps to Reproduce
|
|
15
|
+
|
|
16
|
+
1. Step 1
|
|
17
|
+
2. Step 2
|
|
18
|
+
3. Step 3
|
|
19
|
+
|
|
20
|
+
## Actual Behavior
|
|
21
|
+
<!-- Please describe what actually happened. -->
|
|
22
|
+
|
|
23
|
+
## Expected Behavior
|
|
24
|
+
<!-- Please describe what you expected to happen. -->
|
|
25
|
+
|
|
26
|
+
## Screenshots
|
|
27
|
+
<!-- If applicable, add screenshots to help explain the problem. -->
|
|
28
|
+
<!-- You can take a gif animation screenshot very easily without any additional installation by using this browser-based tool: -->
|
|
29
|
+
<!-- https://gifcap.dev -->
|
|
30
|
+
|
|
31
|
+
## Environment
|
|
32
|
+
- Operating System: [e.g. Windows 10]
|
|
33
|
+
- Browser: [e.g. Chrome, Firefox]
|
|
34
|
+
- Version: [e.g. 1.0.0]
|
|
35
|
+
|
|
36
|
+
## Additional Information
|
|
37
|
+
<!-- Add any other relevant information about the problem here. -->
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
title: "feat: "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Feature Request
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
Please provide a clear and concise description of the feature you would like to request.
|
|
14
|
+
|
|
15
|
+
## Motivation
|
|
16
|
+
|
|
17
|
+
Explain why this feature is important and how it would benefit the project.
|
|
18
|
+
|
|
19
|
+
## Proposed Solution
|
|
20
|
+
|
|
21
|
+
Outline your proposed solution or any ideas you have for implementing this feature.
|
|
22
|
+
|
|
23
|
+
## Additional Context
|
|
24
|
+
|
|
25
|
+
<!-- Add any additional context or screenshots about the feature request here. -->
|
|
26
|
+
<!-- If applicable, add screenshots to help explain the problem. -->
|
|
27
|
+
<!-- You can take a gif animation screenshot very easily without any additional installation by using this browser-based tool: -->
|
|
28
|
+
<!-- https://gifcap.dev -->
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
## Checklist
|
|
32
|
+
|
|
33
|
+
- [ ] I have searched for similar feature requests and confirmed that this is a new request.
|
|
34
|
+
- [ ] I have provided a clear and concise description of the feature.
|
|
35
|
+
- [ ] I have explained the motivation behind this feature request.
|
|
36
|
+
- [ ] I have outlined a proposed solution or ideas for implementing this feature.
|
|
37
|
+
- [ ] I have provided any additional context or screenshots if applicable.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!-- Suggested PR Title: [feat/fix/refactor/perf/test/ci/docs/chore] brief description of the change -->
|
|
2
|
+
<!-- Please follow Conventional Commits: https://www.conventionalcommits.org/en/v1.0.0/ -->
|
|
3
|
+
|
|
4
|
+
## Description
|
|
5
|
+
|
|
6
|
+
Please include a summary of the changes and the related issue. Please also include relevant motivation and context.
|
|
7
|
+
|
|
8
|
+
## Type of Change
|
|
9
|
+
|
|
10
|
+
- [ ] Bug fix
|
|
11
|
+
- [ ] New feature
|
|
12
|
+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
|
13
|
+
- [ ] Documentation update
|
|
14
|
+
|
|
15
|
+
## Checklist
|
|
16
|
+
|
|
17
|
+
- [ ] My code follows the style guidelines of this project
|
|
18
|
+
- [ ] I have performed a self-review of my code
|
|
19
|
+
- [ ] I have commented my code, particularly in hard-to-understand areas
|
|
20
|
+
- [ ] I have made corresponding changes to the documentation
|
|
21
|
+
- [ ] My changes generate no new warnings
|
|
22
|
+
- [ ] Any dependent changes have been merged and published in downstream modules
|
|
23
|
+
|
|
24
|
+
# Pull Request
|
|
25
|
+
|
|
26
|
+
## Description
|
|
27
|
+
<!-- Provide a brief description of the changes made in this pull request. -->
|
|
28
|
+
|
|
29
|
+
## Related Issues
|
|
30
|
+
<!-- Specify any related issues or tickets that this pull request addresses. -->
|
|
31
|
+
|
|
32
|
+
## Changes Made
|
|
33
|
+
<!-- Describe the specific changes made in this pull request. -->
|
|
34
|
+
|
|
35
|
+
## Screenshots (if applicable)
|
|
36
|
+
<!-- Include any relevant screenshots or images to help visualize the changes. -->
|
|
37
|
+
<!-- You can take a gif animation screenshot very easily without any additional installation by using this browser-based tool: -->
|
|
38
|
+
<!-- https://gifcap.dev -->
|
|
39
|
+
|
|
40
|
+
## Checklist
|
|
41
|
+
<!-- Please select all applicable options. -->
|
|
42
|
+
<!-- To select your options, please put an 'x' in the all boxes that apply. -->
|
|
43
|
+
|
|
44
|
+
- [ ] I have read the [Contributor Guidelines](../CONTRIBUTING.md).
|
|
45
|
+
- [ ] I have performed a self-review of my own code and ensured it follows the project's coding standards.
|
|
46
|
+
- [ ] I have tested the changes locally following `ManualTestingProcess.md`, and all tests related to this pull request pass.
|
|
47
|
+
- [ ] I have commented my code, particularly in hard-to-understand areas.
|
|
48
|
+
- [ ] I have updated the documentation, if applicable.
|
|
49
|
+
- [ ] I have added appropriate unit tests, if applicable.
|
|
50
|
+
|
|
51
|
+
## Additional Notes
|
|
52
|
+
<!-- Add any additional notes or comments here. -->
|
|
53
|
+
<!-- Template credit: This pull request template is based on Embedded Artistry {https://github.com/embeddedartistry/templates/blob/master/.github/PULL_REQUEST_TEMPLATE.md}, Clowder {https://github.com/clowder-framework/clowder/blob/develop/.github/PULL_REQUEST_TEMPLATE.md}, and TalAter {https://github.com/TalAter/open-source-templates} templates. -->
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
push:
|
|
7
|
+
branches-ignore:
|
|
8
|
+
- main
|
|
9
|
+
paths-ignore:
|
|
10
|
+
- "docs/**"
|
|
11
|
+
- "*.md"
|
|
12
|
+
|
|
13
|
+
pull_request:
|
|
14
|
+
paths-ignore:
|
|
15
|
+
- "docs/**"
|
|
16
|
+
- "*.md"
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
test:
|
|
20
|
+
# We want to run on external PRs, but not on our own internal PRs as they'll be run
|
|
21
|
+
# by the push to the branch. Without this if check, checks are duplicated since
|
|
22
|
+
# internal PRs match both the push and pull_request events.
|
|
23
|
+
if:
|
|
24
|
+
github.event_name == 'push' || github.event.pull_request.head.repo.full_name !=
|
|
25
|
+
github.repository
|
|
26
|
+
|
|
27
|
+
name: Python ${{ matrix.python-version }} tests
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
strategy:
|
|
30
|
+
fail-fast: false
|
|
31
|
+
matrix:
|
|
32
|
+
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
33
|
+
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@v4
|
|
36
|
+
with:
|
|
37
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
|
38
|
+
fetch-depth: 0
|
|
39
|
+
|
|
40
|
+
- name: Install uv and set the python version
|
|
41
|
+
uses: astral-sh/setup-uv@v5
|
|
42
|
+
with:
|
|
43
|
+
python-version: ${{ matrix.python-version }}
|
|
44
|
+
|
|
45
|
+
- name: Install the project
|
|
46
|
+
run: uv sync --locked --all-extras --dev
|
|
47
|
+
|
|
48
|
+
- name: Run tests
|
|
49
|
+
id: tests
|
|
50
|
+
run: uv run pytest -vvv
|
|
51
|
+
|
|
52
|
+
lint:
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@v4
|
|
57
|
+
|
|
58
|
+
- name: Install uv and set the python version
|
|
59
|
+
uses: astral-sh/setup-uv@v5
|
|
60
|
+
with:
|
|
61
|
+
python-version: "3.12"
|
|
62
|
+
|
|
63
|
+
- name: Install the project
|
|
64
|
+
run: uv sync --locked --all-extras --dev
|
|
65
|
+
|
|
66
|
+
- name: Check format with ruff
|
|
67
|
+
uses: astral-sh/ruff-action@v3
|
|
68
|
+
with:
|
|
69
|
+
args: "check --diff"
|
|
70
|
+
version: "0.3.4"
|
|
71
|
+
|
|
72
|
+
commit-lint:
|
|
73
|
+
runs-on: ubuntu-latest
|
|
74
|
+
|
|
75
|
+
steps:
|
|
76
|
+
- uses: actions/checkout@v3
|
|
77
|
+
|
|
78
|
+
- name: Install commitlint dependencies
|
|
79
|
+
run: npm install @commitlint/config-conventional
|
|
80
|
+
|
|
81
|
+
- name: Lint commit messages
|
|
82
|
+
uses: wagoid/commitlint-github-action@v6
|
|
83
|
+
with:
|
|
84
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
85
|
+
failOnWarnings: 'false'
|
|
86
|
+
commitDepth: 1
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Publish Quarto docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
push:
|
|
7
|
+
branches:
|
|
8
|
+
- main
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write
|
|
12
|
+
pages: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
build-and-deploy:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
strategy:
|
|
18
|
+
fail-fast: false
|
|
19
|
+
matrix:
|
|
20
|
+
python-version: ["3.12"]
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- name: Install uv and set the python version
|
|
26
|
+
uses: astral-sh/setup-uv@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: ${{ matrix.python-version }}
|
|
29
|
+
|
|
30
|
+
- name: Install the project
|
|
31
|
+
run: uv sync --locked --all-extras --dev
|
|
32
|
+
|
|
33
|
+
- name: Set up Quarto
|
|
34
|
+
uses: quarto-dev/quarto-actions/setup@v2
|
|
35
|
+
|
|
36
|
+
- name: Run quartodoc
|
|
37
|
+
env:
|
|
38
|
+
PYTHONPATH: ${{ github.workspace }}
|
|
39
|
+
run: |
|
|
40
|
+
cd docs
|
|
41
|
+
uv run quartodoc build --verbose
|
|
42
|
+
uv run quartodoc interlinks
|
|
43
|
+
|
|
44
|
+
- name: Publish to GitHub Pages
|
|
45
|
+
uses: quarto-dev/quarto-actions/publish@v2
|
|
46
|
+
with:
|
|
47
|
+
target: gh-pages
|
|
48
|
+
path: docs
|
|
49
|
+
env:
|
|
50
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
51
|
+
QUARTO_PYTHON: .venv/bin/python
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
name: Test & Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
push:
|
|
7
|
+
branches:
|
|
8
|
+
- main
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
test:
|
|
15
|
+
name: Python ${{ matrix.python-version }} tests
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
strategy:
|
|
18
|
+
fail-fast: false
|
|
19
|
+
matrix:
|
|
20
|
+
python-version: ["3.9", "3.10", "3.11", "3.12"]
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
with:
|
|
25
|
+
fetch-depth: 0
|
|
26
|
+
|
|
27
|
+
- name: Install uv and set the python version
|
|
28
|
+
uses: astral-sh/setup-uv@v5
|
|
29
|
+
with:
|
|
30
|
+
python-version: ${{ matrix.python-version }}
|
|
31
|
+
|
|
32
|
+
- name: Install the project
|
|
33
|
+
run: uv sync --locked --extra test --extra visualization
|
|
34
|
+
|
|
35
|
+
- name: Run tests
|
|
36
|
+
id: tests
|
|
37
|
+
run: uv run pytest -vvv
|
|
38
|
+
|
|
39
|
+
lint:
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v4
|
|
44
|
+
|
|
45
|
+
- name: Install uv and set the python version
|
|
46
|
+
uses: astral-sh/setup-uv@v5
|
|
47
|
+
with:
|
|
48
|
+
python-version: "3.12"
|
|
49
|
+
|
|
50
|
+
- name: Install the project
|
|
51
|
+
run: uv sync --locked --all-extras --dev
|
|
52
|
+
|
|
53
|
+
- name: Check format with ruff
|
|
54
|
+
uses: astral-sh/ruff-action@v3
|
|
55
|
+
with:
|
|
56
|
+
args: "check --diff"
|
|
57
|
+
version: "0.3.4"
|
|
58
|
+
|
|
59
|
+
commit-lint:
|
|
60
|
+
runs-on: ubuntu-latest
|
|
61
|
+
|
|
62
|
+
steps:
|
|
63
|
+
- uses: actions/checkout@v3
|
|
64
|
+
|
|
65
|
+
- name: Lint commit messages
|
|
66
|
+
uses: wagoid/commitlint-github-action@v6
|
|
67
|
+
with:
|
|
68
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
69
|
+
failOnWarnings: 'false'
|
|
70
|
+
commitDepth: 1
|
|
71
|
+
|
|
72
|
+
release:
|
|
73
|
+
name: Semantic Release
|
|
74
|
+
runs-on: ubuntu-latest
|
|
75
|
+
concurrency: push
|
|
76
|
+
needs: [test, lint, commit-lint]
|
|
77
|
+
if: github.repository == 'xability/py-maidr'
|
|
78
|
+
environment:
|
|
79
|
+
name: pypi
|
|
80
|
+
url: https://pypi.org/project/maidr/
|
|
81
|
+
permissions:
|
|
82
|
+
# https://docs.github.com/en/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#metadata
|
|
83
|
+
id-token: write
|
|
84
|
+
contents: write
|
|
85
|
+
|
|
86
|
+
steps:
|
|
87
|
+
- uses: actions/checkout@v4
|
|
88
|
+
with:
|
|
89
|
+
fetch-depth: 0
|
|
90
|
+
ref: ${{ github.ref_name }}
|
|
91
|
+
|
|
92
|
+
- name: Install uv and set the python version
|
|
93
|
+
uses: astral-sh/setup-uv@v5
|
|
94
|
+
with:
|
|
95
|
+
python-version: "3.12"
|
|
96
|
+
|
|
97
|
+
- name: Install the project
|
|
98
|
+
run: uv sync --locked --all-extras --dev
|
|
99
|
+
|
|
100
|
+
- name: Python Semantic Release
|
|
101
|
+
id: release
|
|
102
|
+
uses: python-semantic-release/python-semantic-release@v9.21.0
|
|
103
|
+
with:
|
|
104
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
105
|
+
verbosity: 3
|
|
106
|
+
changelog: true
|
|
107
|
+
commit: true
|
|
108
|
+
push: true
|
|
109
|
+
|
|
110
|
+
- name: Build and publish package distributions to PyPI
|
|
111
|
+
id: pypi-publish
|
|
112
|
+
# NOTE: DO NOT wrap the conditional in ${{ }} as it will always evaluate to true.
|
|
113
|
+
# See https://github.com/actions/runner/issues/1173
|
|
114
|
+
if: steps.release.outputs.released == 'true'
|
|
115
|
+
run: |
|
|
116
|
+
# Use a clean environment for building
|
|
117
|
+
uv build --no-cache
|
|
118
|
+
uv publish
|
|
119
|
+
|
|
120
|
+
- name: Publish package distributions to GitHub Releases
|
|
121
|
+
id: github-release
|
|
122
|
+
# NOTE: DO NOT wrap the conditional in ${{ }} as it will always evaluate to true.
|
|
123
|
+
# See https://github.com/actions/runner/issues/1173
|
|
124
|
+
if: steps.release.outputs.released == 'true'
|
|
125
|
+
uses: python-semantic-release/upload-to-gh-release@main
|
|
126
|
+
with:
|
|
127
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
128
|
+
tag: ${{ steps.release.outputs.tag }}
|
|
129
|
+
root_options: "-vv"
|
maidr-1.4.8/.gitignore
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
docs/source
|
|
2
|
+
|
|
3
|
+
# From https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore
|
|
4
|
+
|
|
5
|
+
# Byte-compiled / optimized / DLL files
|
|
6
|
+
__pycache__/
|
|
7
|
+
.conda/*
|
|
8
|
+
*.py[cod]
|
|
9
|
+
*$py.class
|
|
10
|
+
*.pyc
|
|
11
|
+
|
|
12
|
+
# C extensions
|
|
13
|
+
*.so
|
|
14
|
+
|
|
15
|
+
# Distribution / packaging
|
|
16
|
+
.Python
|
|
17
|
+
build/
|
|
18
|
+
develop-eggs/
|
|
19
|
+
dist/
|
|
20
|
+
downloads/
|
|
21
|
+
eggs/
|
|
22
|
+
.eggs/
|
|
23
|
+
lib/
|
|
24
|
+
lib64/
|
|
25
|
+
parts/
|
|
26
|
+
sdist/
|
|
27
|
+
var/
|
|
28
|
+
wheels/
|
|
29
|
+
share/python-wheels/
|
|
30
|
+
*.egg-info/
|
|
31
|
+
.installed.cfg
|
|
32
|
+
*.egg
|
|
33
|
+
MANIFEST
|
|
34
|
+
|
|
35
|
+
# PyInstaller
|
|
36
|
+
# Usually these files are written by a python script from a template
|
|
37
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
38
|
+
*.manifest
|
|
39
|
+
*.spec
|
|
40
|
+
|
|
41
|
+
# Installer logs
|
|
42
|
+
pip-log.txt
|
|
43
|
+
pip-delete-this-directory.txt
|
|
44
|
+
|
|
45
|
+
# Unit test / coverage reports
|
|
46
|
+
htmlcov/
|
|
47
|
+
.tox/
|
|
48
|
+
.nox/
|
|
49
|
+
.coverage
|
|
50
|
+
.coverage.*
|
|
51
|
+
.cache
|
|
52
|
+
nosetests.xml
|
|
53
|
+
coverage.xml
|
|
54
|
+
*.cover
|
|
55
|
+
*.py,cover
|
|
56
|
+
.hypothesis/
|
|
57
|
+
.pytest_cache/
|
|
58
|
+
cover/
|
|
59
|
+
junit/
|
|
60
|
+
|
|
61
|
+
# Translations
|
|
62
|
+
*.mo
|
|
63
|
+
*.pot
|
|
64
|
+
|
|
65
|
+
# Django stuff:
|
|
66
|
+
*.log
|
|
67
|
+
local_settings.py
|
|
68
|
+
db.sqlite3
|
|
69
|
+
db.sqlite3-journal
|
|
70
|
+
|
|
71
|
+
# Flask stuff:
|
|
72
|
+
instance/
|
|
73
|
+
.webassets-cache
|
|
74
|
+
|
|
75
|
+
# Scrapy stuff:
|
|
76
|
+
.scrapy
|
|
77
|
+
|
|
78
|
+
# Sphinx documentation
|
|
79
|
+
docs/_build/
|
|
80
|
+
|
|
81
|
+
# PyBuilder
|
|
82
|
+
.pybuilder/
|
|
83
|
+
target/
|
|
84
|
+
|
|
85
|
+
# Jupyter Notebook
|
|
86
|
+
.ipynb_checkpoints
|
|
87
|
+
|
|
88
|
+
# IPython
|
|
89
|
+
profile_default/
|
|
90
|
+
ipython_config.py
|
|
91
|
+
|
|
92
|
+
# pyenv
|
|
93
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
94
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
95
|
+
# .python-version
|
|
96
|
+
|
|
97
|
+
# pipenv
|
|
98
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
99
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
100
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
101
|
+
# install all needed dependencies.
|
|
102
|
+
#Pipfile.lock
|
|
103
|
+
|
|
104
|
+
# poetry
|
|
105
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
106
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
107
|
+
# commonly ignored for libraries.
|
|
108
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
109
|
+
#poetry.lock
|
|
110
|
+
|
|
111
|
+
# pdm
|
|
112
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
113
|
+
#pdm.lock
|
|
114
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
|
115
|
+
# in version control.
|
|
116
|
+
# https://pdm.fming.dev/#use-with-ide
|
|
117
|
+
.pdm.toml
|
|
118
|
+
|
|
119
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
120
|
+
__pypackages__/
|
|
121
|
+
|
|
122
|
+
# Celery stuff
|
|
123
|
+
celerybeat-schedule
|
|
124
|
+
celerybeat.pid
|
|
125
|
+
|
|
126
|
+
# SageMath parsed files
|
|
127
|
+
*.sage.py
|
|
128
|
+
|
|
129
|
+
# Environments
|
|
130
|
+
.env
|
|
131
|
+
.venv
|
|
132
|
+
env/
|
|
133
|
+
venv/
|
|
134
|
+
ENV/
|
|
135
|
+
env.bak/
|
|
136
|
+
venv.bak/
|
|
137
|
+
|
|
138
|
+
# Spyder project settings
|
|
139
|
+
.spyderproject
|
|
140
|
+
.spyproject
|
|
141
|
+
|
|
142
|
+
# Rope project settings
|
|
143
|
+
.ropeproject
|
|
144
|
+
|
|
145
|
+
# mkdocs documentation
|
|
146
|
+
/site
|
|
147
|
+
|
|
148
|
+
# mypy
|
|
149
|
+
.mypy_cache/
|
|
150
|
+
.dmypy.json
|
|
151
|
+
dmypy.json
|
|
152
|
+
|
|
153
|
+
# Pyre type checker
|
|
154
|
+
.pyre/
|
|
155
|
+
|
|
156
|
+
# pytype static type analyzer
|
|
157
|
+
.pytype/
|
|
158
|
+
|
|
159
|
+
# Cython debug symbols
|
|
160
|
+
cython_debug/
|
|
161
|
+
|
|
162
|
+
# Vscode config files
|
|
163
|
+
# .vscode/
|
|
164
|
+
.vscode/launch.json
|
|
165
|
+
|
|
166
|
+
# PyCharm
|
|
167
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
168
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
169
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
170
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
171
|
+
.idea/
|
|
172
|
+
|
|
173
|
+
.DS_Store
|
|
174
|
+
|
|
175
|
+
/.quarto/
|
|
176
|
+
|
|
177
|
+
/.luarc.json
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
|
|
3
|
+
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
|
|
4
|
+
// List of extensions which should be recommended for users of this workspace.
|
|
5
|
+
"recommendations": [
|
|
6
|
+
"ms-python.python",
|
|
7
|
+
"ms-python.vscode-pylance",
|
|
8
|
+
"ms-python.black-formatter",
|
|
9
|
+
"ms-python.flake8",
|
|
10
|
+
"ms-python.isort",
|
|
11
|
+
"njpwerner.autodocstring",
|
|
12
|
+
"dbaeumer.vscode-eslint",
|
|
13
|
+
"github.vscode-pull-request-github",
|
|
14
|
+
"github.remotehub",
|
|
15
|
+
"visualstudioexptteam.vscodeintellicode",
|
|
16
|
+
"visualstudioexptteam.intellicode-api-usage-examples",
|
|
17
|
+
"ms-toolsai.jupyter",
|
|
18
|
+
"ms-toolsai.vscode-jupyter-cell-tags",
|
|
19
|
+
"ms-toolsai.jupyter-keymap",
|
|
20
|
+
"ms-toolsai.jupyter-renderers",
|
|
21
|
+
"ms-toolsai.vscode-jupyter-slideshow",
|
|
22
|
+
"github.vscode-github-actions",
|
|
23
|
+
"ms-vscode.vscode-github-issue-notebooks",
|
|
24
|
+
"ms-vsliveshare.vsliveshare",
|
|
25
|
+
"github.copilot",
|
|
26
|
+
"github.copilot-chat",
|
|
27
|
+
"ms-vscode.vscode-speech",
|
|
28
|
+
"posit.shinyuieditor",
|
|
29
|
+
"quarto.quarto",
|
|
30
|
+
"github.codespaces",
|
|
31
|
+
"usernamehw.errorlens",
|
|
32
|
+
"editorconfig.editorconfig",
|
|
33
|
+
"ms-azuretools.vscode-docker",
|
|
34
|
+
"ms-vscode-remote.remote-containers",
|
|
35
|
+
"vivaxy.vscode-conventional-commits",
|
|
36
|
+
"joshbolduc.commitlint",
|
|
37
|
+
"ms-python.debugpy",
|
|
38
|
+
"eamodio.gitlens",
|
|
39
|
+
"posit.shiny",
|
|
40
|
+
"charliermarsh.ruff"
|
|
41
|
+
],
|
|
42
|
+
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
|
43
|
+
"unwantedRecommendations": []
|
|
44
|
+
}
|