Changelog
2.32.0 (2025-10-28)
Features
Bug Fixes
2.31.1 (2025-07-28)
Bug Fixes
- Change Log Severities for Terminated Streams (#1433) (3a3aa79) 
- Propagate Otel Context to Subscriber Callback if Provided (#1429) (b0f6f49) 
2.31.0 (2025-06-26)
Features
Bug Fixes
2.30.0 (2025-06-07)
Features
2.29.1 (2025-05-23)
Bug Fixes
Documentation
- sample: Add samples for topic and subscription SMTs (#1386) (4d072e0) 
- Update documentation for JavaScriptUDF to indicate that the - message_idmetadata field is optional instead of required (#1380) (be90054)
2.29.0 (2025-03-19)
Features
- Add REST Interceptors which support reading metadata (4363179) 
- Add support for opt-in debug logging (4363179) 
- Deprecate - enabledfield for message transforms and add- disabledfield (4363179)
Bug Fixes
- Allow logs to propagate upstream for caplog testing (#1374) (fa39b0e) 
- Fix typing issue with gRPC metadata when key ends in -bin (4363179) 
Documentation
- A comment for field - codein message- .google.pubsub.v1.JavaScriptUDFis changed (4363179)
- Add samples and test for ingestion from Kafka sources (#1354) (820f986) 
- Deprecate - enabledfield for message transforms and add- disabledfield (4363179)
- samples: Increase example max_bytes setting for cloud storage subscriptions to encourage more performant subscribe (#1324) (cb760a7) 
2.28.0 (2025-01-30)
Features
Bug Fixes
2.27.3 (2025-01-24)
Bug Fixes
2.27.2 (2025-01-06)
Bug Fixes
2.27.1 (2024-11-08)
Bug Fixes
2.27.0 (2024-11-02)
Features
Bug Fixes
2.26.1 (2024-10-10)
Documentation
2.26.0 (2024-10-09)
Features
2.25.2 (2024-09-30)
Documentation
2.25.1 (2024-09-29)
Bug Fixes
2.25.0 (2024-09-28)
Features
2.24.0 (2024-09-24)
Features
Bug Fixes
2.23.1 (2024-09-09)
Bug Fixes
2.23.0 (2024-07-29)
Features
2.22.0 (2024-07-06)
Features
- Add service_account_email for export subscriptions (ec0cc34) 
- Add use_topic_schema for Cloud Storage Subscriptions (ec0cc34) 
2.21.5 (2024-06-20)
Bug Fixes
- Allow Protobuf 5.x (a369f04)
2.21.4 (2024-06-18)
Documentation
2.21.3 (2024-06-10)
Bug Fixes
- Race condition where future callbacks invoked before client is in paused state (#1145) (d12bac6) 
- Suppress warnings caused during pytest runs (#1189) (cd51149) 
- Typecheck errors in samples/snippets/subscriber.py (#1186) (3698450) 
2.21.2 (2024-05-30)
Bug Fixes
2.21.1 (2024-04-04)
Bug Fixes
2.21.0 (2024-03-26)
Features
2.20.3 (2024-03-21)
Documentation
2.20.2 (2024-03-15)
Documentation
- samples: Add Create Topic with Kinesis IngestionDataSourceSettings Sample (#1120) (83dc9ff) 
- samples: Update Topic with Kinesis Ingestion Settings (#1123) (e0e2d83) 
2.20.1 (2024-03-06)
Bug Fixes
2.20.0 (2024-03-05)
Features
Documentation
- samples: Correct type and description of timeoutparameter in subscriber quickstart (#1051) (141a473)
2.19.8 (2024-03-05)
Bug Fixes
2.19.7 (2024-02-24)
Bug Fixes
2.19.6 (2024-02-23)
Bug Fixes
2.19.5 (2024-02-22)
Bug Fixes
2.19.4 (2024-02-09)
Bug Fixes
2.19.3 (2024-02-08)
Bug Fixes
2.19.2 (2024-02-08)
Bug Fixes
- Unit test failures in https://github.com/googleapis/python-pubsu… (#1074) (3c6d128)
2.19.1 (2024-02-02)
Documentation
- samples: Swap writer and reader schema to correct places (265f410)
2.19.0 (2023-12-10)
Features
- Add - use_table_schemafield to BigQueryConfig (#1035) (ac6d912)
- Introduce compatibility with native namespace packages (#1024) (0432420) 
Bug Fixes
2.18.4 (2023-09-09)
Documentation
2.18.3 (2023-08-18)
Bug Fixes
2.18.2 (2023-08-07)
Bug Fixes
2.18.1 (2023-07-26)
Documentation
2.18.0 (2023-07-12)
Features
Bug Fixes
Documentation
2.17.1 (2023-05-23)
Documentation
2.17.0 (2023-05-12)
Features
2.16.1 (2023-05-05)
Bug Fixes
Documentation
2.16.0 (2023-04-06)
Features
Documentation
2.15.2 (2023-03-20)
Documentation
2.15.1 (2023-03-14)
Bug Fixes
2.15.0 (2023-02-22)
Features
- Add google.api.method.signature to update methods (3dd43d6) 
- Add temporary_failed_ack_ids to ModifyAckDeadlineConfirmation (3dd43d6) 
Bug Fixes
- Add service_yaml_parameters to py_gapic_library BUILD.bazel targets (3dd43d6) 
Documentation
- Clarify BigQueryConfig PERMISSION_DENIED state (3dd43d6) 
- Clarify subscription description (3dd43d6) 
- Fix Pull description (3dd43d6) 
- Fix PullResponse description (3dd43d6) 
- Replacing HTML code with Markdown (3dd43d6) 
- Update Pub/Sub topic retention limit from 7 days to 31 days (3dd43d6) 
2.14.1 (2023-02-08)
Bug Fixes
- Add context manager return types (4f690b9)
Documentation
- Add documentation for enums (4f690b9) 
- Mark revision_id in CommitSchemaRevisionRequest as deprecated (#861) (09b846d) 
2.14.0 (2023-01-18)
Features
2.13.12 (2023-01-06)
Bug Fixes
- deps: Require google-api-core >=1.34.0, >=2.11.0 (060f00b) 
- Drop usage of pkg_resources (060f00b) 
- Fix timeout default values (060f00b) 
Documentation
- samples: Snippetgen should call await on the operation coroutine before calling result (060f00b)
2.13.11 (2022-11-11)
Bug Fixes
2.13.10 (2022-10-14)
Bug Fixes
Miscellaneous Chores
- release as 2.13.10 (34f022b)
2.13.8 (2022-10-03)
Bug Fixes
2.13.7 (2022-09-22)
Bug Fixes
2.13.6 (2022-08-11)
Bug Fixes
- deps: require proto-plus >= 1.22.0 (260bd18) 
- set stream_ack_deadline to max_duration_per_lease_extension or 60 s, set ack_deadline to min_duration_per_lease_extension or 10 s (#760) (4444129) 
- Update stream_ack_deadline with ack_deadline (#763) (e600ad8) 
2.13.5 (2022-08-10)
Documentation
2.13.4 (2022-07-15)
Bug Fixes
2.13.3 (2022-07-13)
Bug Fixes
2.13.2 (2022-07-08)
Bug Fixes
2.13.1 (2022-07-07)
Bug Fixes
2.13.0 (2022-06-06)
Features
Bug Fixes
Documentation
2.12.1 (2022-05-11)
Bug Fixes
Documentation
2.12.0 (2022-04-06)
Features
Bug Fixes
- process ErrorInfo / GRPC errors for ack/modack only when exactly-once delivery is enabled (#626) (cc1953b) 
2.11.0 (2022-03-09)
Features
- retry temporary GRPC statuses for ack/modack/nack when exactly-once delivery is enabled (#607) (a91bed8) 
- return singleton success future for exactly-once methods in Message (#608) (253ced2) 
Bug Fixes
- deps: require google-api-core>=1.31.5, >=2.3.2 (#600) (1608b7f) 
- deps: require proto-plus>=1.15.0 (1608b7f) 
2.10.0 (2022-03-04)
Features
Bug Fixes
- refactor client classes for safer type checking (#552) (7f705be) 
- resolve DuplicateCredentialArgs error when using credentials_file (8ca8cf2) 
Samples
- samples: create subscription with filtering enabled #580 
- samples: handle empty response in sync pull samples #586 
- samples: sample for receiving messages with exactly-once delivery enabled #588 
- samples: create subscription with exactly once delivery #592 (https://github.com/googleapis/python-pubsub/pull/588 
Documentation
- add autogenerated code snippets (aa3754c) 
- Docs have inconsistent default values for max_latency and max_bytes (#572) (d136dfd) 
2.9.0 (2021-11-10)
Features
Bug Fixes
- add ‘dict’ annotation type to ‘request’ (b72522a) 
- deps: drop packaging dependency (290b9c5) 
- deps: require google-api-core >= 1.28.0 (290b9c5) 
- improper types in pagers generation (2ad639d) 
Documentation
2.8.0 (2021-09-02)
Features
Documentation
2.7.1 (2021-08-13)
Bug Fixes
2.7.0 (2021-07-24)
Features
- Add - always_use_jwt_access. (1f30ef7)
- Add method signature for - Subscriber.Pullwithout the deprecated- return_immediatelyfield. (1f30ef7)
- Add subscription properties to streaming pull response. (1f30ef7) 
- Support self-signed JWT flow for service accounts. (1f30ef7) 
Bug Fixes
Dependencies
2.6.1
07-05-2021 10:33 PDT
Dependencies
Documentation
- Adjust samples for publishing with error handler and flow control. (#433)
Internal / Testing Changes
2.6.0 (2021-06-17)
Features
Bug Fixes
- ACK deadline set for received messages can be too low (#416) (e907f6e) 
- threads can skip the line in publisher flow controller (#422) (ef89f55) 
Documentation
2.5.0 (2021-05-18)
Features
Bug Fixes
2.4.2
05-06-2021 23:50 PDT
Implementation Changes
- Fix memory leak when publishing messages. (#406) 
- Do not crash if distribution cannot be found when extracting semantic version. (#393) 
- Emit a warning if - return_immediatelyis set with synchronous pull. (#355)
- Regenerate GAPIC layer with latest changes, use explicit default timeouts. (#345) 
Documentation
- Add additional info on - use_legacy_flow_controlparameter. (#301)
- Remove EXPERIMENTAL tag for ordering keys in - publisher/client.py. (#324)
- Fix - create_topic()call in README. (#360)
- Generate PyPI token in secrets manager, fix spacing in docs (via synth). (#384) 
- Add - SECURITY.md. (#401)
Internal / Testing Changes
- Require 100% unit test coverage (via synth). (#359) 
- Bump test coverage to 100%. (#364) 
- Fix streaming pull close unit test flakiness. (#361) 
- Pass explicit credentials in all unit tests creating clients. (#369) 
- Fix flaky test for blocking pull shutdown. (#378) 
- Add missing licence header. (#377) 
2.4.1 (2021-03-30)
Bug Fixes
- Move - await_msg_callbacksflag to- subscribe()method, fixing a regression in Pub/Sub Lite client. (#320) (d40d027)
- SSL error when using the client with the emulator. (#297) (83db672) 
Implementation Changes
- (samples) Bump the max_time to 10 minutes for a flaky test. (#311) (e2678d4), closes #291 
- (samples) Mark delivery attempts test as flaky. (#326) (5a97ef1) 
- (samples) Mitigate flakiness in subscriber_tests. (#304) (271a385) 
- (samples) Retry - InternalServerErrorin dead letter policy test. (#329) (34c9b11), closes #321
Documentation
- Remove EXPERIMENTAL tag for ordering keys in - types.py. (#323) (659cd7a)
- Remove EXPERIMENTAL tag from - Schemaservice (via synth). (#307) (ad85202)
2.4.0
02-22-2021 05:02 PST
Implementation Changes
New Features
- Add graceful streaming pull shutdown. (#292)
Documentation
- Update samples with using the subscriber client as a context manager. (#254)
2.3.0 (2021-02-08)
Features
Bug Fixes
- client version missing from the user agent header (#275) (b112f4f) 
- Don’t open the google.cloud package by adding pubsub.py (#269) (542d79d) 
- Modify synth.py to update grpc transport options (#266) (41dcd30) 
2.2.0 (2020-11-16)
Features
- Add dead lettering max delivery attempts argument (#236) (7687ae5) 
- Enable server side flow control by default with the option to turn it off (#231) (94d738c) 
Bug Fixes
Documentation
2.1.0
09-21-2020 02:19 PDT
Implementation Changes
New Features
- Regenerate the client lib to pick new mtls env (via synth). (#197)
Documentation
Internal / Testing Changes
- Update CODEOWNERS. (#193)
2.0.0
09-11-2020 05:03 PDT
Implementation Changes
- Transition the library to microgenerator. (#158) This is a breaking change that introduces several method signature changes and drops support for Python 2.7 and 3.5.
Documentation
- Add samples for using ordering keys. (#156) 
- Remove extra white space in delivery attempt sample. (#159) 
Internal / Testing Changes
- Fix flaky sequencer unit tests. (#187)
1.7.0 (2020-07-13)
This is the last release that supports Python 2.7 and 3.5.
New Features
Dependencies
Documentation
- Add pubsub/cloud-client samples from the common samples repo (with commit history). (#151) 
- Add flow control section to publish overview. (#129) (acc19eb) 
- Add a link to Pub/Sub filtering language public documentation to - pubsub.proto. (#121) (8802d81)
1.6.1 (2020-06-30)
Documentation
1.6.0 (2020-06-09)
Features
Bug Fixes
Documentation
- Clarify that Schedulers shouldn’t be used with multiple SubscriberClients (#100) (cf9e87c) 
- Fix update subscription/snapshot/topic samples (#113) (e62c38b) 
Internal / Testing Changes
- Re-generated service implementaton using synth: removed experimental notes from the RetryPolicy and filtering features in anticipation of GA, added DetachSubscription (experimental) (#114) (0132a46) 
- Incorporate will_accept() checks into publish() (#108) (6c7677e) 
1.5.0 (2020-05-04)
Features
- add methods for listing snapshots (via synth) (#66) (4ce898e) 
- send client id with StreamingPullRequest (#58) (9f8acfa), closes #62 
1.4.3 (2020-04-16)
Bug Fixes
1.4.2 (2020-03-25)
Bug Fixes
- update generated retry timings for publish and pull rpcs via synth (#43) (4f7fe85) 
- use client_options.api_endpoint parameter instead of ignoring it (#59) (56b8d7b), closes #61 
1.4.1 (2020-03-23)
Bug Fixes
1.4.0 (2020-03-06)
Features
1.3.1 (2020-02-28)
Bug Fixes
1.3.0 (2020-02-20)
Features
1.2.0 (2020-02-05)
Features
- pubsub: add delivery attempt property to message object received by user code (#10205) (a0937c1) 
- add - StreamingPullRequest.client_idfield (via synth) (199d56a)
Bug Fixes
- pubsub: handle None in on response callback (#9982) (6596c4b) 
- replace unsafe six.PY3 with PY2 for better future compatibility with Python 4 (#10081) (975c1ac) 
1.1.0
12-09-2019 18:51 PST
Implementation Changes
- Update client configurations (via synth). (#9784) 
- Include request overhead when computing publish batch size overflow. (#9911) 
- Split large (mod)ACK requests into smaller ones. (#9594) 
- Fix messages delivered multiple times despite a long ACK deadline. (#9525) 
- Update batching and flow control parameters to be same as the other client libraries. (#9597) 
- Add - StreamingPullManager._should_terminate. (#9335)
New Features
- Add stop method. (#9365)
Dependencies
- Add Python 2 sunset banner to documentation. (#9036)
Documentation
- Change spacing in docs templates (via synth). (#9759)
Internal / Testing Changes
1.0.2
09-30-2019 11:57 PDT
Implementation Changes
- Streaming pull shouldn’t need subscriptions.getpermission (#9360).
1.0.1
09-27-2019 07:01 PDT
Implementation Changes
- Set default stream ACK deadline to subscriptions’. (#9268)
Documentation
- Fix intersphinx reference to requests. (#9294) 
- Link to correct TimeoutError in futures docs. (#9216) 
Internal / Testing Changes
- Adjust messaging RPC timeout settings (via synth). #9279
1.0.0
08-29-2019 09:27 PDT
Implementation Changes
- Add ‘ReceivedMessage.delivery_attempt’ field (via synth). (#9098) 
- Remove send/recv msg size limit, update docstrings (via synth). (#8964) 
Documentation
- Update docstrings for client kwargs and fix return types uris (#9037) 
- Remove CI for gh-pages, use googleapis.dev for api_core refs. (#9085) 
- Remove compatability badges from READMEs. (#9035) 
Internal / Testing Changes
- Add dead-letter-policy field in preparation for its implementation (via synth) (#9078)
0.45.0
07-31-2019 02:03 PDT
Implementation Changes
- Remove deprecated methods and settings (#8836)
Documentation
0.44.0
07-29-2019 04:28 PDT
Implementation Changes
- PubSub: Deprecate several FlowControl settings and things in Message class (#8796)
Documentation
- Pub/Sub: document regional endpoint (#8789)
0.43.0
07-24-2019 17:13 PDT
Implementation Changes
- Accomodate new location of ‘IAMPolicyStub’ (via synth). (#8680) 
- Use kwargs in test_subscriber_client (#8414) 
New Features
- Add - options_argument to clients’- get_iam_policy; pin black version (via synth). (#8657)
- Add ‘client_options’ support, update list method docstrings (via synth). (#8518) 
Dependencies
- Bump minimum version for google-api-core to 1.14.0. (#8709) 
- Update pin for ‘grpc-google-iam-v1’ to 0.12.3+. (#8647) 
Documentation
- Link to googleapis.dev documentation in READMEs. (#8705) 
- Add compatibility check badges to READMEs. (#8288) 
- Fix typo in publisher index. (#8619) 
- Document how to choose the PubSub auth method (#8429) 
- Document different PuSub received message types (#8468) 
- PubSub: Document batch settings, make synth operations idempotent (#8448) 
- Add custom docstrings for FlowControl enum and values (via synth). (#8426) 
Internal / Testing Changes
0.42.1
06-18-2019 15:14 PDT
Implementation Changes
- Increase the minimum allowed version for api core. (#8419) 
- Allow kwargs to be passed to create_channel. (#8399) 
0.42.0
06-18-2019 11:32 PDT
Implementation Changes
- Core: Mitigate busy reopen loop in ResumableBidiRpc consuming 100% CPU (#8193) 
- Pub/Sub: Increase initial_rpc_timeout for messaging (via synth). (#8219) 
- PubSub: Release the state lock before calling the publish api (#8234) 
- Pub/Sub: Expose publish retry settings (#8231) 
- Prevent unhandled background error on SPM shutdown (#8111) 
- Update timeouts, blacken noxfile.py, setup.py (via synth). (#8128) 
- PubSub: Fix streaming pull incorrectly handling FlowControl max_messages setting (#7948) 
Documentation
- Document PubSub FlowControl settings (#8293) 
- Replace readthedocs links with links to github docs. (#8291) 
- Pub/Sub: surface publish future in documentation (#8229) 
- Pubsub: Separate subscriber and publish future documentation. (#8205) 
- Drop mention of long-removed ‘policy’ object. (#8081) 
Internal / Testing Changes
0.41.0
05-15-2019 13:57 PDT
New Features
- Add - kms_key_namearg to- create_topic; remove BETA warnings (via synth). (#7936)
- Add message ordering (via synth). (#7551) 
Implementation Changes
- Propagate subscribe callback errors to main thread (#7954) 
- Fix pubsub Streaming Pull shutdown on RetryError (#7863) 
- Make PubSub subscriber Scheduler inherit from ABC (#7690) 
- Add routing header to method metadata (via synth). (#7623) 
Internal / Testing Changes
- Remove classifier for Python 3.4 for end-of-life. (#7535) 
- Add nox session - docs(via synth). (#7778)
- Pub/Sub (nit): wrong var name in sample (#7705) 
0.40.0
03-15-2019 14:09 PDT
Implementation Changes
- Propagate ‘RetryError’ in ‘PublisherClient.publish’. (#7071) 
- Protoc-generated serialization update.. (#7091) 
New Features
- Add ‘authentication_method’ to ‘PushConfig’ (via synth). (#7512) 
- Add protos as an artifact to library (#7205) 
- Pub/sub: pass transport w/ custom channel to GAPIC API clients. (#7008) 
Dependencies
Documentation
- Updated client library documentation URLs. (#7307) 
- Update copyright headers 
- Fix broken docstring cross-reference links. (#7132) 
- Docstring changes from updates to .proto files. (#7054) 
- Pick up stub docstring fix in GAPIC generator. (#6978) 
Internal / Testing Changes
- Copy proto files alongside protoc versions.
0.39.1
12-17-2018 16:57 PST
Implementation Changes
- Initialize - StreamingPullFuture._cancelledas True. (#6901)
- Import - iam.policyfrom- google.api_core. (#6741)
Documentation
- Document Python 2 deprecation (#6910) 
- Emphasize that returned futures may differ from stdlib futures. (#6875) 
Internal / Testing Changes
- Add baseline for synth.metadata 
- Update noxfile. 
- blacken all gen’d libs (#6792) 
- omit local deps (#6701) 
- Run black at end of synth.py (#6698) 
- Run Black on Generated libraries (#6666) 
- Add templates for flake8, coveragerc, noxfile, and black. (#6642) 
0.39.0
11-27-2018 13:32 PST
Implementation Changes
- Pick up fixes to GAPIC generator. (#6503) 
- Override client classmethod factories inherited from GAPIC. (#6453) 
- Fix imports for hand-written client docstring examples. (#6345) 
- Fix path for patch of ‘bidi’ elements. (#6243) 
- Move bidi to api-core. (#6211) 
- Re-generate library using pubsub/synth.py (#6059) 
- Re-generate library using pubsub/synth.py (#5978) 
New Features
- Add ‘expiration_policy’ to subscriber client. (#6223)
Dependencies
- Bump minimum ‘api_core’ version for all GAPIC libs to 1.4.1. (#6391) 
- Update IAM version in dependencies. (#6362) 
- Bump minimum ‘api_core’ version to ‘1.4.1’. (#6134) 
Documentation
- Fix client_info bug, update docstrings. (#6418) 
- Fix docstring reference to wrong future class. (#6382) 
- Normalize use of support level badges. (#6159) 
- Update subscriber example in README to current patterns. (#6194) 
- Prep pubsub docs for repo split. (#6001) 
Internal / Testing Changes
0.38.0
Implementation Changes
- Fix race condition in recv()’s usage of self.call. (#5935) 
- Re-generate the underlying library from protos. (#5953) 
- Change ‘BatchSettings.max_bytes’ default. (#5899) 
- Fix race condition where pending Ack IDs can be modified by another thread. (#5929) 
Internal / Testing Changes
- Nox: use inplace installs (#5865)
0.37.2
Implementation Changes
- Fix classmethod wrapping (#5826)
Documentation
- Fix Sphinx rendering for publisher client. (#5822)
Internal / Testing Changes
- Re-generate library, removing obsolete synth modifications. (#5825) 
- Add test for testing invoking a wrapped class method on the class itself (#5828) 
0.37.1
Implementation Changes
- Make get_initial_request more resilient to race conditions. (#5803)
0.37.0
Implementation Changes
- Make Publisher batch-related interfaces private (#5784)
0.36.0
Implementation Changes
- Pubsub: Make ‘Message.publish_time’ return datetime (#5633) 
- Ensure SPM methods check that ‘self._consumer’ is not None before use. (#5758) 
New Features
- PubSub: add geo-fencing support (#5769) 
- Add ‘Message.ack_id’ property. (#5693) 
0.35.4
Implementation Changes
- Recover streams during the gRPC error callback. (#5446) 
- Use operational lock when checking for activity on streams. (#5445) 
0.35.3
Implementation Changes
- Add additional error handling to unary RPCs (#5438)
0.35.2
Implementation Changes
- Add heartbeating to the streaming pull manager (#5413) 
- Fix retrying of bidirectional RPCs and closing the streaming pull manager (#5412) 
0.35.1
Implementation Changes
- Catch errors when re-retying send() or recv() in addition to open() (#5402)
0.35.0
Implementation Changes
- Send requests during streaming pull over a separate unary RPC (#5377) 
- Initialize references to helper threads before starting them (#5374) 
- Make leaser exit more quickly (#5373) 
- Make re-open failures bubble to callbacks (#5372) 
- Avoid overwriting ‘module’ of messages from shared modules. (#5364) 
- Normalize overflow handling for max count and bytes (#5343) 
New Features
- Restore the synchronous pull method (#5379) 
- Promote subscribe_experimental() to subscribe(), remove old subscriber implementation. (#5274) 
- Wire up scheduler argument for subscribe() (#5279) 
Documentation
- Add link to streaming pull behavior documentation (#5378) 
- Fix example in subscribe’s documentation (#5375) 
Internal / Testing Changes
- Add Test runs for Python 3.7 and remove 3.4 (#5295) 
- Modify system tests to use prerelease versions of grpcio (#5304) 
0.34.0
Implementation Changes
- Lower the flow control defaults. (#5248)
New Features
- A new implementation of the subscriber has been added. This is available as SubscriberClient.subscribe_experimental. In the next release, this will be replace the currentsubscribemethod. If you use this, please report your findings to us on GitHub. (#5189, #5201, #5210, #5229, #5230, #5237, #5256)
Dependencies
- Remove psutil dependency. (#5248)
0.33.1
Implementation changes
- Surface publish RPC errors back to the publish futures (#5124) 
- Make the pausable response iterator aware of the RPC state to prevent deadlock (#5108) 
- Properly handle graceful stop in request generator (#5097) 
0.33.0
Implementation changes
- Drop leased messages after flow_control.max_lease_duration has passed. (#5020) 
- Fix mantain leases to not modack messages it just dropped (#5045) 
- Avoid race condition in maintain_leases by copying leased_messages (#5035) 
- Retry subscription stream on InternalServerError, Unknown, and GatewayTimeout (#5021) 
- Use the rpc’s status to determine when to exit the request generator thread (#5054) 
- Fix missing iter on request stream (#5078) 
- Nack messages when the subscriber callback errors (#5019) 
Testing
- pubsub nox.py cleanup (#5056) 
- Fix test that checks for retryable exceptions (#5034) 
0.32.1
Dependencies
- Update dependency range for api-core to include v1.0.0 releases (#4944)
Testing and internal changes
- Install local dependencies when running lint (#4936) 
- Re-enable lint for tests, remove usage of pylint (#4921) 
0.32.0
Implementation changes
- Added support for streaming pull receipts. (#4878)
0.31.0
New features
- Added the ability for subscriber to batch requests. (#4895) 
- Added pending request backpressure for subscriber. (#4892) 
Implementation changes
- Raise - ValueErrorwhen a message is too large for a batch. (#4872)
- Updated the default batch size to 10 MB. (#4857) 
- Allow a custom - Eventtype in Pub / Sub futures. (#4643)
Documentation
- Clarify that modify_ack_deadlineresets the deadline. (#4822)
Testing
- Fix unit test for default max_bytesvalue. (#4860)
0.30.1
Notable Implementation Changes
- Moving lock factory used in publisher client to the Batch implementation (#4628). 
- Use a UUID (rather than a sentinel object) on - Future(#4634).
- Apply scopes to explicitly provided credentials if needed (#4594). Fixes #4479. This feature comes as part of - google-api-core==0.1.3.
Dependencies
- Upgrading to google-api-core==0.1.3which depends on the latestgrpcio==1.8.2(#4642). This fixes #4600. For details, see related gRPC bug and fix.
PyPI: https://pypi.org/project/google-cloud-pubsub/0.30.1/
0.30.0
Notable Implementation Changes
- Dropping redundant - Policy._pauseddata member (#4568).
- Removing redundant “active” check in policy (#4603). 
- Adding a - Consumer.activeproperty (#4604).
- Making it impossible to call - Policy.open()on an already opened policy (#4606).
- Bug fix (#4575): Fix bug with async publish for batches. There were two related bugs. The first: if a batch exceeds the - max_messagesfrom the batch settings, then the- commit()will fail. The second: when a “monitor” worker calls- commit()after- max_latencyseconds, a failure can occur if a new message is added to the batch during the commit. To fix, the following changes were implemented:- Adding a “STARTING” status for - Batch.commit()(#4614). This fixes the issue when the batch exceeds- max_messages.
- Adding extra check in - Batch.will_acceptfor the number of messages (#4612).
- Moving - will_accept()check out of- PublisherClient.batch()factory (#4613).
- Checking - Batch.will_acceptin thread-safe way (#4616).
 
- Breaking API change: As part of #4613, changing - PublisherClient.batch()to no longer accept a- message(since the- will_acceptcheck needs to happen in a more concurrency friendly way). In addition, changing the- createargument so that it means “create even if batch already exists” rather than “create if missing”.
Documentation
- Add more explicit documentation for - Message.attributes(#4601).
- Make - Message.__repr__a bit prettier / more useful (#4602).
PyPI: https://pypi.org/project/google-cloud-pubsub/0.30.0/
0.29.4
Notable Implementation Changes
- Bug fix: Restore previous behavior of the subscription lease
maintenance worker. This was accidentally “stopped” in 0.29.3due to a change in implementation that went from anactiveboolean to an “inactive” /stoppedboolean, soTruebecameFalseand vice-versa (#4564).
PyPI: https://pypi.org/project/google-cloud-pubsub/0.29.4/
0.29.3
Notable Implementation Changes
- In subscription consumer thread: Making sure the request generator attached to an inactive bidirectional streaming pull is stopped before spawning a new request generator. This way we have a (fairly strong) guarantee that requests in the queue don’t get sent into an inactive stream (#4503, #4554). 
- Adding - pause/- resumeto subscription consumer thread and using these methods during flow control. The previous implementation tried to close the subscription (which involved 3 worker threads and 10 executors in a thread pool) and then re-open a new subscription. But, this was not entirely possible to shut down correctly from within one of the worker threads. Instead, we only pause the worker (of the 3) that is pulling new responses from the bidirectional streaming pull (#4558).
- Bug fix (#4516): Using - maxwhere- minwas used by mistake to ensure the number of bytes tracked for subscription flow control remained non-negative (#4514).
- Raising - TypeErrorif- SubscriberClient.subscribereceives a non-callable callback (#4497).
- Shutting down thread pool executor when closing a subscriber policy (#4522). 
- Renaming - Policy.on_callback_requestto- Policy.dispatch_callbackand making the behavior much less dynamic (#4511).
- Make sure subscription consumer thread doesn’t try to join itself when exiting in error (#4540). 
Dependencies
- Upgrading google-api-coredependency to latest revision (0.1.2) since we rely on the latest version of theconcurrent.futuresbackport to provide thethread_name_prefixargument for thread pool executor (#4521, #4559).
PyPI: https://pypi.org/project/google-cloud-pubsub/0.29.3/
0.29.2
Notable Implementation Changes
- Bug fix (#4463): Making a subscription consumer actually stop running after encountering an exception (#4472, #4498). This bug is the only reason for the - 0.29.2release.
- Thread Changes - Added names to all threads created directly by Pub / Sub (#4474, #4476, #4480). Also removing spaces and colons from thread names (#4476).
 
- Logging changes - Adding debug logs when lease management exits (#4484) 
- Adding debug logs when - QueueCallbackThreadexits (#4494). Instances handle the processing of messages in a subscription (e.g. to- ack).
- Using a named logger in - publisher.batch.thread(#4473)
- Adding newlines before logging protobuf payloads (#4471) 
 
PyPI: https://pypi.org/project/google-cloud-pubsub/0.29.2/
0.29.1
Notable Implementation Changes
- Bug fix (#4234): Adding retries for connection - UNAVAILABLE. This bug made the Pub / Sub client mostly unusable for subscribers to topics that don’t have a steady stream of messages. After ~2 minutes of inactivity, the gRPC connection would timeout and raise- UNAVAILABLElocally, i.e. not due to a response from the backend. (#4444)
- Updating autogenerated packages (#4438) 
Documentation
- Fixing broken examples in quick start (#4398) 
- Fixing broken example in README (#4402, h/t to @mehmetboraezer) 
- Updating old/dead link to usage doc in README (#4406, h/t to @mehmetboraezer) 
Dependencies
- Dropping dependency on google-cloud-corein exchange forgoogle-api-core(#4438)
PyPI: https://pypi.org/project/google-cloud-pubsub/0.29.1/
0.29.0
Notable Implementation Changes
- Honor - max_messagesalways (#4262)
- Add futures for subscriptions (#4265) 
- Set gRPC message options and keepalive (#4269) 
Documentation
- Added link to “Python Development Environment Setup Guide” in project README (#4187, h/t to @michaelawyu)
Dependencies
- Upgrading to - google-cloud-core >= 0.28.0and adding dependency on- google-api-core(#4221, #4280)
- Deferring to - google-api-corefor- grpcioand- googleapis-common-protosdependencies (#4096, #4098)