Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Query: contains doesn't work with long prefix that end with 1 #680

Open
chriskathumbi opened this issue Feb 2, 2023 · 0 comments
Open
Assignees

Comments

@chriskathumbi
Copy link

Summary

When querying using name contains option, if the prefix ends with '1' it fails for all words above 19 characters.
Escaping the "\1" somehow fixes it (why though)
Excluding it by cutting the prefix short: works.
Using the full file name: works

Expected Behavior

  • Get a list of files that have the prefix

Actual Behavior

  • Returns empty list

Steps to Reproduce the Problem

from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
import io


scoped_creds = Credentials.from_service_account_info(creds, scopes=SCOPES)

gdrive = build("drive", "v3", credentials=scoped_creds)

parent_id = ""
data = io.BytesIO()


file_metadata = {
    "name": "thistwentyletterword_20230122",
    # "mimeType": "application/vnd.google-apps.spreadsheet", 
    "parents": ["parent_id"]
}
media = MediaIoBaseUpload(data, mimetype="text/csv", resumable=True)
# pylint: disable=maybe-no-member
print(
    gdrive.files()
    .create(
        supportsAllDrives=True, body=file_metadata, media_body=media, fields="id"
    )
    .execute()
)

# -> {'id': 'long_generated_file_id'}

# search for file with 'thistwentyletterword_202301'
# adding more characters after the '1' fails as well as long as it's not the full file name.

print(
    gdrive.files()
    .list(
        spaces="drive",
        q=f"""\
            mimeType != 'application/vnd.google-apps.folder'\
            and name contains 'thistwentyletterword_202301'\
            and trashed=false
            """,
        fields="files(id, name, mimeType)",
    )
    .execute()
    .get("files")
)

# out-> []

# Escape the "\1"
print(
    gdrive.files()
    .list(
        spaces="drive",
        q=f"""\
            mimeType != 'application/vnd.google-apps.folder'\
            and name contains 'thistwentyletterword_20230\1'\
            and trashed=false
            """,
        fields="files(id, name, mimeType)",
    )
    .execute()
    .get("files")
)

# out-> [{'mimeType': 'text/csv', 'id': 'long_generated_file_id', 'name': 'thistwentyletterword_20230122'}]

Specifications

  • Python version (python --3.10.7)
  • OS (Mac/Linux/Windows)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants