kaqing 2.0.74__py3-none-any.whl → 2.0.76__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 kaqing might be problematic. Click here for more details.

adam/commands/command.py CHANGED
@@ -2,7 +2,6 @@ from abc import abstractmethod
2
2
  import copy
3
3
  import subprocess
4
4
  import sys
5
- from typing import Callable
6
5
 
7
6
  from adam.commands.command_helpers import ClusterCommandHelper
8
7
  from adam.repl_state import ReplState, RequiredState
adam/embedded_params.py CHANGED
@@ -1,2 +1,2 @@
1
1
  def config():
2
- return {'app': {'console-endpoint': 'https://{host}/{env}/{app}/static/console/index.html', 'cr': {'cluster-regex': '(.*?-.*?)-.*', 'group': 'ops.c3.ai', 'v': 'v2', 'plural': 'c3cassandras'}, 'label': 'c3__app_id-0', 'login': {'admin-group': '{host}/C3.ClusterAdmin', 'ingress': '{app_id}-k8singr-appleader-001', 'timeout': 5, 'session-check-url': 'https://{host}/{env}/{app}/api/8/C3/userSessionToken', 'cache-creds': True, 'cache-username': True, 'url': 'https://{host}/{env}/{app}', 'another': "You're logged in to {has}. However, for this app, you need to log in to {need}.", 'token-server-url': 'http://localhost:{port}', 'password-max-length': 128}, 'strip': '0'}, 'bash': {'workers': 32}, 'cassandra': {'service-name': 'all-pods-service'}, 'cql': {'workers': 32, 'samples': 3, 'secret': {'cluster-regex': '(.*?-.*?)-.*', 'name': '{cluster}-superuser', 'password-item': 'password'}, 'alter-tables': {'excludes': 'system_auth,system_traces,reaper_db,system_distributed,system_views,system,system_schema,system_virtual_schema', 'gc-grace-periods': '3600,86400,864000,7776000', 'batching': True}}, 'checks': {'compactions-threshold': 250, 'cpu-busy-threshold': 98.0, 'cpu-threshold': 0.0, 'cassandra-data-path': '/c3/cassandra', 'root-disk-threshold': 50, 'cassandra-disk-threshold': 50, 'snapshot-size-cmd': "ls /c3/cassandra/data/data/*/*/snapshots | grep snapshots | sed 's/:$//g' | xargs -I {} du -sk {} | awk '{print $1}' | awk '{s+=$1} END {print s}'", 'snapshot-size-threshold': '40G', 'table-sizes-cmd': "ls -Al /c3/cassandra/data/data/ | awk '{print $9}' | sed 's/\\^r//g' | xargs -I {} du -sk /c3/cassandra/data/data/{}"}, 'get-host-id': {'workers': 32}, 'idps': {'ad': {'email-pattern': '.*@c3.ai', 'uri': 'https://login.microsoftonline.com/53ad779a-93e7-485c-ba20-ac8290d7252b/oauth2/v2.0/authorize?response_type=id_token&response_mode=form_post&client_id=00ff94a8-6b0a-4715-98e0-95490012d818&scope=openid+email+profile&redirect_uri=https%3A%2F%2Fplat.c3ci.cloud%2Fc3%2Fc3%2Foidc%2Flogin&nonce={nonce}&state=EMPTY', 'jwks-uri': 'https://login.microsoftonline.com/common/discovery/keys', 'contact': 'Please contact ted.tran@c3.ai.', 'whitelist-file': '/kaqing/members'}, 'okta': {'default': True, 'email-pattern': '.*@c3iot.com', 'uri': 'https://c3energy.okta.com/oauth2/v1/authorize?response_type=id_token&response_mode=form_post&client_id={client_id}&scope=openid+email+profile+groups&redirect_uri=https%3A%2F%2F{host}%2Fc3%2Fc3%2Foidc%2Flogin&nonce={nonce}&state=EMPTY', 'jwks-uri': 'https://c3energy.okta.com/oauth2/v1/keys'}}, 'issues': {'workers': 32}, 'logs': {'path': '/c3/cassandra/logs/system.log'}, 'medusa': {'restore-auto-complete': False}, 'nodetool': {'workers': 32, 'samples': 3, 'commands_in_line': 40}, 'pg': {'name-pattern': '^{namespace}.*-k8spg-.*', 'excludes': '.helm., -admin-secret', 'agent': {'name': 'ops-pg-agent', 'just-in-time': False, 'timeout': 86400, 'image': 'seanahnsf/kaqing'}, 'default-db': 'postgres', 'default-schema': 'postgres', 'secret': {'endpoint-key': 'postgres-db-endpoint', 'port-key': 'postgres-db-port', 'username-key': 'postgres-admin-username', 'password-key': 'postgres-admin-password'}}, 'pod': {'name': 'ops', 'image': 'seanahnsf/kaqing-cloud', 'sa': {'name': 'ops', 'proto': 'c3', 'additional-cluster-roles': 'c3aiops-k8ssandra-operator'}, 'label-selector': 'run=ops'}, 'preview': {'rows': 10}, 'processes': {'columns': 'pod,cpu,mem', 'header': 'POD_NAME,CPU,MEM/LIMIT'}, 'reaper': {'service-name': 'reaper-service', 'port-forward': {'timeout': 86400, 'local-port': 9001}, 'abort-runs-batch': 10, 'show-runs-batch': 100, 'pod': {'cluster-regex': '(.*?-.*?-.*?-.*?)-.*', 'label-selector': 'k8ssandra.io/reaper={cluster}-reaper'}, 'secret': {'cluster-regex': '(.*?-.*?)-.*', 'name': '{cluster}-reaper-ui', 'password-item': 'password'}}, 'repair': {'log-path': '/home/cassrepair/logs/', 'image': 'ci-registry.c3iot.io/cloudops/cassrepair:2.0.14', 'secret': 'ciregistryc3iotio', 'env': {'interval': 24, 'timeout': 60, 'pr': False, 'runs': 1}}, 'repl': {'start-drive': 'a', 'auto-enter-app': 'c3/c3', 'auto-enter-only-cluster': True}, 'status': {'columns': 'status,address,load,tokens,owns,host_id,gossip,compactions', 'header': '--,Address,Load,Tokens,Owns,Host ID,GOSSIP,COMPACTIONS'}, 'storage': {'columns': 'pod,volume_root,volume_cassandra,snapshots,data,compactions', 'header': 'POD_NAME,VOLUME /,VOLUME CASS,SNAPSHOTS,DATA,COMPACTIONS'}, 'watch': {'auto': 'rollout', 'timeout': 3600, 'interval': 10}, 'debug': False, 'debugs': {'timings': False, 'exit-on-error': False, 'show-parallelism': False}}
2
+ return {'app': {'console-endpoint': 'https://{host}/{env}/{app}/static/console/index.html', 'cr': {'cluster-regex': '(.*?-.*?)-.*', 'group': 'ops.c3.ai', 'v': 'v2', 'plural': 'c3cassandras'}, 'label': 'c3__app_id-0', 'login': {'admin-group': '{host}/C3.ClusterAdmin', 'ingress': '{app_id}-k8singr-appleader-001', 'timeout': 5, 'session-check-url': 'https://{host}/{env}/{app}/api/8/C3/userSessionToken', 'cache-creds': True, 'cache-username': True, 'url': 'https://{host}/{env}/{app}', 'another': "You're logged in to {has}. However, for this app, you need to log in to {need}.", 'token-server-url': 'http://localhost:{port}', 'password-max-length': 128}, 'strip': '0'}, 'audit': {'endpoint': 'https://sex7je4h2e.execute-api.us-west-2.amazonaws.com/prod', 'workers': 3, 'timeout': 10}, 'bash': {'workers': 32}, 'cassandra': {'service-name': 'all-pods-service'}, 'cql': {'workers': 32, 'samples': 3, 'secret': {'cluster-regex': '(.*?-.*?)-.*', 'name': '{cluster}-superuser', 'password-item': 'password'}, 'alter-tables': {'excludes': 'system_auth,system_traces,reaper_db,system_distributed,system_views,system,system_schema,system_virtual_schema', 'gc-grace-periods': '3600,86400,864000,7776000', 'batching': True}}, 'checks': {'compactions-threshold': 250, 'cpu-busy-threshold': 98.0, 'cpu-threshold': 0.0, 'cassandra-data-path': '/c3/cassandra', 'root-disk-threshold': 50, 'cassandra-disk-threshold': 50, 'snapshot-size-cmd': "ls /c3/cassandra/data/data/*/*/snapshots | grep snapshots | sed 's/:$//g' | xargs -I {} du -sk {} | awk '{print $1}' | awk '{s+=$1} END {print s}'", 'snapshot-size-threshold': '40G', 'table-sizes-cmd': "ls -Al /c3/cassandra/data/data/ | awk '{print $9}' | sed 's/\\^r//g' | xargs -I {} du -sk /c3/cassandra/data/data/{}"}, 'get-host-id': {'workers': 32}, 'idps': {'ad': {'email-pattern': '.*@c3.ai', 'uri': 'https://login.microsoftonline.com/53ad779a-93e7-485c-ba20-ac8290d7252b/oauth2/v2.0/authorize?response_type=id_token&response_mode=form_post&client_id=00ff94a8-6b0a-4715-98e0-95490012d818&scope=openid+email+profile&redirect_uri=https%3A%2F%2Fplat.c3ci.cloud%2Fc3%2Fc3%2Foidc%2Flogin&nonce={nonce}&state=EMPTY', 'jwks-uri': 'https://login.microsoftonline.com/common/discovery/keys', 'contact': 'Please contact ted.tran@c3.ai.', 'whitelist-file': '/kaqing/members'}, 'okta': {'default': True, 'email-pattern': '.*@c3iot.com', 'uri': 'https://c3energy.okta.com/oauth2/v1/authorize?response_type=id_token&response_mode=form_post&client_id={client_id}&scope=openid+email+profile+groups&redirect_uri=https%3A%2F%2F{host}%2Fc3%2Fc3%2Foidc%2Flogin&nonce={nonce}&state=EMPTY', 'jwks-uri': 'https://c3energy.okta.com/oauth2/v1/keys'}}, 'issues': {'workers': 32}, 'logs': {'path': '/c3/cassandra/logs/system.log'}, 'medusa': {'restore-auto-complete': False}, 'nodetool': {'workers': 32, 'samples': 3, 'commands_in_line': 40}, 'pg': {'name-pattern': '^{namespace}.*-k8spg-.*', 'excludes': '.helm., -admin-secret', 'agent': {'name': 'ops-pg-agent', 'just-in-time': False, 'timeout': 86400, 'image': 'seanahnsf/kaqing'}, 'default-db': 'postgres', 'default-schema': 'postgres', 'secret': {'endpoint-key': 'postgres-db-endpoint', 'port-key': 'postgres-db-port', 'username-key': 'postgres-admin-username', 'password-key': 'postgres-admin-password'}}, 'pod': {'name': 'ops', 'image': 'seanahnsf/kaqing-cloud', 'sa': {'name': 'ops', 'proto': 'c3', 'additional-cluster-roles': 'c3aiops-k8ssandra-operator'}, 'label-selector': 'run=ops'}, 'preview': {'rows': 10}, 'processes': {'columns': 'pod,cpu,mem', 'header': 'POD_NAME,CPU,MEM/LIMIT'}, 'reaper': {'service-name': 'reaper-service', 'port-forward': {'timeout': 86400, 'local-port': 9001}, 'abort-runs-batch': 10, 'show-runs-batch': 100, 'pod': {'cluster-regex': '(.*?-.*?-.*?-.*?)-.*', 'label-selector': 'k8ssandra.io/reaper={cluster}-reaper'}, 'secret': {'cluster-regex': '(.*?-.*?)-.*', 'name': '{cluster}-reaper-ui', 'password-item': 'password'}}, 'repair': {'log-path': '/home/cassrepair/logs/', 'image': 'ci-registry.c3iot.io/cloudops/cassrepair:2.0.14', 'secret': 'ciregistryc3iotio', 'env': {'interval': 24, 'timeout': 60, 'pr': False, 'runs': 1}}, 'repl': {'start-drive': 'a', 'auto-enter-app': 'c3/c3', 'auto-enter-only-cluster': True}, 'status': {'columns': 'status,address,load,tokens,owns,host_id,gossip,compactions', 'header': '--,Address,Load,Tokens,Owns,Host ID,GOSSIP,COMPACTIONS'}, 'storage': {'columns': 'pod,volume_root,volume_cassandra,snapshots,data,compactions', 'header': 'POD_NAME,VOLUME /,VOLUME CASS,SNAPSHOTS,DATA,COMPACTIONS'}, 'watch': {'auto': 'rollout', 'timeout': 3600, 'interval': 10}, 'debug': False, 'debugs': {'timings': False, 'exit-on-error': False, 'show-parallelism': False}}
adam/repl.py CHANGED
@@ -1,10 +1,13 @@
1
+ import getpass
1
2
  import os
