Skip to content
This repository was archived by the owner on Aug 25, 2026. It is now read-only.
This repository was archived by the owner on Aug 25, 2026. It is now read-only.

mypy typing errors for batch enum's #2230

Closed

Description

@ollie-bell

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

Activity

  1. added
    triage meI really want to be triaged.
    type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.
    on Oct 7, 2024
  2. parthea commented on Oct 19, 2024

    @parthea
    Contributor

    Thanks for reporting this issue. I'm going to transfer this issue to the repository where the client library code generator lives so this issue can be addressed.

  3. removed their assignment
    on Apr 4, 2025
  4. added
    priority: p2Moderately-important priority. Fix may not be included in next release.
    and removed
    triage meI really want to be triaged.
    on Apr 4, 2025
  5. ohmayr commented on Apr 15, 2025

    @ohmayr
    Contributor

    @ollie-bell Kindly This sample is maintained within https://github.com/GoogleCloudPlatform/python-docs-samples. Kindly follow GoogleCloudPlatform/python-docs-samples#13302. Closing this issue since it has been transferred to the maintainers of the Python samples.

  6. ollie-bell commented on Apr 15, 2025

    @ollie-bell
    Author

    @ohmayr Hopefully it's now in the right place then! I didn't originally raise the issue in this repository, as you can see from the previous comment it was transferred here from where I originally raised it in https://github.com/googleapis/google-cloud-python.

    FYI I only used that doc sample as an example of the issue... it's not the sample that's the issue, but that sample demonstrates the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: p2Moderately-important priority. Fix may not be included in next release.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