aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorHsiangNianian <i@jyunko.cn>2025-03-13 01:01:20 +0800
committerHsiangNianian <i@jyunko.cn>2025-03-13 01:01:20 +0800
commit80b74f79dfbfa9afb845172a5ea84110d75f1bc8 (patch)
tree361dcb055de78b50d82619646fde28fa618f9507
parentdd873e954a92d0e3209fe98b034570b47c859589 (diff)
downloadconventional_role_play-80b74f79dfbfa9afb845172a5ea84110d75f1bc8.tar.gz
conventional_role_play-80b74f79dfbfa9afb845172a5ea84110d75f1bc8.zip
refactor(project)!: first implementation of the Conventional Role Play SDK with core components, renderers, extractors, and example usage.
-rw-r--r--docs/source/api.md94
-rw-r--r--docs/source/usage.md58
-rw-r--r--examples/basic_usage.py31
-rw-r--r--examples/custom_plugin.py25
-rw-r--r--pyproject.toml20
-rw-r--r--src/conventionalrp/__init__.py1
-rw-r--r--src/conventionalrp/__main__.py (renamed from src/pyo3_template/__main__.py)5
-rw-r--r--src/conventionalrp/_core.pyi (renamed from src/pyo3_template/_core.pyi)0
-rw-r--r--src/conventionalrp/base.py (renamed from src/pyo3_template/__init__.py)0
-rw-r--r--src/conventionalrp/core/__init__.py4
-rw-r--r--src/conventionalrp/core/parser.py15
-rw-r--r--src/conventionalrp/core/processor.py39
-rw-r--r--src/conventionalrp/extractors/__init__.py4
-rw-r--r--src/conventionalrp/extractors/base.py9
-rw-r--r--src/conventionalrp/extractors/rule_extractor.py24
-rw-r--r--src/conventionalrp/html_renderer.py0
-rw-r--r--src/conventionalrp/json_renderer.py0
-rw-r--r--src/conventionalrp/markdown_renderer.py0
-rw-r--r--src/conventionalrp/plugins/__init__.py4
-rw-r--r--src/conventionalrp/plugins/plugin_manager.py0
-rw-r--r--src/conventionalrp/renderers/__init__.py4
-rw-r--r--src/conventionalrp/renderers/base.py6
-rw-r--r--src/conventionalrp/renderers/html_renderer.py21
-rw-r--r--src/conventionalrp/renderers/json_renderer.py9
-rw-r--r--src/conventionalrp/renderers/markdown_renderer.py26
-rw-r--r--src/conventionalrp/tokenizer.py0
-rw-r--r--src/conventionalrp/utils/__init__.py2
-rw-r--r--src/conventionalrp/utils/text_processing.py0
-rw-r--r--tests/test_pyo3.py2
-rw-r--r--uv.lock69
30 files changed, 422 insertions, 50 deletions
diff --git a/docs/source/api.md b/docs/source/api.md
new file mode 100644
index 0000000..d1c381b
--- /dev/null
+++ b/docs/source/api.md
@@ -0,0 +1,94 @@
+# API Documentation for TRPG Log Processor
+
+## Overview
+
+The TRPG Log Processor SDK provides a structured way to parse, extract, and render logs from tabletop role-playing games (TRPGs). This document outlines the key components of the SDK, including classes, methods, and their functionalities.
+
+## Core Components
+
+### Parser
+
+- **Class**: `Parser`
+- **Module**: `src/conventionalrp/core/parser.py`
+- **Methods**:
+ - `parse_log(log: str) -> List[Token]`: Parses a TRPG log string and returns a list of tokens.
+ - `load_rules(rules_file: str) -> None`: Loads parsing rules from a specified file.
+
+### Processor
+
+- **Class**: `Processor`
+- **Module**: `src/conventionalrp/core/processor.py`
+- **Methods**:
+ - `process_tokens(tokens: List[Token]) -> None`: Processes a list of tokens.
+ - `generate_output(format: str) -> str`: Generates output in the specified format (e.g., HTML, Markdown, JSON).
+
+## Extractors
+
+### BaseExtractor
+
+- **Class**: `BaseExtractor`
+- **Module**: `src/conventionalrp/extractors/base.py`
+- **Methods**:
+ - `extract(data: Any) -> Any`: Extracts relevant data based on defined rules.
+ - `load_rules(rules_file: str) -> None`: Loads extraction rules from a specified file.
+
+### RuleExtractor
+
+- **Class**: `RuleExtractor`
+- **Module**: `src/conventionalrp/extractors/rule_extractor.py`
+- **Methods**:
+ - `extract(data: Any) -> List[Rule]`: Extracts rules from JSON configuration files.
+
+## Renderers
+
+### BaseRenderer
+
+- **Class**: `BaseRenderer`
+- **Module**: `src/conventionalrp/renderers/base.py`
+- **Methods**:
+ - `render(data: Any) -> str`: Renders data into a specific format.
+ - `set_style(style: str) -> None`: Sets the rendering style.
+
+### HTMLRenderer
+
+- **Class**: `HTMLRenderer`
+- **Module**: `src/conventionalrp/renderers/html_renderer.py`
+- **Methods**:
+ - `render(data: Any) -> str`: Renders data into HTML format.
+
+### MarkdownRenderer
+
+- **Class**: `MarkdownRenderer`
+- **Module**: `src/conventionalrp/renderers/markdown_renderer.py`
+- **Methods**:
+ - `render(data: Any) -> str`: Renders data into Markdown format.
+
+### JSONRenderer
+
+- **Class**: `JSONRenderer`
+- **Module**: `src/conventionalrp/renderers/json_renderer.py`
+- **Methods**:
+ - `render(data: Any) -> str`: Renders data into JSON format.
+
+## Plugins
+
+### PluginManager
+
+- **Class**: `PluginManager`
+- **Module**: `src/conventionalrp/plugins/plugin_manager.py`
+- **Methods**:
+ - `load_plugins() -> None`: Loads available plugins.
+ - `execute_plugin(name: str, data: Any) -> Any`: Executes a specified plugin with the provided data.
+
+## Utilities
+
+### Text Processing
+
+- **Module**: `src/conventionalrp/utils/text_processing.py`
+- **Functions**:
+ - `tokenize(text: str) -> List[str]`: Tokenizes input text into a list of tokens.
+ - `match_regex(pattern: str, text: str) -> List[str]`: Matches a regex pattern against the input text.
+
+## Conclusion
+
+This API documentation provides a comprehensive overview of the TRPG Log Processor SDK. For detailed usage instructions and examples, please refer to the `usage.md` file in the `docs` directory.
diff --git a/docs/source/usage.md b/docs/source/usage.md
new file mode 100644
index 0000000..33481ca
--- /dev/null
+++ b/docs/source/usage.md
@@ -0,0 +1,58 @@
+# Usage Instructions for TRPG Log Processor
+
+## Overview
+
+The TRPG Log Processor is a Python SDK designed for structured processing of tabletop role-playing game (TRPG) logs. It provides functionalities for parsing logs, extracting rules, and rendering outputs in multiple formats.
+
+## Installation
+
+To install the TRPG Log Processor, you can use pip:
+
+```bash
+pip install conventionalrp
+```
+
+## Basic Usage
+
+Here is a simple example of how to use the TRPG Log Processor:
+
+```python
+from conventionalrp.core.parser import Parser
+from conventionalrp.core.processor import Processor
+from conventionalrp.extractors.rule_extractor import RuleExtractor
+from conventionalrp.renderers.html_renderer import HTMLRenderer
+
+# Step 1: Load rules
+rule_extractor = RuleExtractor()
+rules = rule_extractor.load_rules('path/to/rules.json')
+
+# Step 2: Parse the log
+parser = Parser(rules)
+parsed_log = parser.parse_log('path/to/log.txt')
+
+# Step 3: Process the parsed tokens
+processor = Processor()
+output = processor.process_tokens(parsed_log)
+
+# Step 4: Render the output
+renderer = HTMLRenderer()
+html_output = renderer.render(output)
+
+# Save or display the output
+with open('output.html', 'w') as f:
+ f.write(html_output)
+```
+
+## Features
+
+- **Rule Extraction**: Easily extract rules from JSON configuration files using the `RuleExtractor`.
+- **Multi-format Rendering**: Render outputs in various formats such as HTML, Markdown, and JSON using the respective renderer classes.
+- **Extensibility**: Create custom plugins to extend the functionality of the SDK.
+
+## Custom Plugins
+
+To create a custom plugin, you can follow the example provided in `examples/custom_plugin.py`. This allows you to add additional processing or rendering capabilities tailored to your needs.
+
+## Documentation
+
+For more detailed information on the API and available classes, please refer to the [API documentation](api.md).
diff --git a/examples/basic_usage.py b/examples/basic_usage.py
new file mode 100644
index 0000000..e2209da
--- /dev/null
+++ b/examples/basic_usage.py
@@ -0,0 +1,31 @@
+from trpg_log_processor.core.parser import Parser
+from trpg_log_processor.core.processor import Processor
+from trpg_log_processor.extractors.rule_extractor import RuleExtractor
+from trpg_log_processor.renderers.html_renderer import HTMLRenderer
+
+def main():
+ # Initialize the parser and load rules
+ parser = Parser()
+ parser.load_rules('path/to/rules.json')
+
+ # Parse the TRPG log
+ log_data = "Your TRPG log data here"
+ parsed_tokens = parser.parse_log(log_data)
+
+ # Initialize the rule extractor
+ extractor = RuleExtractor()
+ rules = extractor.extract('path/to/rules.json')
+
+ # Process the parsed tokens
+ processor = Processor()
+ processed_data = processor.process_tokens(parsed_tokens, rules)
+
+ # Render the output in HTML format
+ renderer = HTMLRenderer()
+ output = renderer.render(processed_data)
+
+ # Print or save the output
+ print(output)
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/examples/custom_plugin.py b/examples/custom_plugin.py
new file mode 100644
index 0000000..74a0bcc
--- /dev/null
+++ b/examples/custom_plugin.py
@@ -0,0 +1,25 @@
+from trpg_log_processor.plugins.plugin_manager import PluginManager
+
+class CustomPlugin:
+ def __init__(self):
+ self.name = "Custom Plugin"
+
+ def process(self, data):
+ # Custom processing logic
+ processed_data = data.upper() # Example transformation
+ return processed_data
+
+def main():
+ plugin_manager = PluginManager()
+ custom_plugin = CustomPlugin()
+
+ plugin_manager.register_plugin(custom_plugin)
+
+ # Example data to process
+ data = "This is a sample TRPG log."
+ result = custom_plugin.process(data)
+
+ print(f"Processed Data: {result}")
+
+if __name__ == "__main__":
+ main() \ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 6081a51..e8f26b1 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,16 +3,16 @@ requires = ["maturin>=1.4,<2.0"]
build-backend = "maturin"
[project]
-name = "pyo3_template"
+name = "conventionalrp"
dynamic = ["version"]
-description = "HydroRoll Pyo3 Project Template"
-authors = [{ name = "yourname", email = "you@hydroroll.team" }]
+description = "HydroRoll Conventional Role Play SDK"
+authors = [{ name = "HsiangNianian", email = "leader@hydroroll.team" }]
dependencies = []
requires-python = ">=3.9"
readme.content-type = "text/x-rst"
readme.text = """
"""
-license = { text = "MIT" }
+license = { text = "AGPLv3.0" }
keywords = ["hydroroll"]
classifiers = [
"Development Status :: 5 - Production/Stable",
@@ -27,17 +27,13 @@ classifiers = [
[project.urls]
homepage = "https://hydroroll.team/"
-repository = "https://github.com/HydroRoll-Team/{project}"
-documentation = "https://{project}.hydroroll.team/"
-
-[project.scripts]
-pyo3_template = "pyo3_template.__main__:main"
-pyo3t = "pyo3_template.__main__:main"
+repository = "https://github.com/HydroRoll-Team/conventional_role_play"
+documentation = "https://crp.hydroroll.team/"
[tool.maturin]
features = ["pyo3/extension-module"]
-module-name = "pyo3_template._core"
-python-package = "pyo3_template"
+module-name = "conventionalrp._core"
+python-package = "conventionalrp"
python-source = "src"
[tool.ruff]
diff --git a/src/conventionalrp/__init__.py b/src/conventionalrp/__init__.py
new file mode 100644
index 0000000..4522950
--- /dev/null
+++ b/src/conventionalrp/__init__.py
@@ -0,0 +1 @@
+from . import _core \ No newline at end of file
diff --git a/src/pyo3_template/__main__.py b/src/conventionalrp/__main__.py
index 0135c6d..01b510d 100644
--- a/src/pyo3_template/__main__.py
+++ b/src/conventionalrp/__main__.py
@@ -2,7 +2,6 @@ from ._core import sum_as_string
def main():
print(sum_as_string(1, 2))
-
-
+
if __name__ == "__main__":
- main() \ No newline at end of file
+ main()
diff --git a/src/pyo3_template/_core.pyi b/src/conventionalrp/_core.pyi
index 4945a82..4945a82 100644
--- a/src/pyo3_template/_core.pyi
+++ b/src/conventionalrp/_core.pyi
diff --git a/src/pyo3_template/__init__.py b/src/conventionalrp/base.py
index e69de29..e69de29 100644
--- a/src/pyo3_template/__init__.py
+++ b/src/conventionalrp/base.py
diff --git a/src/conventionalrp/core/__init__.py b/src/conventionalrp/core/__init__.py
new file mode 100644
index 0000000..7097e41
--- /dev/null
+++ b/src/conventionalrp/core/__init__.py
@@ -0,0 +1,4 @@
+# FILE: /trpg-log-processor/trpg-log-processor/src/trpg_log_processor/core/__init__.py
+"""
+This file initializes the core module of the trpg_log_processor SDK.
+""" \ No newline at end of file
diff --git a/src/conventionalrp/core/parser.py b/src/conventionalrp/core/parser.py
new file mode 100644
index 0000000..32b1b9f
--- /dev/null
+++ b/src/conventionalrp/core/parser.py
@@ -0,0 +1,15 @@
+class Parser:
+ def __init__(self):
+ self.rules = []
+
+ def load_rules(self, rules):
+ """Load parsing rules."""
+ self.rules = rules
+
+ def parse_log(self, log):
+ """Parse the TRPG log based on loaded rules."""
+ parsed_data = []
+ for rule in self.rules:
+ # Implement rule-based parsing logic here
+ pass
+ return parsed_data \ No newline at end of file
diff --git a/src/conventionalrp/core/processor.py b/src/conventionalrp/core/processor.py
new file mode 100644
index 0000000..40033cf
--- /dev/null
+++ b/src/conventionalrp/core/processor.py
@@ -0,0 +1,39 @@
+class Processor:
+ def __init__(self, rules):
+ self.rules = rules
+
+ def process_tokens(self, tokens):
+ processed_data = []
+ for token in tokens:
+ processed_data.append(self.apply_rules(token))
+ return processed_data
+
+ def apply_rules(self, token):
+ # Implement rule application logic here
+ for rule in self.rules:
+ if rule.matches(token):
+ return rule.apply(token)
+ return token
+
+ def generate_output(self, processed_data, format_type):
+ # Implement output generation logic based on format_type
+ if format_type == 'json':
+ return self.generate_json_output(processed_data)
+ elif format_type == 'html':
+ return self.generate_html_output(processed_data)
+ elif format_type == 'markdown':
+ return self.generate_markdown_output(processed_data)
+ else:
+ raise ValueError("Unsupported format type")
+
+ def generate_json_output(self, processed_data):
+ import json
+ return json.dumps(processed_data)
+
+ def generate_html_output(self, processed_data):
+ # Implement HTML output generation
+ return "<html><body>" + "".join(f"<p>{data}</p>" for data in processed_data) + "</body></html>"
+
+ def generate_markdown_output(self, processed_data):
+ # Implement Markdown output generation
+ return "\n".join(f"- {data}" for data in processed_data) \ No newline at end of file
diff --git a/src/conventionalrp/extractors/__init__.py b/src/conventionalrp/extractors/__init__.py
new file mode 100644
index 0000000..d27a5eb
--- /dev/null
+++ b/src/conventionalrp/extractors/__init__.py
@@ -0,0 +1,4 @@
+# FILE: /trpg-log-processor/trpg-log-processor/src/trpg_log_processor/extractors/__init__.py
+"""
+This file initializes the extractors module.
+""" \ No newline at end of file
diff --git a/src/conventionalrp/extractors/base.py b/src/conventionalrp/extractors/base.py
new file mode 100644
index 0000000..fc42f29
--- /dev/null
+++ b/src/conventionalrp/extractors/base.py
@@ -0,0 +1,9 @@
+class BaseExtractor:
+ def __init__(self):
+ self.rules = []
+
+ def extract(self, log_data):
+ raise NotImplementedError("Subclasses should implement this method.")
+
+ def load_rules(self, rules_source):
+ raise NotImplementedError("Subclasses should implement this method.") \ No newline at end of file
diff --git a/src/conventionalrp/extractors/rule_extractor.py b/src/conventionalrp/extractors/rule_extractor.py
new file mode 100644
index 0000000..78e8505
--- /dev/null
+++ b/src/conventionalrp/extractors/rule_extractor.py
@@ -0,0 +1,24 @@
+class BaseExtractor:
+ def extract(self):
+ raise NotImplementedError("This method should be overridden by subclasses.")
+
+ def load_rules(self, rules):
+ raise NotImplementedError("This method should be overridden by subclasses.")
+
+
+class RuleExtractor(BaseExtractor):
+ def __init__(self, config_file):
+ self.config_file = config_file
+ self.rules = self.load_rules_from_file()
+
+ def load_rules_from_file(self):
+ import json
+ with open(self.config_file, 'r') as file:
+ return json.load(file)
+
+ def extract(self):
+ # Implement rule extraction logic here
+ extracted_rules = []
+ for rule in self.rules:
+ extracted_rules.append(rule) # Placeholder for actual extraction logic
+ return extracted_rules \ No newline at end of file
diff --git a/src/conventionalrp/html_renderer.py b/src/conventionalrp/html_renderer.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/conventionalrp/html_renderer.py
diff --git a/src/conventionalrp/json_renderer.py b/src/conventionalrp/json_renderer.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/conventionalrp/json_renderer.py
diff --git a/src/conventionalrp/markdown_renderer.py b/src/conventionalrp/markdown_renderer.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/conventionalrp/markdown_renderer.py
diff --git a/src/conventionalrp/plugins/__init__.py b/src/conventionalrp/plugins/__init__.py
new file mode 100644
index 0000000..32fa8a0
--- /dev/null
+++ b/src/conventionalrp/plugins/__init__.py
@@ -0,0 +1,4 @@
+# FILE: /trpg-log-processor/trpg-log-processor/src/trpg_log_processor/plugins/__init__.py
+"""
+This file initializes the plugins module.
+""" \ No newline at end of file
diff --git a/src/conventionalrp/plugins/plugin_manager.py b/src/conventionalrp/plugins/plugin_manager.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/conventionalrp/plugins/plugin_manager.py
diff --git a/src/conventionalrp/renderers/__init__.py b/src/conventionalrp/renderers/__init__.py
new file mode 100644
index 0000000..ce04364
--- /dev/null
+++ b/src/conventionalrp/renderers/__init__.py
@@ -0,0 +1,4 @@
+# FILE: /trpg-log-processor/trpg-log-processor/src/trpg_log_processor/renderers/__init__.py
+"""
+This file initializes the renderers module.
+""" \ No newline at end of file
diff --git a/src/conventionalrp/renderers/base.py b/src/conventionalrp/renderers/base.py
new file mode 100644
index 0000000..498adec
--- /dev/null
+++ b/src/conventionalrp/renderers/base.py
@@ -0,0 +1,6 @@
+class BaseRenderer:
+ def render(self, data):
+ raise NotImplementedError("Render method must be implemented by subclasses.")
+
+ def set_style(self, style):
+ self.style = style \ No newline at end of file
diff --git a/src/conventionalrp/renderers/html_renderer.py b/src/conventionalrp/renderers/html_renderer.py
new file mode 100644
index 0000000..3c30549
--- /dev/null
+++ b/src/conventionalrp/renderers/html_renderer.py
@@ -0,0 +1,21 @@
+from .base import BaseRenderer
+
+class HTMLRenderer(BaseRenderer):
+ def __init__(self):
+ super().__init__()
+ self.title = "TRPG Log Output"
+
+ def render(self, data):
+ html_content = f"<html><head><title>{self.title}</title></head><body>"
+ html_content += "<h1>TRPG Log Output</h1>"
+ html_content += "<ul>"
+
+ for entry in data:
+ html_content += f"<li>{entry}</li>"
+
+ html_content += "</ul></body></html>"
+ return html_content
+
+ def set_style(self, style):
+ # Implement style setting if needed
+ pass \ No newline at end of file
diff --git a/src/conventionalrp/renderers/json_renderer.py b/src/conventionalrp/renderers/json_renderer.py
new file mode 100644
index 0000000..4313001
--- /dev/null
+++ b/src/conventionalrp/renderers/json_renderer.py
@@ -0,0 +1,9 @@
+from .base import BaseRenderer
+
+class JSONRenderer(BaseRenderer):
+ def render(self, data):
+ import json
+ return json.dumps(data, ensure_ascii=False, indent=4)
+
+ def set_style(self, style):
+ self.style = style # Placeholder for potential styling options in the future \ No newline at end of file
diff --git a/src/conventionalrp/renderers/markdown_renderer.py b/src/conventionalrp/renderers/markdown_renderer.py
new file mode 100644
index 0000000..396d6a4
--- /dev/null
+++ b/src/conventionalrp/renderers/markdown_renderer.py
@@ -0,0 +1,26 @@
+from .base import BaseRenderer
+
+class MarkdownRenderer(BaseRenderer):
+ def render(self, data):
+ """
+ Renders the given data in Markdown format.
+
+ Args:
+ data (dict): The data to render.
+
+ Returns:
+ str: The rendered Markdown string.
+ """
+ markdown_output = ""
+ for key, value in data.items():
+ markdown_output += f"## {key}\n\n{value}\n\n"
+ return markdown_output
+
+ def set_style(self, style):
+ """
+ Sets the style for the Markdown renderer.
+
+ Args:
+ style (dict): A dictionary of style options.
+ """
+ self.style = style # Currently, Markdown does not support styling, but this can be extended. \ No newline at end of file
diff --git a/src/conventionalrp/tokenizer.py b/src/conventionalrp/tokenizer.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/conventionalrp/tokenizer.py
diff --git a/src/conventionalrp/utils/__init__.py b/src/conventionalrp/utils/__init__.py
new file mode 100644
index 0000000..20153b2
--- /dev/null
+++ b/src/conventionalrp/utils/__init__.py
@@ -0,0 +1,2 @@
+# FILE: /trpg-log-processor/trpg-log-processor/src/trpg_log_processor/utils/__init__.py
+"""This file initializes the utils module.""" \ No newline at end of file
diff --git a/src/conventionalrp/utils/text_processing.py b/src/conventionalrp/utils/text_processing.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/conventionalrp/utils/text_processing.py
diff --git a/tests/test_pyo3.py b/tests/test_pyo3.py
index 56a4060..2948da8 100644
--- a/tests/test_pyo3.py
+++ b/tests/test_pyo3.py
@@ -1,4 +1,4 @@
-from pyo3_template._core import sum_as_string
+from conventionalrp._core import sum_as_string
if __name__ == "__main__":
print(sum_as_string(1, 2)) \ No newline at end of file
diff --git a/uv.lock b/uv.lock
index 44a7302..96f94f7 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1,4 +1,5 @@
version = 1
+revision = 1
requires-python = ">=3.9"
resolution-markers = [
"python_full_version >= '3.10'",
@@ -171,6 +172,40 @@ wheels = [
]
[[package]]
+name = "conventional-role-play"
+source = { editable = "." }
+
+[package.dev-dependencies]
+dev = [
+ { name = "docutils" },
+ { name = "furo" },
+ { name = "myst-parser", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
+ { name = "myst-parser", version = "4.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
+ { name = "ruff" },
+ { name = "sphinx", version = "7.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
+ { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
+ { name = "sphinx-autobuild" },
+ { name = "sphinx-intl" },
+ { name = "sphinxcontrib-httpdomain" },
+ { name = "tomli" },
+]
+
+[package.metadata]
+
+[package.metadata.requires-dev]
+dev = [
+ { name = "docutils", specifier = ">=0.21.2" },
+ { name = "furo", specifier = ">=2024.8.6" },
+ { name = "myst-parser", specifier = ">=3.0.1" },
+ { name = "ruff", specifier = ">=0.9.6" },
+ { name = "sphinx", specifier = ">=7.4.7" },
+ { name = "sphinx-autobuild", specifier = ">=2024.10.3" },
+ { name = "sphinx-intl", specifier = ">=2.3.1" },
+ { name = "sphinxcontrib-httpdomain", specifier = ">=1.8.1" },
+ { name = "tomli", specifier = ">=2.2.1" },
+]
+
+[[package]]
name = "docutils"
version = "0.21.2"
source = { registry = "https://pypi.org/simple" }
@@ -415,40 +450,6 @@ wheels = [
]
[[package]]
-name = "pyo3-template"
-source = { editable = "." }
-
-[package.dev-dependencies]
-dev = [
- { name = "docutils" },
- { name = "furo" },
- { name = "myst-parser", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
- { name = "myst-parser", version = "4.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
- { name = "ruff" },
- { name = "sphinx", version = "7.4.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" },
- { name = "sphinx", version = "8.1.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
- { name = "sphinx-autobuild" },
- { name = "sphinx-intl" },
- { name = "sphinxcontrib-httpdomain" },
- { name = "tomli" },
-]
-
-[package.metadata]
-
-[package.metadata.requires-dev]
-dev = [
- { name = "docutils", specifier = ">=0.21.2" },
- { name = "furo", specifier = ">=2024.8.6" },
- { name = "myst-parser", specifier = ">=3.0.1" },
- { name = "ruff", specifier = ">=0.9.6" },
- { name = "sphinx", specifier = ">=7.4.7" },
- { name = "sphinx-autobuild", specifier = ">=2024.10.3" },
- { name = "sphinx-intl", specifier = ">=2.3.1" },
- { name = "sphinxcontrib-httpdomain", specifier = ">=1.8.1" },
- { name = "tomli", specifier = ">=2.2.1" },
-]
-
-[[package]]
name = "pyyaml"
version = "6.0.2"
source = { registry = "https://pypi.org/simple" }