Skip to content

docs: centralize CONTRIBUTING.rst pointers#17642

Draft
chalmerlowe wants to merge 9 commits into
mainfrom
feat/centralize-contributing
Draft

docs: centralize CONTRIBUTING.rst pointers#17642
chalmerlowe wants to merge 9 commits into
mainfrom
feat/centralize-contributing

Conversation

@chalmerlowe

Copy link
Copy Markdown
Contributor

Centralizes package-level CONTRIBUTING.rst files to point to the repository root and clarifies version sources of truth.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request standardizes the 'CONTRIBUTING.rst' files across the monorepo by centralizing the guidelines and pointing to a root-level document. A minor issue was identified in the main 'CONTRIBUTING.rst' file where a link target was incorrectly defined, which would cause documentation build errors. The reviewer provided a correction for this link target.

Comment thread CONTRIBUTING.rst Outdated
@chalmerlowe chalmerlowe added the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Jul 16, 2026
Comment thread CONTRIBUTING.rst Outdated
@yoshi-kokoro yoshi-kokoro removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Jul 21, 2026
chalmerlowe added a commit that referenced this pull request Jul 23, 2026
## The Problem
Two unit tests in `google-cloud-bigquery`
(`test_result_w_retry_wo_state` and `test_result_w_custom_retry`) were
failing intermittently with a `TimeoutError` or `RetryError`. This
flakiness occurs because the tests use a very short inner retry deadline
of 0.1 seconds. Under heavy load (such as during parallel testing or on
constrained continuous integration runners), this deadline can be
exceeded, causing the test to fail confusingly.

## The Solution
Increased the `deadline` parameter for the custom retry objects in both
tests from 0.1 seconds to 1.0 seconds. This provides enough buffer for
the test assertions to complete without timing out, aligning with other
similar tests in the suite.

## Notes to Reviewers
- This change only affects unit tests and does not alter production
code.
- This issue is blocking:
  - #17642
  - #17608

Here is a snippet of the failure:
```python
    def test_result_w_retry_wo_state(global_time_lock):
        from google.cloud.bigquery.retry import DEFAULT_GET_JOB_TIMEOUT
    
        begun_job_resource = helpers._make_job_resource(
            job_id=JOB_ID, project_id=PROJECT, location="EU", started=True
        )
        done_job_resource = helpers._make_job_resource(
            job_id=JOB_ID,
            project_id=PROJECT,
            location="EU",
            started=True,
            ended=True,
        )
        conn = helpers.make_connection(
            exceptions.NotFound("not normally retriable"),
            begun_job_resource,
            exceptions.NotFound("not normally retriable"),
            done_job_resource,
        )
        client = helpers._make_client(project=PROJECT, connection=conn)
        job = google.cloud.bigquery.job._AsyncJob(
            google.cloud.bigquery.job._JobReference(JOB_ID, PROJECT, "EU"), client
        )
        custom_predicate = mock.Mock()
        custom_predicate.return_value = True
        custom_retry = google.api_core.retry.Retry(
            predicate=custom_predicate,
            initial=0.001,
            maximum=0.001,
            deadline=0.1,
        )
>       assert job.result(retry=custom_retry) is job
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/unit/job/test_async_job_retry.py:115: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
google/cloud/bigquery/job/base.py:1047: in result
    return super(_AsyncJob, self).result(timeout=timeout, retry=retry)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.nox/unit-3-12-test_type-unit/lib/python3.12/site-packages/google/api_core/future/polling.py:256: in result
    self._blocking_poll(timeout=timeout, retry=retry, polling=polling)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = _AsyncJob<project=test-project, location=EU, id=test-job-id>
timeout = None
retry = <google.api_core.retry.retry_unary.Retry object at 0x7ff2beda32c0>
polling = <google.api_core.retry.retry_unary.Retry object at 0x7ff2beda01d0>

    def _blocking_poll(self, timeout=_DEFAULT_VALUE, retry=None, polling=None):
        """Poll and wait for the Future to be resolved."""
    
        if self._result_set:
            return
    
        polling = polling or self._polling
        if timeout is not PollingFuture._DEFAULT_VALUE:
            polling = polling.with_timeout(timeout)
    
        try:
            polling(self._done_or_raise)(retry=retry)
        except exceptions.RetryError:
>           raise concurrent.futures.TimeoutError(
                f"Operation did not complete within the designated timeout of "
                f"{polling.timeout} seconds."
            )
E           TimeoutError: Operation did not complete within the designated timeout of None seconds.
```
Comment thread CONTRIBUTING.rst Outdated
Comment thread CONTRIBUTING.rst Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants