gibson-cli 0.7.4__py3-none-any.whl → 0.7.6__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.
Files changed (46) hide show
  1. bin/gibson +26 -0
  2. gibson/api/BaseApi.py +1 -1
  3. gibson/api/Cli.py +1 -1
  4. gibson/command/Build.py +6 -6
  5. gibson/command/Conf.py +1 -2
  6. gibson/command/Count.py +1 -1
  7. gibson/command/Dev.py +5 -8
  8. gibson/command/Forget.py +1 -1
  9. gibson/command/Help.py +112 -47
  10. gibson/command/Modify.py +2 -4
  11. gibson/command/Question.py +2 -4
  12. gibson/command/Remove.py +2 -2
  13. gibson/command/Show.py +3 -5
  14. gibson/command/Version.py +1 -1
  15. gibson/command/auth/Auth.py +3 -3
  16. gibson/command/code/Code.py +10 -10
  17. gibson/command/code/Entity.py +67 -33
  18. gibson/command/code/Model.py +2 -4
  19. gibson/command/code/Schema.py +9 -8
  20. gibson/command/code/Test.py +1 -3
  21. gibson/command/importer/Import.py +8 -8
  22. gibson/command/importer/OpenApi.py +1 -1
  23. gibson/command/list/Entities.py +25 -37
  24. gibson/command/list/List.py +3 -3
  25. gibson/command/list/Projects.py +23 -13
  26. gibson/command/new/Module.py +2 -2
  27. gibson/command/new/New.py +4 -4
  28. gibson/command/rename/Rename.py +1 -1
  29. gibson/command/rewrite/Rewrite.py +1 -1
  30. gibson/core/Colors.py +34 -7
  31. gibson/core/CommandRouter.py +0 -1
  32. gibson/core/Configuration.py +8 -3
  33. gibson/core/Conversation.py +17 -24
  34. gibson/core/Diff.py +34 -0
  35. gibson/core/Memory.py +1 -0
  36. gibson/core/Spinner.py +8 -3
  37. gibson/display/Header.py +3 -1
  38. gibson/display/WorkspaceHeader.py +2 -2
  39. gibson/display/tests/test_display_Header.py +2 -2
  40. gibson/display/tests/test_display_WorkspaceHeader.py +1 -1
  41. {gibson_cli-0.7.4.dist-info → gibson_cli-0.7.6.dist-info}/METADATA +16 -7
  42. {gibson_cli-0.7.4.dist-info → gibson_cli-0.7.6.dist-info}/RECORD +45 -44
  43. {gibson_cli-0.7.4.dist-info → gibson_cli-0.7.6.dist-info}/WHEEL +1 -1
  44. gibson/command/WarGames.py +0 -34
  45. {gibson_cli-0.7.4.dist-info → gibson_cli-0.7.6.dist-info}/entry_points.txt +0 -0
  46. {gibson_cli-0.7.4.dist-info → gibson_cli-0.7.6.dist-info}/top_level.txt +0 -0
@@ -10,10 +10,9 @@ from gibson.conf.Version import Version
10
10
 
11
11
 
12
12
  class Conversation:
13
- DEFAULT_DELAY = 0.01
13
+ DEFAULT_DELAY = 0
14
14
 
15
15
  def __init__(self):
16
- self.__delay = self.DEFAULT_DELAY
17
16
  self.__mute = False
18
17
 
19
18
  def c64_boot_loading(self):
@@ -101,7 +100,7 @@ class Conversation:
101
100
  def message_configuration_added(self, config_path, section):
102
101
  self.type(f"I store my configuration in this file:\n\n{config_path}\n\n")
103
102
  self.type("And I just added this section to the configuration:\n\n")
104
- self.type(f"{section}\n", delay=0.002)
103
+ self.type(f"{section}\n")
105
104
  return self
106
105
 
107
106
  def message_customize_settings(self):
@@ -133,10 +132,10 @@ class Conversation:
133
132
  self.type("Login failed, please try again.\n")
134
133
  return self
135
134
 
136
- def message_login_required(self):
135
+ def message_login_required(self, configuration):
137
136
  self.type("You need to login before performing this action.\n")
138
137
  self.type(
139
- f"Run {Colors.command('gibson')} {Colors.subcommand('auth')} {Colors.argument('login')} and try again.\n"
138
+ f"Run {Colors.command(configuration.command, 'auth', args='login')} and try again.\n"
140
139
  )
141
140
  return self
142
141
 
@@ -198,15 +197,18 @@ class Conversation:
198
197
  else:
199
198
  self.type("Back...again? You know what to do.\n\n")
200
199
 
201
- def not_sure_no_entity(self, project_name, entity_name):
202
- self.display_project(project_name)
203
- self.type(f'Not sure what to do. "{entity_name}" does not exist.\n\n')
200
+ def not_sure_no_entity(self, configuration, entity_name):
201
+ self.display_project(configuration.project.name)
202
+ self.type(
203
+ f"No entity named {Colors.entity(entity_name)} exists. You can create it by executing:\n\n"
204
+ )
205
+ self.type(
206
+ f"{Colors.command(configuration.command, 'code', args='entity', inputs=entity_name)}\n\n"
207
+ )
204
208
  return self
