Skip to content

Commit

Permalink
feat!: migrate to microgenerator (#29)
Browse files Browse the repository at this point in the history
* feat!: migrate to microgenerator

* chore: lint and coverage fixes

* chore: uses correct method in example

Co-authored-by: Bu Sun Kim <[email protected]>

Co-authored-by: Bu Sun Kim <[email protected]>
  • Loading branch information
danoscarmike and busunkim96 authored Aug 27, 2020
1 parent 63ba877 commit 0b447b5
Show file tree
Hide file tree
Showing 89 changed files with 13,836 additions and 10,101 deletions.
5 changes: 5 additions & 0 deletions packages/google-cloud-scheduler/.coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ exclude_lines =
def __repr__
# Ignore abstract methods
raise NotImplementedError
# Ignore pkg_resources exceptions.
# This is added at the module level as a safeguard for if someone
# generates the code and tries to run it without pip installing. This
# makes it virtually impossible to test properly.
except pkg_resources.DistributionNotFound
omit =
*/gapic/*.py
*/proto/*.py
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from ubuntu:20.10
from ubuntu:20.04

ENV DEBIAN_FRONTEND noninteractive

Expand Down
6 changes: 4 additions & 2 deletions packages/google-cloud-scheduler/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,14 @@ dependencies.

Supported Python Versions
^^^^^^^^^^^^^^^^^^^^^^^^^
Python >= 3.5
Python >= 3.6

Deprecated Python Versions
^^^^^^^^^^^^^^^^^^^^^^^^^^
Python == 2.7. Python 2.7 support will be removed on January 1, 2020.
Python == 2.7.

The last version of this library compatible with Python 2.7 is
google-cloud-scheduler==1.3.0

Mac/Linux
^^^^^^^^^
Expand Down
178 changes: 178 additions & 0 deletions packages/google-cloud-scheduler/UPGRADING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
# 2.0.0 Migration Guide

The 2.0 release of the `google-cloud-scheduler` client is a significant upgrade based on a [next-gen code generator](https://github.com/googleapis/gapic-generator-python), and includes substantial interface changes. Existing code written for earlier versions of this library will likely require updates to use this version. This document describes the changes that have been made, and what you need to do to update your usage.

If you experience issues or have questions, please file an [issue](https://github.com/googleapis/python-scheduler/issues).

## Supported Python Versions

> **WARNING**: Breaking change
The 2.0.0 release requires Python 3.6+.


## Method Calls

> **WARNING**: Breaking change
Methods expect request objects. We provide a script that will convert most common use cases.

* Install the library

```py
python3 -m pip install google-cloud-scheduler
```

* The script `fixup_scheduler_{version}_keywords.py` is shipped with the library. It expects
an input directory (with the code to convert) and an empty destination directory.

```sh
$ fixup_scheduler_v1_keywords.py --input-directory .samples/ --output-directory samples/
```

**Before:**
```py
from google.cloud import scheduler

client = scheduler.CloudSchedulerClient()

parent = client.location_path("<PROJECT_ID>", "<LOCATION>")
job = {
'app_engine_http_target': {
'app_engine_routing': {
'service': service_id
},
'relative_uri': '/log_payload',
'http_method': 'POST',
'body': 'Hello World'.encode()
},
'schedule': '* * * * *',
'time_zone': 'America/Los_Angeles'
}

response = client.create_job(parent, job)
```


**After:**
```py
from google.cloud import scheduler

client = scheduler.CloudSchedulerClient()
parent = "projects/<PROJECT_ID>/locations/<LOCATION>"
job = {
'app_engine_http_target': {
'app_engine_routing': {
'service': service_id
},
'relative_uri': '/log_payload',
'http_method': 'POST',
'body': 'Hello World'.encode()
},
'schedule': '* * * * *',
'time_zone': 'America/Los_Angeles'
}

response = client.create_job(
request={
"parent": parent,
"job": job
}
)
```

### More Details

In `google-cloud-scheduler<2.0.0`, parameters required by the API were positional parameters and optional parameters were keyword parameters.

**Before:**
```py
def list_jobs(
self,
parent,
page_size=None,
retry=google.api_core.gapic_v1.method.DEFAULT,
timeout=google.api_core.gapic_v1.method.DEFAULT,
metadata=None,
):
```

In the 2.0.0 release, all methods have a single positional parameter `request`. Method docstrings indicate whether a parameter is required or optional.

Some methods have additional keyword only parameters. The available parameters depend on the [`google.api.method_signature` annotation](https://github.com/googleapis/googleapis/blob/master/google/cloud/scheduler/v1/cloudscheduler.proto#L45) specified by the API producer.


**After:**
```py
def list_jobs(
self,
request: cloudscheduler.ListJobsRequest = None,
*,
parent: str = None,
retry: retries.Retry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> pagers.ListJobsPager:
```

> **NOTE:** The `request` parameter and flattened keyword parameters for the API are mutually exclusive.
> Passing both will result in an error.

Both of these calls are valid:

```py
response = client.list_jobs(
request={
"parent": parent,
"timeout": timeout
}
)
```

```py
response = client.list_jobs(
parent=parent,
timeout=timeout
)
```

This call is invalid because it mixes `request` with a keyword argument `metadata`. Executing this code
will result in an error.

```py
response = client.list_jobs(
request={
"parent": parent,
"timeout": timeout,
},
metadata=metadata
)
```



## Enums and Types


> **WARNING**: Breaking change
The submodules `enums` and `types` have been removed.

**Before:**
```py

from google.cloud import scheduler

http_method = scheduler.enums.HttpMethod.GET
job = scheduler.types.Job(name="name")
```


**After:**
```py
from google.cloud import scheduler

http_method = scheduler.HttpMethod.GET
job = scheduler.Job(name="name")
```
1 change: 1 addition & 0 deletions packages/google-cloud-scheduler/docs/UPGRADING.md
6 changes: 0 additions & 6 deletions packages/google-cloud-scheduler/docs/gapic/v1/api.rst

This file was deleted.

5 changes: 0 additions & 5 deletions packages/google-cloud-scheduler/docs/gapic/v1/types.rst

This file was deleted.

6 changes: 0 additions & 6 deletions packages/google-cloud-scheduler/docs/gapic/v1beta1/api.rst

This file was deleted.

5 changes: 0 additions & 5 deletions packages/google-cloud-scheduler/docs/gapic/v1beta1/types.rst

This file was deleted.

28 changes: 21 additions & 7 deletions packages/google-cloud-scheduler/docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,37 @@
This package includes clients for multiple versions of the Cloud Scheduler
API. By default, you will get ``v1``, the latest stable version.

v1
-------------
.. toctree::
:maxdepth: 2
:maxdepth: 2

gapic/v1/api
gapic/v1/types
scheduler_v1/services
scheduler_v1/types


Previous beta release ``v1beta1`` is provided as well.

An API and type reference is provided for ``v1beta1``:
v1beta1
-------------
.. toctree::
:maxdepth: 2

scheduler_v1beta1/services
scheduler_v1beta1/types



Migration Guide
---------------

See the guide below for instructions on migrating to the 2.x release of this library.

.. toctree::
:maxdepth: 2

gapic/v1beta1/api
gapic/v1beta1/types

UPGRADING


Changelog
---------
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Services for Google Cloud Scheduler v1 API
==========================================

.. automodule:: google.cloud.scheduler_v1.services.cloud_scheduler
:members:
:inherited-members:
5 changes: 5 additions & 0 deletions packages/google-cloud-scheduler/docs/scheduler_v1/types.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Types for Google Cloud Scheduler v1 API
=======================================

.. automodule:: google.cloud.scheduler_v1.types
:members:
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Services for Google Cloud Scheduler v1beta1 API
===============================================

.. automodule:: google.cloud.scheduler_v1beta1.services.cloud_scheduler
:members:
:inherited-members:
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Types for Google Cloud Scheduler v1beta1 API
============================================

.. automodule:: google.cloud.scheduler_v1beta1.types
:members:
64 changes: 64 additions & 0 deletions packages/google-cloud-scheduler/google/cloud/scheduler/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

from google.cloud.scheduler_v1.services.cloud_scheduler.async_client import (
CloudSchedulerAsyncClient,
)
from google.cloud.scheduler_v1.services.cloud_scheduler.client import (
CloudSchedulerClient,
)
from google.cloud.scheduler_v1.types.cloudscheduler import CreateJobRequest
from google.cloud.scheduler_v1.types.cloudscheduler import DeleteJobRequest
from google.cloud.scheduler_v1.types.cloudscheduler import GetJobRequest
from google.cloud.scheduler_v1.types.cloudscheduler import ListJobsRequest
from google.cloud.scheduler_v1.types.cloudscheduler import ListJobsResponse
from google.cloud.scheduler_v1.types.cloudscheduler import PauseJobRequest
from google.cloud.scheduler_v1.types.cloudscheduler import ResumeJobRequest
from google.cloud.scheduler_v1.types.cloudscheduler import RunJobRequest
from google.cloud.scheduler_v1.types.cloudscheduler import UpdateJobRequest
from google.cloud.scheduler_v1.types.job import Job
from google.cloud.scheduler_v1.types.job import RetryConfig
from google.cloud.scheduler_v1.types.target import AppEngineHttpTarget
from google.cloud.scheduler_v1.types.target import AppEngineRouting
from google.cloud.scheduler_v1.types.target import HttpMethod
from google.cloud.scheduler_v1.types.target import HttpTarget
from google.cloud.scheduler_v1.types.target import OAuthToken
from google.cloud.scheduler_v1.types.target import OidcToken
from google.cloud.scheduler_v1.types.target import PubsubTarget

__all__ = (
"AppEngineHttpTarget",
"AppEngineRouting",
"CloudSchedulerAsyncClient",
"CloudSchedulerClient",
"CreateJobRequest",
"DeleteJobRequest",
"GetJobRequest",
"HttpMethod",
"HttpTarget",
"Job",
"ListJobsRequest",
"ListJobsResponse",
"OAuthToken",
"OidcToken",
"PauseJobRequest",
"PubsubTarget",
"ResumeJobRequest",
"RetryConfig",
"RunJobRequest",
"UpdateJobRequest",
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Marker file for PEP 561.
# The google-cloud-scheduler package uses inline types.
Loading

0 comments on commit 0b447b5

Please sign in to comment.