2
3
  import re
3
4
  import time
4
5
  import traceback
5
6
  import click
7
+ import concurrent
6
8
  from prompt_toolkit.completion import NestedCompleter
7
9
  from prompt_toolkit.key_binding import KeyBindings
10
+ import requests
8
11
 
9
12
  from adam.cli_group import cli
10
13
  from adam.commands.command import Command
@@ -92,73 +95,87 @@ def enter_repl(state: ReplState):
92
95
  def _(event):
93
96
  event.app.current_buffer.text = ''
94
97
 
95
- # use sorted command list only for auto-completion
96
- sorted_cmds = sorted(cmd_list, key=lambda cmd: cmd.command())
97
- while True:
98
- try:
99
- completer = NestedCompleter.from_nested_dict({})
100
- if not state.bash_session:
101
- completions = {}
102
- # app commands are available only on a: drive
103
- if state.device == ReplState.A and state.app_app:
104
- completions = Apps(path='apps.yaml').commands()
105
-
106
- for cmd in sorted_cmds:
107
- s1 = time.time()
108
- try:
109
- completions = deep_sort_dict(deep_merge_dicts(completions, cmd.completion(state)))
110
- finally:
111
- if Config().get('debugs.timings', False):
112
- log2(f'Timing auto-completion-calc {cmd.command()}: {time.time() - s1:.2f}')
113
-
114
- # print(json.dumps(completions, indent=4))
115
- completer = NestedCompleter.from_nested_dict(completions)
116
-
117
- cmd = session.prompt(prompt_msg(), completer=completer, key_bindings=kb)
118
- s0 = time.time()
119
-
120
- if state.bash_session:
121
- if cmd.strip(' ') == 'exit':
122
- state.exit_bash()
123
- continue
124
-
125
- cmd = f'bash {cmd}'
126
-
127
- if cmd and cmd.strip(' ') and not cmds.run(cmd, state):
128
- c_sql_tried = False
129
- if state.device == ReplState.P:
130
- pg = PostgresSession(state.namespace, state.pg_path)
131
- if pg.db:
98
+ with concurrent.futures.ThreadPoolExecutor(max_workers=Config().get('audit.workers', 3)) as executor:
99
+ # use sorted command list only for auto-completion
100
+ sorted_cmds = sorted(cmd_list, key=lambda cmd: cmd.command())
101
+ while True:
102
+ try:
103
+ completer = NestedCompleter.from_nested_dict({})
104
+ if not state.bash_session:
105
+ completions = {}
106
+ # app commands are available only on a: drive
107
+ if state.device == ReplState.A and state.app_app:
108
+ completions = Apps(path='apps.yaml').commands()
109
+
110
+ for cmd in sorted_cmds:
111
+ s1 = time.time()
112
+ try:
113
+ completions = deep_sort_dict(deep_merge_dicts(completions, cmd.completion(state)))
114
+ finally:
115
+ if Config().get('debugs.timings', False):
116
+ log2(f'Timing auto-completion-calc {cmd.command()}: {time.time() - s1:.2f}')
117
+
118
+ # print(json.dumps(completions, indent=4))
119
+ completer = NestedCompleter.from_nested_dict(completions)
120
+
121
+ cmd = session.prompt(prompt_msg(), completer=completer, key_bindings=kb)
122
+ s0 = time.time()
123
+
124
+ if state.bash_session:
125
+ if cmd.strip(' ') == 'exit':
126
+ state.exit_bash()
127
+ continue
128
+
129
+ cmd = f'bash {cmd}'
130
+
131
+ if cmd and cmd.strip(' ') and not cmds.run(cmd, state):
132
+ c_sql_tried = False
133
+ if state.device == ReplState.P:
134
+ pg = PostgresSession(state.namespace, state.pg_path)
135
+ if pg.db:
136
+ c_sql_tried = True
137
+ cmd = f'pg {cmd}'
138
+ cmds.run(cmd, state)
139
+ elif state.device == ReplState.A:
140
+ if state.app_app:
141
+ c_sql_tried = True
142
+ cmd = f'app {cmd}'
143
+ cmds.run(cmd, state)
144
+ elif state.sts:
132
145
  c_sql_tried = True