205
209
 
206
210
  def nothing_to_list(self, whats_being_listed):
207
- self.type(
208
- f"There is only so much I can do. No {whats_being_listed}, nothing to list."
209
- )
211
+ self.type(f"No {whats_being_listed} to list.")
210
212
  self.newline()
211
213
 
212
214
  def pause(self):
@@ -216,17 +218,17 @@ class Conversation:
216
218
  self.type(f'\nA project named "{project_name}" already exists.\n')
217
219
  self.newline()
218
220
 
219
- def project_api_key_not_set(self, domain):
221
+ def project_api_key_not_set(self, configuration):
220
222
  self.type(
221
223
  f"\nYou have not set the API key for your project. Please set the API key by executing:\n"
222
224
  )
223
225
  self.newline()
224
226
  self.type(
225
- f"{Colors.command('gibson')} {Colors.subcommand('conf')} {Colors.argument('api::key')} {Colors.input('[API key]')}\n"
227
+ f"{Colors.command(configuration.command, 'conf', args='api::key', inputs='[API key]')}\n"
226
228
  )
227
229
  self.newline()
228
230
  self.type(
229
- f"If you don't have an API key, you can get one by creating a new project at {Colors.link(domain + '/chat')}\n"
231
+ f"If you don't have an API key, you can get one by creating a new project at {Colors.link(configuration.app_domain() + '/chat')}\n"
230
232
  )
231
233
  self.newline()
232
234
 
@@ -272,10 +274,6 @@ class Conversation:
272
274
  print("+" + "-" * 75 + "+\n")
273
275
  return self
274
276
 
275
- def set_delay(self, delay):
276
- self.__delay = delay
277
- return self
278
-
279
277
  def spin(self, thread: threading.Thread):
280
278
  animation = self.spinner()
281
279
  while thread.is_alive():
@@ -289,15 +287,10 @@ class Conversation:
289
287
  for cursor in "|/-\\":
290
288
  yield cursor
291
289
 
292
- def type(self, message, delay=None):
290
+ def type(self, message, delay=DEFAULT_DELAY):
293
291
  if self.__mute is True:
294
292
  return self
295
293
 
296
- if delay is None:
297
- delay = self.DEFAULT_DELAY
298
- if self.__delay is not None:
299
- delay = self.__delay
300
-
301
294
  try:
302
295
  for char in message:
303
296
  sys.stdout.write(char)
gibson/core/Diff.py ADDED
@@ -0,0 +1,34 @@
1
+ from difflib import Differ
2
+
3
+ from gibson.core.Colors import green, red
4
+
5
+
6
+ # Highlights all lines as additions with a green + at the beginning
7
+ # This keeps visual clutter to a minimum when showing the diff of an entirely new entity
8
+ def additions(input: str):
9
+ lines = input.splitlines(keepends=True)
10
+ result = []
11
+ for line in lines:
12
+ result.append(f"{green('+')} {line}")
13
+ return "".join(result)
14
+
15
+
16
+ # Highlights the diffs between two strings, showing the additions and removals as distinct colored lines
17
+ def diff(original: str, modified: str):
18
+ diffs = list(
19
+ Differ().compare(
20
+ original.splitlines(keepends=True), modified.splitlines(keepends=True)
21
+ )
22
+ )
23
+
24
+ result = []
25
+ for line in diffs:
26
+ if line.startswith("+ "):
27
+ result.append(green(line))
28
+ elif line.startswith("- "):
29
+ result.append(red(line))
30
+ elif line.startswith(" "):
31
+ result.append(line)
32
+ # Ignore lines starting with '? ' as they are not needed for this highlighting
33
+
34
+ return "".join(result)
gibson/core/Memory.py CHANGED
@@ -106,6 +106,7 @@ class Memory:
106
106
  def __remember(self, file, data):
107
107
  with open(file, "w") as f:
108
108
  json.dump(data, f, indent=2)
109
+ f.write("\n")
109
110
 
110
111
  return self
111
112
 
gibson/core/Spinner.py CHANGED
@@ -4,7 +4,7 @@ from yaspin.spinners import Spinners
4
4
 
5
5
  class Spinner:
6
6
  def __init__(
7
- self, start_text, success_text=None, fail_text=None, disappearing=False
7
+ self, start_text="", success_text=None, fail_text=None, disappearing=False
8
8
  ):
9
9
  self.success_text = success_text or start_text
10
10
  self.fail_text = fail_text or start_text
@@ -32,6 +32,11 @@ class Spinner:
32
32
  self.spinner.stop()
33
33
 
34
34
 
