gam7 7.3.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gam7 might be problematic. Click here for more details.

Files changed (72) hide show
  1. gam/__init__.py +77555 -0
  2. gam/__main__.py +40 -0
  3. gam/atom/__init__.py +1460 -0
  4. gam/atom/auth.py +41 -0
  5. gam/atom/client.py +214 -0
  6. gam/atom/core.py +535 -0
  7. gam/atom/data.py +327 -0
  8. gam/atom/http.py +354 -0
  9. gam/atom/http_core.py +599 -0
  10. gam/atom/http_interface.py +144 -0
  11. gam/atom/mock_http.py +123 -0
  12. gam/atom/mock_http_core.py +313 -0
  13. gam/atom/mock_service.py +235 -0
  14. gam/atom/service.py +723 -0
  15. gam/atom/token_store.py +105 -0
  16. gam/atom/url.py +130 -0
  17. gam/cacerts.pem +1130 -0
  18. gam/cbcm-v1.1beta1.json +593 -0
  19. gam/contactdelegation-v1.json +249 -0
  20. gam/datastudio-v1.json +486 -0
  21. gam/gamlib/__init__.py +17 -0
  22. gam/gamlib/glaction.py +308 -0
  23. gam/gamlib/glapi.py +837 -0
  24. gam/gamlib/glcfg.py +616 -0
  25. gam/gamlib/glclargs.py +1184 -0
  26. gam/gamlib/glentity.py +831 -0
  27. gam/gamlib/glgapi.py +817 -0
  28. gam/gamlib/glgdata.py +98 -0
  29. gam/gamlib/glglobals.py +307 -0
  30. gam/gamlib/glindent.py +46 -0
  31. gam/gamlib/glmsgs.py +547 -0
  32. gam/gamlib/glskus.py +246 -0
  33. gam/gamlib/gluprop.py +279 -0
  34. gam/gamlib/glverlibs.py +33 -0
  35. gam/gamlib/yubikey.py +202 -0
  36. gam/gdata/__init__.py +825 -0
  37. gam/gdata/alt/__init__.py +20 -0
  38. gam/gdata/alt/app_engine.py +101 -0
  39. gam/gdata/alt/appengine.py +321 -0
  40. gam/gdata/apps/__init__.py +526 -0
  41. gam/gdata/apps/audit/__init__.py +1 -0
  42. gam/gdata/apps/audit/service.py +278 -0
  43. gam/gdata/apps/contacts/__init__.py +874 -0
  44. gam/gdata/apps/contacts/service.py +355 -0
  45. gam/gdata/apps/service.py +544 -0
  46. gam/gdata/apps/sites/__init__.py +283 -0
  47. gam/gdata/apps/sites/service.py +246 -0
  48. gam/gdata/service.py +1714 -0
  49. gam/gdata/urlfetch.py +247 -0
  50. gam/googleapiclient/__init__.py +27 -0
  51. gam/googleapiclient/_auth.py +167 -0
  52. gam/googleapiclient/_helpers.py +207 -0
  53. gam/googleapiclient/channel.py +315 -0
  54. gam/googleapiclient/discovery.py +1662 -0
  55. gam/googleapiclient/discovery_cache/__init__.py +78 -0
  56. gam/googleapiclient/discovery_cache/appengine_memcache.py +55 -0
  57. gam/googleapiclient/discovery_cache/base.py +46 -0
  58. gam/googleapiclient/discovery_cache/file_cache.py +145 -0
  59. gam/googleapiclient/errors.py +197 -0
  60. gam/googleapiclient/http.py +1962 -0
  61. gam/googleapiclient/mimeparse.py +183 -0
  62. gam/googleapiclient/model.py +429 -0
  63. gam/googleapiclient/schema.py +317 -0
  64. gam/googleapiclient/version.py +15 -0
  65. gam/iso8601/__init__.py +28 -0
  66. gam/iso8601/iso8601.py +160 -0
  67. gam/serviceaccountlookup-v1.json +141 -0
  68. gam/six.py +982 -0
  69. gam7-7.3.4.dist-info/METADATA +69 -0
  70. gam7-7.3.4.dist-info/RECORD +72 -0
  71. gam7-7.3.4.dist-info/WHEEL +4 -0
  72. gam7-7.3.4.dist-info/licenses/LICENSE +201 -0