133
- cmd = f'pg {cmd}'
146
+ cmd = f'cql {cmd}'
134
147
  cmds.run(cmd, state)
135
- elif state.device == ReplState.A:
136
- if state.app_app:
137
- c_sql_tried = True
138
- cmd = f'app {cmd}'
139
- cmds.run(cmd, state)
140
- elif state.sts:
141
- c_sql_tried = True
142
- cmd = f'cql {cmd}'
143
- cmds.run(cmd, state)
144
-
145
- if not c_sql_tried:
146
- log2(f'* Invalid command: {cmd}')
147
- log2()
148
- lines = [c.help(state) for c in cmd_list if c.help(state)]
149
- log2(lines_to_tabular(lines, separator='\t'))
150
- except EOFError: # Handle Ctrl+D (EOF) for graceful exit
151
- break
152
- except Exception as e:
153
- if Config().get('debugs.exit-on-error', False):
154
- raise e
155
- else:
156
- log2(e)
157
- Config().debug(traceback.format_exc())
158
- finally:
159
- Config().clear_wait_log_flag()
160
- if Config().get('debugs.timings', False) and 'cmd' in locals() and 's0' in locals():
161
- log2(f'Timing command {cmd}: {time.time() - s0:.2f}')
148
+
149
+ if not c_sql_tried:
150
+ log2(f'* Invalid command: {cmd}')
151
+ log2()
152
+ lines = [c.help(state) for c in cmd_list if c.help(state)]
153
+ log2(lines_to_tabular(lines, separator='\t'))
154
+ except EOFError: # Handle Ctrl+D (EOF) for graceful exit
155
+ break
156
+ except Exception as e:
157
+ if Config().get('debugs.exit-on-error', False):
158
+ raise e
159
+ else:
160
+ log2(e)
161
+ Config().debug(traceback.format_exc())
162
+ finally:
163
+ Config().clear_wait_log_flag()
164
+ if Config().get('debugs.timings', False) and 'cmd' in locals() and 's0' in locals():
165
+ log2(f'Timing command {cmd}: {time.time() - s0:.2f}')
166
+
167
+ # offload audit logging
168
+ if cmd:
169
+ executor.submit(audit_log, cmd, state)
170
+
171
+ def audit_log(cmd: str, state: ReplState):
172
+ payload = {"line": cmd, "ts": time.time(), "cluster": state.namespace if state.namespace else 'NA', "user": getpass.getuser()}
173
+ audit_endpoint = Config().get("audit.endpoint", "https://sex7je4h2e.execute-api.us-west-2.amazonaws.com/prod")
174
+ response = requests.post(audit_endpoint, json=payload, timeout=Config().get("audit.timeout", 10))
175
+ if response.status_code in [200, 201]:
176
+ Config().debug(response.text)
177
+ else:
178
+ log2(f"Error: {response.status_code} {response.text}")
162
179
 