35
- class ComputingSpinner(Spinner):
35
+ class DisappearingSpinner(Spinner):
36
+ def __init__(self, start_text="", success_text=None, fail_text=None):
37
+ super().__init__(start_text, success_text, fail_text, disappearing=True)
38
+
39
+
40
+ class ComputingSpinner(DisappearingSpinner):
36
41
  def __init__(self):
37
- super().__init__("Gibson is computing...", disappearing=True)
42
+ super().__init__("Gibson is computing...")
gibson/display/Header.py CHANGED
@@ -1,9 +1,11 @@
1
1
  import math
2
2
 
3
+ from gibson.core.Colors import bold
4
+
3
5
 
4
6
  class Header:
5
7
  def render(self, text, colorizer=None):
6
8
  output = text if colorizer is None else colorizer(text)
7
9
  half = math.floor((78 - len(text)) / 2) # 80 line length - 2 spaces
8
- header = "/" * half + f" {output} " + "/" * half
10
+ header = "/" * half + f" {bold(output)} " + "/" * half
9
11
  return header
@@ -5,7 +5,7 @@ class WorkspaceHeader:
5
5
  def render(self, project_name):
6
6
  return (
7
7
  f"Project {project_name}".ljust(50)
8
- + " " * 12
9
- + "[PAIR PROGRAMMER]\n"
8
+ + " " * 14
9
+ + f"{Colors.bold('PAIR PROGRAMMER')}\n"
10
10
  + "-" * 79
11
11
  ).replace(project_name, Colors.project(project_name))
@@ -5,8 +5,8 @@ from gibson.display.Header import Header
5
5
  def test_render():
6
6
  text = "abc def ghi"
7
7
  assert Header().render(text) == (
8
- "///////////////////////////////// abc def ghi /////////////////////////////////"
8
+ f"///////////////////////////////// {Colors.bold(text)} /////////////////////////////////"
9
9
  )
10
10
  assert Header().render(text, Colors.red) == (
11
- f"///////////////////////////////// {Colors.red(text)} /////////////////////////////////"
11
+ f"///////////////////////////////// {Colors.bold(Colors.red(text))} /////////////////////////////////"
12
12
  )
@@ -4,6 +4,6 @@ from gibson.display.WorkspaceHeader import WorkspaceHeader
4
4
 
5
5
  def test_render():
