Skip to content

Commit eb2ce8c

Browse files
committed
feat: Add client and server agents
1 parent 880c65a commit eb2ce8c

25 files changed

+2166
-0
lines changed
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
6+
# C extensions
7+
*.so
8+
9+
# Distribution / packaging
10+
.Python
11+
build/
12+
develop-eggs/
13+
dist/
14+
downloads/
15+
eggs/
16+
.eggs/
17+
lib/
18+
lib64/
19+
parts/
20+
sdist/
21+
var/
22+
wheels/
23+
share/python-wheels/
24+
*.egg-info/
25+
.installed.cfg
26+
*.egg
27+
MANIFEST
28+
29+
# PyInstaller
30+
# Usually these files are written by a python script from a template
31+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
32+
*.manifest
33+
*.spec
34+
35+
# Installer logs
36+
pip-log.txt
37+
pip-delete-this-directory.txt
38+
39+
# Unit test / coverage reports
40+
htmlcov/
41+
.tox/
42+
.nox/
43+
.coverage
44+
.coverage.*
45+
.cache
46+
nosetests.xml
47+
coverage.xml
48+
*.cover
49+
*.py,cover
50+
.hypothesis/
51+
.pytest_cache/
52+
cover/
53+
54+
# Translations
55+
*.mo
56+
*.pot
57+
58+
# Django stuff:
59+
*.log
60+
local_settings.py
61+
db.sqlite3
62+
db.sqlite3-journal
63+
64+
# Flask stuff:
65+
instance/
66+
.webassets-cache
67+
68+
# Scrapy stuff:
69+
.scrapy
70+
71+
# Sphinx documentation
72+
docs/_build/
73+
74+
# PyBuilder
75+
.pybuilder/
76+
target/
77+
78+
# Jupyter Notebook
79+
.ipynb_checkpoints
80+
81+
# IPython
82+
profile_default/
83+
ipython_config.py
84+
85+
# pyenv
86+
# For a library or package, you might want to ignore these files since the code is
87+
# intended to run in multiple environments; otherwise, check them in:
88+
# .python-version
89+
90+
# pipenv
91+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
93+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
94+
# install all needed dependencies.
95+
#Pipfile.lock
96+
97+
# UV
98+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99+
# This is especially recommended for binary packages to ensure reproducibility, and is more
100+
# commonly ignored for libraries.
101+
#uv.lock
102+
103+
# poetry
104+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105+
# This is especially recommended for binary packages to ensure reproducibility, and is more
106+
# commonly ignored for libraries.
107+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108+
#poetry.lock
109+
110+
# pdm
111+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
112+
#pdm.lock
113+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
114+
# in version control.
115+
# https://pdm.fming.dev/latest/usage/project/#working-with-version-control
116+
.pdm.toml
117+
.pdm-python
118+
.pdm-build/
119+
120+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
121+
__pypackages__/
122+
123+
# Celery stuff
124+
celerybeat-schedule
125+
celerybeat.pid
126+
127+
# SageMath parsed files
128+
*.sage.py
129+
130+
# Environments
131+
.env
132+
.venv
133+
env/
134+
venv/
135+
ENV/
136+
env.bak/
137+
venv.bak/
138+
139+
# Spyder project settings
140+
.spyderproject
141+
.spyproject
142+
143+
# Rope project settings
144+
.ropeproject
145+
146+
# mkdocs documentation
147+
/site
148+
149+
# mypy
150+
.mypy_cache/
151+
.dmypy.json
152+
dmypy.json
153+
154+
# Pyre type checker
155+
.pyre/
156+
157+
# pytype static type analyzer
158+
.pytype/
159+
160+
# Cython debug symbols
161+
cython_debug/
162+
163+
# PyCharm
164+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
165+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
166+
# and can be added to the global gitignore or merged into this file. For a more nuclear
167+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
168+
#.idea/
169+
170+
# Ruff stuff:
171+
.ruff_cache/
172+
173+
# PyPI configuration file
174+
.pypirc
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.13
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
#################################################################################
2+
#
3+
# Ruff linter and code formatter for A2A
4+
#
5+
# This file follows the standards in Google Python Style Guide
6+
# https://google.github.io/styleguide/pyguide.html
7+
#
8+
9+
line-length = 80 # Google Style Guide §3.2: 80 columns
10+
indent-width = 4 # Google Style Guide §3.4: 4 spaces
11+
12+
target-version = "py310" # Minimum Python version
13+
14+
[lint]
15+
ignore = [
16+
"I001",
17+
"COM812",
18+
"FBT001",
19+
"FBT002",
20+
"D203",
21+
"D213",
22+
"ANN001",
23+
"ANN201",
24+
"ANN204",
25+
"D100", # Ignore Missing docstring in public module (often desired at top level __init__.py)
26+
"D102", # Ignore return type annotation in public method
27+
"D104", # Ignore Missing docstring in public package (often desired at top level __init__.py)
28+
"D107", # Ignore Missing docstring in __init__ (use class docstring)
29+
"TD002", # Ignore Missing author in TODOs (often not required)
30+
"TD003", # Ignore Missing issue link in TODOs (often not required/available)
31+
"T201", # Ignore print presence
32+
"RUF012", # Ignore Mutable class attributes should be annotated with `typing.ClassVar`
33+
"RUF013", # Ignore implicit optional
34+
]
35+
36+
select = [
37+
"E", # pycodestyle errors (PEP 8)
38+
"W", # pycodestyle warnings (PEP 8)
39+
"F", # Pyflakes (logical errors, unused imports/variables)
40+
"I", # isort (import sorting - Google Style §3.1.2)
41+
"D", # pydocstyle (docstring conventions - Google Style §3.8)
42+
"N", # pep8-naming (naming conventions - Google Style §3.16)
43+
"UP", # pyupgrade (use modern Python syntax)
44+
"ANN",# flake8-annotations (type hint usage/style - Google Style §2.22)
45+
"A", # flake8-builtins (avoid shadowing builtins)
46+
"B", # flake8-bugbear (potential logic errors & style issues - incl. mutable defaults B006, B008)
47+
"C4", # flake8-comprehensions (unnecessary list/set/dict comprehensions)
48+
"ISC",# flake8-implicit-str-concat (disallow implicit string concatenation across lines)
49+
"T20",# flake8-print (discourage `print` - prefer logging)
50+
"SIM",# flake8-simplify (simplify code, e.g., `if cond: return True else: return False`)
51+
"PTH",# flake8-use-pathlib (use pathlib instead of os.path where possible)
52+
"PL", # Pylint rules ported to Ruff (PLC, PLE, PLR, PLW)
53+
"PIE",# flake8-pie (misc code improvements, e.g., no-unnecessary-pass)
54+
"RUF",# Ruff-specific rules (e.g., RUF001-003 ambiguous unicode)
55+
"RET",# flake8-return (consistency in return statements)
56+
"SLF",# flake8-self (check for private member access via `self`)
57+
"TID",# flake8-tidy-imports (relative imports, banned imports - configure if needed)
58+
"YTT",# flake8-boolean-trap (checks for boolean positional arguments, truthiness tests - Google Style §3.10)
59+
"TD", # flake8-todos (check TODO format - Google Style §3.7)
60+
]
61+
62+
exclude = [
63+
".bzr",
64+
".direnv",
65+
".eggs",
66+
".git",
67+
".hg",
68+
".mypy_cache",
69+
".nox",
70+
".pants.d",
71+
".pytype",
72+
".ruff_cache",
73+
".svn",
74+
".tox",
75+
".venv",
76+
"__pypackages__",
77+
"_build",
78+
"buck-out",
79+
"build",
80+
"dist",
81+
"node_modules",
82+
"venv",
83+
"*/migrations/*",
84+
"test_*",
85+
]
86+
87+
[lint.isort]
88+
#force-sort-within-sections = true
89+
#combine-as-imports = true
90+
case-sensitive = true
91+
#force-single-line = false
92+
#known-first-party = []
93+
#known-third-party = []
94+
lines-after-imports = 2
95+
lines-between-types = 1
96+
#no-lines-before = ["LOCALFOLDER"]
97+
#required-imports = []
98+
#section-order = ["future", "standard-library", "third-party", "first-party", "local-folder"]
99+
100+
[lint.pydocstyle]
101+
convention = "google"
102+
103+
[lint.flake8-annotations]
104+
mypy-init-return = true
105+
allow-star-arg-any = true
106+
107+
[lint.pep8-naming]
108+
ignore-names = ["test_*", "setUp", "tearDown", "mock_*"]
109+
classmethod-decorators = ["classmethod", "pydantic.validator", "pydantic.root_validator"]
110+
staticmethod-decorators = ["staticmethod"]
111+
112+
[lint.flake8-tidy-imports]
113+
ban-relative-imports = "all" # Google generally prefers absolute imports (§3.1.2)
114+
115+
[lint.flake8-quotes]
116+
docstring-quotes = "double"
117+
inline-quotes = "single"
118+
119+
[lint.per-file-ignores]
120+
"__init__.py" = ["F401"] # Ignore unused imports in __init__.py
121+
"*_test.py" = ["D", "ANN"] # Ignore docstring and annotation issues in test files
122+
"test_*.py" = ["D", "ANN"] # Ignore docstring and annotation issues in test files
123+
"types.py" = ["D", "E501", "N815"] # Ignore docstring and annotation issues in types.py
124+
125+
[format]
126+
docstring-code-format = true
127+
docstring-code-line-length = "dynamic" # Or set to 80
128+
quote-style = "single"
129+
indent-style = "space"

examples/no-llm-framework/README.md

Whitespace-only changes.

0 commit comments

Comments
 (0)