163
180
  @cli.command(context_settings=dict(ignore_unknown_options=True, allow_extra_args=True), cls=ClusterCommandHelper, help="Enter interactive shell.")
164
181
  @click.option('--kubeconfig', '-k', required=False, metavar='path', help='path to kubeconfig file')
adam/utils.py CHANGED
@@ -9,7 +9,6 @@ import os
9
9
  from pathlib import Path
10
10
  import random
11
11
  import string
12
- from typing import cast
13
12
  from dateutil import parser
14
13
  import subprocess
15
14
  import sys
adam/version.py CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
- __version__ = "2.0.74" #: the working version
4
+ __version__ = "2.0.76" #: the working version
5
5
  __release__ = "1.0.0" #: the release version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kaqing
3
- Version: 2.0.74
3
+ Version: 2.0.76
4
4
  Summary: UNKNOWN
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -6,15 +6,15 @@ adam/cli.py,sha256=03pIZdomAu7IL-GSP6Eun_PKwwISShRAmfx6eVRPGC0,458
6
6
  adam/cli_group.py,sha256=W3zy1BghCtVcEXizq8fBH-93ZRVVwgAyGPzy0sHno1Y,593
7
7
  adam/config.py,sha256=hDxd86MbKVVKoHhTT077L3YRKYcr0i6xVADLlnoE684,2818
