1717import shutil
1818from datajoint .utils import parse_sql
1919
20- __author__ = ' Edgar Walker, Fabian Sinz, Dimitri Yatsenko, Raphael Guzman'
20+ __author__ = " Edgar Walker, Fabian Sinz, Dimitri Yatsenko, Raphael Guzman"
2121
2222# turn on verbose logging
2323logging .basicConfig (level = logging .DEBUG )
2424
25- __all__ = [' __author__' , ' PREFIX' , ' CONN_INFO' ]
25+ __all__ = [" __author__" , " PREFIX" , " CONN_INFO" ]
2626
2727# Connection for testing
2828CONN_INFO = dict (
29- host = environ .get ('DJ_TEST_HOST' , 'fakeservices.datajoint.io' ),
30- user = environ .get ('DJ_TEST_USER' , 'datajoint' ),
31- password = environ .get ('DJ_TEST_PASSWORD' , 'datajoint' ))
29+ host = environ .get ("DJ_TEST_HOST" , "fakeservices.datajoint.io" ),
30+ user = environ .get ("DJ_TEST_USER" , "datajoint" ),
31+ password = environ .get ("DJ_TEST_PASSWORD" , "datajoint" ),
32+ )
3233
3334CONN_INFO_ROOT = dict (
34- host = environ .get ('DJ_HOST' , 'fakeservices.datajoint.io' ),
35- user = environ .get ('DJ_USER' , 'root' ),
36- password = environ .get ('DJ_PASS' , 'simple' ))
35+ host = environ .get ("DJ_HOST" , "fakeservices.datajoint.io" ),
36+ user = environ .get ("DJ_USER" , "root" ),
37+ password = environ .get ("DJ_PASS" , "simple" ),
38+ )
3739
3840S3_CONN_INFO = dict (
39- endpoint = environ .get ('S3_ENDPOINT' , 'fakeservices.datajoint.io' ),
40- access_key = environ .get ('S3_ACCESS_KEY' , 'datajoint' ),
41- secret_key = environ .get ('S3_SECRET_KEY' , 'datajoint' ),
42- bucket = environ .get ('S3_BUCKET' , 'datajoint.test' ))
43-
44- S3_MIGRATE_BUCKET = [path .name for path in Path (
45- Path (__file__ ).resolve ().parent ,
46- 'external-legacy-data' , 's3' ).iterdir ()][0 ]
41+ endpoint = environ .get ("S3_ENDPOINT" , "fakeservices.datajoint.io" ),
42+ access_key = environ .get ("S3_ACCESS_KEY" , "datajoint" ),
43+ secret_key = environ .get ("S3_SECRET_KEY" , "datajoint" ),
44+ bucket = environ .get ("S3_BUCKET" , "datajoint.test" ),
45+ )
46+
47+ S3_MIGRATE_BUCKET = [
48+ path .name
49+ for path in Path (
50+ Path (__file__ ).resolve ().parent , "external-legacy-data" , "s3"
51+ ).iterdir ()
52+ ][0 ]
4753
4854# Prefix for all databases used during testing
49- PREFIX = environ .get (' DJ_TEST_DB_PREFIX' , ' djtest' )
55+ PREFIX = environ .get (" DJ_TEST_DB_PREFIX" , " djtest" )
5056conn_root = dj .conn (** CONN_INFO_ROOT )
5157
5258# Initialize httpClient with relevant timeout.
5359httpClient = urllib3 .PoolManager (
54- timeout = 30 ,
55- cert_reqs = 'CERT_REQUIRED' ,
56- ca_certs = certifi .where (),
57- retries = urllib3 .Retry (
58- total = 3 ,
59- backoff_factor = 0.2 ,
60- status_forcelist = [500 , 502 , 503 , 504 ]
61- )
62- )
60+ timeout = 30 ,
61+ cert_reqs = "CERT_REQUIRED" ,
62+ ca_certs = certifi .where (),
63+ retries = urllib3 .Retry (
64+ total = 3 , backoff_factor = 0.2 , status_forcelist = [500 , 502 , 503 , 504 ]
65+ ),
66+ )
6367
6468# Initialize minioClient with an endpoint and access/secret keys.
6569minioClient = minio .Minio (
66- S3_CONN_INFO [' endpoint' ],
67- access_key = S3_CONN_INFO [' access_key' ],
68- secret_key = S3_CONN_INFO [' secret_key' ],
70+ S3_CONN_INFO [" endpoint" ],
71+ access_key = S3_CONN_INFO [" access_key" ],
72+ secret_key = S3_CONN_INFO [" secret_key" ],
6973 secure = True ,
70- http_client = httpClient )
74+ http_client = httpClient ,
75+ )
7176
7277
7378def setup_package ():
7479 """
7580 Package-level unit test setup
7681 Turns off safemode
7782 """
78- dj .config [' safemode' ] = False
83+ dj .config [" safemode" ] = False
7984
8085 # Create MySQL users
81- if LooseVersion (conn_root .query (
82- "select @@version;" ).fetchone ()[0 ]) >= LooseVersion ('8.0.0' ):
86+ if LooseVersion (conn_root .query ("select @@version;" ).fetchone ()[0 ]) >= LooseVersion (
87+ "8.0.0"
88+ ):
8389 # create user if necessary on mysql8
84- conn_root .query ("""
90+ conn_root .query (
91+ """
8592 CREATE USER IF NOT EXISTS 'datajoint'@'%%'
8693 IDENTIFIED BY 'datajoint';
87- """ )
88- conn_root .query ("""
94+ """
95+ )
96+ conn_root .query (
97+ """
8998 CREATE USER IF NOT EXISTS 'djview'@'%%'
9099 IDENTIFIED BY 'djview';
91- """ )
92- conn_root .query ("""
100+ """
101+ )
102+ conn_root .query (
103+ """
93104 CREATE USER IF NOT EXISTS 'djssl'@'%%'
94105 IDENTIFIED BY 'djssl'
95106 REQUIRE SSL;
96- """ )
97- conn_root .query (
98- "GRANT ALL PRIVILEGES ON `djtest%%`.* TO 'datajoint'@'%%';" )
99- conn_root .query (
100- "GRANT SELECT ON `djtest%%`.* TO 'djview'@'%%';" )
101- conn_root .query (
102- "GRANT SELECT ON `djtest%%`.* TO 'djssl'@'%%';" )
107+ """
108+ )
109+ conn_root .query ("GRANT ALL PRIVILEGES ON `djtest%%`.* TO 'datajoint'@'%%';" )
110+ conn_root .query ("GRANT SELECT ON `djtest%%`.* TO 'djview'@'%%';" )
111+ conn_root .query ("GRANT SELECT ON `djtest%%`.* TO 'djssl'@'%%';" )
103112 else :
104113 # grant permissions. For MySQL 5.7 this also automatically creates user
105114 # if not exists
106- conn_root .query ("""
115+ conn_root .query (
116+ """
107117 GRANT ALL PRIVILEGES ON `djtest%%`.* TO 'datajoint'@'%%'
108118 IDENTIFIED BY 'datajoint';
109- """ )
119+ """
120+ )
110121 conn_root .query (
111122 "GRANT SELECT ON `djtest%%`.* TO 'djview'@'%%' IDENTIFIED BY 'djview';"
112- )
113- conn_root .query ("""
123+ )
124+ conn_root .query (
125+ """
114126 GRANT SELECT ON `djtest%%`.* TO 'djssl'@'%%'
115127 IDENTIFIED BY 'djssl'
116128 REQUIRE SSL;
117- """ )
129+ """
130+ )
118131
119132 # Add old MySQL
120- source = Path (
121- Path (__file__ ).resolve ().parent ,
122- 'external-legacy-data' )
133+ source = Path (Path (__file__ ).resolve ().parent , "external-legacy-data" )
123134 db_name = "djtest_blob_migrate"
124135 db_file = "v0_11.sql"
125- conn_root .query ("""
136+ conn_root .query (
137+ """
126138 CREATE DATABASE IF NOT EXISTS {};
127- """ .format (db_name ))
139+ """ .format (
140+ db_name
141+ )
142+ )
128143
129- statements = parse_sql (Path (source ,db_file ))
144+ statements = parse_sql (Path (source , db_file ))
130145 for s in statements :
131146 conn_root .query (s )
132147
133148 # Add old S3
134- source = Path (
135- Path (__file__ ).resolve ().parent ,
136- 'external-legacy-data' , 's3' )
149+ source = Path (Path (__file__ ).resolve ().parent , "external-legacy-data" , "s3" )
137150 region = "us-east-1"
138151 try :
139152 minioClient .make_bucket (S3_MIGRATE_BUCKET , location = region )
140153 except minio .error .S3Error as e :
141- if e .code != ' BucketAlreadyOwnedByYou' :
154+ if e .code != " BucketAlreadyOwnedByYou" :
142155 raise e
143156
144- pathlist = Path (source ).glob (' **/*' )
157+ pathlist = Path (source ).glob (" **/*" )
145158 for path in pathlist :
146159 if os .path .isfile (str (path )) and ".sql" not in str (path ):
147160 minioClient .fput_object (
148- S3_MIGRATE_BUCKET , str (Path (
149- os .path .relpath (str (path ), str (Path (source , S3_MIGRATE_BUCKET ))))
150- .as_posix ()), str (path ))
161+ S3_MIGRATE_BUCKET ,
162+ str (
163+ Path (
164+ os .path .relpath (str (path ), str (Path (source , S3_MIGRATE_BUCKET )))
165+ ).as_posix ()
166+ ),
167+ str (path ),
168+ )
151169 # Add S3
152170 try :
153- minioClient .make_bucket (S3_CONN_INFO [' bucket' ], location = region )
171+ minioClient .make_bucket (S3_CONN_INFO [" bucket" ], location = region )
154172 except minio .error .S3Error as e :
155- if e .code != ' BucketAlreadyOwnedByYou' :
173+ if e .code != " BucketAlreadyOwnedByYou" :
156174 raise e
157175
158176 # Add old File Content
159177 try :
160178 shutil .copytree (
161- str (Path (Path (__file__ ).resolve ().parent ,
162- 'external-legacy-data' ,'file' ,'temp' )),
163- str (Path (os .path .expanduser ('~' ),'temp' )))
179+ str (
180+ Path (
181+ Path (__file__ ).resolve ().parent ,
182+ "external-legacy-data" ,
183+ "file" ,
184+ "temp" ,
185+ )
186+ ),
187+ str (Path (os .path .expanduser ("~" ), "temp" )),
188+ )
164189 except FileExistsError :
165190 pass
166191
@@ -172,31 +197,34 @@ def teardown_package():
172197 To deal with possible foreign key constraints, it will unset
173198 and then later reset FOREIGN_KEY_CHECKS flag
174199 """
175- conn_root .query (' SET FOREIGN_KEY_CHECKS=0' )
200+ conn_root .query (" SET FOREIGN_KEY_CHECKS=0" )
176201 cur = conn_root .query ('SHOW DATABASES LIKE "{}\_%%"' .format (PREFIX ))
177202 for db in cur .fetchall ():
178- conn_root .query (' DROP DATABASE `{}`' .format (db [0 ]))
179- conn_root .query (' SET FOREIGN_KEY_CHECKS=1' )
203+ conn_root .query (" DROP DATABASE `{}`" .format (db [0 ]))
204+ conn_root .query (" SET FOREIGN_KEY_CHECKS=1" )
180205 if os .path .exists ("dj_local_conf.json" ):
181206 remove ("dj_local_conf.json" )
182207
183208 # Remove created users
184- conn_root .query (' DROP USER `datajoint`' )
185- conn_root .query (' DROP USER `djview`' )
186- conn_root .query (' DROP USER `djssl`' )
209+ conn_root .query (" DROP USER `datajoint`" )
210+ conn_root .query (" DROP USER `djview`" )
211+ conn_root .query (" DROP USER `djssl`" )
187212
188213 # Remove old S3
189- objs = list (minioClient .list_objects (
190- S3_MIGRATE_BUCKET , recursive = True ))
191- objs = [minioClient .remove_object (S3_MIGRATE_BUCKET ,
192- o .object_name .encode ('utf-8' )) for o in objs ]
214+ objs = list (minioClient .list_objects (S3_MIGRATE_BUCKET , recursive = True ))
215+ objs = [
216+ minioClient .remove_object (S3_MIGRATE_BUCKET , o .object_name .encode ("utf-8" ))
217+ for o in objs
218+ ]
193219 minioClient .remove_bucket (S3_MIGRATE_BUCKET )
194220
195221 # Remove S3
196- objs = list (minioClient .list_objects (S3_CONN_INFO ['bucket' ], recursive = True ))
197- objs = [minioClient .remove_object (S3_CONN_INFO ['bucket' ],
198- o .object_name .encode ('utf-8' )) for o in objs ]
199- minioClient .remove_bucket (S3_CONN_INFO ['bucket' ])
222+ objs = list (minioClient .list_objects (S3_CONN_INFO ["bucket" ], recursive = True ))
223+ objs = [
224+ minioClient .remove_object (S3_CONN_INFO ["bucket" ], o .object_name .encode ("utf-8" ))
225+ for o in objs
226+ ]
227+ minioClient .remove_bucket (S3_CONN_INFO ["bucket" ])
200228
201229 # Remove old File Content
202- shutil .rmtree (str (Path (os .path .expanduser ('~' ), ' temp' )))
230+ shutil .rmtree (str (Path (os .path .expanduser ("~" ), " temp" )))
0 commit comments