diff --git a/.kokoro/publish-docs.sh b/.kokoro/publish-docs.sh index cc5f0648..c898ec4a 100755 --- a/.kokoro/publish-docs.sh +++ b/.kokoro/publish-docs.sh @@ -13,8 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -#!/bin/bash - set -eo pipefail # Disable buffering, so that the logs stream through. diff --git a/.kokoro/release.sh b/.kokoro/release.sh index 18d33f9b..ecd73d18 100755 --- a/.kokoro/release.sh +++ b/.kokoro/release.sh @@ -13,8 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -#!/bin/bash - set -eo pipefail # Start the releasetool reporter diff --git a/CHANGELOG.md b/CHANGELOG.md index c075cbaf..d70b7e0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.2.0](https://www.github.com/googleapis/python-bigquery-reservation/compare/v0.1.0...v0.2.0) (2020-05-27) + + +### Features + +* add helper methods to parse resource paths (via synth) ([#7](https://www.github.com/googleapis/python-bigquery-reservation/issues/7)) ([8fc54cb](https://www.github.com/googleapis/python-bigquery-reservation/commit/8fc54cb70be698f6d265f60d7b8ee4561d12d2c9)) + ## 0.1.0 (2020-05-12) diff --git a/README.rst b/README.rst index 95b9a7f4..da164f18 100644 --- a/README.rst +++ b/README.rst @@ -14,9 +14,9 @@ Python Client for Cloud BigQuery Reservation :target: https://pypi.org/project/google-cloud-bigquery-reservation/ .. |versions| image:: https://img.shields.io/pypi/pyversions/google-cloud-bigquery-reservation.svg :target: https://pypi.org/project/google-cloud-bigqyery-reservation/ -.. _BigQuery Reservation API: https:///cloud.google.com/bigquery/docs/reference/reservations +.. _BigQuery Reservation API: https://cloud.google.com/bigquery/docs/reference/reservations/rpc .. _Client Library Documentation: https://googleapis.dev/python/bigqueryreservation/latest -.. _Product Documentation: https:///cloud.google.com/bigquery/docs/reference/reservations +.. _Product Documentation: https://cloud.google.com/bigquery/docs/reservations-intro Quick Start ----------- @@ -30,7 +30,7 @@ In order to use this library, you first need to go through the following steps: .. _Select or create a Cloud Platform project.: https://console.cloud.google.com/project .. _Enable billing for your project.: https://cloud.google.com/billing/docs/how-to/modify-project#enable_billing_for_a_project -.. _Enable the Cloud BigQuery Reservation API.: https:///cloud.google.com/bigquery/docs/reference/reservations +.. _Enable the Cloud BigQuery Reservation API.: https://cloud.google.com/bigquery/docs/reference/reservations/rpc .. _Setup Authentication.: https://googleapis.dev/python/google-api-core/latest/auth.html Installation @@ -78,5 +78,5 @@ Next Steps - View this `repository’s main README`_ to see the full list of Cloud APIs that we cover. -.. _BigQuery Reservation API Product documentation: https:///cloud.google.com/bigquery/docs/reference/reservations -.. _repository’s main README: https://github.com/googleapis/google-cloud-python/blob/master/README.rst \ No newline at end of file +.. _BigQuery Reservation API Product documentation: https://cloud.google.com/bigquery/docs/reference/reservations/rpc +.. _repository’s main README: https://github.com/googleapis/google-cloud-python/blob/master/README.rst diff --git a/google/cloud/bigquery/reservation_v1/services/reservation_service/client.py b/google/cloud/bigquery/reservation_v1/services/reservation_service/client.py index cfc1af4f..21a4397f 100644 --- a/google/cloud/bigquery/reservation_v1/services/reservation_service/client.py +++ b/google/cloud/bigquery/reservation_v1/services/reservation_service/client.py @@ -147,72 +147,72 @@ def from_service_account_file(cls, filename: str, *args, **kwargs): from_service_account_json = from_service_account_file @staticmethod - def assignment_path( - project: str, location: str, reservation: str, assignment: str + def capacity_commitment_path( + project: str, location: str, capacity_commitment: str ) -> str: - """Return a fully-qualified assignment string.""" - return "projects/{project}/locations/{location}/reservations/{reservation}/assignments/{assignment}".format( - project=project, - location=location, - reservation=reservation, - assignment=assignment, + """Return a fully-qualified capacity_commitment string.""" + return "projects/{project}/locations/{location}/capacityCommitments/{capacity_commitment}".format( + project=project, location=location, capacity_commitment=capacity_commitment ) @staticmethod - def parse_assignment_path(path: str) -> Dict[str, str]: - """Parse a assignment path into its component segments.""" + def parse_capacity_commitment_path(path: str) -> Dict[str, str]: + """Parse a capacity_commitment path into its component segments.""" m = re.match( - r"^projects/(?P.+?)/locations/(?P.+?)/reservations/(?P.+?)/assignments/(?P.+?)$", + r"^projects/(?P.+?)/locations/(?P.+?)/capacityCommitments/(?P.+?)$", path, ) return m.groupdict() if m else {} @staticmethod - def reservation_path(project: str, location: str, reservation: str) -> str: - """Return a fully-qualified reservation string.""" - return "projects/{project}/locations/{location}/reservations/{reservation}".format( - project=project, location=location, reservation=reservation + def bi_reservation_path(project: str, location: str) -> str: + """Return a fully-qualified bi_reservation string.""" + return "projects/{project}/locations/{location}/bireservation".format( + project=project, location=location ) @staticmethod - def parse_reservation_path(path: str) -> Dict[str, str]: - """Parse a reservation path into its component segments.""" + def parse_bi_reservation_path(path: str) -> Dict[str, str]: + """Parse a bi_reservation path into its component segments.""" m = re.match( - r"^projects/(?P.+?)/locations/(?P.+?)/reservations/(?P.+?)$", + r"^projects/(?P.+?)/locations/(?P.+?)/bireservation$", path, ) return m.groupdict() if m else {} @staticmethod - def capacity_commitment_path( - project: str, location: str, capacity_commitment: str - ) -> str: - """Return a fully-qualified capacity_commitment string.""" - return "projects/{project}/locations/{location}/capacityCommitments/{capacity_commitment}".format( - project=project, location=location, capacity_commitment=capacity_commitment + def reservation_path(project: str, location: str, reservation: str) -> str: + """Return a fully-qualified reservation string.""" + return "projects/{project}/locations/{location}/reservations/{reservation}".format( + project=project, location=location, reservation=reservation ) @staticmethod - def parse_capacity_commitment_path(path: str) -> Dict[str, str]: - """Parse a capacity_commitment path into its component segments.""" + def parse_reservation_path(path: str) -> Dict[str, str]: + """Parse a reservation path into its component segments.""" m = re.match( - r"^projects/(?P.+?)/locations/(?P.+?)/capacityCommitments/(?P.+?)$", + r"^projects/(?P.+?)/locations/(?P.+?)/reservations/(?P.+?)$", path, ) return m.groupdict() if m else {} @staticmethod - def bi_reservation_path(project: str, location: str) -> str: - """Return a fully-qualified bi_reservation string.""" - return "projects/{project}/locations/{location}/bireservation".format( - project=project, location=location + def assignment_path( + project: str, location: str, reservation: str, assignment: str + ) -> str: + """Return a fully-qualified assignment string.""" + return "projects/{project}/locations/{location}/reservations/{reservation}/assignments/{assignment}".format( + project=project, + location=location, + reservation=reservation, + assignment=assignment, ) @staticmethod - def parse_bi_reservation_path(path: str) -> Dict[str, str]: - """Parse a bi_reservation path into its component segments.""" + def parse_assignment_path(path: str) -> Dict[str, str]: + """Parse a assignment path into its component segments.""" m = re.match( - r"^projects/(?P.+?)/locations/(?P.+?)/bireservation$", + r"^projects/(?P.+?)/locations/(?P.+?)/reservations/(?P.+?)/assignments/(?P.+?)$", path, ) return m.groupdict() if m else {} diff --git a/setup.py b/setup.py index e6ea5d52..01a96e8b 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ import os import setuptools # type: ignore -version = "0.1.0" +version = "0.2.0" package_root = os.path.abspath(os.path.dirname(__file__)) diff --git a/synth.metadata b/synth.metadata index 3ef04c2e..54c7a1df 100644 --- a/synth.metadata +++ b/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/python-bigquery-reservation.git", - "sha": "46176500f8911a3559db8f757502aa05018ea7f7" + "sha": "c724e7db67ea1efd73b7ab0d097475187d9f5cc8" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "98c50772ec23295c64cf0d2ddf199ea52961fd4c" + "sha": "470789cee75ce93c41348ad6aa4c49363a80399b" } } ], diff --git a/tests/unit/reservation_v1/test_reservation_service.py b/tests/unit/reservation_v1/test_reservation_service.py index 355b2b5a..3b77d6ab 100644 --- a/tests/unit/reservation_v1/test_reservation_service.py +++ b/tests/unit/reservation_v1/test_reservation_service.py @@ -2083,101 +2083,101 @@ def test_reservation_service_grpc_transport_channel_mtls_with_adc( assert transport.grpc_channel == mock_grpc_channel -def test_assignment_path(): +def test_capacity_commitment_path(): project = "squid" location = "clam" - reservation = "whelk" - assignment = "octopus" + capacity_commitment = "whelk" - expected = "projects/{project}/locations/{location}/reservations/{reservation}/assignments/{assignment}".format( - project=project, - location=location, - reservation=reservation, - assignment=assignment, + expected = "projects/{project}/locations/{location}/capacityCommitments/{capacity_commitment}".format( + project=project, location=location, capacity_commitment=capacity_commitment ) - actual = ReservationServiceClient.assignment_path( - project, location, reservation, assignment + actual = ReservationServiceClient.capacity_commitment_path( + project, location, capacity_commitment ) assert expected == actual -def test_parse_assignment_path(): +def test_parse_capacity_commitment_path(): expected = { - "project": "oyster", - "location": "nudibranch", - "reservation": "cuttlefish", - "assignment": "mussel", + "project": "octopus", + "location": "oyster", + "capacity_commitment": "nudibranch", } - path = ReservationServiceClient.assignment_path(**expected) + path = ReservationServiceClient.capacity_commitment_path(**expected) # Check that the path construction is reversible. - actual = ReservationServiceClient.parse_assignment_path(path) + actual = ReservationServiceClient.parse_capacity_commitment_path(path) assert expected == actual -def test_reservation_path(): +def test_bi_reservation_path(): project = "squid" location = "clam" - reservation = "whelk" - expected = "projects/{project}/locations/{location}/reservations/{reservation}".format( - project=project, location=location, reservation=reservation + expected = "projects/{project}/locations/{location}/bireservation".format( + project=project, location=location ) - actual = ReservationServiceClient.reservation_path(project, location, reservation) + actual = ReservationServiceClient.bi_reservation_path(project, location) assert expected == actual -def test_parse_reservation_path(): - expected = {"project": "octopus", "location": "oyster", "reservation": "nudibranch"} - path = ReservationServiceClient.reservation_path(**expected) +def test_parse_bi_reservation_path(): + expected = {"project": "whelk", "location": "octopus"} + path = ReservationServiceClient.bi_reservation_path(**expected) # Check that the path construction is reversible. - actual = ReservationServiceClient.parse_reservation_path(path) + actual = ReservationServiceClient.parse_bi_reservation_path(path) assert expected == actual -def test_capacity_commitment_path(): +def test_reservation_path(): project = "squid" location = "clam" - capacity_commitment = "whelk" + reservation = "whelk" - expected = "projects/{project}/locations/{location}/capacityCommitments/{capacity_commitment}".format( - project=project, location=location, capacity_commitment=capacity_commitment - ) - actual = ReservationServiceClient.capacity_commitment_path( - project, location, capacity_commitment + expected = "projects/{project}/locations/{location}/reservations/{reservation}".format( + project=project, location=location, reservation=reservation ) + actual = ReservationServiceClient.reservation_path(project, location, reservation) assert expected == actual -def test_parse_capacity_commitment_path(): - expected = { - "project": "octopus", - "location": "oyster", - "capacity_commitment": "nudibranch", - } - path = ReservationServiceClient.capacity_commitment_path(**expected) +def test_parse_reservation_path(): + expected = {"project": "octopus", "location": "oyster", "reservation": "nudibranch"} + path = ReservationServiceClient.reservation_path(**expected) # Check that the path construction is reversible. - actual = ReservationServiceClient.parse_capacity_commitment_path(path) + actual = ReservationServiceClient.parse_reservation_path(path) assert expected == actual -def test_bi_reservation_path(): +def test_assignment_path(): project = "squid" location = "clam" + reservation = "whelk" + assignment = "octopus" - expected = "projects/{project}/locations/{location}/bireservation".format( - project=project, location=location + expected = "projects/{project}/locations/{location}/reservations/{reservation}/assignments/{assignment}".format( + project=project, + location=location, + reservation=reservation, + assignment=assignment, + ) + actual = ReservationServiceClient.assignment_path( + project, location, reservation, assignment ) - actual = ReservationServiceClient.bi_reservation_path(project, location) assert expected == actual -def test_parse_bi_reservation_path(): - expected = {"project": "whelk", "location": "octopus"} - path = ReservationServiceClient.bi_reservation_path(**expected) +def test_parse_assignment_path(): + expected = { + "project": "oyster", + "location": "nudibranch", + "reservation": "cuttlefish", + "assignment": "mussel", + } + path = ReservationServiceClient.assignment_path(**expected) # Check that the path construction is reversible. - actual = ReservationServiceClient.parse_bi_reservation_path(path) + actual = ReservationServiceClient.parse_assignment_path(path) assert expected == actual