6
6
  assert WorkspaceHeader().render("abc def ghi") == (
7
- f"""Project {Colors.project("abc def ghi")} [PAIR PROGRAMMER]
7
+ f"""Project {Colors.project("abc def ghi")} {Colors.bold("PAIR PROGRAMMER")}
8
8
  -------------------------------------------------------------------------------"""
9
9
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gibson-cli
3
- Version: 0.7.4
3
+ Version: 0.7.6
4
4
  Summary: Gibson Command Line Interface
5
5
  Author-email: GibsonAI <noc@gibsonai.com>
6
6
  Project-URL: Homepage, https://gibsonai.com/
@@ -20,10 +20,10 @@ Requires-Dist: certifi==2024.2.2
20
20
  Requires-Dist: charset-normalizer==3.3.2
21
21
  Requires-Dist: click==8.1.7
22
22
  Requires-Dist: dnspython==2.6.1
23
- Requires-Dist: email-validator==2.1.1
23
+ Requires-Dist: email_validator==2.1.1
24
24
  Requires-Dist: exceptiongroup==1.2.0
25
25
  Requires-Dist: Faker==24.0.0
26
- Requires-Dist: faker-sqlalchemy==0.10.2208140
26
+ Requires-Dist: faker_sqlalchemy==0.10.2208140
27
27
  Requires-Dist: fastapi==0.111.0
28
28
  Requires-Dist: fastapi-cli==0.0.2
29
29
  Requires-Dist: h11==0.14.0
@@ -40,7 +40,7 @@ Requires-Dist: orjson==3.10.3
40
40
  Requires-Dist: packaging==23.2
41
41
  Requires-Dist: pluggy==1.4.0
42
42
  Requires-Dist: pydantic==2.6.1
43
- Requires-Dist: pydantic-core==2.16.2
43
+ Requires-Dist: pydantic_core==2.16.2
44
44
  Requires-Dist: pyfiglet==1.0.2
45
45
  Requires-Dist: Pygments==2.18.0
46
46
  Requires-Dist: PyMySQL==1.1.0
@@ -50,15 +50,16 @@ Requires-Dist: python-dotenv==1.0.1
50
50
  Requires-Dist: python-multipart==0.0.9
51
51
  Requires-Dist: PyYAML==6.0.1
52
52
  Requires-Dist: requests==2.31.0
53
- Requires-Dist: rich==13.7.1
53
+ Requires-Dist: rich==13.9.2
54
54
  Requires-Dist: shellingham==1.5.4
55
55
  Requires-Dist: six==1.16.0
56
56
  Requires-Dist: sniffio==1.3.1
57
57
  Requires-Dist: SQLAlchemy==1.4.41
58
58
  Requires-Dist: starlette==0.37.2
59
+ Requires-Dist: textual==0.83.0
59
60
  Requires-Dist: tomli==2.0.1
60
61
  Requires-Dist: typer==0.12.3
61
- Requires-Dist: typing-extensions==4.9.0
62
+ Requires-Dist: typing_extensions==4.9.0
62
63
  Requires-Dist: ujson==5.9.0
63
64
  Requires-Dist: urllib3==1.26.6
64
65
  Requires-Dist: uvicorn==0.29.0
@@ -84,12 +85,20 @@ Portions of the Gibson backend code are written by Gibson. So far, versus a hum
84
85
 
85
86
  ## Installation / Upgrading
86
87
 
87
- Install the latest version of the CLI using pip.
88
+ Install the latest version of the CLI using `pip`
88
89
 
89
90
  ```sh
90
91
  pip3 install gibson-cli --upgrade
91
92
  ```
92
93
 
94
+ Note: the first time you install any package from PyPI via `pip` that includes an executable, it is placed in a directory that is likely not in your `PATH`. There are a number of ways to do this, but one method is to run the following command:
95
+
96
+ ```sh
97
+ echo 'export PATH="$PATH:${$(which python3)%python3}"' >> ~/.zshrc # or ~/.bashrc
98
+ ```
99
+
100
+ You will only need to do this once.
101
+
93
102
  ## Key Terms
94
103
 
95
104
  - Dev Mode
@@ -1,49 +1,49 @@
1
1
  bin/build.sh,sha256=H3TAd349BECbcK3_t_jW9VzoLInMNrXtaLnXMEVanew,49
2
2
  bin/clean.sh,sha256=bVJ1aL-IWconmyZ70OAcF0MHiPzpWCejPiIFJ72yFkM,55
3
+ bin/gibson,sha256=9OiLT8M9kJHA-gTp0pFc8NYbOe6LrQCs_HXgnD-5D3U,843
3
4
  bin/release.sh,sha256=LxPqH5kxhLKvzHaPRLBlq_ApaK7FHEteH4SzeRenidk,49
4
- gibson/api/BaseApi.py,sha256=2vLcb4xYBAtMhCzhxAesEdan7FSxxD0eBC3EkPsW7Uk,3055
5
- gibson/api/Cli.py,sha256=4MWxLWV2Sl_VQGwnu_k2b7L-pFSIrEMTcgCkMxI2ojA,8065
5
+ gibson/api/BaseApi.py,sha256=aQAsL8d_n6qhQaeS2zjcjsGx3AfoZCqf8mi7pbqWCPg,3040
6
+ gibson/api/Cli.py,sha256=Qcm5NIQ4x1Wn6KfkrAzwvZeWyt-cKF_xD7_lTWL4Lbw,8071
6
7
  gibson/api/ProjectApi.py,sha256=T7TqtywJjrzFIfARenQUsrH-80x9Oo1pABbFAdlQkI0,356
7
8
  gibson/bin/gibson.py,sha256=56fqPBiF47uJvafHyNbWZ4GorcI0Ut98DCXeS7dt2io,420
8
9
  gibson/command/BaseCommand.py,sha256=mmWUO0FxjMCbv3cHWnnasfAWnU_hTuGHUsRVJ4hUcqM,777
9
- gibson/command/Build.py,sha256=FVvabrp7pGohvKS6CR30CGm-fcro7QbS-MxtKzXs4pc,4485
10
- gibson/command/Conf.py,sha256=MbEPT-lRujRJMBjKRQlshA3T3pplQ-zzia8RY_muWU4,2472
11
- gibson/command/Count.py,sha256=Jh9_ImJibpiTitbllSl0xF6KUrOhrY7Bz7-5sx9cBVs,1083
12
- gibson/command/Dev.py,sha256=-kmRHpOApUXklaCs4bJVqCRft4ubcVjAL7S1-BGr-ps,4355
13
- gibson/command/Forget.py,sha256=5fszuq6oIe0unMbXpFtDpouJ1eYZIvsi2mLsa8RwN5U,1061
14
- gibson/command/Help.py,sha256=-ZBTaTONmb7Bsi6TeyNIW4pxQwUJgNBVy0f4UKNNTSk,4301
10
+ gibson/command/Build.py,sha256=6lMdTa3HZvcbskoX8iJZJnekiJmyNVSbgGmgvh1v-BM,4421
11
+ gibson/command/Conf.py,sha256=yuAGL6M8MUURG4hW3MAW043c-h_ALw3FHWbyCOR8YTQ,2375
12
+ gibson/command/Count.py,sha256=QOagwCwDxUHYPivFntr-RWUmlKWKDHgDIGZBfju6VpY,1040
13
+ gibson/command/Dev.py,sha256=zbZjsgAKAHlNUflEr_Lj2QmRBXNbIGIHrPJ3t5DcFC8,4213
14
+ gibson/command/Forget.py,sha256=Fm1mUyZkK3HS5fIVgNaC3d97vcWWQVysdDkg4ciE8Bk,1018
15
+ gibson/command/Help.py,sha256=_-I_hVGAwzb9rioHxVw4-G7vJgvcXdiQxQ1Smohi83k,6289
15
16
  gibson/command/Merge.py,sha256=R5ybMC1tUR5_T8YyUfXutzFa_V9j1_flv0s7KTJRq0M,1061
16
- gibson/command/Modify.py,sha256=3_fEGvLfGpgoXQ77SFA9J2KQDe1GMaAUPWkl-yCwR1E,1267
17
- gibson/command/Question.py,sha256=RIR-TorVnQCD74wYV2jIwfnIh0pOfnNIbcWBpBmf5FM,3926
18
- gibson/command/Remove.py,sha256=fRPJCTCQFZVfl6Ri319E1ZudADkbWBZUOPiBue1Vrao,2512
19
- gibson/command/Show.py,sha256=BOfgQQSo-q6RMWPgiyjcigwuW-fQmnQwUWdRbsslto8,1529
17
+ gibson/command/Modify.py,sha256=XgTM6EodL7sVhWrnWuTCDx2PNJw3xo-aKI80HCmSpV8,1171
18
+ gibson/command/Question.py,sha256=g8SwopbzeG14WWP0bc-fXIDVqOOicMzjC9YXoGd-NxY,3830
19
+ gibson/command/Remove.py,sha256=Ar8-vSNwmCaBupCLY_rcvyU_kWIILU_qVX5njV-tZVw,2478
20
+ gibson/command/Show.py,sha256=qkkprY2JhA4qOOhYOwAECDnFZwTdqcsKsG4cwB_b-84,1409
20
21
  gibson/command/Tree.py,sha256=BeJ_13xrrRCK5FP2rQHWpDKrshVzte-_D1pNG1GXPIw,3056
21
- gibson/command/Version.py,sha256=zA3VtFHJm9UQFpQV69gxKFuNFJUpmKxvqoE_CEkWaQM,1198
22
- gibson/command/WarGames.py,sha256=V0KIpz-Z546qtQaOPdIVHQ6wp2n3r3M3tgKx-GRQzzU,1300
23
- gibson/command/auth/Auth.py,sha256=U8i5a7hKVjYgiJgS0kbwEmgHPCzRbMkJ8x2g6odQWSM,1204
22
+ gibson/command/Version.py,sha256=1YjQlQJg9T97XGjzOg61Ybs4ywETZGVJoAp8zeDXbaU,1177
23
+ gibson/command/auth/Auth.py,sha256=DAvnKq3Ks77QJwuGJCWA9Iv3c0Qq5pHFIpEA-gy6CxM,1086
24
24
  gibson/command/auth/Login.py,sha256=b43OfV76i6aGdOwj1NK64ZOdYlNyc08g3lZGQ_37KDw,437
25
25
  gibson/command/auth/Logout.py,sha256=V01q4TdbiBqCnIrM6IA4T25fO6ws0UpXp42I3pwHZVM,248
26
26
  gibson/command/code/Api.py,sha256=sSvAqEJXdgQjYcu0uiM6ndHE3GnfkfVL6eqP2Otkbww,1002
27
27
  gibson/command/code/Base.py,sha256=YJ2a5Hl0f9NXHUBBPvlt-dUIqEPWQz5vH6-1EHmbFbA,640
28
- gibson/command/code/Code.py,sha256=Ce8jilFWl1B7Djabf4KoN3s8IgQPQchhxwOis0nFXvM,4234
29
- gibson/command/code/Entity.py,sha256=MJLGi-8a69X3KDMtXX8j6hsDvdhnI05fJUm3p2WfjN4,7779
30
- gibson/command/code/Model.py,sha256=fEg0A-NjNLHx4I7-FoMVI5ClDf0UcCkKcti2Z-3rnwY,1340
28
+ gibson/command/code/Code.py,sha256=j6RetYcg3RQcpD7lA0MRDof9A9drHPDeGjdsslQtLvM,3773
29
+ gibson/command/code/Entity.py,sha256=N1JiJhP9jN4cHODDjOGjBIX-J7doIhe_x3yoofUGQXM,9087
30
+ gibson/command/code/Model.py,sha256=UWSU3tkscWQFHYGSNR82gsiL1SpnEa4fF7UroaKLFlM,1295
31
31
  gibson/command/code/Models.py,sha256=eoUpZHpR0qwNgX60EWfcNz49GHmBw_FGfBuHH2ueZqY,799
32
- gibson/command/code/Schema.py,sha256=3f6iWoq6xzdj9NU3_WrByo7AUj0Tpo2CxtUzkIx73nQ,1346
32
+ gibson/command/code/Schema.py,sha256=t1RBuLyb-FkaIz6jBfzoH426B1IK8s_Tps8p3Mh6B6Y,1403
33
33
  gibson/command/code/Schemas.py,sha256=zZ1gjmOJg77gh70t5y2WkzHWSAvEKx5-gqRN9OcsCXA,802
34
- gibson/command/code/Test.py,sha256=XjhiepDXUgMySYMmWyhBYfUHlm_QHzROiAXMG2u2jOw,1333
34
+ gibson/command/code/Test.py,sha256=erI6-d5LPswJ17vhUE-Qg4CnWlETPvfqKea7qvL3yr0,1290
35
35
  gibson/command/code/Tests.py,sha256=HO1WM6pSToVKsuJn7nUA_I5qrfBN0cgKgBzjlm2Qxt8,799
36
- gibson/command/importer/Import.py,sha256=qW__kT7xruUgg2kTZG-80Jah94aqQ7nvd89dZW4uxcg,6792
37
- gibson/command/importer/OpenApi.py,sha256=voTthxb0KDTlkEsHsIeJnyMxgEBbJKw9VTKDyGehopI,3759
38
- gibson/command/list/Entities.py,sha256=4qUxR5pBsUwnaW3SZQzCVbwyl_sCfM9lD9TWwipSyWw,1869
39
- gibson/command/list/List.py,sha256=dfqPSUMYzsYwVjYMslhqdP6YcI5Q4d-EoZgxJXaR_6w,1225
40
- gibson/command/list/Projects.py,sha256=yR4o0eZFYxORLiEe0Z5Vs9T-hKb1NxrGVUOCrYx9qDM,1140
41
- gibson/command/new/Module.py,sha256=MFbE4XY7YZz0I-SfxHxWe4FYiJHBssI2knATy1yuqs0,1599
42
- gibson/command/new/New.py,sha256=-T4KobVOAKfHy3FGlqZnSWOOHEQGbRJH9AuN-4rUysA,1696
36
+ gibson/command/importer/Import.py,sha256=z3PI1mGyz1IYggZF5gJSfgvheMkZ_o3o2rdRYGdwBRA,6526
37
+ gibson/command/importer/OpenApi.py,sha256=5PL4JlhniPhUidOFxKpC9ao_r8C_qIeCoGyliPd10ig,3745
38
+ gibson/command/list/Entities.py,sha256=o5Wemlq_EpeObNwJHbCqkUT4nccfu_OOZ_gYWzJ051Y,1223
39
+ gibson/command/list/List.py,sha256=IA9VYuOiFdweg-6HIBZ5hECnMyNxsoU2dKd-gzRNtio,1107
40
+ gibson/command/list/Projects.py,sha256=8kD_Ny-rSsireW69YigJQia4QzvIRQsPnEUVISL0u0Y,1202
41
+ gibson/command/new/Module.py,sha256=PCTt6k54XFzgNjNgwY0FKQFzk0YFoaN_KPZF2sfN_V0,1535
42
+ gibson/command/new/New.py,sha256=cwsBpZAZH-9se26ywAUFyvrc9L9ezwoERIrRLlDkrzU,1519
43
43
  gibson/command/new/Project.py,sha256=Cw1Z6TvPIGhTi7GiQZ2VFjv6hXdpGKQdX9HuAd5gric,759
44
44
  gibson/command/rename/Entity.py,sha256=SaAiN1bYsTOsqjyVzxghK8-N3sAKITThTzS5LEYgppY,1801
45
- gibson/command/rename/Rename.py,sha256=T6iTjo6KRArbT8wBgrn-ehtNlY7tRlovlEZfBOUKYlk,731
46
- gibson/command/rewrite/Rewrite.py,sha256=pYg6ephFXVpZlew5bSb3dTt5nxQH3DBDf6cz67Jn434,4482
45
+ gibson/command/rename/Rename.py,sha256=Ly-X2XGkH8oyxNUs4qPudmcriPJlOQegZMZN1qw02V0,668
46
+ gibson/command/rewrite/Rewrite.py,sha256=WXUgO-Xk7riKqdQIiG2yMvOeIzEkd9BEF-HqwSgaqXg,4453
47
47
  gibson/command/tests/test_command_BaseCommand.py,sha256=hSbBfLFI3RTp_DdEHtm5oOLWoN6drI6ucFJypi7xxV8,364
48
48
  gibson/command/tests/test_command_Conf.py,sha256=5eBuCjEfskjb-JujwwUDQLFKjc3uThO4cJj148JoxkE,597
49
49
  gibson/conf/Api.py,sha256=GM9okYs1A8ujPjDwzziOoQpqRYFkr-dz5pgkfb6j4DI,59
@@ -64,15 +64,16 @@ gibson/conf/dev/Model.py,sha256=HbHRX3VDxR7hXlzuxkKw4Bf7FH6XMfQ96k9BeIUoBf4,73
64
64
  gibson/conf/dev/Schema.py,sha256=kOSlX1jEyVb82xd8TO8jEAimLcaefIFJr6d2JYvyTqg,74
65
65
  gibson/conf/tests/test_conf_Dependencies.py,sha256=LITeeYiqXM5rKkyWFBqcnMvUR5pzDRuHVAngH372jWc,116
66
66
  gibson/conf/tests/test_conf_Platform.py,sha256=Zc53IsZmV-hT9VRrZEPNrsuehSdWnJXWKGMmOhEqWHo,138
67
- gibson/core/Colors.py,sha256=BpzD1KQY3TVUWu8nH7q4ebA5hSar_8UiXED-XuJsBwQ,2727
68
- gibson/core/CommandRouter.py,sha256=G_4_OToiBQUgvZbO_yuIqYGus0FtV_sk6s9LzGwR4RY,3227
67
+ gibson/core/Colors.py,sha256=sllEmJAb2AAUH0e-ZLP1_C8pfz5U_w0fo5kubSH5g1o,3426
68
+ gibson/core/CommandRouter.py,sha256=w9VNpvWntfAEOWmLwqWlp7W55z2lRR3rr9oHcIjILQ8,3182
69
69
  gibson/core/Completions.py,sha256=Bsh25vnf0pjpJA6MJNR_2MA2s58Ujj8XolR8fm8AQ_s,1197
70
- gibson/core/Configuration.py,sha256=sGqTRKoM0NaYuL9FKJ1oh5VttZRVshMCp5IgIHABtRA,15866
71
- gibson/core/Conversation.py,sha256=X9SeD9kBLmzEbZAOOTTZYV42HhHx-ud_HO_t20D33LA,10383
70
+ gibson/core/Configuration.py,sha256=ryCDvuLzJDIbnjW-ty6HYLuMn0U2EYU__LdsMbu6-KE,15968
71
+ gibson/core/Conversation.py,sha256=cl9dHfQDocB78GF3IyS3jve8iYBSXmeF4hwVAPY-vCE,10239
72
+ gibson/core/Diff.py,sha256=onUJ5_0_S1vKAY_oFgX4vmwQo4byrnXLV4w7QSNA8fY,1071
72
73
  gibson/core/Env.py,sha256=08dZRHzzR0ahrbM4S0bXC7V1xhYQkT8Zefs00qUHf0U,498
73
- gibson/core/Memory.py,sha256=kAo9kFgsIAVrofTRepv81pw43Sl2zQrNFsfIy_yMb_w,4037
74
+ gibson/core/Memory.py,sha256=3ItGef4RCfBplbjxhNyid8eiPVKHmW-DKAMFeYujqN0,4063
74
75
  gibson/core/PythonPath.py,sha256=p1q7n_5KnPvA8XbxJyvqC2vrIdEdTiMr6vRU9yj77Cs,1567
75
- gibson/core/Spinner.py,sha256=ditGikEUpRB1ttwRJNQ6Dbw_SzWtEd1wh_82vV8UfCY,1036
76
+ gibson/core/Spinner.py,sha256=_BO26dOa3h0ZCNaPgMvwOh7K6DUiDv8LgP7QMR3EvNw,1225
76
77
  gibson/core/TimeKeeper.py,sha256=dSeIgGOQJOi0ULlFGAigroGTBfAZXrvP9a1Op_jIsZ0,300
77
78
  gibson/core/utils.py,sha256=KTnPvA3sUYnLFTZG7Tke5YEdls8Da0rNbeaOm8hapiU,408
78
79
  gibson/data/bash-completion.tmpl,sha256=-w5y4g3ZYN-7eBlIzu7Kh-RM-X2kYCf0Yp6RXNQozsM,2657
@@ -83,12 +84,12 @@ gibson/data/postgresql/default-table.tmpl,sha256=4xON0XyY55OiZhZmJ4RemnKMNFLniuS
83
84
  gibson/db/TableExceptions.py,sha256=LGDPxAVjXmb0EJSFpHC6twHoFzv7nFsFzTj2DXNabQU,196
84
85
  gibson/db/tests/test_db_TableExceptions.py,sha256=tNzn6SybygWXSuj-3i_s6t9LOo1P8gI9S4wSz4UxeCk,312
85
86
  gibson/dev/Dev.py,sha256=O-GiMATpVd9kYHsVfbHaC-Omh17HQ8FalFQNelfxh2s,2544
86
- gibson/display/Header.py,sha256=A6KW4lgCrH67tqi7VrKucVn7lH-lJ-hd3yIauZxhv_A,292
87
+ gibson/display/Header.py,sha256=OA-E2IWa7aBoHWrzuyrD8D4t-sXWXiF4J_1a9cUXtKk,335
87
88
  gibson/display/WorkspaceFooter.py,sha256=Mh18foAb33O1adnecLe7elIqBN8u2ewaSURl99qlcvE,415
88
- gibson/display/WorkspaceHeader.py,sha256=zqWa9xh3I8ky0ghYRmLdpUr4TXSBRyaIIyyVfYsfMQU,306
89
- gibson/display/tests/test_display_Header.py,sha256=gppahcCu3VXQMyIZiB_ixAS-ZygrTtkrx62IGFlWQOk,411
89
+ gibson/display/WorkspaceHeader.py,sha256=143BCT724Ei8B1vF7mJ3iZ--OrE1ALBrrUAGMtxjogM,322
90
+ gibson/display/tests/test_display_Header.py,sha256=q1iPm91shdoayqmtg81loFlTcivgQ1_O84cvWrviqOQ,433
90
91
  gibson/display/tests/test_display_WorkspaceFooter.py,sha256=HBcZ48UwEsJsNEXPcPH8UiuF0Wa15vffEkJILNhwPyw,471
91
- gibson/display/tests/test_display_WorkspaceHeader.py,sha256=8aY62ucD_YfP4DiqsWA3f_PZ9CNr096TuG1vUv0MoVE,373
92
+ gibson/display/tests/test_display_WorkspaceHeader.py,sha256=QAbjAD89LK8dbTadAlAs1nXR5FjqaOZgQAv2SU3PHzU,390
92
93
  gibson/lang/Python.py,sha256=WNbCTFhDh9qXVbeySyfaP-6m-c0wllSCZw8A-r_Z0Oo,1764
93
94
  gibson/lang/tests/test_lang_Python.py,sha256=YpdqYOGAssg-jP9GuzfoU4Y4L7Boj0vAUAJgjuZvedo,1862
94
95
  gibson/services/auth/Server.py,sha256=DfemWNZlZ3rDE6PsAAvDP0anK7czwhiadX6Wilo4agY,1936
@@ -125,8 +126,8 @@ gibson/structure/tests/test_structure_Entity.py,sha256=askl8w0p1uqET6HKBogJlRcPP
125
126
  gibson/tests/test_Env.py,sha256=DPWmP0-aEelducq9bAwv7rKoY2NjWXUeCrzfJDQkn2M,369
126
127
  gibson/tests/test_Memory.py,sha256=YP7owToABAk_-s7fD5UG0HTc4lamDjdA39JUlLnk3Fg,2574
127
128
  gibson/tests/test_utils.py,sha256=r_y-EG05YTCNtL8MWiAK1KmPsmeoMgypKsQC_lVgOtM,559
128
- gibson_cli-0.7.4.dist-info/METADATA,sha256=Nx8vTtLVMaHx3zpI_G3Pi_Xl0VZ8KjdHTdj3MJLpnrI,13171
129
- gibson_cli-0.7.4.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
130
- gibson_cli-0.7.4.dist-info/entry_points.txt,sha256=j5VUvq3AzL21xPvVC24zMoXFt-I5lUWulr66nL3OAPM,50
131
- gibson_cli-0.7.4.dist-info/top_level.txt,sha256=RFaUY7VXGiqkMwo1Rj7pM4kGvxkhhnfo-2LmPpuL_fs,11
132
- gibson_cli-0.7.4.dist-info/RECORD,,
129
+ gibson_cli-0.7.6.dist-info/METADATA,sha256=l4_cKuK-vskymWf4WUJ_7y9_rcDeg_X9u57ILFFK3_0,13578
130
+ gibson_cli-0.7.6.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
131
+ gibson_cli-0.7.6.dist-info/entry_points.txt,sha256=j5VUvq3AzL21xPvVC24zMoXFt-I5lUWulr66nL3OAPM,50
132
+ gibson_cli-0.7.6.dist-info/top_level.txt,sha256=RFaUY7VXGiqkMwo1Rj7pM4kGvxkhhnfo-2LmPpuL_fs,11
133
+ gibson_cli-0.7.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,34 +0,0 @@
1
- import hashlib
2
- import sys
3
-
4
- from gibson.command.BaseCommand import BaseCommand
5
- from gibson.core.Conversation import Conversation
6
-
7
-
8
- class WarGames(BaseCommand):
9
- def execute(self):
10
- if hashlib.sha256(" ".join(sys.argv[1:]).lower().encode()).hexdigest() != (
11
- "17dca0c0f6b4fe47e18b34551e3e65d1b91b88c94011be4de552bb64e443f6fc"
12
- ):
13
- return False
14
-
15
- self.conversation.newline()
16
- self.conversation.type("FALKEN'S WEB\n")
17
- self.conversation.type("BLACK JACK\n")
18
- self.conversation.type("GIN RUMMY\n")
19
- self.conversation.type("HEARTS\n")
20
- self.conversation.type("BRIDGE\n")
21
- self.conversation.type("CHECKERS\n")
22
- self.conversation.type("CHESS\n")
23
- self.conversation.type("POKER\n")
24
- self.conversation.type("FIGHTER COMBAT\n")
25
- self.conversation.type("GUERRILLA ENGAGEMENT\n")
26
- self.conversation.type("DESERT WARFARE\n")
27
- self.conversation.type("AIR-TO-GROUND ACTIONS\n")
28
- self.conversation.type("THEATERWIDE TACTICAL WARFARE\n")
29
- self.conversation.type("THEATERWIDE BIOTOXIC AND CHEMICAL WARFARE\n")
30
- self.conversation.newline()
31
- self.conversation.type("GLOBAL THERMONUCLEAR WAR\n", delay=0.2)
32
- self.conversation.newline()
33
-
34
- return True