8
8
  adam/embedded_apps.py,sha256=lKPx63mKzJbNmwz0rgL4gF76M9fDGxraYTtNAIGnZ_s,419
9
- adam/embedded_params.py,sha256=_9tBKpkSzBfzm-s3tUgZs8DcSVBnPA1iumG0ZRCbZIs,4586
9
+ adam/embedded_params.py,sha256=ajRQgWmPbomay3GnncDby_qV0GezKOUaDVcuMMuE7Xc,4701
10
10
  adam/log.py,sha256=gg5DK52wLPc9cjykeh0WFHyAk1qI3HEpGaAK8W2dzXY,1146
11
11
  adam/pod_exec_result.py,sha256=nq0xnCNOpUGBSijGF0H-YNrwBc9vUQs4DkvLMIFS5LQ,951
12
- adam/repl.py,sha256=hY1IC7GMy5268BL5i7EUlsKDBiRnqVnYjqmToMooXKE,7580
12
+ adam/repl.py,sha256=Cz3NBmymm95GPE5yuTB0lOUpW5F_isSNONQOJX8U4QQ,8645
13
13
  adam/repl_commands.py,sha256=WA90Rl27Juctzr3U3kfCDk5N-oYMKlfWbZeafUgk7k0,4723
14
14
  adam/repl_session.py,sha256=uIogcvWBh7wd8QQ-p_JgLsyJ8YJgINw5vOd6JIsd7Vo,472
