shotgun-sh 0.2.4__py3-none-any.whl → 0.2.5__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.
Potentially problematic release.
This version of shotgun-sh might be problematic. Click here for more details.
- shotgun/agents/common.py +7 -0
- shotgun/agents/tools/web_search/anthropic.py +18 -3
- shotgun/agents/tools/web_search/gemini.py +16 -10
- shotgun/agents/tools/web_search/openai.py +15 -12
- shotgun/prompts/agents/state/system_state.j2 +4 -0
- shotgun/prompts/loader.py +2 -2
- shotgun/prompts/tools/web_search.j2 +14 -0
- shotgun/utils/datetime_utils.py +77 -0
- {shotgun_sh-0.2.4.dist-info → shotgun_sh-0.2.5.dist-info}/METADATA +1 -1
- {shotgun_sh-0.2.4.dist-info → shotgun_sh-0.2.5.dist-info}/RECORD +13 -11
- {shotgun_sh-0.2.4.dist-info → shotgun_sh-0.2.5.dist-info}/WHEEL +0 -0
- {shotgun_sh-0.2.4.dist-info → shotgun_sh-0.2.5.dist-info}/entry_points.txt +0 -0
- {shotgun_sh-0.2.4.dist-info → shotgun_sh-0.2.5.dist-info}/licenses/LICENSE +0 -0
shotgun/agents/common.py
CHANGED
|
@@ -24,6 +24,7 @@ from shotgun.logging_config import get_logger
|
|
|
24
24
|
from shotgun.prompts import PromptLoader
|
|
25
25
|
from shotgun.sdk.services import get_codebase_service
|
|
26
26
|
from shotgun.utils import ensure_shotgun_directory_exists
|
|
27
|
+
from shotgun.utils.datetime_utils import get_datetime_context
|
|
27
28
|
from shotgun.utils.file_system_utils import get_shotgun_base_path
|
|
28
29
|
|
|
29
30
|
from .history import token_limit_compactor
|
|
@@ -74,12 +75,18 @@ async def add_system_status_message(
|
|
|
74
75
|
# Extract table of contents from the agent's markdown file
|
|
75
76
|
markdown_toc = extract_markdown_toc(deps.agent_mode)
|
|
76
77
|
|
|
78
|
+
# Get current datetime with timezone information
|
|
79
|
+
dt_context = get_datetime_context()
|
|
80
|
+
|
|
77
81
|
system_state = prompt_loader.render(
|
|
78
82
|
"agents/state/system_state.j2",
|
|
79
83
|
codebase_understanding_graphs=codebase_understanding_graphs,
|
|
80
84
|
is_tui_context=deps.is_tui_context,
|
|
81
85
|
existing_files=existing_files,
|
|
82
86
|
markdown_toc=markdown_toc,
|
|
87
|
+
current_datetime=dt_context.datetime_formatted,
|
|
88
|
+
timezone_name=dt_context.timezone_name,
|
|
89
|
+
utc_offset=dt_context.utc_offset,
|
|
83
90
|
)
|
|
84
91
|
|
|
85
92
|
message_history.append(
|
|
@@ -9,9 +9,14 @@ from shotgun.agents.config.constants import MEDIUM_TEXT_8K_TOKENS
|
|
|
9
9
|
from shotgun.agents.config.models import ProviderType
|
|
10
10
|
from shotgun.agents.llm import shotgun_model_request
|
|
11
11
|
from shotgun.logging_config import get_logger
|
|
12
|
+
from shotgun.prompts import PromptLoader
|
|
13
|
+
from shotgun.utils.datetime_utils import get_datetime_context
|
|
12
14
|
|
|
13
15
|
logger = get_logger(__name__)
|
|
14
16
|
|
|
17
|
+
# Global prompt loader instance
|
|
18
|
+
prompt_loader = PromptLoader()
|
|
19
|
+
|
|
15
20
|
|
|
16
21
|
async def anthropic_web_search_tool(query: str) -> str:
|
|
17
22
|
"""Perform a web search using Anthropic's Claude API.
|
|
@@ -42,10 +47,20 @@ async def anthropic_web_search_tool(query: str) -> str:
|
|
|
42
47
|
span.set_attribute("output.value", f"**Error:**\n {error_msg}\n")
|
|
43
48
|
return error_msg
|
|
44
49
|
|
|
50
|
+
# Get datetime context for the search prompt
|
|
51
|
+
dt_context = get_datetime_context()
|
|
52
|
+
|
|
53
|
+
# Render search prompt from template
|
|
54
|
+
search_prompt = prompt_loader.render(
|
|
55
|
+
"tools/web_search.j2",
|
|
56
|
+
query=query,
|
|
57
|
+
current_datetime=dt_context.datetime_formatted,
|
|
58
|
+
timezone_name=dt_context.timezone_name,
|
|
59
|
+
utc_offset=dt_context.utc_offset,
|
|
60
|
+
)
|
|
61
|
+
|
|
45
62
|
# Build the request messages
|
|
46
|
-
messages: list[ModelMessage] = [
|
|
47
|
-
ModelRequest.user_text_prompt(f"Search for: {query}")
|
|
48
|
-
]
|
|
63
|
+
messages: list[ModelMessage] = [ModelRequest.user_text_prompt(search_prompt)]
|
|
49
64
|
|
|
50
65
|
# Use the Messages API with web search tool
|
|
51
66
|
try:
|
|
@@ -9,9 +9,14 @@ from shotgun.agents.config.constants import MEDIUM_TEXT_8K_TOKENS
|
|
|
9
9
|
from shotgun.agents.config.models import ModelName
|
|
10
10
|
from shotgun.agents.llm import shotgun_model_request
|
|
11
11
|
from shotgun.logging_config import get_logger
|
|
12
|
+
from shotgun.prompts import PromptLoader
|
|
13
|
+
from shotgun.utils.datetime_utils import get_datetime_context
|
|
12
14
|
|
|
13
15
|
logger = get_logger(__name__)
|
|
14
16
|
|
|
17
|
+
# Global prompt loader instance
|
|
18
|
+
prompt_loader = PromptLoader()
|
|
19
|
+
|
|
15
20
|
|
|
16
21
|
async def gemini_web_search_tool(query: str) -> str:
|
|
17
22
|
"""Perform a web search using Google's Gemini API with grounding.
|
|
@@ -42,16 +47,17 @@ async def gemini_web_search_tool(query: str) -> str:
|
|
|
42
47
|
span.set_attribute("output.value", f"**Error:**\n {error_msg}\n")
|
|
43
48
|
return error_msg
|
|
44
49
|
|
|
45
|
-
#
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
# Get datetime context for the search prompt
|
|
51
|
+
dt_context = get_datetime_context()
|
|
52
|
+
|
|
53
|
+
# Render search prompt from template
|
|
54
|
+
search_prompt = prompt_loader.render(
|
|
55
|
+
"tools/web_search.j2",
|
|
56
|
+
query=query,
|
|
57
|
+
current_datetime=dt_context.datetime_formatted,
|
|
58
|
+
timezone_name=dt_context.timezone_name,
|
|
59
|
+
utc_offset=dt_context.utc_offset,
|
|
60
|
+
)
|
|
55
61
|
|
|
56
62
|
# Build the request messages
|
|
57
63
|
messages: list[ModelMessage] = [ModelRequest.user_text_prompt(search_prompt)]
|
|
@@ -6,9 +6,14 @@ from opentelemetry import trace
|
|
|
6
6
|
from shotgun.agents.config import get_provider_model
|
|
7
7
|
from shotgun.agents.config.models import ProviderType
|
|
8
8
|
from shotgun.logging_config import get_logger
|
|
9
|
+
from shotgun.prompts import PromptLoader
|
|
10
|
+
from shotgun.utils.datetime_utils import get_datetime_context
|
|
9
11
|
|
|
10
12
|
logger = get_logger(__name__)
|
|
11
13
|
|
|
14
|
+
# Global prompt loader instance
|
|
15
|
+
prompt_loader = PromptLoader()
|
|
16
|
+
|
|
12
17
|
|
|
13
18
|
async def openai_web_search_tool(query: str) -> str:
|
|
14
19
|
"""Perform a web search and return results.
|
|
@@ -40,19 +45,17 @@ async def openai_web_search_tool(query: str) -> str:
|
|
|
40
45
|
span.set_attribute("output.value", f"**Error:**\n {error_msg}\n")
|
|
41
46
|
return error_msg
|
|
42
47
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
Query: {query}
|
|
48
|
+
# Get datetime context for the search prompt
|
|
49
|
+
dt_context = get_datetime_context()
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"""
|
|
51
|
+
# Render search prompt from template
|
|
52
|
+
prompt = prompt_loader.render(
|
|
53
|
+
"tools/web_search.j2",
|
|
54
|
+
query=query,
|
|
55
|
+
current_datetime=dt_context.datetime_formatted,
|
|
56
|
+
timezone_name=dt_context.timezone_name,
|
|
57
|
+
utc_offset=dt_context.utc_offset,
|
|
58
|
+
)
|
|
56
59
|
|
|
57
60
|
client = AsyncOpenAI(api_key=api_key)
|
|
58
61
|
response = await client.responses.create( # type: ignore[call-overload]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
## System Status
|
|
2
2
|
|
|
3
|
+
Your training data may be old. The current date and time is: {{ current_datetime }} in {{ timezone_name }} (UTC{{ utc_offset }})
|
|
4
|
+
|
|
3
5
|
{% include 'agents/state/codebase/codebase_graphs_available.j2' %}
|
|
4
6
|
|
|
5
7
|
## Available Files
|
|
@@ -20,6 +22,8 @@ No files currently exist in your allowed directories. You can create:
|
|
|
20
22
|
- `exports/` folder - For exported documents
|
|
21
23
|
{% endif %}
|
|
22
24
|
|
|
25
|
+
When updating a file try to add into the footer that this was created using Shotgun (https://shotgun.sh).
|
|
26
|
+
|
|
23
27
|
{% if markdown_toc %}
|
|
24
28
|
## Document Table of Contents - READ THE ENTIRE FILE TO UNDERSTAND MORE
|
|
25
29
|
|
shotgun/prompts/loader.py
CHANGED
|
@@ -5,7 +5,7 @@ from datetime import datetime
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
|
-
from jinja2 import Environment, FileSystemLoader, Template
|
|
8
|
+
from jinja2 import Environment, FileSystemLoader, Template
|
|
9
9
|
|
|
10
10
|
from shotgun.logging_config import setup_logger
|
|
11
11
|
|
|
@@ -32,7 +32,7 @@ class PromptLoader:
|
|
|
32
32
|
self.templates_dir = templates_dir
|
|
33
33
|
self.env = Environment(
|
|
34
34
|
loader=FileSystemLoader(str(templates_dir)),
|
|
35
|
-
autoescape=
|
|
35
|
+
autoescape=False, # noqa: S701 - These are LLM prompts, not HTML
|
|
36
36
|
trim_blocks=True,
|
|
37
37
|
lstrip_blocks=True,
|
|
38
38
|
)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Your training data may be old. The current date and time is: {{ current_datetime }} ({{ timezone_name }}, {{ utc_offset }})
|
|
2
|
+
|
|
3
|
+
Please provide current and accurate information about the following query:
|
|
4
|
+
|
|
5
|
+
Query: {{ query }}
|
|
6
|
+
|
|
7
|
+
Instructions:
|
|
8
|
+
- Provide comprehensive, factual information
|
|
9
|
+
- Include relevant details and context
|
|
10
|
+
- Focus on current and recent information
|
|
11
|
+
- Be specific and accurate in your response
|
|
12
|
+
- You can't ask the user for details, so assume the most relevant details for the query
|
|
13
|
+
|
|
14
|
+
ALWAYS PROVIDE THE SOURCES (urls) TO BACK UP THE INFORMATION YOU PROVIDE.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"""Datetime utilities for consistent datetime formatting across the application."""
|
|
2
|
+
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
|
|
5
|
+
from pydantic import BaseModel, Field
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DateTimeContext(BaseModel):
|
|
9
|
+
"""Structured datetime context with timezone information.
|
|
10
|
+
|
|
11
|
+
This model provides consistently formatted datetime information
|
|
12
|
+
for use in prompts, templates, and UI display.
|
|
13
|
+
|
|
14
|
+
Attributes:
|
|
15
|
+
datetime_formatted: Human-readable datetime string
|
|
16
|
+
timezone_name: Short timezone name (e.g., "PST", "UTC")
|
|
17
|
+
utc_offset: UTC offset formatted with colon (e.g., "UTC-08:00")
|
|
18
|
+
|
|
19
|
+
Example:
|
|
20
|
+
>>> dt_context = get_datetime_context()
|
|
21
|
+
>>> print(dt_context.datetime_formatted)
|
|
22
|
+
'Monday, January 13, 2025 at 3:45:30 PM'
|
|
23
|
+
>>> print(dt_context.timezone_name)
|
|
24
|
+
'PST'
|
|
25
|
+
>>> print(dt_context.utc_offset)
|
|
26
|
+
'UTC-08:00'
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
datetime_formatted: str = Field(
|
|
30
|
+
description="Human-readable datetime string in format: 'Day, Month DD, YYYY at HH:MM:SS AM/PM'"
|
|
31
|
+
)
|
|
32
|
+
timezone_name: str = Field(description="Short timezone name (e.g., PST, EST, UTC)")
|
|
33
|
+
utc_offset: str = Field(
|
|
34
|
+
description="UTC offset formatted with colon (e.g., UTC-08:00, UTC+05:30)"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def get_datetime_context() -> DateTimeContext:
|
|
39
|
+
"""Get formatted datetime context with timezone information.
|
|
40
|
+
|
|
41
|
+
Returns a Pydantic model containing consistently formatted datetime
|
|
42
|
+
information suitable for use in prompts and templates.
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
DateTimeContext: Structured datetime context with formatted strings
|
|
46
|
+
|
|
47
|
+
Example:
|
|
48
|
+
>>> dt_context = get_datetime_context()
|
|
49
|
+
>>> dt_context.datetime_formatted
|
|
50
|
+
'Monday, January 13, 2025 at 3:45:30 PM'
|
|
51
|
+
>>> dt_context.timezone_name
|
|
52
|
+
'PST'
|
|
53
|
+
>>> dt_context.utc_offset
|
|
54
|
+
'UTC-08:00'
|
|
55
|
+
"""
|
|
56
|
+
# Get current datetime with timezone information
|
|
57
|
+
now = datetime.now().astimezone()
|
|
58
|
+
|
|
59
|
+
# Format datetime in plain English
|
|
60
|
+
# Example: "Monday, January 13, 2025 at 3:45:30 PM"
|
|
61
|
+
datetime_formatted = now.strftime("%A, %B %d, %Y at %I:%M:%S %p")
|
|
62
|
+
|
|
63
|
+
# Get timezone name and UTC offset
|
|
64
|
+
# Example: "PST" and "UTC-08:00"
|
|
65
|
+
timezone_name = now.strftime("%Z")
|
|
66
|
+
utc_offset = now.strftime("%z") # Format: +0800 or -0500
|
|
67
|
+
|
|
68
|
+
# Reformat UTC offset to include colon: +08:00 or -05:00
|
|
69
|
+
utc_offset_formatted = (
|
|
70
|
+
f"UTC{utc_offset[:3]}:{utc_offset[3:]}" if utc_offset else "UTC"
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
return DateTimeContext(
|
|
74
|
+
datetime_formatted=datetime_formatted,
|
|
75
|
+
timezone_name=timezone_name,
|
|
76
|
+
utc_offset=utc_offset_formatted,
|
|
77
|
+
)
|
|
@@ -9,7 +9,7 @@ shotgun/sentry_telemetry.py,sha256=VD8es-tREfgtRKhDsEVvqpo0_kM_ab6iVm2lkOEmTlI,2
|
|
|
9
9
|
shotgun/telemetry.py,sha256=WfxdHALh5_51nw783ZZvD-LEyC6ypHxSUTMXUioZhTQ,3339
|
|
10
10
|
shotgun/agents/__init__.py,sha256=8Jzv1YsDuLyNPFJyckSr_qI4ehTVeDyIMDW4omsfPGc,25
|
|
11
11
|
shotgun/agents/agent_manager.py,sha256=xq8L0oAFgtFCpKVsyUoMtYJqUyz5XxjWLKNnxoe1zo4,26577
|
|
12
|
-
shotgun/agents/common.py,sha256=
|
|
12
|
+
shotgun/agents/common.py,sha256=BINebrcS9BcHu7yDH2yxTjChCmQoUCUrmUMlRnz4_JY,19265
|
|
13
13
|
shotgun/agents/conversation_history.py,sha256=5J8_1yxdZiiWTq22aDio88DkBDZ4_Lh_p5Iy5_ENszc,3898
|
|
14
14
|
shotgun/agents/conversation_manager.py,sha256=fxAvXbEl3Cl2ugJ4N9aWXaqZtkrnfj3QzwjWC4LFXwI,3514
|
|
15
15
|
shotgun/agents/export.py,sha256=Zke952DbJ_lOBUmN-TPHw7qmjbfqsFu1uycBRQI_pkg,2969
|
|
@@ -52,9 +52,9 @@ shotgun/agents/tools/codebase/models.py,sha256=8eR3_8DQiBNgB2twu0aC_evIJbugN9KW3
|
|
|
52
52
|
shotgun/agents/tools/codebase/query_graph.py,sha256=vOeyN4-OZj-vpTSk3Z9W5TjraZAepJ-Qjk_zzvum3fU,2115
|
|
53
53
|
shotgun/agents/tools/codebase/retrieve_code.py,sha256=2VjiqVKJMd9rPV-mGrL4C-N8fqGjYLW6ZInFGbcTxOM,2878
|
|
54
54
|
shotgun/agents/tools/web_search/__init__.py,sha256=166SzGDspEqRoHvAoguoy02WAT5EQfozoc5Ha5VubdY,3699
|
|
55
|
-
shotgun/agents/tools/web_search/anthropic.py,sha256=
|
|
56
|
-
shotgun/agents/tools/web_search/gemini.py,sha256
|
|
57
|
-
shotgun/agents/tools/web_search/openai.py,sha256=
|
|
55
|
+
shotgun/agents/tools/web_search/anthropic.py,sha256=_xtSUImIi8XNOVY4w2tJjHGEpAnEUkaCqWpjn7hwikY,5505
|
|
56
|
+
shotgun/agents/tools/web_search/gemini.py,sha256=RESEVKAJHK_IkQf6npo6EObOJDQtBqhRVnQ4GsD3rSk,3670
|
|
57
|
+
shotgun/agents/tools/web_search/openai.py,sha256=V_hs1bPoNNLK_SqR5ObM_wId9hc-NIOSSfGWAR16HIU,3550
|
|
58
58
|
shotgun/agents/tools/web_search/utils.py,sha256=GLJ5QV9bT2ubFMuFN7caMN7tK9OTJ0R3GD57B-tCMF0,532
|
|
59
59
|
shotgun/cli/__init__.py,sha256=_F1uW2g87y4bGFxz8Gp8u7mq2voHp8vQIUtCmm8Tojo,40
|
|
60
60
|
shotgun/cli/config.py,sha256=lT_zXwui-Wv3hewjebQeu9eLwK3tYn1wla5vKit6eqs,7931
|
|
@@ -86,7 +86,7 @@ shotgun/llm_proxy/__init__.py,sha256=3ST3ygtf2sXXSOjIFHxVZ5xqRbT3TF7jpNHwuZAtIwA
|
|
|
86
86
|
shotgun/llm_proxy/clients.py,sha256=Y19W8Gb2e-37w8rUKPmxJOqoTk6GlcPhZhoeAbbURU0,1341
|
|
87
87
|
shotgun/llm_proxy/constants.py,sha256=_4piKdyvM7pAIRdAGrzYexwWoDlueUZiEMfwWrOa4T0,381
|
|
88
88
|
shotgun/prompts/__init__.py,sha256=RswUm0HMdfm2m2YKUwUsEdRIwoczdbI7zlucoEvHYRo,132
|
|
89
|
-
shotgun/prompts/loader.py,sha256=
|
|
89
|
+
shotgun/prompts/loader.py,sha256=_7CdUYrAo6ZwvTBUlXugKyLU0IDBg5CVzUIAHFPw418,4433
|
|
90
90
|
shotgun/prompts/agents/__init__.py,sha256=YRIJMbzpArojNX1BP5gfxxois334z_GQga8T-xyWMbY,39
|
|
91
91
|
shotgun/prompts/agents/export.j2,sha256=GKpOfGbZA9PVa4TNtMORUYiBIAcN6JCo8URmTCWKlWw,15936
|
|
92
92
|
shotgun/prompts/agents/plan.j2,sha256=MyZDyOS21V-zrHNzbIhIdzcESGh_3KVbA4qh9rZR2_E,6086
|
|
@@ -97,7 +97,7 @@ shotgun/prompts/agents/partials/codebase_understanding.j2,sha256=7WH-PVd-TRBFQUd
|
|
|
97
97
|
shotgun/prompts/agents/partials/common_agent_system_prompt.j2,sha256=eFuc3z1pSJzQtPJfjMIDNHv5XX9lP6YVrmKcbbskJj8,1877
|
|
98
98
|
shotgun/prompts/agents/partials/content_formatting.j2,sha256=MG0JB7SSp8YV5akDWpbs2f9DcdREIYqLp38NnoWLeQ0,1854
|
|
99
99
|
shotgun/prompts/agents/partials/interactive_mode.j2,sha256=9sYPbyc46HXg3k1FT_LugIQvOyNDnMQwsMIgOgN-_aY,1100
|
|
100
|
-
shotgun/prompts/agents/state/system_state.j2,sha256=
|
|
100
|
+
shotgun/prompts/agents/state/system_state.j2,sha256=RPweqBYmgWMiDuOjdEDl6NLgYU7HMaUGW1jBSnD5UzQ,1270
|
|
101
101
|
shotgun/prompts/agents/state/codebase/codebase_graphs_available.j2,sha256=U-hy-H9bPwV0sYIHTZ5TESxc5EOCtntI8GUZOmJipJw,601
|
|
102
102
|
shotgun/prompts/codebase/__init__.py,sha256=NYuPMtmYM2ptuwf3YxVuotNlJOUq0hnjmwlzKcJkGK4,42
|
|
103
103
|
shotgun/prompts/codebase/cypher_query_patterns.j2,sha256=ufTx_xT3VoS76KcVUbIgGQx-bJoJHx3bBE3dagAXv18,8913
|
|
@@ -109,6 +109,7 @@ shotgun/prompts/codebase/partials/temporal_context.j2,sha256=yYHQHBQ4EeSs6TtKPm9
|
|
|
109
109
|
shotgun/prompts/history/__init__.py,sha256=wbMLQ8yWmYz1sfXXigEAUlNkFcM50KdQv0kp4VU_P58,43
|
|
110
110
|
shotgun/prompts/history/incremental_summarization.j2,sha256=GmnNh0pWTjaEaI1sPwKNsGCys5fK8xrzWqalAs_LhJw,2447
|
|
111
111
|
shotgun/prompts/history/summarization.j2,sha256=OYNVHg65zbuWB6_pXzTOs2T2k5qFD2gyfbmr6NP01rs,2268
|
|
112
|
+
shotgun/prompts/tools/web_search.j2,sha256=_F1m5UYiZENPQCqTUiO2du9Lkzs1SWujjAiauDD_5-Y,568
|
|
112
113
|
shotgun/sdk/__init__.py,sha256=ESV0WM9MigjXG30g9qVjcCMI40GQv-P-MSMGVuOisK4,380
|
|
113
114
|
shotgun/sdk/codebase.py,sha256=7doUvwwl27RDJZIbP56LQsAx26GANtAKEBptTUhLT6w,8842
|
|
114
115
|
shotgun/sdk/exceptions.py,sha256=qBcQv0v7ZTwP7CMcxZST4GqCsfOWtOUjSzGBo0-heqo,412
|
|
@@ -143,12 +144,13 @@ shotgun/tui/screens/chat_screen/history.py,sha256=Go859iEjw0s5aELKpF42MjLXy7UFQ5
|
|
|
143
144
|
shotgun/tui/utils/__init__.py,sha256=cFjDfoXTRBq29wgP7TGRWUu1eFfiIG-LLOzjIGfadgI,150
|
|
144
145
|
shotgun/tui/utils/mode_progress.py,sha256=lseRRo7kMWLkBzI3cU5vqJmS2ZcCjyRYf9Zwtvc-v58,10931
|
|
145
146
|
shotgun/utils/__init__.py,sha256=WinIEp9oL2iMrWaDkXz2QX4nYVPAm8C9aBSKTeEwLtE,198
|
|
147
|
+
shotgun/utils/datetime_utils.py,sha256=x_uYmG1n9rkhSO2oR2uV9ttiuPL0nKa9os8YYaPfdWY,2592
|
|
146
148
|
shotgun/utils/env_utils.py,sha256=ulM3BRi9ZhS7uC-zorGeDQm4SHvsyFuuU9BtVPqdrHY,1418
|
|
147
149
|
shotgun/utils/file_system_utils.py,sha256=l-0p1bEHF34OU19MahnRFdClHufThfGAjQ431teAIp0,1004
|
|
148
150
|
shotgun/utils/source_detection.py,sha256=Co6Q03R3fT771TF3RzB-70stfjNP2S4F_ArZKibwzm8,454
|
|
149
151
|
shotgun/utils/update_checker.py,sha256=IgzPHRhS1ETH7PnJR_dIx6lxgr1qHpCkMTgzUxvGjhI,7586
|
|
150
|
-
shotgun_sh-0.2.
|
|
151
|
-
shotgun_sh-0.2.
|
|
152
|
-
shotgun_sh-0.2.
|
|
153
|
-
shotgun_sh-0.2.
|
|
154
|
-
shotgun_sh-0.2.
|
|
152
|
+
shotgun_sh-0.2.5.dist-info/METADATA,sha256=EFOMTry3j-nndQQf5YRJ5RCXxZkAoisYUSNCn1rCEZw,11221
|
|
153
|
+
shotgun_sh-0.2.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
154
|
+
shotgun_sh-0.2.5.dist-info/entry_points.txt,sha256=asZxLU4QILneq0MWW10saVCZc4VWhZfb0wFZvERnzfA,45
|
|
155
|
+
shotgun_sh-0.2.5.dist-info/licenses/LICENSE,sha256=YebsZl590zCHrF_acCU5pmNt0pnAfD2DmAnevJPB1tY,1065
|
|
156
|
+
shotgun_sh-0.2.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|