Codestyle enhancements

This commit is contained in:
Patrick Jentsch 2023-08-10 15:48:49 +02:00
parent 2951fc6966
commit 04575b78cf
2 changed files with 28 additions and 24 deletions

View File

@ -6,7 +6,7 @@ from flask_login import current_user
from flask_socketio import Namespace from flask_socketio import Namespace
from inspect import signature from inspect import signature
from threading import Lock from threading import Lock
from typing import Callable, Dict, List from typing import Callable, Dict, List, Optional
from app import db, hashids, socketio from app import db, hashids, socketio
from app.decorators import socketio_login_required from app.decorators import socketio_login_required
from app.models import Corpus, CorpusStatus from app.models import Corpus, CorpusStatus
@ -92,8 +92,8 @@ class CQiNamespace(Namespace):
@socketio_login_required @socketio_login_required
def on_init(self, db_corpus_hashid: str): def on_init(self, db_corpus_hashid: str):
db_corpus_id = hashids.decode(db_corpus_hashid) db_corpus_id: int = hashids.decode(db_corpus_hashid)
db_corpus = Corpus.query.get(db_corpus_id) db_corpus: Optional[Corpus] = Corpus.query.get(db_corpus_id)
if db_corpus is None: if db_corpus is None:
return {'code': 404, 'msg': 'Not Found'} return {'code': 404, 'msg': 'Not Found'}
if not (db_corpus.user == current_user if not (db_corpus.user == current_user
@ -112,7 +112,7 @@ class CQiNamespace(Namespace):
db.session.commit() db.session.commit()
db_corpus.num_analysis_sessions = Corpus.num_analysis_sessions + 1 db_corpus.num_analysis_sessions = Corpus.num_analysis_sessions + 1
db.session.commit() db.session.commit()
retry_counter = 20 retry_counter: int = 20
while db_corpus.status != CorpusStatus.RUNNING_ANALYSIS_SESSION: while db_corpus.status != CorpusStatus.RUNNING_ANALYSIS_SESSION:
if retry_counter == 0: if retry_counter == 0:
db_corpus.num_analysis_sessions = Corpus.num_analysis_sessions - 1 db_corpus.num_analysis_sessions = Corpus.num_analysis_sessions - 1
@ -121,11 +121,15 @@ class CQiNamespace(Namespace):
socketio.sleep(3) socketio.sleep(3)
retry_counter -= 1 retry_counter -= 1
db.session.refresh(db_corpus) db.session.refresh(db_corpus)
cqi_client = CQiClient(f'cqpserver_{db_corpus_id}', timeout=float('inf')) cqi_client: CQiClient = CQiClient(
session['cqi_over_sio'] = {} f'cqpserver_{db_corpus_id}',
session['cqi_over_sio']['cqi_client'] = cqi_client timeout=float('inf')
session['cqi_over_sio']['cqi_client_lock'] = Lock() )
session['cqi_over_sio']['db_corpus_id'] = db_corpus_id session['cqi_over_sio'] = {
'cqi_client': cqi_client,
'cqi_client_lock': Lock(),
'db_corpus_id': db_corpus_id
}
return {'code': 200, 'msg': 'OK'} return {'code': 200, 'msg': 'OK'}
@socketio_login_required @socketio_login_required
@ -193,7 +197,8 @@ class CQiNamespace(Namespace):
except (BrokenPipeError, CQiException): except (BrokenPipeError, CQiException):
pass pass
cqi_client_lock.release() cqi_client_lock.release()
db_corpus = Corpus.query.get(db_corpus_id) db_corpus: Optional[Corpus] = Corpus.query.get(db_corpus_id)
if db_corpus is not None: if db_corpus is None:
db_corpus.num_analysis_sessions = Corpus.num_analysis_sessions - 1 return
db.session.commit() db_corpus.num_analysis_sessions = Corpus.num_analysis_sessions - 1
db.session.commit()

View File

@ -1,23 +1,22 @@
from cqi.models.corpora import Corpus from cqi.models.corpora import Corpus as CQiCorpus
from cqi.models.subcorpora import Subcorpus from cqi.models.subcorpora import Subcorpus as CQiSubcorpus
from typing import Dict, List from typing import Dict, List
from app.models import Corpus
def lookups_by_cpos(corpus: Corpus, cpos_list: List[int]) -> Dict: def lookups_by_cpos(corpus: CQiCorpus, cpos_list: List[int]) -> Dict:
lookups = {} lookups = {}
lookups['cpos_lookup'] = {cpos: {} for cpos in cpos_list} lookups['cpos_lookup'] = {cpos: {} for cpos in cpos_list}
for attr in corpus.positional_attributes.list(): for attr in corpus.positional_attributes.list():
cpos_attr_values = attr.values_by_cpos(cpos_list) cpos_attr_values: List[str] = attr.values_by_cpos(cpos_list)
for i, cpos in enumerate(cpos_list): for i, cpos in enumerate(cpos_list):
lookups['cpos_lookup'][cpos][attr.attrs['name']] = \ lookups['cpos_lookup'][cpos][attr.attrs['name']] = \
cpos_attr_values[i] cpos_attr_values[i]
for attr in corpus.structural_attributes.list(): for attr in corpus.structural_attributes.list():
# We only want to iterate over non subattributes, identifiable by # We only want to iterate over non subattributes, identifiable by
# attr.attrs['has_values'] == False # attr.has_values == False
if attr.attrs['has_values']: if attr.has_values:
continue continue
cpos_attr_ids = attr.ids_by_cpos(cpos_list) cpos_attr_ids: List[int] = attr.ids_by_cpos(cpos_list)
for i, cpos in enumerate(cpos_list): for i, cpos in enumerate(cpos_list):
if cpos_attr_ids[i] == -1: if cpos_attr_ids[i] == -1:
continue continue
@ -28,7 +27,7 @@ def lookups_by_cpos(corpus: Corpus, cpos_list: List[int]) -> Dict:
subattrs = corpus.structural_attributes.list(filters={'part_of': attr}) subattrs = corpus.structural_attributes.list(filters={'part_of': attr})
if not subattrs: if not subattrs:
continue continue
lookup_name = f'{attr.attrs["name"]}_lookup' lookup_name: str = f'{attr.attrs["name"]}_lookup'
lookups[lookup_name] = {} lookups[lookup_name] = {}
for attr_id in occured_attr_ids: for attr_id in occured_attr_ids:
lookups[lookup_name][attr_id] = {} lookups[lookup_name][attr_id] = {}
@ -40,7 +39,7 @@ def lookups_by_cpos(corpus: Corpus, cpos_list: List[int]) -> Dict:
def partial_export_subcorpus( def partial_export_subcorpus(
subcorpus: Subcorpus, subcorpus: CQiSubcorpus,
match_id_list: List[int], match_id_list: List[int],
context: int = 25 context: int = 25
) -> Dict: ) -> Dict:
@ -89,7 +88,7 @@ def partial_export_subcorpus(
def export_subcorpus( def export_subcorpus(
subcorpus: Subcorpus, subcorpus: CQiSubcorpus,
context: int = 25, context: int = 25,
cutoff: float = float('inf'), cutoff: float = float('inf'),
offset: int = 0 offset: int = 0