15
15
  adam/repl_state.py,sha256=nZO5CucSIGz68f4JreadGphRzMXPUzkTn-4XcoJJOug,8643
16
- adam/utils.py,sha256=2DoWsrcaioFFH0-RjT30qelVRPUJqCGTfz_ucfE7F8g,7406
17
- adam/version.py,sha256=gCXXK554cKmHMEfuL6JNYOsMpaQWaL0LbzwFdCVd5rk,139
16
+ adam/utils.py,sha256=sbsNZP3qGJtb6fXCa4dDXHry5ay9ev583cCZIQzy07s,7382
17
+ adam/version.py,sha256=WeUrN4studOdyV11lSnlwzu5_hK6ci6y_W2DkEKd2uA,139
18
18
  adam/checks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  adam/checks/check.py,sha256=Qopr3huYcMu2bzQgb99dEUYjFzkjKHRI76S6KA9b9Rk,702
20
20
  adam/checks/check_context.py,sha256=FEHkQ32jY1EDopQ2uYWqy9v7aEEX1orLpJWhopwAlh4,402
@@ -54,7 +54,7 @@ adam/commands/bash.py,sha256=1O9cCl9JHQdttqNAgdB44rO0NjCqHzHv4psAEQMJcjw,2714
54
54
  adam/commands/cd.py,sha256=3Iaerv88wPe5DgiRBIVRmKb8TIjEZrUHz8gx88WOA6s,4633
