Developer
Amy Wu
wuamy@google.com
Performance
YoY:+527%Key patterns and highlights from this developer's activity.
Breakdown of growth, maintenance, and fixes effort over time.
Bugs introduced vs. fixed over time.
Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.
Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.
The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.
Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:
POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json
Request:
{
"startTime": "2025-01-01T00:00:00Z",
"endTime": "2025-12-31T23:59:59Z",
"bucketSize": "BUCKET_SIZE_MONTH",
"groupBy": ["repository_id" | "deliverer_email"]
}
Response:
{
"productivePct": 74,
"maintenancePct": 18,
"wastedPct": 8,
"buckets": [
{
"bucketStart": "2025-01-01T00:00:00Z",
"productive": 4.2,
"maintenance": 1.8,
"wasted": 0.6
}
]
}Latest analyzed commits from this developer.
| Hash | Message | Date | Files |
|---|
Commit activity distribution by hour and day of week. Shows when this developer is most active.
Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.
| Effort |
|---|
| a95d08a4 | This commit introduces a **new capability** to **automatically enable mTLS** for the GenAI client in environments utilizing bound tokens, such as Agent Engine with AgentAuthority. It achieves this by migrating the core **API client** (`_api_client.py`) to leverage `google-auth`'s `AuthorizedSession` for both synchronous and asynchronous HTTP requests, including necessary URL rewriting for mTLS endpoints. This integration enhances security by ensuring mutual authentication, while also updating **error handling** (`errors.py`) to recognize new response types. The change includes comprehensive **test coverage** to validate the new client behavior, retries, and closing mechanisms, and specifically applies to default client configurations, excluding custom client arguments or sessions. | Mar 21 | 8 | grow |
| 2856c0ac | This commit provides a **bug fix** for the `google.genai` **API client's retry mechanism**. It modifies the `retry_args` function in `google/genai/_api_client.py` to correctly interpret `attempts=0` in retry options as `attempts=1`. This ensures that even when "no retries" are desired, at least one initial API call is always made, preventing unintended request failures. A new test case in `google/genai/tests/client/test_retries.py` validates this corrected behavior, improving the reliability and predictability of **API calls** within the library. | Mar 17 | 2 | waste |
| 8b3be874 | This commit provides a **bug fix** by explicitly forwarding `http_options` within the `async_request_streamed` function in the **`google/genai/_api_client.py` module**. Previously, these options, which include crucial retry configurations, were not being passed to the underlying `_async_request` call for **asynchronous streamed API requests**. This change ensures that **retry support** is now correctly enabled and applied to all such requests, significantly improving the reliability and resilience of network interactions for streamed operations. | Mar 10 | 1 | waste |
| 5e5e5fb4 | This commit **enhances the project documentation** by adding a detailed explanation and example for using `types.ResourceScope.COLLECTION` within the `README.md`. Specifically, it addresses the common use case of configuring a **reverse proxy with a custom base URL**, providing clearer guidance for developers. This **documentation update** improves the onboarding and configuration experience for users dealing with complex network setups, directly resolving **issue #2089**. The change primarily affects the **`README.md`** file, making the project more accessible and easier to integrate. | Mar 9 | 1 | maint |
| b28d1445 | This commit delivers a **fix** and **dependency management improvement** for the **`google.genai` library's API client**. It makes `aiohttp` an **optional dependency** and updates its version upperbound, while also resolving a critical issue where **`HttpOptions.async_client_args` were not correctly propagated** to `aiohttp.ClientSession` requests. The `BaseApiClient` constructor in `_api_client.py` is updated to ensure `_async_client_session_request_args` is always initialized, even with custom `aiohttp` clients. This ensures that **proxy settings and other custom `aiohttp.ClientSession` arguments are reliably applied** for asynchronous operations, enhancing configuration flexibility and robustness. | Feb 25 | 3 | waste |
| 006042db | This commit delivers a **bug fix** for the **`google.genai`** library, specifically within the **`_api_client.py`** module. It addresses a `TypeError` that occurred in the `HttpResponse.json` property when the `aiohttp` backend received a non-list `response_stream` (e.g., an `aiohttp.ClientResponse` object) during a Google API 500 error. By adding a type check, the commit ensures that `response_stream` is only treated as a list if it actually is, preventing crashes and allowing proper error handling to proceed. This significantly improves the **robustness of API error handling** for users leveraging the `aiohttp` backend. | Feb 24 | 1 | waste |
| ecfa90ca | This commit introduces an **internal refactoring** to the `google.genai` library's API client, specifically within the `_ApiClient`'s `json` property getter in `google/genai/_api_client.py`. The change **simplifies the internal logic** by removing a specific type check for `response_stream`. Concurrently, a test in `google/genai/tests/client/test_http_options.py` receives a minor formatting adjustment to a list of excluded keys for **improved readability**. This is a **maintenance change** that enhances code clarity and has no functional impact on the library's external behavior. | Feb 24 | 2 | maint |
| 4d818b93 | This commit introduces **new capabilities** to the **asynchronous HTTP transport** within the `google-auth` library, enhancing control over network requests. It updates the `AsyncAuthorizedSession` in `google.auth.aio.transport.sessions.py` to accept `aiohttp.ClientTimeout` objects for more granular request timeouts and adds a `total_attempts` parameter to manage retry logic. The underlying `Request` method in `google.auth.aio.transport.aiohttp.py` is also updated to properly handle these timeout objects and provide refined error messages. This **feature enhancement** provides developers with greater flexibility and robustness when configuring asynchronous HTTP operations, allowing for more precise control over network behavior and error handling. | Feb 20 | 5 | grow |
| 2c40555c | This commit primarily **fixes a bug** in the **API client initialization** within `google/genai/_api_client.py`, ensuring `base_url` and global location are correctly parsed and set, especially when custom base URLs are provided. Concurrently, it introduces a new **utility function** `is_duck_type_of` in `google/genai/_common.py` for flexible Pydantic model duck-typing, which is then used to **refactor** `google/genai/_transformers.py` by removing a duplicate implementation. New **tests** have been added to verify the corrected client initialization logic and the functionality of the new duck-typing utility, improving the robustness of the **`google.genai` library**. | Feb 9 | 5 | maint |
| 11482768 | This commit implements **robust error handling** for the **`google.genai.live`** and **`google.genai.live_music`** APIs, addressing `websockets.ConnectionClosed` exceptions and general API errors during message reception. It **fixes** potential crashes by modifying the `_get_status` and `_get_message` methods in `google.genai.errors` to gracefully handle `AttributeError` when `response_json` is not a dictionary, particularly for malformed websocket error responses. This enhancement significantly improves the **stability** and **reliability** of real-time interactions, preventing unhandled exceptions and providing more informative error reporting. New test cases have been added to `google/genai/tests/errors/test_api_error.py` to validate the improved `APIError` handling for websocket connection issues. | Feb 2 | 4 | waste |
| 750648fe | This commit introduces a **new capability** to the **`google.genai` client**, allowing users to provide a custom `aiohttp.ClientSession` instance for HTTP communication. A new `aiohttp_client` field has been added to the `HttpOptions` in `google/genai/types.py`, enabling advanced configuration of the underlying HTTP client. The `google/genai/_api_client.py` module has been updated to properly utilize and manage the lifecycle of this custom session, including its initialization and graceful closing. This **feature** enhances flexibility for network configurations, such as custom proxies or connection pooling, and addresses issue #1662. | Jan 14 | 4 | grow |
| b7b1c2e8 | This commit introduces **voice activity detection (VAD) support** as a **new feature** within the **`google.genai` library**. It defines the necessary data structures for VAD signals in `google/genai/types.py`, updating the `LiveServerMessage` to incorporate these signals. Furthermore, it adds and modifies conversion functions in `google/genai/_live_converters.py`, such as `_LiveServerMessage_from_mldev` and `_VoiceActivity_from_vertex`, to correctly process and integrate VAD information from various sources. This enhancement allows the system to recognize and utilize periods of speech and silence, improving the handling of live audio streams for conversational AI applications. | Jan 14 | 2 | grow |
| c9f8668c | This commit provides a **bug fix** addressing the handling of **unserializable types** within request dictionaries in the `google.genai.live` module. It introduces necessary encoding for these types before JSON serialization in asynchronous content generation methods such as `_generate_content_async` and `_generate_content_stream_async`. This resolves issues where data, particularly related to **replicated voice configuration**, might not have been correctly transmitted to the API due to improper serialization. Corresponding **tests** in `test_live.py` have been updated to accurately assert the structure of the replicated voice config and refine VAD-related checks, ensuring the fix's integrity. | Dec 10 | 2 | maint |
| a4f4205d | This commit introduces a **bug fix** to the **asynchronous API client** within `google.genai`, specifically in `_api_client.py`. It updates the `aiohttp` client timeout configuration from applying only to the connection phase (`connect`) to covering the **total duration** of all asynchronous requests. This change, affecting methods like `_make_request_async` and `_upload_file_async`, ensures that **asynchronous API calls** will now correctly respect the configured timeout for the entire operation, preventing indefinite hangs and improving the reliability of **API interactions**. | Dec 3 | 1 | waste |
| b1cf8dda | This commit **updates the documentation** in `README.md` to provide clearer instructions for **client context managers**. Specifically, it clarifies that using these context managers is crucial for preventing the common `httpx 'client has been closed'` error. This **documentation improvement** enhances user understanding of proper HTTP client lifecycle management, addressing a known issue and improving the overall developer experience. | Dec 3 | 1 | maint |
| 1dc35ea7 | This commit provides a **bug fix** and **maintenance** improvement for the **API client** (`google/genai/_api_client.py`), specifically addressing issues with `aiohttp` session management. The `_get_aiohttp_session` function is now modified to **reinitialize the `aiohttp` client session** if its underlying event loop is found to be closed, preventing potential connection errors. Furthermore, custom `ClientSession` and `TCPConnector` classes are introduced to **prevent unclosed session warnings**, ensuring cleaner resource handling and more reliable asynchronous operations within the API client. This change enhances the stability and robustness of API interactions by gracefully managing session lifecycles. | Nov 19 | 2 | waste |
| 9a9fa3c9 | This commit delivers a **bug fix** for the `google.genai` library's **API client**, specifically addressing how `httpx` clients are managed. It modifies the `close` and `aclose` methods within `_api_client.py` to prevent the automatic closure of custom-provided synchronous and asynchronous HTTPX clients. This ensures that user-supplied client instances are not prematurely shut down by the library, resolving an issue where external clients were unexpectedly closed. The change improves the **stability and predictability** of client lifecycle management when integrating with custom HTTP client configurations. | Nov 13 | 1 | waste |
| 325162d5 | This commit performs **maintenance on the testing infrastructure** for **asynchronous model updates** within the `google.genai` library. It **removes specific 'mldev' test cases** from the test table in `google/genai/tests/models/test_update.py`, streamlining the test suite. Additionally, it **updates display names and descriptions** for existing asynchronous model update tests, enhancing their clarity and maintainability. This chore ensures the **model update test suite** remains relevant and well-documented. | Nov 12 | 1 | maint |
| 7937e9ed | This commit **fixes** a critical resource management issue within the **Vertex AI session management** by refactoring API client calls to use `async with`. Specifically, methods like `create_session`, `get_session`, and `delete_session` in `src/google/adk/sessions/vertex_ai_session_service.py` now properly handle asynchronous client lifecycle. This ensures **proper asynchronous resource management**, preventing potential resource leaks and improving the overall **stability** and **reliability** of interactions with the Vertex AI API. Corresponding unit tests were also updated to align with this new asynchronous context management pattern. | Nov 10 | 2 | waste |
| 1243649b | This commit introduces **feature enhancements** to the `google.genai` library, primarily focusing on **model tuning and configuration**. It adds new conversion functions for `AutoraterConfig` and `SpeechConfig` within the **tuning module**, and expands `GenerationConfig` conversion to support additional fields and specific validation. Concurrently, **type definitions** are updated to include a new tuning task type and new configuration fields for `PreferenceOptimizationSpec` and `AutoraterConfig`. Minor **internal refactoring** was also performed in `_live_converters.py` and `models.py` to reorder an assignment in `_GenerationConfig_to_vertex`, ensuring broader configurability and improved internal consistency for generation and tuning parameters. | Nov 4 | 4 | grow |
This commit introduces a **new capability** to **automatically enable mTLS** for the GenAI client in environments utilizing bound tokens, such as Agent Engine with AgentAuthority. It achieves this by migrating the core **API client** (`_api_client.py`) to leverage `google-auth`'s `AuthorizedSession` for both synchronous and asynchronous HTTP requests, including necessary URL rewriting for mTLS endpoints. This integration enhances security by ensuring mutual authentication, while also updating **error handling** (`errors.py`) to recognize new response types. The change includes comprehensive **test coverage** to validate the new client behavior, retries, and closing mechanisms, and specifically applies to default client configurations, excluding custom client arguments or sessions.
This commit provides a **bug fix** for the `google.genai` **API client's retry mechanism**. It modifies the `retry_args` function in `google/genai/_api_client.py` to correctly interpret `attempts=0` in retry options as `attempts=1`. This ensures that even when "no retries" are desired, at least one initial API call is always made, preventing unintended request failures. A new test case in `google/genai/tests/client/test_retries.py` validates this corrected behavior, improving the reliability and predictability of **API calls** within the library.
This commit provides a **bug fix** by explicitly forwarding `http_options` within the `async_request_streamed` function in the **`google/genai/_api_client.py` module**. Previously, these options, which include crucial retry configurations, were not being passed to the underlying `_async_request` call for **asynchronous streamed API requests**. This change ensures that **retry support** is now correctly enabled and applied to all such requests, significantly improving the reliability and resilience of network interactions for streamed operations.
This commit **enhances the project documentation** by adding a detailed explanation and example for using `types.ResourceScope.COLLECTION` within the `README.md`. Specifically, it addresses the common use case of configuring a **reverse proxy with a custom base URL**, providing clearer guidance for developers. This **documentation update** improves the onboarding and configuration experience for users dealing with complex network setups, directly resolving **issue #2089**. The change primarily affects the **`README.md`** file, making the project more accessible and easier to integrate.
This commit delivers a **fix** and **dependency management improvement** for the **`google.genai` library's API client**. It makes `aiohttp` an **optional dependency** and updates its version upperbound, while also resolving a critical issue where **`HttpOptions.async_client_args` were not correctly propagated** to `aiohttp.ClientSession` requests. The `BaseApiClient` constructor in `_api_client.py` is updated to ensure `_async_client_session_request_args` is always initialized, even with custom `aiohttp` clients. This ensures that **proxy settings and other custom `aiohttp.ClientSession` arguments are reliably applied** for asynchronous operations, enhancing configuration flexibility and robustness.
This commit delivers a **bug fix** for the **`google.genai`** library, specifically within the **`_api_client.py`** module. It addresses a `TypeError` that occurred in the `HttpResponse.json` property when the `aiohttp` backend received a non-list `response_stream` (e.g., an `aiohttp.ClientResponse` object) during a Google API 500 error. By adding a type check, the commit ensures that `response_stream` is only treated as a list if it actually is, preventing crashes and allowing proper error handling to proceed. This significantly improves the **robustness of API error handling** for users leveraging the `aiohttp` backend.
This commit introduces an **internal refactoring** to the `google.genai` library's API client, specifically within the `_ApiClient`'s `json` property getter in `google/genai/_api_client.py`. The change **simplifies the internal logic** by removing a specific type check for `response_stream`. Concurrently, a test in `google/genai/tests/client/test_http_options.py` receives a minor formatting adjustment to a list of excluded keys for **improved readability**. This is a **maintenance change** that enhances code clarity and has no functional impact on the library's external behavior.
This commit introduces **new capabilities** to the **asynchronous HTTP transport** within the `google-auth` library, enhancing control over network requests. It updates the `AsyncAuthorizedSession` in `google.auth.aio.transport.sessions.py` to accept `aiohttp.ClientTimeout` objects for more granular request timeouts and adds a `total_attempts` parameter to manage retry logic. The underlying `Request` method in `google.auth.aio.transport.aiohttp.py` is also updated to properly handle these timeout objects and provide refined error messages. This **feature enhancement** provides developers with greater flexibility and robustness when configuring asynchronous HTTP operations, allowing for more precise control over network behavior and error handling.
This commit primarily **fixes a bug** in the **API client initialization** within `google/genai/_api_client.py`, ensuring `base_url` and global location are correctly parsed and set, especially when custom base URLs are provided. Concurrently, it introduces a new **utility function** `is_duck_type_of` in `google/genai/_common.py` for flexible Pydantic model duck-typing, which is then used to **refactor** `google/genai/_transformers.py` by removing a duplicate implementation. New **tests** have been added to verify the corrected client initialization logic and the functionality of the new duck-typing utility, improving the robustness of the **`google.genai` library**.
This commit implements **robust error handling** for the **`google.genai.live`** and **`google.genai.live_music`** APIs, addressing `websockets.ConnectionClosed` exceptions and general API errors during message reception. It **fixes** potential crashes by modifying the `_get_status` and `_get_message` methods in `google.genai.errors` to gracefully handle `AttributeError` when `response_json` is not a dictionary, particularly for malformed websocket error responses. This enhancement significantly improves the **stability** and **reliability** of real-time interactions, preventing unhandled exceptions and providing more informative error reporting. New test cases have been added to `google/genai/tests/errors/test_api_error.py` to validate the improved `APIError` handling for websocket connection issues.
This commit introduces a **new capability** to the **`google.genai` client**, allowing users to provide a custom `aiohttp.ClientSession` instance for HTTP communication. A new `aiohttp_client` field has been added to the `HttpOptions` in `google/genai/types.py`, enabling advanced configuration of the underlying HTTP client. The `google/genai/_api_client.py` module has been updated to properly utilize and manage the lifecycle of this custom session, including its initialization and graceful closing. This **feature** enhances flexibility for network configurations, such as custom proxies or connection pooling, and addresses issue #1662.
This commit introduces **voice activity detection (VAD) support** as a **new feature** within the **`google.genai` library**. It defines the necessary data structures for VAD signals in `google/genai/types.py`, updating the `LiveServerMessage` to incorporate these signals. Furthermore, it adds and modifies conversion functions in `google/genai/_live_converters.py`, such as `_LiveServerMessage_from_mldev` and `_VoiceActivity_from_vertex`, to correctly process and integrate VAD information from various sources. This enhancement allows the system to recognize and utilize periods of speech and silence, improving the handling of live audio streams for conversational AI applications.
This commit provides a **bug fix** addressing the handling of **unserializable types** within request dictionaries in the `google.genai.live` module. It introduces necessary encoding for these types before JSON serialization in asynchronous content generation methods such as `_generate_content_async` and `_generate_content_stream_async`. This resolves issues where data, particularly related to **replicated voice configuration**, might not have been correctly transmitted to the API due to improper serialization. Corresponding **tests** in `test_live.py` have been updated to accurately assert the structure of the replicated voice config and refine VAD-related checks, ensuring the fix's integrity.
This commit introduces a **bug fix** to the **asynchronous API client** within `google.genai`, specifically in `_api_client.py`. It updates the `aiohttp` client timeout configuration from applying only to the connection phase (`connect`) to covering the **total duration** of all asynchronous requests. This change, affecting methods like `_make_request_async` and `_upload_file_async`, ensures that **asynchronous API calls** will now correctly respect the configured timeout for the entire operation, preventing indefinite hangs and improving the reliability of **API interactions**.
This commit **updates the documentation** in `README.md` to provide clearer instructions for **client context managers**. Specifically, it clarifies that using these context managers is crucial for preventing the common `httpx 'client has been closed'` error. This **documentation improvement** enhances user understanding of proper HTTP client lifecycle management, addressing a known issue and improving the overall developer experience.
This commit provides a **bug fix** and **maintenance** improvement for the **API client** (`google/genai/_api_client.py`), specifically addressing issues with `aiohttp` session management. The `_get_aiohttp_session` function is now modified to **reinitialize the `aiohttp` client session** if its underlying event loop is found to be closed, preventing potential connection errors. Furthermore, custom `ClientSession` and `TCPConnector` classes are introduced to **prevent unclosed session warnings**, ensuring cleaner resource handling and more reliable asynchronous operations within the API client. This change enhances the stability and robustness of API interactions by gracefully managing session lifecycles.
This commit delivers a **bug fix** for the `google.genai` library's **API client**, specifically addressing how `httpx` clients are managed. It modifies the `close` and `aclose` methods within `_api_client.py` to prevent the automatic closure of custom-provided synchronous and asynchronous HTTPX clients. This ensures that user-supplied client instances are not prematurely shut down by the library, resolving an issue where external clients were unexpectedly closed. The change improves the **stability and predictability** of client lifecycle management when integrating with custom HTTP client configurations.
This commit performs **maintenance on the testing infrastructure** for **asynchronous model updates** within the `google.genai` library. It **removes specific 'mldev' test cases** from the test table in `google/genai/tests/models/test_update.py`, streamlining the test suite. Additionally, it **updates display names and descriptions** for existing asynchronous model update tests, enhancing their clarity and maintainability. This chore ensures the **model update test suite** remains relevant and well-documented.
This commit **fixes** a critical resource management issue within the **Vertex AI session management** by refactoring API client calls to use `async with`. Specifically, methods like `create_session`, `get_session`, and `delete_session` in `src/google/adk/sessions/vertex_ai_session_service.py` now properly handle asynchronous client lifecycle. This ensures **proper asynchronous resource management**, preventing potential resource leaks and improving the overall **stability** and **reliability** of interactions with the Vertex AI API. Corresponding unit tests were also updated to align with this new asynchronous context management pattern.
This commit introduces **feature enhancements** to the `google.genai` library, primarily focusing on **model tuning and configuration**. It adds new conversion functions for `AutoraterConfig` and `SpeechConfig` within the **tuning module**, and expands `GenerationConfig` conversion to support additional fields and specific validation. Concurrently, **type definitions** are updated to include a new tuning task type and new configuration fields for `PreferenceOptimizationSpec` and `AutoraterConfig`. Minor **internal refactoring** was also performed in `_live_converters.py` and `models.py` to reorder an assignment in `_GenerationConfig_to_vertex`, ensuring broader configurability and improved internal consistency for generation and tuning parameters.