gibson-cli 0.1.5__py3-none-any.whl → 0.2.0__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.
bin/build.sh ADDED
@@ -0,0 +1,2 @@
1
+ rm -rf dist gibson_cli.egg-info
2
+ python3 -m build
bin/release.sh ADDED
@@ -0,0 +1 @@
1
+ python3 -m twine upload --repository pypi dist/*
gibson/api/BaseApi.py CHANGED
@@ -1,41 +1,18 @@
1
1
  import os
2
+
2
3
  import requests
3
4
 
4
5
  from gibson.core.Configuration import Configuration
5
6
 
6
7
 
7
8
  class BaseApi:
8
- API_ENV = os.environ.get("GIBSONAI_API_ENV", "staging")
9
9
  VERSION = "v1"
10
10
 
11
11
  def __init__(self, configuration: Configuration):
12
12
  self.configuration = configuration
13
13
 
14
- def api_domain(self):
15
- domains = {
16
- "local": "http://localhost:8000",
17
- "staging": "https://staging-api.gibsonai.com",
18
- "production": "https://api.gibsonai.com",
19
- }
20
- return domains[self.API_ENV]
21
-
22
- def app_domain(self):
23
- domains = {
24
- "local": "http://localhost:5173",
25
- "staging": "https://staging-app.gibsonai.com",
26
- "production": "https://app.gibsonai.com",
27
- }
28
- return domains[self.API_ENV]
29
-
30
14
  def base_url(self):
31
- return f"{self.api_domain()}/{self.VERSION}"
32
-
33
- def client_id(self):
34
- return {
35
- "local": "9b0cbebd-3eb4-47be-89ac-4aa589316ff4",
36
- "staging": "02459e16-f356-4c01-b689-59847ed04b0a",
37
- "production": "da287371-240b-4b53-bfde-4b1581cca62a",
38
- }[self.API_ENV]
15
+ return f"{self.configuration.api_domain()}/{self.VERSION}"
39
16
 
40
17
  def get(self, endpoint):
41
18
  r = requests.get(self.url(endpoint), headers=self.headers())
@@ -82,6 +59,7 @@ class BaseApi:
82
59
  )
83
60
 
84
61
  if r.status_code != 200:
62
+ self.configuration.set_auth_tokens(None, None)
85
63
  return False
86
64
 
87
65
  parsed = r.json()
@@ -96,12 +74,17 @@ class BaseApi:
96
74
  return f"{self.base_url()}/{endpoint}"
97
75
 
98
76
  def __raise_for_status(self, r):
77
+ if r.status_code == 401:
78
+ print("\n\nYou need to log in to continue. Please run:\n")
79
+ print(" gibson auth login\n\n")
80
+ print("and then try again.\n")
81
+ exit(1)
82
+
99
83
  try:
100
84
  r.raise_for_status()
101
85
  except:
102
86
  try:
103
87
  message = r.json()
104
-
105
88
  print("=" * 78)
106
89
  print("Raw Response:\n")
107
90
  print(message)
gibson/api/Cli.py CHANGED
@@ -1,6 +1,6 @@
1
1
  from gibson.core.Configuration import Configuration
2
- from gibson.lang.Python import Python
3
2
  from gibson.core.Memory import Memory
3
+ from gibson.lang.Python import Python
4
4
 
5
5
  from .BaseApi import BaseApi
6
6
 
@@ -61,7 +61,7 @@ class Cli(BaseApi):
61
61
 
62
62
  def headers(self):
63
63
  headers = {
64
- "X-Gibson-Client-ID": self.client_id(),
64
+ "X-Gibson-Client-ID": self.configuration.client_id(),
65
65
  "X-Gibson-API-Key": self.configuration.project.api.key,
66
66
  }
67
67
 
gibson/command/Remove.py CHANGED
@@ -56,7 +56,7 @@ class Remove(BaseCommand):
56
56
  )
57
57
 
58
58
  if len(response["entities"]) == 0:
59
- self.memory.forget_stored()
59
+ self.memory.forget_entities()
60
60
  else:
61
61
  self.memory.remember_entities(response["entities"])
62
62
 
@@ -5,16 +5,11 @@ from gibson.services.auth.Server import Server as AuthServer
5
5
 
6
6
  class Login(BaseCommand):
7
7
  def execute(self):
8
- api = BaseApi(self.configuration)
9
- access_token, refresh_token = AuthServer(api.app_domain()).get_tokens()
8
+ authenticated = self.configuration.login()
10
9
 
11
- if access_token is None or refresh_token is None:
12
- self.conversation.newline()
13
- self.conversation.type(
14
- "Login failed, please try again with `gibson auth login`."
15
- )
10
+ if authenticated:
11
+ self.conversation.message_login_success()
16
12
  else:
17
- self.configuration.set_auth_tokens(access_token, refresh_token)
18
- self.conversation.type(f"Welcome! You are now logged in.")
13
+ self.conversation.message_login_failure()
19
14
 
20
15
  self.conversation.newline()
@@ -6,11 +6,12 @@ import sys
6
6
  import time
7
7
 
8
8
  from gibson.conf.Dependencies import Dependencies
9
+ from gibson.conf.Paths import ConfigPaths
9
10
  from gibson.conf.Platform import Platform
10
11
  from gibson.conf.Project import Project
11
- from gibson.conf.Paths import ConfigPaths
12
12
  from gibson.core.Completions import Completions
13
13
  from gibson.core.Conversation import Conversation
14
+ from gibson.services.auth.Server import Server as AuthServer
14
15
 
15
16
 
16
17
  class Configuration:
@@ -37,6 +38,29 @@ class Configuration:
37
38
 
38
39
  Completions().write().install()
39
40
 
41
+ def api_domain(self):
42
+ domains = {
43
+ "local": "http://localhost:8000",
44
+ "staging": "https://staging-api.gibsonai.com",
45
+ "production": "https://api.gibsonai.com",
46
+ }
47
+ return domains[self.API_ENV]
48
+
49
+ def app_domain(self):
50
+ domains = {
51
+ "local": "http://localhost:5173",
52
+ "staging": "https://staging-app.gibsonai.com",
53
+ "production": "https://app.gibsonai.com",
54
+ }
55
+ return domains[self.API_ENV]
56
+
57
+ def client_id(self):
58
+ return {
59
+ "local": "9b0cbebd-3eb4-47be-89ac-4aa589316ff4",
60
+ "staging": "02459e16-f356-4c01-b689-59847ed04b0a",
61
+ "production": "da287371-240b-4b53-bfde-4b1581cca62a",
62
+ }[self.API_ENV]
63
+
40
64
  def append_project_to_conf(self, project_name, project_description):
41
65
  self.project.api.key = "FIXME"
42
66
  self.project.name = project_name
@@ -269,7 +293,7 @@ class Configuration:
269
293
 
270
294
  def get_my_settings(self):
271
295
  return self.settings[self.project.name]
272
-
296
+
273
297
  def get_refresh_token(self):
274
298
  try:
275
299
  with open(f"{self.paths.auth}/{self.API_ENV}", "r") as f:
@@ -282,7 +306,15 @@ class Configuration:
282
306
 
283
307
  def initialize(self):
284
308
  self.conversation.message_welcome()
285
- print("")
309
+
310
+ authenticated = self.login()
311
+ if authenticated is False:
312
+ self.conversation.message_login_failure()
313
+ exit(1)
314
+ else:
315
+ self.conversation.message_login_success()
316
+
317
+ self.conversation.message_project_setup()
286
318
  project_name = self.conversation.prompt_project()
287
319
  project_description = self.conversation.prompt_description(project_name)
288
320
 
@@ -308,6 +340,14 @@ class Configuration:
308
340
 
309
341
  return self
310
342
 
343
+ def login(self):
344
+ access_token, refresh_token = AuthServer(self.app_domain()).get_tokens()
345
+ if access_token is None or refresh_token is None:
346
+ return False
347
+
348
+ self.set_auth_tokens(access_token, refresh_token)
349
+ return True
350
+
311
351
  def read_config(self):
312
352
  try:
313
353
  with open(self.project.paths.config, "r") as f:
@@ -123,6 +123,16 @@ class Conversation:
123
123
  self.type('Last item of business, if you need help just type "gibson help".\n')
124
124
  return self
125
125
 
126
+ def message_login_failure(self):
127
+ self.newline()
128
+ self.type("Login failed, please try again.\n")
129
+ return self
130
+
131
+ def message_login_success(self):
132
+ self.newline()
133
+ self.type("Nice! You're now logged in.\n")
134
+ return self
135
+
126
136
  def message_new_project(self, project_name):
127
137
  self.type(
128
138
  f"\n{project_name} is going to be huge! Congratulations on the new project.\n\n"
@@ -134,11 +144,20 @@ class Conversation:
134
144
  print(pyfiglet.figlet_format("GibsonAI", font="big").rstrip(), end="")
135
145
  print(f" ...CLI v{Version.num}...")
136
146
  self.newline()
147
+ self.type("Welcome to Gibson!\n")
137
148
  self.pause()
138
- self.type("Welcome!\n\n")
149
+ self.newline()
150
+ self.type("First, let's get you logged in.\n")
139
151
  self.pause()
152
+ self.newline()
153
+ self.type("We're opening your web browser to the login page.\n")
154
+ self.type("Please log in and then return to this window.\n")
155
+ return self
156
+
157
+ def message_project_setup(self):
158
+ self.newline()
140
159
  self.type(
141
- "Let's get you set up. Give me the name of the project you're working on.\n"
160
+ "Now let's set up your first project. Give me the name of the project you're working on.\n"
142
161
  )
143
162
  self.type(
144
163
  "Don't worry, once we get to know each other you'll be able to modify this\n"
@@ -182,7 +201,7 @@ class Conversation:
182
201
  self.newline()
183
202
 
184
203
  def pause(self):
185
- time.sleep(2)
204
+ time.sleep(1)
186
205
 
187
206
  def project_already_exists(self, project_name):
188
207
  self.type(f'\nA project called "{project_name}" already exists.\n')
@@ -47,18 +47,16 @@ __gibson_commands_and_options() {
47
47
  tree
48
48
  q
49
49
  '
50
+ SHORT_OPTIONS='-v'
51
+ LONG_OPTIONS='--version'
52
+ OPTIONS="${SHORT_OPTIONS} ${LONG_OPTIONS}"
50
53
 
51
54
  case "${current_word}" in
52
- -*) __gibson_options ;;
55
+ -*) __gibson_generate_completion "${OPTIONS}" ;;
53
56
  *) __gibson_generate_completion "${COMMANDS}" ;;
54
57
  esac
55
58
  }
56
59
 
57
- __gibson_options() {
58
- OPTIONS='--version -v'
59
- __gibson_generate_completion "${OPTIONS}"
60
- }
61
-
62
60
  __gibson_completions() {
63
61
  declare previous_word
64
62
  previous_word="${COMP_WORDS[COMP_CWORD - 1]}"
@@ -66,9 +64,14 @@ __gibson_completions() {
66
64
  case "${previous_word}" in
67
65
  gibson) __gibson_commands_and_options ;;
68
66
  auth) __gibson_generate_completion "login logout" ;;
69
- # config) __gibson_generate_completion "set get" ;;
67
+ code) __gibson_generate_completion "entity" ;;
68
+ conf) __gibson_generate_completion "api::key code::custom::model::class code::custom::path datastore::uri" ;;
69
+ dev) __gibson_generate_completion "on off" ;;
70
+ forget) __gibson_generate_completion "stored last all" ;;
71
+ import) __gibson_generate_completion "api datastore" ;;
72
+ list) __gibson_generate_completion "entities" ;;
73
+ new) __gibson_generate_completion "project" ;;
70
74
  # create) __gibson_generate_completion "project module entity" ;;
71
- # new) __gibson_generate_completion "project module entity" ;;
72
75
  # project) __gibson_generate_completion "create delete list" ;;
73
76
  # rename) __gibson_generate_completion "entity" ;;
74
77
  # rewrite) __gibson_generate_completion "api base models schemas tests" ;;
gibson/lang/Python.py CHANGED
@@ -43,10 +43,12 @@ class Python:
43
43
 
44
44
  return path
45
45
 
46
- raise RuntimeError(
47
- "cannot make import path; please execute:\n\n"
48
- + f" export PYTHONPATH=$PYTHONPATH:{os_path}\n"
46
+ print(
47
+ "Cannot make import path. Please execute the following command in your terminal:\n\n"
49
48
  )
49
+ print(f" export PYTHONPATH=$PYTHONPATH:{os_path}\n\n")
50
+ print("and then try again.\n")
51
+ exit(1)
50
52
 
51
53
  def make_python_path(self, path):
52
54
  pythonpath = os.environ["PYTHONPATH"].split(":")
@@ -32,15 +32,10 @@ def test_define_python_path():
32
32
 
33
33
 
34
34
  def test_make_import_path_exceptions():
35
- with pytest.raises(RuntimeError) as e:
35
+ with pytest.raises(SystemExit) as e:
36
36
  Python().make_import_path("/a/b/c")
37
37
 
38
- assert str(e.value) == (
39
- """cannot make import path; please execute:
40
-
41
- export PYTHONPATH=$PYTHONPATH:/a/b/c
42
- """
43
- )
38
+ assert e.value.code == 1
44
39
 
45
40
 
46
41
  def test_make_import_path():
@@ -11,7 +11,7 @@ class Authenticator(BaseCustomization):
11
11
  self.__file_contents = None
12
12
 
13
13
  def __get_file_name(self):
14
- return (
14
+ return os.path.expandvars(
15
15
  self.configuration.project.dev.api.path
16
16
  + "/"
17
17
  + self.configuration.project.dev.api.version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gibson-cli
3
- Version: 0.1.5
3
+ Version: 0.2.0
4
4
  Summary: Gibson Command Line Interface
5
5
  Author-email: GibsonAI <noc@gibsonai.com>
6
6
  Project-URL: Homepage, https://gibsonai.com/
@@ -1,5 +1,7 @@
1
- gibson/api/BaseApi.py,sha256=SgEsVvEJ0t4U2jwJ-dp6YLVdBjh15pAOuT_wPQYn_v0,3233
2
- gibson/api/Cli.py,sha256=WT2EvEwUJgfM2klxKBSMaDFWrO1maImo9LSeJM4-Eho,7146
1
+ bin/build.sh,sha256=H3TAd349BECbcK3_t_jW9VzoLInMNrXtaLnXMEVanew,49
2
+ bin/release.sh,sha256=LxPqH5kxhLKvzHaPRLBlq_ApaK7FHEteH4SzeRenidk,49
3
+ gibson/api/BaseApi.py,sha256=l_EsHdKRz-cXGXd3Ju5IFwmCRUkunba6ckB957S9DAk,2696
4
+ gibson/api/Cli.py,sha256=n2mmhZs1MFKhrDRVRWkDeHJtsun5ZwGfpTWpPngpkKE,7160
3
5
  gibson/bin/gibson.py,sha256=N1mAWaww9pw8s5u0et87FC5cFHVU6JzN4Kls3lDn-xw,354
4
6
  gibson/command/Api.py,sha256=sSvAqEJXdgQjYcu0uiM6ndHE3GnfkfVL6eqP2Otkbww,1002
5
7
  gibson/command/Base.py,sha256=eqp9e3XlCpGt4j_aR2htsQnICgkZT6GWeQblCFM792g,819
@@ -20,7 +22,7 @@ gibson/command/Module.py,sha256=ZaiRiv_kVCRpWwwpDyDrvloocwH_wcL0XXyRldIpj00,1280
20
22
  gibson/command/New.py,sha256=aiWzoZc3Zj7OC2GhnS4pzPHZ-sduDV1-TOng2giE7TM,1157
21
23
  gibson/command/OpenApi.py,sha256=c9LM_sXJr5W7hInur02kNGbUK9i3ZBROzKgy_oThXWI,4341
22
24
  gibson/command/Question.py,sha256=bfAkfhSdNAfFqWp18Nv4CzdtFTCDW5BQaLxEci6V8H0,3748
23
- gibson/command/Remove.py,sha256=GRq5vZXK-ADKhRdye7ehm1kmMoMuQe8XF_hbEMx2gy0,2390
25
+ gibson/command/Remove.py,sha256=RWgERQ2IlnH-NduMzBYZun2_pHUvC9UsJXehibPuMRI,2392
24
26
  gibson/command/Rename.py,sha256=OYF0h3YDPycUrny-K8IOZjCEUEa9H4RtRbuIjTka-g4,2220
25
27
  gibson/command/Rewrite.py,sha256=IfKdMOmHYy_oXBASXLwBftUIwDc-yZKi1P6A1u3iyZM,3132
26
28
  gibson/command/Schema.py,sha256=w47Z2klLAUSGx8Ln6iCWCVuZtz6cHBMc_i4ru7DqhyI,1233
@@ -32,7 +34,7 @@ gibson/command/Tree.py,sha256=JWvUimeHWY5-6vEh6axTkhAdI-dVTxbKSjx_4isAAx8,3041
32
34
  gibson/command/Version.py,sha256=Dbi1Mg56oRahWF-hxfCGFwRUli7vYguoCKKkJv-c7MI,227
33
35
  gibson/command/WarGames.py,sha256=V0KIpz-Z546qtQaOPdIVHQ6wp2n3r3M3tgKx-GRQzzU,1300
34
36
  gibson/command/auth/Auth.py,sha256=7R4Xt9NrkkSg8yYZeWi0VdhqCCK8ved2JUBdCbrMMZ8,717
35
- gibson/command/auth/Login.py,sha256=QpIQirzCAl_bDfV7zZLZKJIj2NGqTzmr6PDN000DIfI,746
37
+ gibson/command/auth/Login.py,sha256=aC9FHq9Hgi6yJLfdPUNdGSyocQtx9Uzrf95ZOzhyQgg,439
36
38
  gibson/command/auth/Logout.py,sha256=9fs_iNdJdcdsE7q5Yi0XzqH_A0w8uqP34YZ6PWcZ3Pg,212
37
39
  gibson/command/tests/test_command_BaseCommand.py,sha256=hSbBfLFI3RTp_DdEHtm5oOLWoN6drI6ucFJypi7xxV8,364
38
40
  gibson/command/tests/test_command_Conf.py,sha256=NhN8tIZ_lwP0fV4jtplaxJbO3GTozsQVmiV5j1BNbxQ,583
@@ -56,13 +58,13 @@ gibson/conf/tests/test_conf_Dependencies.py,sha256=LITeeYiqXM5rKkyWFBqcnMvUR5pzD
56
58
  gibson/conf/tests/test_conf_Platform.py,sha256=Zc53IsZmV-hT9VRrZEPNrsuehSdWnJXWKGMmOhEqWHo,138
57
59
  gibson/core/CommandRouter.py,sha256=jYKWpsCQGLjuCPkg7C8PPBnS07AddrUv3APTqB0s2C0,9558
58
60
  gibson/core/Completions.py,sha256=N-mfeImSzw-d3Lrpu1KVnt0geMuKkbTaHpYTMYcPcAQ,1152
59
- gibson/core/Configuration.py,sha256=6EX8vh7qf15OB1hDfr2lYyKz6r-nB3KG0ltiax80_dU,14300
60
- gibson/core/Conversation.py,sha256=rKSfJao5VGj1WyWHjfbKnYqWS9j0fPmDCF5uX9e04zs,8196
61
+ gibson/core/Configuration.py,sha256=-L1MS2gkXPEpTcuFCnpuMKIinvBgxdE02RhRh4fnccY,15633
62
+ gibson/core/Conversation.py,sha256=gFP0fZCNiQ8K44qUQpAt9xokxJTft3_nfqiHmEoFlUE,8811
61
63
  gibson/core/Env.py,sha256=7HFKGah25KjLelyOjYS8ylR6yDScT6utyZe7HdB3aRE,431
62
64
  gibson/core/Memory.py,sha256=Anauq7vx883Bg5djoZCVyvAJBQeMtqQLzZtNecJMpZc,3921
63
65
  gibson/core/TimeKeeper.py,sha256=0mzs04wizjGEJbiQFWZyi4ja4XgeJaDqc0JzPCHp9po,250
64
66
  gibson/core/utils.py,sha256=KTnPvA3sUYnLFTZG7Tke5YEdls8Da0rNbeaOm8hapiU,408
65
- gibson/data/bash-completion.tmpl,sha256=d9oGeuTjD7Dm_rp5ojjcAyIxy8W_5rK7IPO60CyWMkw,2383
67
+ gibson/data/bash-completion.tmpl,sha256=zK-g40Z1AF5kpAgKgze6KzLMoQMIWnrDt0Hxlj9B3n4,2728
66
68
  gibson/data/default-ref-table.tmpl,sha256=cVqjTsmHDjmTGrbDEpNHaDG-GX1iWMzsQDXk5TASEXg,123
67
69
  gibson/data/default-table.tmpl,sha256=4t7SmXBuZN4nV5SjuQp6PBdo0-c3hdRnl8TQ2wdaS3w,247
68
70
  gibson/db/TableExceptions.py,sha256=F1NGHDhusg9E_3tLez1_abrbANtWyR0UtC_wE9CwNFE,137
@@ -74,8 +76,8 @@ gibson/display/WorkspaceHeader.py,sha256=1oyyhZJF6C0SUCY2Cs_VkXt5Plp8xLb51XWa278
74
76
  gibson/display/tests/test_display_Header.py,sha256=I1GmB9RRa80rcYtgm3YXtpugdp5obca94zBVjmREYCY,324
75
77
  gibson/display/tests/test_display_WorkspaceFooter.py,sha256=96syJutXZWbGOLiAS5SkRZjwEAgj0E0t-uTT85BJe_w,359
76
78
  gibson/display/tests/test_display_WorkspaceHeader.py,sha256=9FuNLOkCAyFSDaonZbLQhLJSizc7bI2HAz3z1ifJlYs,316
77
- gibson/lang/Python.py,sha256=0QFqEFEmpRYB9ZpjbJZCAQFAg4eSAWg0bogDTaXpEgY,1680
78
- gibson/lang/tests/test_lang_Python.py,sha256=exebkaJXOQs6rtBf-5LSpbIARFb6oNqxT6oMWC2K2Tg,1968
79
+ gibson/lang/Python.py,sha256=WNbCTFhDh9qXVbeySyfaP-6m-c0wllSCZw8A-r_Z0Oo,1764
80
+ gibson/lang/tests/test_lang_Python.py,sha256=YpdqYOGAssg-jP9GuzfoU4Y4L7Boj0vAUAJgjuZvedo,1862
79
81
  gibson/services/auth/Server.py,sha256=j8pjO8R6AUeFJnK2GI9H-C5YQcMlg1rliR08H4qy_CI,1953
80
82
  gibson/services/code/context/schema/DataDictionary.py,sha256=zWLzxOzW8iMHxfXPEwnnbruEAtFa8j1UpghNd4AHzfA,369
81
83
  gibson/services/code/context/schema/EntityKeys.py,sha256=rmCABPloMckvzfq9Gwx6DRP-RdmEwXarkpMR4boIQwQ,1569
@@ -83,7 +85,7 @@ gibson/services/code/context/schema/Manager.py,sha256=I_xcPrcE2nFJmBEXcIoJQ9lxKf
83
85
  gibson/services/code/context/schema/tests/test_code_context_schema_DataDictionary.py,sha256=YkWrE1lzpR0amIeQC7lTUCSp54FRMGJrkfmu1FeOI7M,364
84
86
  gibson/services/code/context/schema/tests/test_code_context_schema_EntityKeys.py,sha256=i--xVPHNw7Ks8kkuv9GmSbpp0BuMMKTGtPBY1HwT-60,2114
85
87
  gibson/services/code/context/schema/tests/test_code_context_schema_Manager.py,sha256=FiQFpFmJjv9g46QjmBjGVF3yz1GF0Q42j0fvZm5ZOYw,1230
86
- gibson/services/code/customization/Authenticator.py,sha256=kbE-zXfUaY_8F9g3CCQrt5zPbcUMwumJbePHc_GLc0Y,1579
88
+ gibson/services/code/customization/Authenticator.py,sha256=wSXKYyJQW129ImNe_ll_ecQct3Ql8tgvkbcCyoyNlBs,1597
87
89
  gibson/services/code/customization/BaseCustomization.py,sha256=9a3S6KQEVXevqIv7q9BrPTP-luB2FsM0ULkSxEkYVrs,293
88
90
  gibson/services/code/customization/CustomizationManager.py,sha256=wCwmN1S5lVQVsZyg2_Rwb7NW5kq-loWoJ466bUw6UVw,584
89
91
  gibson/services/code/customization/tests/test_code_customization_Authenticator.py,sha256=kKExkLfKPpRA2NQH3fvRCuBEMhCGhR-IvNJqXuyBz3c,1949
@@ -101,8 +103,8 @@ gibson/structure/tests/test_Entity.py,sha256=Gl9f1NcEKdpWCx4W3takFFzp18mLhCYWKrd
101
103
  gibson/tests/test_Env.py,sha256=DPWmP0-aEelducq9bAwv7rKoY2NjWXUeCrzfJDQkn2M,369
102
104
  gibson/tests/test_Memory.py,sha256=YP7owToABAk_-s7fD5UG0HTc4lamDjdA39JUlLnk3Fg,2574
103
105
  gibson/tests/test_utils.py,sha256=r_y-EG05YTCNtL8MWiAK1KmPsmeoMgypKsQC_lVgOtM,559
104
- gibson_cli-0.1.5.dist-info/METADATA,sha256=T4hgBIfOE1f_0YHtcf4n9vMbJHHKfK12HsgkXj-OLqk,11437
105
- gibson_cli-0.1.5.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
106
- gibson_cli-0.1.5.dist-info/entry_points.txt,sha256=j5VUvq3AzL21xPvVC24zMoXFt-I5lUWulr66nL3OAPM,50
107
- gibson_cli-0.1.5.dist-info/top_level.txt,sha256=GIvzfJmscYHhX9eE-3SJmCIcjF3If-EtcoQdnlmsBuQ,7
108
- gibson_cli-0.1.5.dist-info/RECORD,,
106
+ gibson_cli-0.2.0.dist-info/METADATA,sha256=ZYP8G48fY_PMGjSMOw2on4riXv2ACVTV5WqmmbMi6xw,11437
107
+ gibson_cli-0.2.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
108
+ gibson_cli-0.2.0.dist-info/entry_points.txt,sha256=j5VUvq3AzL21xPvVC24zMoXFt-I5lUWulr66nL3OAPM,50
109
+ gibson_cli-0.2.0.dist-info/top_level.txt,sha256=RFaUY7VXGiqkMwo1Rj7pM4kGvxkhhnfo-2LmPpuL_fs,11
110
+ gibson_cli-0.2.0.dist-info/RECORD,,