55
55
  adam/commands/check.py,sha256=853FPfgTMGxQXI_5UaPAtzaSWB_BvEVm48EkJhsHe4w,2181
56
56
  adam/commands/cli_commands.py,sha256=PEEyrG9yz7RAEZwHbbuFpyE3fVi8vrIWbr0d1H0Gp9o,3620
57
- adam/commands/command.py,sha256=Ph7IduCTGQ04dcwNegl1ekYbqCzOwAOYeWZVIRWnKyU,3958
57
+ adam/commands/command.py,sha256=Xq5-nWLcWDq5w9nw-U78RlbwTqHeXchydBcb5rQ7Cj8,3930
58
58
  adam/commands/command_helpers.py,sha256=leOJJK1UXczNTJHN9TGMCbIpUpmpreULvQ-TvnsYS7w,1134
59
59
  adam/commands/commands_utils.py,sha256=ShUcxtDSd9B3NM0GDj3NBvKdmjCGY8qXgeUJpzNF63E,3122
60
60
  adam/commands/cp.py,sha256=dyQViRDPNqsKRkxPb7WyEVIBNw7YB6IfYa2q3VtfzyA,3107
@@ -177,8 +177,8 @@ adam/sso/idp.py,sha256=fvcwUw_URTgsO6ySaqTIw0zQT2qRO1IPSGhf6rPtybo,5804
177
177
  adam/sso/idp_login.py,sha256=QAtCUeDTVWliJy40RK_oac8Vgybr13xH8wzeBoxPaa8,1754
178
178
  adam/sso/idp_session.py,sha256=9BUHNRf70u4rVKrVY1HKPOEmOviXvkjam8WJxmXSKIM,1735
179
179
  adam/sso/sso_config.py,sha256=5N8WZgIJQBtHUy585XLRWKjpU87_v6QluyNK9E27D5s,2459
180
- kaqing-2.0.74.dist-info/METADATA,sha256=JTLzfUnvQyD05-Am6mRe6ZrgqFEmJL84A0S6jBmMP6w,132
181
- kaqing-2.0.74.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
182
- kaqing-2.0.74.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
183
- kaqing-2.0.74.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
184
- kaqing-2.0.74.dist-info/RECORD,,
180
+ kaqing-2.0.76.dist-info/METADATA,sha256=NITUSDqF2dyPFqgx7wZ-b54EE_xQ0g0W8eF5eZ0wJ80,132
181
+ kaqing-2.0.76.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
182
+ kaqing-2.0.76.dist-info/entry_points.txt,sha256=SkzhuQJUWsXOzHeZ5TgQ2c3_g53UGK23zzJU_JTZOZI,39
183
+ kaqing-2.0.76.dist-info/top_level.txt,sha256=8_2PZkwBb-xDcnc8a2rAbQeJhXKXskc7zTP7pSPa1fw,5
184
+ kaqing-2.0.76.dist-info/RECORD,,