Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

mypy typing errors for batch enum's #13302

Open
Assignees
Labels
priority: p2Moderately-important priority. Fix may not be included in next release. samplesIssues that are directly related to samples. triage meI really want to be triaged. type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.
@ohmayr

Description

Determine this is the right repository

  • I determined this is the correct repository in which to report this bug.

Summary of the issue

Context
Running mypy on this official code sample (copy and paste into a file batch_example.py and running mypy batch_example.py)

Expected Behavior:
No mypy errors

Actual Behavior:
mypy errors:

batch_example.py:66: error: Incompatible types in assignment (expression has type "int", variable has type "Destination") [assignment]
Found 1 error in 1 file (checked 1 source file)

API client name and version

google-cloud-batch v0.17.28

Reproduction steps: code

from google.cloud import batch_v1
def create_container_job(project_id: str, region: str, job_name: str) -> batch_v1.Job:
 """
 This method shows how to create a sample Batch Job that will run
 a simple command inside a container on Cloud Compute instances.

 Args:
 project_id: project ID or project number of the Cloud project you want to use.
 region: name of the region you want to use to run the job. Regions that are
 available for Batch are listed on: https://cloud.google.com/batch/docs/get-started#locations
 job_name: the name of the job that will be created.
 It needs to be unique for each project and region pair.

 Returns:
 A job object representing the job created.
 """
 client = batch_v1.BatchServiceClient()
 # Define what will be done as part of the job.
 runnable = batch_v1.Runnable()
 runnable.container = batch_v1.Runnable.Container()
 runnable.container.image_uri = "gcr.io/google-containers/busybox"
 runnable.container.entrypoint = "/bin/sh"
 runnable.container.commands = [
 "-c",
 "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks.",
 ]
 # Jobs can be divided into tasks. In this case, we have only one task.
 task = batch_v1.TaskSpec()
 task.runnables = [runnable]
 # We can specify what resources are requested by each task.
 resources = batch_v1.ComputeResource()
 resources.cpu_milli = 2000 # in milliseconds per cpu-second. This means the task requires 2 whole CPUs.
 resources.memory_mib = 16 # in MiB
 task.compute_resource = resources
 task.max_retry_count = 2
 task.max_run_duration = "3600s"
 # Tasks are grouped inside a job using TaskGroups.
 # Currently, it's possible to have only one task group.
 group = batch_v1.TaskGroup()
 group.task_count = 4
 group.task_spec = task
 # Policies are used to define on what kind of virtual machines the tasks will run on.
 # In this case, we tell the system to use "e2-standard-4" machine type.
 # Read more about machine types here: https://cloud.google.com/compute/docs/machine-types
 policy = batch_v1.AllocationPolicy.InstancePolicy()
 policy.machine_type = "e2-standard-4"
 instances = batch_v1.AllocationPolicy.InstancePolicyOrTemplate()
 instances.policy = policy
 allocation_policy = batch_v1.AllocationPolicy()
 allocation_policy.instances = [instances]
 job = batch_v1.Job()
 job.task_groups = [group]
 job.allocation_policy = allocation_policy
 job.labels = {"env": "testing", "type": "container"}
 # We use Cloud Logging as it's an out of the box available option
 job.logs_policy = batch_v1.LogsPolicy()
 job.logs_policy.destination = batch_v1.LogsPolicy.Destination.CLOUD_LOGGING
 create_request = batch_v1.CreateJobRequest()
 create_request.job = job
 create_request.job_id = job_name
 # The job's parent is the region in which the job will run
 create_request.parent = f"projects/{project_id}/locations/{region}"
 return client.create_job(create_request)

Reproduction steps: supporting files

No response

Reproduction steps: actual results

batch_example.py:66: error: Incompatible types in assignment (expression has type "int", variable has type "Destination") [assignment]
Found 1 error in 1 file (checked 1 source file)

Reproduction steps: expected results

Success: no issues found in 1 source file

OS & version + platform

macOS 15.0.1

Python environment

Python 3.11.10

Python dependencies

Package Version
------------------------ ---------
cachetools 5.5.0
certifi 2024年8月30日
charset-normalizer 3.3.2
google-api-core 2.20.0
google-auth 2.35.0
google-cloud-batch 0.17.28
googleapis-common-protos 1.65.0
grpcio 1.66.2
grpcio-status 1.66.2
idna 3.10
mypy 1.11.2
mypy-extensions 1.0.0
pip 24.2
proto-plus 1.24.0
protobuf 5.28.2
pyasn1 0.6.1
pyasn1_modules 0.4.1
requests 2.32.3
rsa 4.9
setuptools 75.1.0
typing_extensions 4.12.2
urllib3 2.2.3

Metadata

Metadata

Labels

priority: p2Moderately-important priority. Fix may not be included in next release. samplesIssues that are directly related to samples. triage meI really want to be triaged. type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      AltStyle によって変換されたページ (->オリジナル) /