issues-fs 0.3.0__py3-none-any.whl → 0.4.0__py3-none-any.whl
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.
- issues_fs/issues/Issue__Path__Config.py +25 -0
- issues_fs/issues/__init__.py +3 -0
- issues_fs/issues/graph_services/Comments__Service.py +235 -0
- issues_fs/issues/graph_services/Graph__Repository.py +307 -0
- issues_fs/issues/graph_services/Graph__Repository__Factory.py +106 -0
- issues_fs/issues/graph_services/Link__Service.py +227 -0
- issues_fs/issues/graph_services/Node__Service.py +392 -0
- issues_fs/issues/graph_services/Type__Service.py +209 -0
- issues_fs/issues/graph_services/__init__.py +3 -0
- issues_fs/issues/phase_1/Issue__Children__Service.py +340 -0
- issues_fs/issues/phase_1/Root__Issue__Service.py +137 -0
- issues_fs/issues/phase_1/Root__Selection__Service.py +310 -0
- issues_fs/issues/phase_1/__init__.py +3 -0
- issues_fs/issues/status/Git__Status__Service.py +115 -0
- issues_fs/issues/status/Index__Status__Service.py +131 -0
- issues_fs/issues/status/Server__Status__Service.py +113 -0
- issues_fs/issues/status/Storage__Status__Service.py +75 -0
- issues_fs/issues/status/Types__Status__Service.py +75 -0
- issues_fs/issues/status/__init__.py +3 -0
- issues_fs/issues/storage/Path__Handler__Graph_Node.py +185 -0
- issues_fs/issues/storage/Path__Handler__Issues.py +57 -0
- issues_fs/issues/storage/__init__.py +3 -0
- issues_fs/schemas/__init__.py +0 -0
- issues_fs/schemas/enums/Enum__Comment__Author.py +10 -0
- issues_fs/schemas/enums/Enum__Graph__Storage__Backend.py +8 -0
- issues_fs/schemas/enums/Enum__Issue__Status.py +13 -0
- issues_fs/schemas/enums/__init__.py +3 -0
- issues_fs/schemas/graph/Safe_Str__Graph_Types.py +63 -0
- issues_fs/schemas/graph/Schema__Global__Index.py +16 -0
- issues_fs/schemas/graph/Schema__Graph__Link.py +8 -0
- issues_fs/schemas/graph/Schema__Graph__Node.py +10 -0
- issues_fs/schemas/graph/Schema__Graph__Response.py +21 -0
- issues_fs/schemas/graph/Schema__Link__Create__Request.py +12 -0
- issues_fs/schemas/graph/Schema__Link__Create__Response.py +15 -0
- issues_fs/schemas/graph/Schema__Link__Delete__Response.py +16 -0
- issues_fs/schemas/graph/Schema__Link__List__Response.py +15 -0
- issues_fs/schemas/graph/Schema__Link__Type.py +20 -0
- issues_fs/schemas/graph/Schema__Node.py +43 -0
- issues_fs/schemas/graph/Schema__Node__Create__Request.py +19 -0
- issues_fs/schemas/graph/Schema__Node__Create__Response.py +14 -0
- issues_fs/schemas/graph/Schema__Node__Delete__Response.py +15 -0
- issues_fs/schemas/graph/Schema__Node__Link.py +17 -0
- issues_fs/schemas/graph/Schema__Node__List__Response.py +16 -0
- issues_fs/schemas/graph/Schema__Node__Summary.py +15 -0
- issues_fs/schemas/graph/Schema__Node__Type.py +28 -0
- issues_fs/schemas/graph/Schema__Node__Update__Request.py +18 -0
- issues_fs/schemas/graph/Schema__Node__Update__Response.py +14 -0
- issues_fs/schemas/graph/Schema__Property__Definition.py +27 -0
- issues_fs/schemas/graph/Schema__Type__Index.py +16 -0
- issues_fs/schemas/graph/Schema__Type__Summary.py +13 -0
- issues_fs/schemas/graph/__init__.py +0 -0
- issues_fs/schemas/identifiers/Comment_Id.py +5 -0
- issues_fs/schemas/identifiers/Issue_Id.py +13 -0
- issues_fs/schemas/identifiers/__init__.py +0 -0
- issues_fs/schemas/issues/Schema__Comment.py +61 -0
- issues_fs/schemas/issues/__init__.py +0 -0
- issues_fs/schemas/issues/phase_1/Schema__Issue__Children.py +85 -0
- issues_fs/schemas/issues/phase_1/Schema__Root.py +60 -0
- issues_fs/schemas/issues/phase_1/__init__.py +0 -0
- issues_fs/schemas/safe_str/Safe_Str__Hex_Color.py +10 -0
- issues_fs/schemas/safe_str/Safe_Str__Issue_Id.py +14 -0
- issues_fs/schemas/safe_str/Safe_Str__Issue__Node__Description.py +15 -0
- issues_fs/schemas/safe_str/Safe_Str__Label_Name.py +9 -0
- issues_fs/schemas/safe_str/__init__.py +0 -0
- issues_fs/schemas/status/Schema__API__Info.py +15 -0
- issues_fs/schemas/status/Schema__Git__Status.py +21 -0
- issues_fs/schemas/status/Schema__Index__Status.py +22 -0
- issues_fs/schemas/status/Schema__Server__Status.py +28 -0
- issues_fs/schemas/status/Schema__Storage__Status.py +23 -0
- issues_fs/schemas/status/Schema__Types__Status.py +30 -0
- issues_fs/schemas/status/__init__.py +0 -0
- issues_fs/version +1 -1
- {issues_fs-0.3.0.dist-info → issues_fs-0.4.0.dist-info}/METADATA +2 -1
- issues_fs-0.4.0.dist-info/RECORD +79 -0
- issues_fs-0.3.0.dist-info/RECORD +0 -8
- {issues_fs-0.3.0.dist-info → issues_fs-0.4.0.dist-info}/LICENSE +0 -0
- {issues_fs-0.3.0.dist-info → issues_fs-0.4.0.dist-info}/WHEEL +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Schema__Issue__Children - Request/response schemas for child issue operations
|
|
3
|
+
# Phase 1: Supports adding children and converting to hierarchical structure
|
|
4
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
5
|
+
|
|
6
|
+
from typing import List
|
|
7
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
8
|
+
from osbot_utils.type_safe.primitives.core.Safe_UInt import Safe_UInt
|
|
9
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Text import Safe_Str__Text
|
|
10
|
+
from osbot_utils.type_safe.primitives.domains.files.safe_str.Safe_Str__File__Path import Safe_Str__File__Path
|
|
11
|
+
|
|
12
|
+
# todo: refactor all/most of the the Safe_Str__Text into domain specific type safe primitives
|
|
13
|
+
|
|
14
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
15
|
+
# Create Child Request
|
|
16
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
17
|
+
|
|
18
|
+
class Schema__Issue__Child__Create(Type_Safe): # Request to create child issue
|
|
19
|
+
issue_type : Safe_Str__Text # Type: task, bug, feature, etc.
|
|
20
|
+
title : Safe_Str__Text # Issue title
|
|
21
|
+
description : Safe_Str__Text # Optional description
|
|
22
|
+
status : Safe_Str__Text # Optional status (defaults to type's default)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
26
|
+
# Child Issue Response
|
|
27
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
28
|
+
|
|
29
|
+
class Schema__Issue__Child__Response(Type_Safe): # Response after creating child
|
|
30
|
+
success : bool
|
|
31
|
+
path : Safe_Str__File__Path # Relative path to child
|
|
32
|
+
label : Safe_Str__Text # Generated label (e.g., "Task-1")
|
|
33
|
+
issue_type : Safe_Str__Text # Issue type
|
|
34
|
+
title : Safe_Str__Text # Issue title
|
|
35
|
+
message : Safe_Str__Text # Error message if failed
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
39
|
+
# Child Summary (for list response)
|
|
40
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
41
|
+
|
|
42
|
+
class Schema__Issue__Child__Summary(Type_Safe): # Summary of a child issue
|
|
43
|
+
path : Safe_Str__File__Path # Relative path
|
|
44
|
+
label : Safe_Str__Text # Issue label
|
|
45
|
+
title : Safe_Str__Text # Issue title
|
|
46
|
+
issue_type : Safe_Str__Text # Issue type
|
|
47
|
+
status : Safe_Str__Text = '' # Current status
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
51
|
+
# List Children Response
|
|
52
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
53
|
+
|
|
54
|
+
class Schema__Issue__Children__List__Response(Type_Safe): # Response listing children
|
|
55
|
+
success : bool = False
|
|
56
|
+
children : List[dict] = None # List of child summaries
|
|
57
|
+
total : Safe_UInt = Safe_UInt(0) # Total count
|
|
58
|
+
message : Safe_Str__Text = '' # Error message if failed
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
62
|
+
# Convert to New Structure Response
|
|
63
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
64
|
+
|
|
65
|
+
class Schema__Issue__Convert__Response(Type_Safe): # Response after converting issue
|
|
66
|
+
success : bool
|
|
67
|
+
converted : bool # True if actually converted (vs already had issues/)
|
|
68
|
+
issues_path : Safe_Str__File__Path # Path to issues/ folder
|
|
69
|
+
message : Safe_Str__Text # Status message
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class Schema__Add_Child__Request(Type_Safe): # Request body for adding child
|
|
73
|
+
parent_path : Safe_Str__File__Path # Path to parent issue
|
|
74
|
+
issue_type : Safe_Str__Text # Child issue type
|
|
75
|
+
title : Safe_Str__Text # Child title
|
|
76
|
+
description : Safe_Str__Text = '' # Optional description
|
|
77
|
+
status : Safe_Str__Text = '' # Optional status
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class Schema__List_Children__Request(Type_Safe): # Request for listing children
|
|
81
|
+
parent_path : Safe_Str__File__Path # Path to parent issue
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class Schema__Convert__Request(Type_Safe): # Request for converting issue
|
|
85
|
+
issue_path : Safe_Str__File__Path # Path to issue to convert
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Schema__Root - Data types for root selection feature
|
|
3
|
+
# Phase 1: Allows any folder with issue.json/node.json to be selected as root
|
|
4
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
5
|
+
|
|
6
|
+
from typing import List
|
|
7
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
8
|
+
from osbot_utils.type_safe.primitives.core.Safe_UInt import Safe_UInt
|
|
9
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Text import Safe_Str__Text
|
|
10
|
+
from osbot_utils.type_safe.primitives.domains.files.safe_str.Safe_Str__File__Path import Safe_Str__File__Path
|
|
11
|
+
|
|
12
|
+
from issues_fs.schemas.graph.Safe_Str__Graph_Types import Safe_Str__Node_Type, Safe_Str__Node_Label
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
16
|
+
# Root Candidate Schema
|
|
17
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
18
|
+
|
|
19
|
+
class Schema__Root__Candidate(Type_Safe): # A folder that can serve as root
|
|
20
|
+
path : Safe_Str__File__Path # Relative path from .issues/
|
|
21
|
+
label : Safe_Str__Text # Issue label or "Root"
|
|
22
|
+
title : Safe_Str__Text # Issue title for display
|
|
23
|
+
issue_type : Safe_Str__Text # bug, task, feature, git-repo, etc.
|
|
24
|
+
depth : Safe_UInt = Safe_UInt(0) # Nesting depth from .issues/
|
|
25
|
+
has_issues : bool = False # Has issues/ subfolder (new arch)
|
|
26
|
+
has_children: Safe_UInt = Safe_UInt(0) # Count of child issues
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
30
|
+
# Request Schemas
|
|
31
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
32
|
+
|
|
33
|
+
class Schema__Root__Select__Request(Type_Safe): # Request to select a root
|
|
34
|
+
path : Safe_Str__File__Path # Path to select as root
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
38
|
+
# Response Schemas
|
|
39
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
40
|
+
|
|
41
|
+
class Schema__Root__Current__Response(Type_Safe): # Current root response
|
|
42
|
+
success : bool
|
|
43
|
+
path : Safe_Str__File__Path # Current root path
|
|
44
|
+
label : Safe_Str__Text # Current root label
|
|
45
|
+
issue_type : Safe_Str__Text # Current root type
|
|
46
|
+
message : Safe_Str__Text
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class Schema__Root__List__Response(Type_Safe): # List of root candidates
|
|
50
|
+
success : bool
|
|
51
|
+
roots : List[Schema__Root__Candidate] = None
|
|
52
|
+
total : Safe_UInt
|
|
53
|
+
message : Safe_Str__Text
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class Schema__Root__Select__Response(Type_Safe): # Response after selecting root
|
|
57
|
+
success : bool
|
|
58
|
+
path : Safe_Str__File__Path # Selected path
|
|
59
|
+
previous : Safe_Str__File__Path # Previous root path
|
|
60
|
+
message : Safe_Str__Text
|
|
File without changes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from osbot_utils.type_safe.primitives.core.Safe_Str import Safe_Str
|
|
3
|
+
from osbot_utils.type_safe.primitives.core.enums.Enum__Safe_Str__Regex_Mode import Enum__Safe_Str__Regex_Mode
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Safe_Str__Hex_Color(Safe_Str): # Hex color like #22c55e
|
|
7
|
+
max_length = 7
|
|
8
|
+
regex = re.compile(r'^#[0-9A-Fa-f]{6}$')
|
|
9
|
+
regex_mode = Enum__Safe_Str__Regex_Mode.MATCH # Pattern defines VALID format
|
|
10
|
+
strict_validation = True # Required with MATCH mode
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Safe_Str__Issue_Id - Type-safe issue identifier in Issue-NNN format
|
|
3
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from osbot_utils.type_safe.primitives.core.Safe_Str import Safe_Str
|
|
7
|
+
from osbot_utils.type_safe.primitives.core.enums.Enum__Safe_Str__Regex_Mode import Enum__Safe_Str__Regex_Mode
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Safe_Str__Issue_Id(Safe_Str): # Issue ID in Issue-NNN format
|
|
11
|
+
max_length = 20
|
|
12
|
+
regex = re.compile(r'^[Ii]ssue-\d{1,5}$')
|
|
13
|
+
regex_mode = Enum__Safe_Str__Regex_Mode.MATCH # Pattern defines VALID format
|
|
14
|
+
strict_validation = True # Required with MATCH mode
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Safe_Str__Multiline - Safe string type that preserves newlines
|
|
3
|
+
# For description fields, comments, and other multiline text content
|
|
4
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
5
|
+
|
|
6
|
+
import re
|
|
7
|
+
from osbot_utils.type_safe.primitives.core.Safe_Str import Safe_Str
|
|
8
|
+
from osbot_utils.type_safe.primitives.core.enums.Enum__Safe_Str__Regex_Mode import Enum__Safe_Str__Regex_Mode
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Safe_Str__Issue__Node__Description(Safe_Str): # Multiline text (preserves newlines)
|
|
12
|
+
max_length = 50000 # Allow long descriptions
|
|
13
|
+
regex = re.compile(r'[^\x20-\x7E\n\r\t]') # Allow printable ASCII + newlines + tabs
|
|
14
|
+
regex_mode = Enum__Safe_Str__Regex_Mode.REPLACE # Replace invalid chars
|
|
15
|
+
allow_empty = True # Empty is valid
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Safe_Str__Label_Name - Type-safe label name with alphanumeric and hyphens
|
|
3
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
|
|
5
|
+
from osbot_utils.type_safe.primitives.domains.identifiers.safe_str.Safe_Str__Id import Safe_Str__Id
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Safe_Str__Label_Name(Safe_Str__Id): # Label name like "bug", "feature"
|
|
9
|
+
pass
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Schema__API__Info - API version and build information
|
|
3
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
|
|
5
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
6
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Text import Safe_Str__Text
|
|
7
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Version import Safe_Str__Version
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Schema__API__Info(Type_Safe): # API version info
|
|
11
|
+
version : Safe_Str__Version = '' # Semantic version (e.g., "0.2.4")
|
|
12
|
+
build_date : Safe_Str__Text = '' # Build timestamp
|
|
13
|
+
environment : Safe_Str__Text = '' # dev, staging, production
|
|
14
|
+
python_version: Safe_Str__Text = '' # Python runtime version
|
|
15
|
+
api_name : Safe_Str__Text = '' # API service name
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Schema__Git__Status - Git repository integration status
|
|
3
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
|
|
5
|
+
from typing import List
|
|
6
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
7
|
+
from osbot_utils.type_safe.primitives.core.Safe_UInt import Safe_UInt
|
|
8
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Text import Safe_Str__Text
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Schema__Git__Status(Type_Safe): # Git integration status
|
|
12
|
+
is_git_repo : bool = False # Inside a git repository
|
|
13
|
+
git_root : Safe_Str__Text = '' # Git root directory
|
|
14
|
+
current_branch : Safe_Str__Text = '' # Current branch name
|
|
15
|
+
current_commit : Safe_Str__Text = '' # Current commit hash (short)
|
|
16
|
+
is_dirty : bool = False # Has uncommitted changes
|
|
17
|
+
issues_tracked : bool = False # .issues/ in git
|
|
18
|
+
untracked_issues : Safe_UInt = Safe_UInt(0) # Untracked issue files
|
|
19
|
+
modified_issues : Safe_UInt = Safe_UInt(0) # Modified issue files
|
|
20
|
+
remote_name : Safe_Str__Text = '' # Remote name (origin)
|
|
21
|
+
remote_url : Safe_Str__Text = '' # Remote URL # todo: this create an Type_Safe primitive that supports git urls (which could have @)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Schema__Index__Status - Index and node statistics
|
|
3
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
|
|
5
|
+
from typing import List
|
|
6
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
7
|
+
from osbot_utils.type_safe.primitives.core.Safe_UInt import Safe_UInt
|
|
8
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Text import Safe_Str__Text
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Schema__Type__Count(Type_Safe): # Count for a single type
|
|
12
|
+
node_type : Safe_Str__Text = '' # Type name
|
|
13
|
+
count : Safe_UInt = Safe_UInt(0) # Number of nodes
|
|
14
|
+
next_index : Safe_UInt = Safe_UInt(1) # Next index to assign
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Schema__Index__Status(Type_Safe): # Index statistics
|
|
18
|
+
global_index_exists : bool = False # _index.json exists
|
|
19
|
+
total_nodes : Safe_UInt = Safe_UInt(0) # Total across all types
|
|
20
|
+
#total_links : Safe_UInt = Safe_UInt(0) # Total relationships
|
|
21
|
+
type_counts : List[Schema__Type__Count] # Per-type counts
|
|
22
|
+
last_updated : Safe_Str__Text = '' # Last index update time
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Schema__Server__Status - Comprehensive server status information
|
|
3
|
+
# Aggregates all status components into a single response
|
|
4
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
5
|
+
|
|
6
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
7
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Text import Safe_Str__Text
|
|
8
|
+
from osbot_utils.type_safe.primitives.domains.identifiers.safe_int.Timestamp_Now import Timestamp_Now
|
|
9
|
+
from issues_fs.schemas.status.Schema__API__Info import Schema__API__Info
|
|
10
|
+
from issues_fs.schemas.status.Schema__Git__Status import Schema__Git__Status
|
|
11
|
+
from issues_fs.schemas.status.Schema__Index__Status import Schema__Index__Status
|
|
12
|
+
from issues_fs.schemas.status.Schema__Storage__Status import Schema__Storage__Status
|
|
13
|
+
from issues_fs.schemas.status.Schema__Types__Status import Schema__Types__Status
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class Schema__Server__Status(Type_Safe): # Full server status
|
|
17
|
+
timestamp : Timestamp_Now # Status check timestamp
|
|
18
|
+
api : Schema__API__Info = None # API version info
|
|
19
|
+
storage : Schema__Storage__Status = None # Storage backend status
|
|
20
|
+
types : Schema__Types__Status = None # Type configuration
|
|
21
|
+
index : Schema__Index__Status = None # Index statistics
|
|
22
|
+
git : Schema__Git__Status = None # Git integration status
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Schema__Server__Status__Response(Type_Safe): # API response wrapper
|
|
26
|
+
success : bool = False # Operation success
|
|
27
|
+
status : Schema__Server__Status = None # Full status data
|
|
28
|
+
message : Safe_Str__Text = '' # Error message if failed
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Schema__Storage__Status - Memory-FS storage backend information
|
|
3
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
|
|
5
|
+
from typing import List
|
|
6
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
7
|
+
from osbot_utils.type_safe.primitives.core.Safe_UInt import Safe_UInt
|
|
8
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Text import Safe_Str__Text
|
|
9
|
+
from osbot_utils.type_safe.primitives.domains.files.safe_str.Safe_Str__File__Path import Safe_Str__File__Path
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Schema__Storage__Capability(Type_Safe): # Single capability info
|
|
13
|
+
name : Safe_Str__Text = '' # Capability name
|
|
14
|
+
supported : bool = False # Whether supported
|
|
15
|
+
description : Safe_Str__Text = '' # What it does
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Schema__Storage__Status(Type_Safe): # Memory-FS status info
|
|
19
|
+
backend_type : Safe_Str__Text # memory, local_disk, sqlite, zip
|
|
20
|
+
root_path : Safe_Str__File__Path = None # Root path (if applicable)
|
|
21
|
+
is_connected : bool # Storage accessible
|
|
22
|
+
is_writable : bool # Can write to storage
|
|
23
|
+
file_count : Safe_UInt # Number of files
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
2
|
+
# Schema__Types__Status - Node and link type configuration status
|
|
3
|
+
# ═══════════════════════════════════════════════════════════════════════════════
|
|
4
|
+
|
|
5
|
+
from typing import List
|
|
6
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
7
|
+
from osbot_utils.type_safe.primitives.core.Safe_UInt import Safe_UInt
|
|
8
|
+
from osbot_utils.type_safe.primitives.domains.common.safe_str.Safe_Str__Text import Safe_Str__Text
|
|
9
|
+
from issues_fs.schemas.safe_str.Safe_Str__Hex_Color import Safe_Str__Hex_Color
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Schema__Node__Type__Summary(Type_Safe): # Node type summary
|
|
13
|
+
name : Safe_Str__Text = '' # Type name (bug, task, etc.)
|
|
14
|
+
display_name : Safe_Str__Text = '' # Display name
|
|
15
|
+
color : Safe_Str__Hex_Color = '' # Hex color
|
|
16
|
+
status_count : Safe_UInt = Safe_UInt(0) # Number of statuses defined
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class Schema__Link__Type__Summary(Type_Safe): # Link type summary
|
|
20
|
+
verb : Safe_Str__Text = '' # Verb (blocks, has-task)
|
|
21
|
+
inverse_verb : Safe_Str__Text = '' # Inverse verb
|
|
22
|
+
is_symmetric : bool = False # verb == inverse_verb
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Schema__Types__Status(Type_Safe): # Type configuration status
|
|
26
|
+
is_initialized : bool # Types loaded
|
|
27
|
+
node_type_count : Safe_UInt # Number of node types
|
|
28
|
+
link_type_count : Safe_UInt # Number of link types
|
|
29
|
+
node_types : List[Schema__Node__Type__Summary] # Node type summaries
|
|
30
|
+
link_types : List[Schema__Link__Type__Summary] # Link type summaries
|
|
File without changes
|
issues_fs/version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v0.
|
|
1
|
+
v0.4.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: issues_fs
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Issues-FS
|
|
5
5
|
Home-page: https://github.com/owasp-sbot/Issues-FS
|
|
6
6
|
License: Apache 2.0
|
|
@@ -10,6 +10,7 @@ Requires-Python: >=3.12,<4.0
|
|
|
10
10
|
Classifier: License :: Other/Proprietary License
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Requires-Dist: memory_fs
|
|
13
14
|
Requires-Dist: osbot-utils
|
|
14
15
|
Project-URL: Repository, https://github.com/owasp-sbot/Issues-FS
|
|
15
16
|
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
issues_fs/__init__.py,sha256=0onJhZJAiKrCd5_0tDVQWym1rZ6vuZb_ZsOvh9Ptkjc,53
|
|
2
|
+
issues_fs/issues/Issue__Path__Config.py,sha256=Irrh-E86_obOIiGYogxvZpZMwi8V8BVZf7R40hK40-U,1686
|
|
3
|
+
issues_fs/issues/__init__.py,sha256=kKzdVtUK71LUGkW_ue_kXLJsg84clIOrXS0_lHpRf44,514
|
|
4
|
+
issues_fs/issues/graph_services/Comments__Service.py,sha256=JD_ZNl0yqEFdGtCkspRRib6puoHX67KcF3eXaEKnw74,14935
|
|
5
|
+
issues_fs/issues/graph_services/Graph__Repository.py,sha256=K0jQrOa87rSr1hdtrKg2iQAsrtlyaguk0Mh3dRReWIM,18126
|
|
6
|
+
issues_fs/issues/graph_services/Graph__Repository__Factory.py,sha256=PId7O40Pst7a3mdub5lgJHr9g9izelB3ZhFlN2INUo4,7669
|
|
7
|
+
issues_fs/issues/graph_services/Link__Service.py,sha256=ap7x7WbZ9dyVF9FRXuFgFdcuiIaZ_x_7Squ-Aw-aoJY,14230
|
|
8
|
+
issues_fs/issues/graph_services/Node__Service.py,sha256=-9cy7I-QSwPRZXA0CTMeJfi60NK_PpQqnimJjLOcr0s,23519
|
|
9
|
+
issues_fs/issues/graph_services/Type__Service.py,sha256=8WlXq2yYhKkaP8OHgeLXXn8kQUz49yv8M_e4KfLOZRM,14763
|
|
10
|
+
issues_fs/issues/graph_services/__init__.py,sha256=kKzdVtUK71LUGkW_ue_kXLJsg84clIOrXS0_lHpRf44,514
|
|
11
|
+
issues_fs/issues/phase_1/Issue__Children__Service.py,sha256=PKQcdxMNESY6ls6L3YprBPNAWgxtF8kZXqeCcixzXM8,21372
|
|
12
|
+
issues_fs/issues/phase_1/Root__Issue__Service.py,sha256=ybRPqmdR5wlvWKRvfIXwFU2s_kZWkNI5hjI-OLWhjVc,9368
|
|
13
|
+
issues_fs/issues/phase_1/Root__Selection__Service.py,sha256=xdRsAQ9lvj7-AA3AS6ijPJPyl5yBu0ceI5S68kO0n48,19338
|
|
14
|
+
issues_fs/issues/phase_1/__init__.py,sha256=kKzdVtUK71LUGkW_ue_kXLJsg84clIOrXS0_lHpRf44,514
|
|
15
|
+
issues_fs/issues/status/Git__Status__Service.py,sha256=CzjBzBUL67H7XLak82Iy8WcfFi2M71qvWRAlVbZ-y7A,7782
|
|
16
|
+
issues_fs/issues/status/Index__Status__Service.py,sha256=7Lj3-H0ErVonfSqtGkAfF9lWC_UYw0wqeJjFUHCFOM8,8035
|
|
17
|
+
issues_fs/issues/status/Server__Status__Service.py,sha256=ol-5bziO5gdKUm_HodR0WqHOkY72FWT6sQmALvR5o6k,8173
|
|
18
|
+
issues_fs/issues/status/Storage__Status__Service.py,sha256=sUp6sJoqsqBdi6b7MTk6NXLyMgUwcGICbVbUXt8ppYg,5214
|
|
19
|
+
issues_fs/issues/status/Types__Status__Service.py,sha256=272nua6gCaRsdHFqB2SMNaHTWq3SQlfX7iMJCU5kGcc,5640
|
|
20
|
+
issues_fs/issues/status/__init__.py,sha256=kKzdVtUK71LUGkW_ue_kXLJsg84clIOrXS0_lHpRf44,514
|
|
21
|
+
issues_fs/issues/storage/Path__Handler__Graph_Node.py,sha256=_delfZlf7NfXzoLblDzMOmYgmrOh4QH_YC6Ge7U99yA,12691
|
|
22
|
+
issues_fs/issues/storage/Path__Handler__Issues.py,sha256=iVk6YkE0hAUmk29cvqB_jYerWABx3AJH0coVcnU1txk,4285
|
|
23
|
+
issues_fs/issues/storage/__init__.py,sha256=IljmuJSP3HFsjqcnOL_9QKdzYUu3JKH4-KHDaicBz8k,555
|
|
24
|
+
issues_fs/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
+
issues_fs/schemas/enums/Enum__Comment__Author.py,sha256=cMEWZWBHSYg7XzJJUF0g8LbgzpK9UKqKHK_ep6qpdrM,791
|
|
26
|
+
issues_fs/schemas/enums/Enum__Graph__Storage__Backend.py,sha256=mHW3KJgXr5bnqunAzzFE666c40I0I8XQRaVaMDqdH_w,530
|
|
27
|
+
issues_fs/schemas/enums/Enum__Issue__Status.py,sha256=ZBiQUyw5eHC06x58ahn9Oe0vcgw3VPAnzTQ8JsEv-Do,864
|
|
28
|
+
issues_fs/schemas/enums/__init__.py,sha256=BjlS_E9JCgPoOIrp5yaASD-1d5oh-gBB_wfmQC7-OPw,513
|
|
29
|
+
issues_fs/schemas/graph/Safe_Str__Graph_Types.py,sha256=FxaaiQTMCPQkS4lqzLNW8ZDaQd8fMnneaWXWY6f9g1Y,5277
|
|
30
|
+
issues_fs/schemas/graph/Schema__Global__Index.py,sha256=7D7yvtEHiFqhT5g7ZRuc05VDdepoeQe8OMk3xPcj7IE,1585
|
|
31
|
+
issues_fs/schemas/graph/Schema__Graph__Link.py,sha256=wUmyf9rb_C6G2yVE3a4SNNTBwtPhhdzV_TY3tNWNUrU,553
|
|
32
|
+
issues_fs/schemas/graph/Schema__Graph__Node.py,sha256=GQUMxXWFWSMtQsXMflthKR7tcbMRaSY_IKQkvZVS2xk,627
|
|
33
|
+
issues_fs/schemas/graph/Schema__Graph__Response.py,sha256=xJQOr92bVOwx5U-CjLjYQEsm8L3Lzcxr1O6aAIdA-pA,1652
|
|
34
|
+
issues_fs/schemas/graph/Schema__Link__Create__Request.py,sha256=7TijKxLQilNNPuVtFFg3oYbFr6cuX_XR6048XOTLoF8,1143
|
|
35
|
+
issues_fs/schemas/graph/Schema__Link__Create__Response.py,sha256=oZnQVdz63JV_UkHIBMudbwOL9-zV_TC09dCRqXmqY0k,1452
|
|
36
|
+
issues_fs/schemas/graph/Schema__Link__Delete__Response.py,sha256=zYXsC_K9tAHxHuB1jpxqFyaEn84X6xLc2Ybp0Y-17Qg,1538
|
|
37
|
+
issues_fs/schemas/graph/Schema__Link__List__Response.py,sha256=oBWMeXyCqe0BwpSUtxjAcL2blXuW8uOKDpFZp8MdUIQ,1417
|
|
38
|
+
issues_fs/schemas/graph/Schema__Link__Type.py,sha256=FrClbjZi3d02SIboldff_bjN2BHI8JtTq1eOP7JijFg,1994
|
|
39
|
+
issues_fs/schemas/graph/Schema__Node.py,sha256=h5s8AKXUBeSDmezKEUNSmyQ5Q7EdlqpVjJisMszkV3g,4069
|
|
40
|
+
issues_fs/schemas/graph/Schema__Node__Create__Request.py,sha256=FME_4ITf84K5U-m3XtnlEBMBfYthhuKRTGreYZKcXek,1907
|
|
41
|
+
issues_fs/schemas/graph/Schema__Node__Create__Response.py,sha256=0xteFZp_UVsAC5bcbXb0GIKtWhFFNC2r5qqA6BuMcZI,1290
|
|
42
|
+
issues_fs/schemas/graph/Schema__Node__Delete__Response.py,sha256=mBwBMzk8mxt48yErAc5Lk1VDUx5jnjSLfaD_dACwTds,1417
|
|
43
|
+
issues_fs/schemas/graph/Schema__Node__Link.py,sha256=Vqi53LzGAoqPZRgbqgTNpLVCNT1U2kSw8ExZp0ZCA8g,1684
|
|
44
|
+
issues_fs/schemas/graph/Schema__Node__List__Response.py,sha256=tDoptCqvFDZ66JZHK02hFFbwxs8f7GCOVrZ4A3pnmxo,1522
|
|
45
|
+
issues_fs/schemas/graph/Schema__Node__Summary.py,sha256=LZBgfisN1dH7_MUKyxWXlasCXj1XEkvcdy4sVL66pHM,1440
|
|
46
|
+
issues_fs/schemas/graph/Schema__Node__Type.py,sha256=byRXJdmL4r0AE0Wy5GZ6BWUhIbiA2yXPZad75hT-u1c,2641
|
|
47
|
+
issues_fs/schemas/graph/Schema__Node__Update__Request.py,sha256=PbDv9FE4gIPR3LLyWBlXUK8n8ehmbDcKxH2KGur7AB8,1778
|
|
48
|
+
issues_fs/schemas/graph/Schema__Node__Update__Response.py,sha256=1Aku8zu8yEusRdfDu_XLd4hQLyzq3474Gi0os0AwOHU,1299
|
|
49
|
+
issues_fs/schemas/graph/Schema__Property__Definition.py,sha256=eaoYYAXLrjDJrU8j48YYw_5m9Y5geF_MjWkO9YjhNfE,2468
|
|
50
|
+
issues_fs/schemas/graph/Schema__Type__Index.py,sha256=Y7stBg-BgkmJLz_Se3Cz_xncGS6D6J1k5JwTBVhCKpw,1540
|
|
51
|
+
issues_fs/schemas/graph/Schema__Type__Summary.py,sha256=0WfUNzWOoZP0B4bM4v77hVlVfXHAps-KCI5cP6-3P24,1186
|
|
52
|
+
issues_fs/schemas/graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
|
+
issues_fs/schemas/identifiers/Comment_Id.py,sha256=zQrbjecusjsCZ4yQrvoL64Sx3ON95hL1q9A2uIeMHss,99
|
|
54
|
+
issues_fs/schemas/identifiers/Issue_Id.py,sha256=aOSjG2XqVQf3A58dxg9BnoL9Cq9zUFvSLnMU8uNClAo,579
|
|
55
|
+
issues_fs/schemas/identifiers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
+
issues_fs/schemas/issues/Schema__Comment.py,sha256=Qv0YYmJUSz4IzviVGs2Jlo8OKUyYgo-w-RA_-ebifDU,4599
|
|
57
|
+
issues_fs/schemas/issues/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
+
issues_fs/schemas/issues/phase_1/Schema__Issue__Children.py,sha256=vhVKKDFsw1plDi4jSaQEUYksPKBj2nTMT_5iI9M4Bm4,7654
|
|
59
|
+
issues_fs/schemas/issues/phase_1/Schema__Root.py,sha256=CzW5UNUV5TYFvxl0dxZYohp3uAWDSdVUYSO6d3J3s9I,4980
|
|
60
|
+
issues_fs/schemas/issues/phase_1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
+
issues_fs/schemas/safe_str/Safe_Str__Hex_Color.py,sha256=kLEaz4V0bbQXzplq1xoYnLT1IzSQWi8bgXrkFjbuHOo,642
|
|
62
|
+
issues_fs/schemas/safe_str/Safe_Str__Issue_Id.py,sha256=5hjEYBmpMe9eCoC9I61cboSu2qtXWXFOgTXy8ArJebI,1199
|
|
63
|
+
issues_fs/schemas/safe_str/Safe_Str__Issue__Node__Description.py,sha256=-HFMzWTCc_uEfuZ7Pp2PJZWAyfEJuL8yZRMLx_nZDlc,1366
|
|
64
|
+
issues_fs/schemas/safe_str/Safe_Str__Label_Name.py,sha256=fJGZgX19p4pGYnh4Pc24mcjma_P80dVNJWfYXmMRGRA,787
|
|
65
|
+
issues_fs/schemas/safe_str/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
+
issues_fs/schemas/status/Schema__API__Info.py,sha256=rxSFdKTqwZog0zAgbC7rENj4QVuoPbH5e1jWG6J1E7s,1474
|
|
67
|
+
issues_fs/schemas/status/Schema__Git__Status.py,sha256=LIqvg58Oh6NxLWiz8tl5W-dF-2DsB8NwhZKvPtoRO9k,2163
|
|
68
|
+
issues_fs/schemas/status/Schema__Index__Status.py,sha256=fshb0QoEXmvrdXrYU2MEId6C-rR5elLLL_fc7SmucEE,1949
|
|
69
|
+
issues_fs/schemas/status/Schema__Server__Status.py,sha256=EQmMPfIhsPEzkNPyAu2hIjF1OhJSDBFGPjSHYA1La0g,2516
|
|
70
|
+
issues_fs/schemas/status/Schema__Storage__Status.py,sha256=OpGGBAFaHRGCU9qX6mlj6WJVM2aewHfcf9T55nkEh6M,1993
|
|
71
|
+
issues_fs/schemas/status/Schema__Types__Status.py,sha256=QmNgl8RIKaREPgaRs38ehm3mn61eZMRegoV_WUfcGcg,2447
|
|
72
|
+
issues_fs/schemas/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
|
+
issues_fs/utils/Version.py,sha256=orB_CjJtnaw2ZvWuThE6SPdQF5Qpxuuz-qKcgO3UVlc,734
|
|
74
|
+
issues_fs/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
|
+
issues_fs/version,sha256=zBGyinqIPmH_DS6p1sYeDvoOFlX6a5F143lEW-yMHFU,7
|
|
76
|
+
issues_fs-0.4.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
77
|
+
issues_fs-0.4.0.dist-info/METADATA,sha256=U4CIGP81WuFCpPCG4sqcOpbxq2lrtMh9sMg1Jc0Gip4,12712
|
|
78
|
+
issues_fs-0.4.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
79
|
+
issues_fs-0.4.0.dist-info/RECORD,,
|
issues_fs-0.3.0.dist-info/RECORD
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
issues_fs/__init__.py,sha256=0onJhZJAiKrCd5_0tDVQWym1rZ6vuZb_ZsOvh9Ptkjc,53
|
|
2
|
-
issues_fs/utils/Version.py,sha256=orB_CjJtnaw2ZvWuThE6SPdQF5Qpxuuz-qKcgO3UVlc,734
|
|
3
|
-
issues_fs/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
issues_fs/version,sha256=4apo-i85Xj_wQXKgNhV_C-B8om5MrdAetyEDJ1TebHE,7
|
|
5
|
-
issues_fs-0.3.0.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
6
|
-
issues_fs-0.3.0.dist-info/METADATA,sha256=JgZ1eEd4Aqu9E0GGUMzVrqT8CSz0fCf9nZCrOQ8Tp0w,12687
|
|
7
|
-
issues_fs-0.3.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
8
|
-
issues_fs-0.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|