gam/gamlib/glcfg.py ADDED
@@ -0,0 +1,616 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # Copyright (C) 2024 Ross Scroggs All Rights Reserved.
4
+ #
5
+ # All Rights Reserved.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License. You may obtain
9
+ # a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16
+ # License for the specific language governing permissions and limitations
17
+ # under the License.
18
+
19
+ """GAM gam.cfg variables
20
+
21
+ """
22
+
23
+ import os
24
+
25
+ TRUE = 'true'
26
+ FALSE = 'false'
27
+ DEFAULT_CHARSET = 'utf-8'
28
+ MY_CUSTOMER = 'my_customer'
29
+ NEVER = 'Never'
30
+ TLS_CHOICE_MAP = {
31
+ '': '',
32
+ 'tlsv1_2': 'TLSv1_2', 'tlsv1.2': 'TLSv1_2',
33
+ 'tlsv1_3': 'TLSv1_3', 'tlsv1.3': 'TLSv1_3',
34
+ }
35
+
36
+ FN_CACERTS_PEM = 'cacerts.pem'
37
+ FN_CLIENT_SECRETS_JSON = 'client_secrets.json'
38
+ FN_EXTRA_ARGS_TXT = 'extra-args.txt'
39
+ FN_OAUTH2_TXT = 'oauth2.txt'
40
+ FN_OAUTH2SERVICE_JSON = 'oauth2service.json'
41
+
42
+ # Global variables defined in gam.cfg
43
+
44
+ # The following XXX constants are the names of the items in gam.cfg
45
+ # When retrieving lists of Google Drive activities from API, how many should be retrieved in each chunk
46
+ ACTIVITY_MAX_RESULTS = 'activity_max_results'
47
+ # Admin email address, required when enable_dasa is true, overrides oauth2.txt value otherwise
48
+ ADMIN_EMAIL = 'admin_email'
49
+ # Check if API calls rate exceeds limit
50
+ API_CALLS_RATE_CHECK = 'api_calls_rate_check'
51
+ # API calls per 100 seconds limit
52
+ API_CALLS_RATE_LIMIT = 'api_calls_rate_limit'
53
+ # API calls tries limit
54
+ API_CALLS_TRIES_LIMIT = 'api_calls_tries_limit'
55
+ # Automatically generate gam batch command if number of users specified in gam users xxx command exceeds this number
56
+ # Default: 0, do not automatically generate gam batch commands
57
+ AUTO_BATCH_MIN = 'auto_batch_min'
58
+ # When bailing on internal errors, how many total tries should be performed
59
+ BAIL_ON_INTERNAL_ERROR_TRIES = 'bail_on_internal_error_tries'
60
+ # When processing items in batches, how many should be processed in each batch
61
+ BATCH_SIZE = 'batch_size'
62
+ # Location of cacerts.pem for API calls
63
+ CACERTS_PEM = 'cacerts_pem'
64
+ # GAM cache directory
65
+ CACHE_DIR = 'cache_dir'
66
+ # GAM cache discovery only. If no_cache is False, only API discovery calls will be cached
67
+ CACHE_DISCOVERY_ONLY = 'cache_discovery_only'
68
+ # Channel custmerId from gam.cfg
69
+ CHANNEL_CUSTOMER_ID = 'channel_customer_id'
70
+ # Character set of batch, csv, data files
71
+ CHARSET = 'charset'
72
+ # When retrieving lists of Google Classroom items from API, how many should be retrieved in each chunk
73
+ CLASSROOM_MAX_RESULTS = 'classroom_max_results'
74
+ # Path to client_secrets.json
75
+ CLIENT_SECRETS_JSON = 'client_secrets_json'
76
+ # Allowed clock skew in seconds
77
+ CLOCK_SKEW_IN_SECONDS = 'clock_skew_in_seconds'
78
+ # Command logging filename
79
+ CMDLOG = 'cmdlog'
80
+ # Bogus Command logging maximum number of backup log files
81
+ CMDLOG_MAX__BACKUPS = 'cmdlog_max__backups'
82
+ # Command logging maximum number of backup log files
83
+ CMDLOG_MAX_BACKUPS = 'cmdlog_max_backups'
84
+ # Command logging max kilo bytes per log file
85
+ CMDLOG_MAX_KILO_BYTES = 'cmdlog_max_kilo_bytes'
86
+ # GAM config directory containing client_secrets.json, oauth2.txt, oauth2service.json, extra_args.txt
87
+ CONFIG_DIR = 'config_dir'
88
+ # When retrieving lists of Google Contacts from API, how many should be retrieved in each chunk
89
+ CONTACT_MAX_RESULTS = 'contact_max_results'
90
+ # Column delimiter in CSV input file
91
+ CSV_INPUT_COLUMN_DELIMITER = 'csv_input_column_delimiter'
92
+ # No escape character in CSV input file
93
+ CSV_INPUT_NO_ESCAPE_CHAR = 'csv_input_no_escape_char'
94
+ # Quote character in CSV input file
95
+ CSV_INPUT_QUOTE_CHAR = 'csv_input_quote_char'
96
+ # Filter for input column values
97
+ CSV_INPUT_ROW_FILTER = 'csv_input_row_filter'
98
+ # Mode (and|or) for input column values
99
+ CSV_INPUT_ROW_FILTER_MODE = 'csv_input_row_filter_mode'
100
+ # Filter for input column drop values
101
+ CSV_INPUT_ROW_DROP_FILTER = 'csv_input_row_drop_filter'
102
+ # Mode (and|or) for input column drop values
103
+ CSV_INPUT_ROW_DROP_FILTER_MODE = 'csv_input_row_drop_filter_mode'
104
+ # Limit number of input rows
105
+ CSV_INPUT_ROW_LIMIT = 'csv_input_row_limit'
106
+ # Convert newlines in text fields to "\n" in CSV output file
107
+ CSV_OUTPUT_CONVERT_CR_NL = 'csv_output_convert_cr_nl'
108
+ # Column delimiter in CSV output file
109
+ CSV_OUTPUT_COLUMN_DELIMITER = 'csv_output_column_delimiter'
110
+ # No escape character in CSV output file
111
+ CSV_OUTPUT_NO_ESCAPE_CHAR = 'csv_output_no_escape_char'
112
+ # Field list delimiter in CSV output file
113
+ CSV_OUTPUT_FIELD_DELIMITER = 'csv_output_field_delimiter'
114
+ # Filter for output column headers
115
+ CSV_OUTPUT_HEADER_FILTER = 'csv_output_header_filter'
116
+ # Filter for output column headers to drop
117
+ CSV_OUTPUT_HEADER_DROP_FILTER = 'csv_output_header_drop_filter'
118
+ # Force output column headers
119
+ CSV_OUTPUT_HEADER_FORCE = 'csv_output_header_force'
120
+ # Orde output column headers
121
+ CSV_OUTPUT_HEADER_ORDER = 'csv_output_header_order'
122
+ # Line terminator in CSV output file
123
+ CSV_OUTPUT_LINE_TERMINATOR = 'csv_output_line_terminator'
124
+ # Quote character in CSV output file
125
+ CSV_OUTPUT_QUOTE_CHAR = 'csv_output_quote_char'
126
+ # Filter for output column values
127
+ CSV_OUTPUT_ROW_FILTER = 'csv_output_row_filter'
128
+ # Mode (and|or) for output column values
129
+ CSV_OUTPUT_ROW_FILTER_MODE = 'csv_output_row_filter_mode'
130
+ # Filter for output column drop values
131
+ CSV_OUTPUT_ROW_DROP_FILTER = 'csv_output_row_drop_filter'
132
+ # Mode (and|or) for output column drop values
133
+ CSV_OUTPUT_ROW_DROP_FILTER_MODE = 'csv_output_row_drop_filter_mode'
134
+ # Limit number of output rows
135
+ CSV_OUTPUT_ROW_LIMIT = 'csv_output_row_limit'
136
+ # Output sort headers
137
+ CSV_OUTPUT_SORT_HEADERS = 'csv_output_sort_headers'
138
+ # Column header subfield name delimiter in CSV output file
139
+ CSV_OUTPUT_SUBFIELD_DELIMITER = 'csv_output_subfield_delimiter'
140
+ # Add timestamp column to CSV output file
141
+ CSV_OUTPUT_TIMESTAMP_COLUMN = 'csv_output_timestamp_column'
142
+ # Output rows for users even if they do not have the print object (delegate, filters, ...)
143
+ CSV_OUTPUT_USERS_AUDIT = 'csv_output_users_audit'
144
+ # custmerId from gam.cfg or retrieved from Google
145
+ CUSTOMER_ID = 'customer_id'
146
+ # If debug_level > 0: extra_args['prettyPrint'] = True, httplib2.debuglevel = gam_debug_level, appsObj.debug = True
147
+ DEBUG_LEVEL = 'debug_level'
148
+ # When retrieving lists of ChromeOS devices from API, how many should be retrieved in each chunk
149
+ DEVICE_MAX_RESULTS = 'device_max_results'
150
+ # Domain obtained from gam.cfg or oauth2.txt
151
+ DOMAIN = 'domain'
152
+ # Google Drive download directory
153
+ DRIVE_DIR = 'drive_dir'
154
+ # When retrieving lists of Drive files/folders from API, how many should be retrieved in each chunk
155
+ DRIVE_MAX_RESULTS = 'drive_max_results'
156
+ # Use Drive V3 beta
157
+ DRIVE_V3_BETA = 'drive_v3_beta'
158
+ # Use Drive V3 ntive names
159
+ DRIVE_V3_NATIVE_NAMES = 'drive_v3_native_names'
160
+ # When processing email messages in batches, how many should be processed in each batch
161
+ EMAIL_BATCH_SIZE = 'email_batch_size'
162
+ # Enable Delegated Admin Service Account
163
+ ENABLE_DASA = 'enable_dasa'
164
+ # Enable Cloud Session Reauthentication by borrowing a RAPT token from gcloud command
165
+ ENABLE_GCLOUD_REAUTH = 'enable_gcloud_reauth'
166
+ # When retrieving lists of calendar events from API, how many should be retrieved in each chunk
167
+ EVENT_MAX_RESULTS = 'event_max_results'
168
+ # Path to extra_args.txt
169
+ EXTRA_ARGS = 'extra_args'
170
+ # Gmail CSE certificates directory
171
+ GMAIL_CSE_INCERT_DIR = 'gmail_cse_incert_dir'
172
+ # Gmail CSE KACL wrapped key files
173
+ GMAIL_CSE_INKEY_DIR = 'gmail_cse_inkey_dir'
174
+ # When processing items in batches, how many seconds should GAM wait between batches
175
+ INTER_BATCH_WAIT = 'inter_batch_wait'
176
+ # When retrieving lists of licenses from API, how many should be retrieved in each chunk
177
+ LICENSE_MAX_RESULTS = 'license_max_results'
178
+ # License SKUs to process
179
+ LICENSE_SKUS = 'license_skus'
180
+ # When retrieving lists of Google Group members from API, how many should be retrieved in each chunk
181
+ MEMBER_MAX_RESULTS = 'member_max_results'
182
+ # When deleting or modifying Gmail messages, how many should be processed in each batch
183
+ MESSAGE_BATCH_SIZE = 'message_batch_size'
184
+ # When retrieving lists of Gmail messages from API, how many should be retrieved in each chunk
185
+ MESSAGE_MAX_RESULTS = 'message_max_results'
186
+ # When retrieving lists of Mobile devices from API, how many should be retrieved in each chunk
187
+ MOBILE_MAX_RESULTS = 'mobile_max_results'
188
+ # Number of parallel multiprocess pool.apply_async calls; -1: no limit, 0: NUM_THREADS, >0: specific limit
189
+ MULTIPROCESS_POOL_LIMIT = 'multiprocess_pool_limit'
190
+ # Value to substitute for NEVER_TIME
191
+ NEVER_TIME = 'never_time'
192
+ # If no_browser is False, writeCSVfile won't open a browser when todrive is set
193
+ # and doOAuthRequest prints a link and waits for the verification code when oauth2.txt is being created
194
+ NO_BROWSER = 'no_browser'
195
+ # Disable GAM API caching
196
+ NO_CACHE = 'no_cache'
197
+ # Do noit use URL shortner for authentication URLs
198
+ NO_SHORT_URLS = 'no_short_urls'
199
+ # Disable GAM update check
200
+ NO_UPDATE_CHECK = 'no_update_check'
201
+ # Disable SSL certificate validation
202
+ NO_VERIFY_SSL = 'no_verify_ssl'
203
+ # Number of threads for gam tbatch
204
+ NUM_TBATCH_THREADS = 'num_tbatch_threads'
205
+ # Number of threads for gam batch/csv
206
+ NUM_THREADS = 'num_threads'
207
+ # Path to oauth2.txt
208
+ OAUTH2_TXT = 'oauth2_txt'
209
+ # Path to oauth2service.json
210
+ OAUTH2SERVICE_JSON = 'oauth2service_json'
211
+ # Output date format, empty defalts to ISOFormat
212
+ OUTPUT_DATEFORMAT = 'output_dateformat'
213
+ # Output time format, empty defalts to ISOFormat
214
+ OUTPUT_TIMEFORMAT = 'output_timeformat'
215
+ # When retrieving lists of people from API, how many should be retrieved in each chunk
216
+ PEOPLE_MAX_RESULTS = 'people_max_results'
217
+ # Domains for print alises|groups|users
218
+ PRINT_AGU_DOMAINS = 'print_agu_domains'
219
+ # OrgUnits for print cros
220
+ PRINT_CROS_OUS = 'print_cros_ous'
221
+ # OrgUnits and children for print cros
222
+ PRINT_CROS_OUS_AND_CHILDREN = 'print_cros_ous_and_children'
223
+ # Number of seconds to wait for batch/csv processes to complete
224
+ PROCESS_WAIT_LIMIT = 'process_wait_limit'
225
+ # Use quick method to move Chromebooks to OU
226
+ QUICK_CROS_MOVE = 'quick_cros_move'
227
+ # Quick info user: nogroups nolicenses noschemas
228
+ QUICK_INFO_USER = 'quick_info_user'
229
+ # resellerId from gam.cfg or retrieved from Google
230
+ RESELLER_ID = 'reseller_id'
231
+ # Retry service not available errors on API calls
232
+ RETRY_API_SERVICE_NOT_AVAILABLE = 'retry_api_service_not_available'
233
+ # Default section to use for processing
234
+ SECTION = 'section'
235
+ # Show API calls retry data
236
+ SHOW_API_CALLS_RETRY_DATA = 'show_api_calls_retry_data'
237
+ # Show commands when processing batch/csv/loop
238
+ SHOW_COMMANDS = 'show_commands'
239
+ # Convert newlines in text fields to "\n" in show commands
240
+ SHOW_CONVERT_CR_NL = 'show_convert_cr_nl'
241
+ # Add (n/m) to end of messages if number of items to be processed exceeds this number
242
+ SHOW_COUNTS_MIN = 'show_counts_min'
243
+ # Enable/disable "Getting ... " messages
244
+ SHOW_GETTINGS = 'show_gettings'
245
+ # Enable/disable NL at end of "Got ..." messages
246
+ SHOW_GETTINGS_GOT_NL = 'show_gettings_got_nl'
247
+ # Enable/disable showing multiprocess info in redirected stdout/stderr
248
+ SHOW_MULTIPROCESS_INFO = 'show_multiprocess_info'
249
+ # SMTP fqdn
250
+ SMTP_FQDN = 'smtp_fqdn'
251
+ # SMTP host
252
+ SMTP_HOST = 'smtp_host'
253
+ # SMTP username
254
+ SMTP_USERNAME = 'smtp_username'
255
+ # SMTP password
256
+ SMTP_PASSWORD = 'smtp_password'
257
+ ## Minimum TLS Version required for HTTPS connections
258
+ TLS_MIN_VERSION = 'tls_min_version'
259
+ ## Maximum TLS Version used for HTTPS connections
260
+ TLS_MAX_VERSION = 'tls_max_version'
261
+ # Time Zone
262
+ TIMEZONE = 'timezone'
263
+ # Clear basic filter when updating an existing sheet
264
+ TODRIVE_CLEARFILTER = 'todrive_clearfilter'
265
+ # Use client access for todrive
266
+ TODRIVE_CLIENTACCESS = 'todrive_clientaccess'
267
+ # Enable conversion to Google Sheets when uploading todrive files
268
+ TODRIVE_CONVERSION = 'todrive_conversion'
269
+ # Save local copy of CSV file
270
+ TODRIVE_LOCALCOPY = 'todrive_localcopy'
271
+ # Specify locale for Google Sheets
272
+ TODRIVE_LOCALE = 'todrive_locale'
273
+ # Suppress opening browser on todrive upload
274
+ TODRIVE_NOBROWSER = 'todrive_nobrowser'
275
+ # Suppress sending email on todrive upload
276
+ TODRIVE_NOEMAIL = 'todrive_noemail'
277
+ # No escape character in CSV output file
278
+ TODRIVE_NO_ESCAPE_CHAR = 'todrive_no_escape_char'
279
+ # ID/Name of parent folder for todrive files
280
+ TODRIVE_PARENT = 'todrive_parent'
281
+ # Append timestamp to todrive sheet name
282
+ TODRIVE_SHEET_TIMESTAMP = 'todrive_sheet_timestamp'
283
+ # Sheet timestamp format, empty defalts to ISOFormat
284
+ TODRIVE_SHEET_TIMEFORMAT = 'todrive_sheet_timeformat'
285
+ # Append timestamp to todrive file name
286
+ TODRIVE_TIMESTAMP = 'todrive_timestamp'
287
+ # Timestamp format, empty defalts to ISOFormat
288
+ TODRIVE_TIMEFORMAT = 'todrive_timeformat'
289
+ # Specify timezone for Google Sheets
290
+ TODRIVE_TIMEZONE = 'todrive_timezone'
291
+ # Upload data files with no data
292
+ TODRIVE_UPLOAD_NODATA = 'todrive_upload_nodata'
293
+ # User for todrive files
294
+ TODRIVE_USER = 'todrive_user'
295
+ # Truncate Client ID
296
+ TRUNCATE_CLIENT_ID = 'truncate_client_id'
297
+ # Update CrOS org unit with orgUnitId
298
+ UPDATE_CROS_OU_WITH_ID = 'update_cros_ou_with_id'
299
+ # Use admin access for chat where possible
300
+ USE_CHAT_ADMIN_ACCESS = 'use_chat_admin_access'
301
+ # Use course owner for course access
302
+ USE_COURSE_OWNER_ACCESS = 'use_course_owner_access'
303
+ # Use Project ID as Project Name and App Name
304
+ USE_PROJECTID_AS_NAME = 'use_projectid_as_name'
305
+ # When retrieving lists of Users from API, how many should be retrieved in each chunk
306
+ USER_MAX_RESULTS = 'user_max_results'
307
+ # User service account access only, no client access
308
+ USER_SERVICE_ACCOUNT_ACCESS_ONLY = 'user_service_account_access_only'
309
+
310
+ CSV_INPUT_ROW_FILTER_ITEMS = {CSV_INPUT_ROW_FILTER, CSV_INPUT_ROW_FILTER_MODE,
311
+ CSV_INPUT_ROW_DROP_FILTER, CSV_INPUT_ROW_DROP_FILTER_MODE,
312
+ CSV_INPUT_ROW_LIMIT}
313
+
314
+ CSV_OUTPUT_ROW_FILTER_ITEMS = {CSV_OUTPUT_HEADER_FILTER, CSV_OUTPUT_HEADER_DROP_FILTER,
315
+ CSV_OUTPUT_HEADER_FORCE, CSV_OUTPUT_HEADER_ORDER,
316
+ CSV_OUTPUT_ROW_FILTER, CSV_OUTPUT_ROW_FILTER_MODE,
317
+ CSV_OUTPUT_ROW_DROP_FILTER, CSV_OUTPUT_ROW_DROP_FILTER_MODE,
318
+ CSV_OUTPUT_ROW_LIMIT}
319
+
320
+ Defaults = {
321
+ ACTIVITY_MAX_RESULTS: '100',
322
+ ADMIN_EMAIL: '',
323
+ API_CALLS_RATE_CHECK: FALSE,
324
+ API_CALLS_RATE_LIMIT: '100',
325
+ API_CALLS_TRIES_LIMIT: '10',
326
+ AUTO_BATCH_MIN: '0',
327
+ BAIL_ON_INTERNAL_ERROR_TRIES: '2',
328
+ BATCH_SIZE: '50',
329
+ CACERTS_PEM: '',
330
+ CACHE_DIR: '',
331
+ CACHE_DISCOVERY_ONLY: TRUE,
332
+ CHARSET: DEFAULT_CHARSET,
333
+ CHANNEL_CUSTOMER_ID: '',
334
+ CLASSROOM_MAX_RESULTS: '0',
335
+ CLIENT_SECRETS_JSON: FN_CLIENT_SECRETS_JSON,
336
+ CLOCK_SKEW_IN_SECONDS: '10',
337
+ CMDLOG: '',
338
+ CMDLOG_MAX_BACKUPS: 5,
339
+ CMDLOG_MAX_KILO_BYTES: 1000,
340
+ CONFIG_DIR: '',
341
+ CONTACT_MAX_RESULTS: '100',
342
+ CSV_INPUT_COLUMN_DELIMITER: ',',
343
+ CSV_INPUT_NO_ESCAPE_CHAR: TRUE,
344
+ CSV_INPUT_QUOTE_CHAR: '\'"\'',
345
+ CSV_INPUT_ROW_FILTER: '',
346
+ CSV_INPUT_ROW_FILTER_MODE: 'allmatch',
347
+ CSV_INPUT_ROW_DROP_FILTER: '',
348
+ CSV_INPUT_ROW_DROP_FILTER_MODE: 'anymatch',
349
+ CSV_INPUT_ROW_LIMIT: '0',
350
+ CSV_OUTPUT_COLUMN_DELIMITER: ',',
351
+ CSV_OUTPUT_CONVERT_CR_NL: FALSE,
352
+ CSV_OUTPUT_NO_ESCAPE_CHAR: FALSE,
353
+ CSV_OUTPUT_FIELD_DELIMITER: "' '",
354
+ CSV_OUTPUT_HEADER_FILTER: '',
355
+ CSV_OUTPUT_HEADER_DROP_FILTER: '',
356
+ CSV_OUTPUT_HEADER_FORCE: '',
357
+ CSV_OUTPUT_HEADER_ORDER: '',
358
+ CSV_OUTPUT_LINE_TERMINATOR: 'lf',
359
+ CSV_OUTPUT_QUOTE_CHAR: '\'"\'',
360
+ CSV_OUTPUT_ROW_FILTER: '',
361
+ CSV_OUTPUT_ROW_FILTER_MODE: 'allmatch',
362
+ CSV_OUTPUT_ROW_DROP_FILTER: '',
363
+ CSV_OUTPUT_ROW_DROP_FILTER_MODE: 'anymatch',
364
+ CSV_OUTPUT_ROW_LIMIT: '0',
365
+ CSV_OUTPUT_SORT_HEADERS: '',
366
+ CSV_OUTPUT_SUBFIELD_DELIMITER: '.',
367
+ CSV_OUTPUT_TIMESTAMP_COLUMN: '',
368
+ CSV_OUTPUT_USERS_AUDIT: FALSE,
369
+ CUSTOMER_ID: MY_CUSTOMER,
370
+ DEBUG_LEVEL: '0',
371
+ DEVICE_MAX_RESULTS: '200',
372
+ DOMAIN: '',
373
+ DRIVE_DIR: '',
374
+ DRIVE_MAX_RESULTS: '1000',
375
+ DRIVE_V3_BETA: FALSE,
376
+ DRIVE_V3_NATIVE_NAMES: TRUE,
377
+ EMAIL_BATCH_SIZE: '50',
378
+ ENABLE_DASA: FALSE,
379
+ ENABLE_GCLOUD_REAUTH: FALSE,
380
+ EVENT_MAX_RESULTS: '250',
381
+ EXTRA_ARGS: '',
382
+ GMAIL_CSE_INCERT_DIR: '',
383
+ GMAIL_CSE_INKEY_DIR: '',
384
+ INTER_BATCH_WAIT: '0',
385
+ LICENSE_MAX_RESULTS: '100',
386
+ LICENSE_SKUS: '',
387
+ MEMBER_MAX_RESULTS: '200',
388
+ MESSAGE_BATCH_SIZE: '50',
389
+ MESSAGE_MAX_RESULTS: '500',
390
+ MOBILE_MAX_RESULTS: '100',
391
+ MULTIPROCESS_POOL_LIMIT: '0',
392
+ NEVER_TIME: NEVER,
393
+ NO_BROWSER: FALSE,
394
+ NO_CACHE: FALSE,
395
+ NO_SHORT_URLS: TRUE,
396
+ NO_UPDATE_CHECK: TRUE,
397
+ NO_VERIFY_SSL: FALSE,
398
+ NUM_TBATCH_THREADS: '2',
399
+ NUM_THREADS: '5',
400
+ OAUTH2_TXT: FN_OAUTH2_TXT,
401
+ OAUTH2SERVICE_JSON: FN_OAUTH2SERVICE_JSON,
402
+ OUTPUT_DATEFORMAT: '',
403
+ OUTPUT_TIMEFORMAT: '',
404
+ PEOPLE_MAX_RESULTS: '100',
405
+ PRINT_AGU_DOMAINS: '',
406
+ PRINT_CROS_OUS: '',
407
+ PRINT_CROS_OUS_AND_CHILDREN: '',
408
+ PROCESS_WAIT_LIMIT: '0',
409
+ QUICK_CROS_MOVE: FALSE,
410
+ QUICK_INFO_USER: FALSE,
411
+ RESELLER_ID: '',
412
+ RETRY_API_SERVICE_NOT_AVAILABLE: FALSE,
413
+ SECTION: '',
414
+ SHOW_API_CALLS_RETRY_DATA: FALSE,
415
+ SHOW_COMMANDS: FALSE,
416
+ SHOW_CONVERT_CR_NL: FALSE,
417
+ SHOW_COUNTS_MIN: '1',
418
+ SHOW_GETTINGS: TRUE,
419
+ SHOW_GETTINGS_GOT_NL: FALSE,
420
+ SHOW_MULTIPROCESS_INFO: FALSE,
421
+ SMTP_FQDN: '',
422
+ SMTP_HOST: '',
423
+ SMTP_USERNAME: '',
424
+ SMTP_PASSWORD: '',
425
+ TLS_MIN_VERSION: 'TLSv1_3',
426
+ TLS_MAX_VERSION: '',
427
+ TIMEZONE: 'utc',
428
+ TODRIVE_CLEARFILTER: FALSE,
429
+ TODRIVE_CLIENTACCESS: FALSE,
430
+ TODRIVE_CONVERSION: TRUE,
431
+ TODRIVE_LOCALCOPY: FALSE,
432
+ TODRIVE_LOCALE: '',
433
+ TODRIVE_NOBROWSER: '',
434
+ TODRIVE_NOEMAIL: '',
435
+ TODRIVE_NO_ESCAPE_CHAR: TRUE,
436
+ TODRIVE_PARENT: 'root',
437
+ TODRIVE_SHEET_TIMESTAMP: 'copy', # copy from TODRIVE_TIMESTAMP
438
+ TODRIVE_SHEET_TIMEFORMAT: 'copy', # copy from TODRIVE_TIMEFORMAT
439
+ TODRIVE_TIMESTAMP: FALSE,
440
+ TODRIVE_TIMEFORMAT: '',
441
+ TODRIVE_TIMEZONE: '',
442
+ TODRIVE_UPLOAD_NODATA: TRUE,
443
+ TODRIVE_USER: '',
444
+ TRUNCATE_CLIENT_ID: FALSE,
445
+ UPDATE_CROS_OU_WITH_ID: FALSE,
446
+ USE_CHAT_ADMIN_ACCESS: FALSE,
447
+ USE_COURSE_OWNER_ACCESS: FALSE,
448
+ USE_PROJECTID_AS_NAME: FALSE,
449
+ USER_MAX_RESULTS: '500',
450
+ USER_SERVICE_ACCOUNT_ACCESS_ONLY: FALSE,
451
+ }
452
+
453
+ Values = {DEBUG_LEVEL: 0}
454
+
455
+ TYPE_BOOLEAN = 'bool'
456
+ TYPE_CHARACTER = 'char'
457
+ TYPE_CHOICE = 'choi'
458
+ TYPE_CHOICE_LIST = 'chol'
459
+ TYPE_DATETIME = 'datm'
460
+ TYPE_DIRECTORY = 'dire'
461
+ TYPE_EMAIL = 'emai'
462
+ TYPE_EMAIL_OPTIONAL = 'emao'
463
+ TYPE_FILE = 'file'
464
+ TYPE_FLOAT = 'floa'
465
+ TYPE_HEADERFILTER = 'heaf'
466
+ TYPE_HEADERFORCE = 'hefo'
467
+ TYPE_HEADERORDER = 'heor'
468
+ TYPE_INTEGER = 'inte'
469
+ TYPE_LANGUAGE = 'lang'
470
+ TYPE_LOCALE = 'locl'
471
+ TYPE_PASSWORD = 'pass'
472
+ TYPE_ROWFILTER = 'rowf'
473
+ TYPE_STRING = 'stri'
474
+ TYPE_STRINGLIST = 'strl'
475
+ TYPE_TIMEZONE = 'tmzn'
476
+
477
+ VAR_TYPE = 'type'
478
+ VAR_ENVVAR = 'enva'
479
+ VAR_CHOICES = 'chod'
480
+ VAR_LIMITS = 'lmit'
481
+ VAR_SFFT = 'sfft'
482
+ VAR_SIGFILE = 'sigf'
483
+ VAR_ACCESS = 'aces'
484
+
485
+ VAR_INFO = {
486
+ ACTIVITY_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 500)},
487
+ ADMIN_EMAIL: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'GA_ADMIN_EMAIL', VAR_LIMITS: (0, None)},
488
+ API_CALLS_RATE_CHECK: {VAR_TYPE: TYPE_BOOLEAN},
489
+ API_CALLS_RATE_LIMIT: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (50, None)},
490
+ API_CALLS_TRIES_LIMIT: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (3, 30)},
491
+ AUTO_BATCH_MIN: {VAR_TYPE: TYPE_INTEGER, VAR_ENVVAR: 'GAM_AUTOBATCH', VAR_LIMITS: (0, 100)},
492
+ BAIL_ON_INTERNAL_ERROR_TRIES: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10)},
493
+ BATCH_SIZE: {VAR_TYPE: TYPE_INTEGER, VAR_ENVVAR: 'GAM_BATCH_SIZE', VAR_LIMITS: (1, 1000)},
494
+ CACERTS_PEM: {VAR_TYPE: TYPE_FILE, VAR_ENVVAR: 'GAM_CA_FILE', VAR_ACCESS: os.R_OK},
495
+ CACHE_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMCACHEDIR'},
496
+ CACHE_DISCOVERY_ONLY: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'allcache.txt', VAR_SFFT: (TRUE, FALSE)},
497
+ CHARSET: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'GAM_CHARSET', VAR_LIMITS: (1, None)},
498
+ CHANNEL_CUSTOMER_ID: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
499
+ CLASSROOM_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, 1000)},
500
+ CLIENT_SECRETS_JSON: {VAR_TYPE: TYPE_FILE, VAR_ENVVAR: 'CLIENTSECRETS', VAR_ACCESS: os.R_OK},
501
+ CLOCK_SKEW_IN_SECONDS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (10, 3600)},
502
+ CMDLOG: {VAR_TYPE: TYPE_FILE, VAR_ACCESS: os.W_OK},
503
+ CMDLOG_MAX_BACKUPS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10)},
504
+ CMDLOG_MAX_KILO_BYTES: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (100, 10000)},
505
+ CONFIG_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMUSERCONFIGDIR'},
506
+ CONTACT_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10000)},
507
+ CSV_INPUT_COLUMN_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
508
+ CSV_INPUT_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN},
509
+ CSV_INPUT_QUOTE_CHAR: {VAR_TYPE: TYPE_CHARACTER},
510
+ CSV_INPUT_ROW_FILTER: {VAR_TYPE: TYPE_ROWFILTER},
511
+ CSV_INPUT_ROW_FILTER_MODE: {VAR_TYPE: TYPE_CHOICE, VAR_CHOICES: {'allmatch': True, 'anymatch': False}},
512
+ CSV_INPUT_ROW_DROP_FILTER: {VAR_TYPE: TYPE_ROWFILTER},
513
+ CSV_INPUT_ROW_DROP_FILTER_MODE: {VAR_TYPE: TYPE_CHOICE, VAR_CHOICES: {'allmatch': True, 'anymatch': False}},
514
+ CSV_INPUT_ROW_LIMIT: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, None)},
515
+ CSV_OUTPUT_COLUMN_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
516
+ CSV_OUTPUT_CONVERT_CR_NL: {VAR_TYPE: TYPE_BOOLEAN},
517
+ CSV_OUTPUT_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN},
518
+ CSV_OUTPUT_FIELD_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
519
+ CSV_OUTPUT_HEADER_FILTER: {VAR_TYPE: TYPE_HEADERFILTER},
520
+ CSV_OUTPUT_HEADER_DROP_FILTER: {VAR_TYPE: TYPE_HEADERFILTER},
521
+ CSV_OUTPUT_HEADER_FORCE: {VAR_TYPE: TYPE_HEADERFORCE},
522
+ CSV_OUTPUT_HEADER_ORDER: {VAR_TYPE: TYPE_HEADERORDER},
523
+ CSV_OUTPUT_LINE_TERMINATOR: {VAR_TYPE: TYPE_CHOICE, VAR_CHOICES: {'cr': '\r', 'lf': '\n', 'crlf': '\r\n'}},
524
+ CSV_OUTPUT_QUOTE_CHAR: {VAR_TYPE: TYPE_CHARACTER},
525
+ CSV_OUTPUT_ROW_FILTER: {VAR_TYPE: TYPE_ROWFILTER},
526
+ CSV_OUTPUT_ROW_FILTER_MODE: {VAR_TYPE: TYPE_CHOICE, VAR_CHOICES: {'allmatch': True, 'anymatch': False}},
527
+ CSV_OUTPUT_ROW_DROP_FILTER: {VAR_TYPE: TYPE_ROWFILTER},
528
+ CSV_OUTPUT_ROW_DROP_FILTER_MODE: {VAR_TYPE: TYPE_CHOICE, VAR_CHOICES: {'allmatch': True, 'anymatch': False}},
529
+ CSV_OUTPUT_ROW_LIMIT: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, None)},
530
+ CSV_OUTPUT_SORT_HEADERS: {VAR_TYPE: TYPE_STRINGLIST},
531
+ CSV_OUTPUT_SUBFIELD_DELIMITER: {VAR_TYPE: TYPE_CHARACTER},
532
+ CSV_OUTPUT_TIMESTAMP_COLUMN: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
533
+ CSV_OUTPUT_USERS_AUDIT: {VAR_TYPE: TYPE_BOOLEAN},
534
+ CUSTOMER_ID: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'CUSTOMER_ID', VAR_LIMITS: (0, None)},
535
+ DEBUG_LEVEL: {VAR_TYPE: TYPE_INTEGER, VAR_SIGFILE: 'debug.gam', VAR_LIMITS: (0, None), VAR_SFFT: ('0', '4')},
536
+ DEVICE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 200)},
537
+ DOMAIN: {VAR_TYPE: TYPE_STRING, VAR_ENVVAR: 'GA_DOMAIN', VAR_LIMITS: (0, None)},
538
+ DRIVE_DIR: {VAR_TYPE: TYPE_DIRECTORY, VAR_ENVVAR: 'GAMDRIVEDIR'},
539
+ DRIVE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
540
+ DRIVE_V3_BETA: {VAR_TYPE: TYPE_BOOLEAN},
541
+ DRIVE_V3_NATIVE_NAMES: {VAR_TYPE: TYPE_BOOLEAN},
542
+ EMAIL_BATCH_SIZE: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 100)},
543
+ ENABLE_DASA: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'enabledasa.txt', VAR_SFFT: (FALSE, TRUE)},
544
+ ENABLE_GCLOUD_REAUTH: {VAR_TYPE: TYPE_BOOLEAN},
545
+ EVENT_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 2500)},
546
+ EXTRA_ARGS: {VAR_TYPE: TYPE_FILE, VAR_SIGFILE: FN_EXTRA_ARGS_TXT, VAR_SFFT: ('', FN_EXTRA_ARGS_TXT), VAR_ACCESS: os.R_OK},
547
+ GMAIL_CSE_INCERT_DIR: {VAR_TYPE: TYPE_DIRECTORY},
548
+ GMAIL_CSE_INKEY_DIR: {VAR_TYPE: TYPE_DIRECTORY},
549
+ INTER_BATCH_WAIT: {VAR_TYPE: TYPE_FLOAT, VAR_LIMITS: (0.0, 60.0)},
550
+ LICENSE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (10, 1000)},
551
+ LICENSE_SKUS: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
552
+ MEMBER_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 200)},
553
+ MESSAGE_BATCH_SIZE: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
554
+ MESSAGE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 10000)},
555
+ MOBILE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 100)},
556
+ MULTIPROCESS_POOL_LIMIT: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (-1, None)},
557
+ NEVER_TIME: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
558
+ NO_BROWSER: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'nobrowser.txt', VAR_SFFT: (FALSE, TRUE)},
559
+ NO_CACHE: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'nocache.txt', VAR_SFFT: (FALSE, TRUE)},
560
+ NO_SHORT_URLS: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'noshorturls.txt', VAR_SFFT: (FALSE, TRUE)},
561
+ NO_UPDATE_CHECK: {VAR_TYPE: TYPE_BOOLEAN},
562
+ NO_VERIFY_SSL: {VAR_TYPE: TYPE_BOOLEAN},
563
+ NUM_TBATCH_THREADS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 1000)},
564
+ NUM_THREADS: {VAR_TYPE: TYPE_INTEGER, VAR_ENVVAR: 'GAM_THREADS', VAR_LIMITS: (1, 1000)},
565
+ OAUTH2_TXT: {VAR_TYPE: TYPE_FILE, VAR_ENVVAR: 'OAUTHFILE', VAR_ACCESS: os.R_OK | os.W_OK},
566
+ OAUTH2SERVICE_JSON: {VAR_TYPE: TYPE_FILE, VAR_ENVVAR: 'OAUTHSERVICEFILE', VAR_ACCESS: os.R_OK | os.W_OK},
567
+ OUTPUT_DATEFORMAT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
568
+ OUTPUT_TIMEFORMAT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
569
+ PEOPLE_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, 1000)},
570
+ PRINT_AGU_DOMAINS: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
571
+ PRINT_CROS_OUS: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
572
+ PRINT_CROS_OUS_AND_CHILDREN: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
573
+ PROCESS_WAIT_LIMIT: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, None)},
574
+ QUICK_CROS_MOVE: {VAR_TYPE: TYPE_BOOLEAN},
575
+ QUICK_INFO_USER: {VAR_TYPE: TYPE_BOOLEAN},
576
+ RESELLER_ID: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
577
+ RETRY_API_SERVICE_NOT_AVAILABLE: {VAR_TYPE: TYPE_BOOLEAN},
578
+ SECTION: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
579
+ SHOW_API_CALLS_RETRY_DATA: {VAR_TYPE: TYPE_BOOLEAN},
580
+ SHOW_COMMANDS: {VAR_TYPE: TYPE_BOOLEAN},
581
+ SHOW_CONVERT_CR_NL: {VAR_TYPE: TYPE_BOOLEAN},
582
+ SHOW_COUNTS_MIN: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (0, 100)},
583
+ SHOW_GETTINGS: {VAR_TYPE: TYPE_BOOLEAN},
584
+ SHOW_GETTINGS_GOT_NL: {VAR_TYPE: TYPE_BOOLEAN},
585
+ SHOW_MULTIPROCESS_INFO: {VAR_TYPE: TYPE_BOOLEAN},
586
+ SMTP_FQDN: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
587
+ SMTP_HOST: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
588
+ SMTP_USERNAME: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
589
+ SMTP_PASSWORD: {VAR_TYPE: TYPE_PASSWORD, VAR_LIMITS: (0, None)},
590
+ TLS_MIN_VERSION: {VAR_TYPE: TYPE_CHOICE, VAR_ENVVAR: 'GAM_TLS_MIN_VERSION', VAR_CHOICES: TLS_CHOICE_MAP},
591
+ TLS_MAX_VERSION: {VAR_TYPE: TYPE_CHOICE, VAR_ENVVAR: 'GAM_TLS_MAX_VERSION', VAR_CHOICES: TLS_CHOICE_MAP},
592
+ TIMEZONE: {VAR_TYPE: TYPE_TIMEZONE},
593
+ TODRIVE_CLEARFILTER: {VAR_TYPE: TYPE_BOOLEAN},
594
+ TODRIVE_CLIENTACCESS: {VAR_TYPE: TYPE_BOOLEAN},
595
+ TODRIVE_CONVERSION: {VAR_TYPE: TYPE_BOOLEAN},
596
+ TODRIVE_LOCALCOPY: {VAR_TYPE: TYPE_BOOLEAN},
597
+ TODRIVE_LOCALE: {VAR_TYPE: TYPE_LOCALE},
598
+ TODRIVE_NOBROWSER: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'nobrowser.txt', VAR_SFFT: (FALSE, TRUE)},
599
+ TODRIVE_NOEMAIL: {VAR_TYPE: TYPE_BOOLEAN, VAR_SIGFILE: 'notdemail.txt', VAR_SFFT: (FALSE, TRUE)},
600
+ TODRIVE_NO_ESCAPE_CHAR: {VAR_TYPE: TYPE_BOOLEAN},
601
+ TODRIVE_PARENT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
602
+ TODRIVE_SHEET_TIMESTAMP: {VAR_TYPE: TYPE_BOOLEAN},
603
+ TODRIVE_SHEET_TIMEFORMAT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
604
+ TODRIVE_TIMESTAMP: {VAR_TYPE: TYPE_BOOLEAN},
605
+ TODRIVE_TIMEFORMAT: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
606
+ TODRIVE_TIMEZONE: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
607
+ TODRIVE_UPLOAD_NODATA: {VAR_TYPE: TYPE_BOOLEAN},
608
+ TODRIVE_USER: {VAR_TYPE: TYPE_STRING, VAR_LIMITS: (0, None)},
609
+ TRUNCATE_CLIENT_ID: {VAR_TYPE: TYPE_BOOLEAN},
610
+ UPDATE_CROS_OU_WITH_ID: {VAR_TYPE: TYPE_BOOLEAN},
611
+ USE_CHAT_ADMIN_ACCESS: {VAR_TYPE: TYPE_BOOLEAN},
612
+ USE_COURSE_OWNER_ACCESS: {VAR_TYPE: TYPE_BOOLEAN},
613
+ USE_PROJECTID_AS_NAME: {VAR_TYPE: TYPE_BOOLEAN},
614
+ USER_MAX_RESULTS: {VAR_TYPE: TYPE_INTEGER, VAR_LIMITS: (1, 500)},
615
+ USER_SERVICE_ACCOUNT_ACCESS_ONLY: {VAR_TYPE: TYPE_BOOLEAN},
616
+ }