edman package¶
Submodules¶
edman.config module¶
- class edman.config.Config[ソース]¶
ベースクラス:
objectこのパッケージを利用したシステム上での共通の定義
デフォルトのままをおすすめする
定義を変更した場合、このパッケージを利用している他のシステムと、データ交換ができなくなるDBにデータが入っている状態で、この定義を変更した場合、データが破壊される可能性が高いそれでも変更したい場合は、単一、もしくは同じシステム内で定義を統一することその場合、他のシステムとデータ交換したくなった場合は独自に変換スクリプトを作成すること- child = '_ed_child'¶
- date = '#date'¶
- file = '_ed_file'¶
- gzip_compress_level = 6¶
- parent = '_ed_parent'¶
edman.convert module¶
- class edman.convert.Convert[ソース]¶
ベースクラス:
object研究データをEdman用にコンバートするクラス
- dict_to_edman(raw_data: dict, mode='ref') list[ソース]¶
- json辞書からedman用に変換するembはobjectIdを付与したり、辞書からリストに変換している
- パラメータ
raw_data (dict) -- JSONを辞書にしたデータ
mode (str) -- ref(reference) or emb(embedded) データ構造の選択肢
- 戻り値
インサート用のリストデータ
- 戻り値の型
list
- emb(raw_data: dict) dict[ソース]¶
- エンベデッドモードでedman用の変換を行う主に日付の変換update処理でも使用している
- パラメータ
raw_data (dict) --
- 戻り値
- 戻り値の型
dict
edman.db module¶
- class edman.db.DB(con=None)[ソース]¶
ベースクラス:
objectDB関連クラスMongoDBへの接続や各種チェック、インサート、作成や破棄など- bson_type(bson_data: dict) dict[ソース]¶
DB内のデータをJSONに従って型変更をする DBにあってJSONにないキーは無視 スペルミスも含め型一覧にない型を指定した時はstrに変換
JSON例: {
- "コレクション名":{
"キー": "変更する型", "キー2": "変更する型",
}, "コレクション名2":{
"キー": ["変更する型","変更する型"],
}
}
- 値がリストの時
・双方どちらかがリストでない時は無視 ・JSON側が単一、DB側が複数の時は単一の型で全て変換する
JSON:['str'] DB:['1','2','3']
- ・JSON側よりDB側が少ない時はJSON側は切り捨て
JSON:['str'、'int', 'int'] DB:['1',2]
- ・DB側よりJSON側が少ない時は、リストの最後の型で繰り返す
JSON:['str'、'int'] DB:['1',2,3,4,5]
型一覧: [int,float,bool,str,datetime]
- パラメータ
bson_data (dict) --
- 戻り値
result
- 戻り値の型
dict
- delete(oid: Union[str, bson.objectid.ObjectId], collection: str, structure: str) bool[ソース]¶
- ドキュメントを削除する指定のoidを含む下位のドキュメントを全削除refで親が存在する時は親のchildリストから指定のoidを取り除く
- パラメータ
oid (str or ObjectId) --
collection (str) --
structure (str) --
- 戻り値
- 戻り値の型
bool
- static delete_reference(emb_data: dict, reference: tuple) dict[ソース]¶
ドキュメント内の特定の項目(リファレンスも)を削除する
- パラメータ
emb_data (dict) --
reference (tuple) --
- 戻り値
- 戻り値の型
dict
- doc(collection: str, oid: Union[bson.objectid.ObjectId, str], query: Optional[list], reference_delete=True) dict[ソース]¶
- refもしくはembのドキュメントを取得するオプションでedman特有のデータ含んで取得することもできる
- パラメータ
collection (str) --
oid (ObjectId or str) --
query (list or None) --
reference_delete (bool) -- default True
- 戻り値
result
- 戻り値の型
dict
- find_collection_from_objectid(oid: Union[str, bson.objectid.ObjectId]) Optional[str][ソース]¶
- DB内のコレクションから指定のObjectIDを探し、所属しているコレクションを返すDBに負荷がかかるので使用は注意が必要
- パラメータ
oid (ObjectId or str) --
- 戻り値
collection
- 戻り値の型
str or None
- get_child(self_doc: dict, depth: int) dict[ソース]¶
- 子のドキュメントを取得depthで深度を設定し、階層分取得する
- パラメータ
self_doc (dict) --
depth (int) --
- 戻り値
- 戻り値の型
dict
- get_collections(coll_filter=None, gf_filter=True) list[ソース]¶
コレクションを取得
- パラメータ
coll_filter (dict or None) --
gf_filter (bool) -- default True
- 戻り値
- 戻り値の型
list
- property get_db¶
プロパティ
- 戻り値
DB接続インスタンス(self.db)
- get_reference_point(self_result: dict) dict[ソース]¶
- ドキュメントに親や子のリファレンス項目名が含まれているか調べる片方しかない場合は末端(親、または一番下の子)となる両方含まれていればこのドキュメントには親と子が存在する両方含まれていなければ、単独のドキュメント
- パラメータ
self_result (dict) --
- 戻り値
- 戻り値の型
dict
- get_structure(collection: str, oid: bson.objectid.ObjectId) str[ソース]¶
対象のドキュメントの構造を取得する
- パラメータ
collection (str) --
oid (ObjectId) --
- 戻り値
ref or emb
- 戻り値の型
str
- insert(insert_data: list, cmd=True) list[ソース]¶
インサート実行
- パラメータ
insert_data (list) -- バルクインサート対応のリストデータ
cmd (bool) -- default True プログレスバーを標準出力するかどうかのフラグ
- 戻り値
results
- 戻り値の型
list
- item_delete(collection: str, oid: Union[bson.objectid.ObjectId, str], delete_key: str, query: Optional[list]) bool[ソース]¶
ドキュメントの項目を削除する
- パラメータ
collection (str) --
oid (str or ObjectId) --
delete_key (str) --
query (list or None) --
- 戻り値
- 戻り値の型
bool
- loop_exclusion_key_and_ref(collection: str, key: str, exclusion: tuple) dict[ソース]¶
対象のコレクション内のドキュメントを全て、指定のキーの要素を抜き出してrefに変換してDBに入れる また、取り出したデータ内の指定の要素を除外することもできる
- パラメータ
collection (str) -- 変換対象のコレクション
key (str) -- refに変換開始する対象のキー
exclusion (tuple) -- 除外するキーの設定
- 戻り値
result
- 戻り値の型
dict
- static pack_list(types: list, target: list) list[ソース]¶
typesが少ない時に、最後の値で足りない分を埋める 例 types = [str, int, int, str] target = ['1', '2', '3', '4', '5'] 出力は [str, int, int, str, str]
types = [int] target = ['1', '2', '3', '4', '5'] 出力は [int, int, int, int, int]
- パラメータ
types --
target --
- 戻り値
types
- 戻り値の型
list
edman.exceptions module¶
- exception edman.exceptions.EdmanDbConnectError(message)[ソース]¶
ベースクラス:
edman.exceptions.EdmanErrorDB接続に関するエラー
- exception edman.exceptions.EdmanDbProcessError(message)[ソース]¶
ベースクラス:
edman.exceptions.EdmanErrorDB実行処理に関するエラー
- exception edman.exceptions.EdmanFormatError(message)[ソース]¶
ベースクラス:
edman.exceptions.EdmanErrorEdmanの名称や決まりごとに関するエラー
- exception edman.exceptions.EdmanInternalError(message)[ソース]¶
ベースクラス:
edman.exceptions.EdmanErrorEdmanの処理に関するエラー
edman.file module¶
- class edman.file.File(db=None)[ソース]¶
ベースクラス:
objectファイル取扱クラス
- add_file_reference(collection: str, oid: Union[bson.objectid.ObjectId, str], file_path: Tuple[pathlib.Path], structure: str, query=None, compress=False) bool[ソース]¶
ドキュメントにファイルリファレンスを追加する ファイルのインサート処理、圧縮処理なども行う
- パラメータ
collection (str) --
oid (ObjectId or str) --
file_path (tuple) --
structure (str) --
query (list or None) --
compress (bool) -- default False
- 戻り値
- 戻り値の型
bool
- delete(delete_oid: bson.objectid.ObjectId, collection: str, oid: Union[bson.objectid.ObjectId, str], structure: str, query=None) bool[ソース]¶
該当のoidをファイルリファレンスから削除し、GridFSからファイルを削除
- パラメータ
delete_oid (ObjectId) --
collection (str) --
oid (str) --
structure (str) --
query (list or None) --
- 戻り値
- 戻り値の型
bool
- download(oid: bson.objectid.ObjectId, path: Union[str, pathlib.Path]) bool[ソース]¶
Gridfsからデータをダウンロードし、ファイルに保存 metadataに圧縮指定があれば伸長する
- パラメータ
oid (ObjectId) --
path (str or Path) --
- 戻り値
result
- 戻り値の型
bool
- static file_gen(files: Tuple[pathlib.Path]) Iterator[ソース]¶
ファイルタプルからファイルを取り出すジェネレータ
- パラメータ
files (tuple) -- 中身はPathオブジェクト
- 戻り値
ファイル名と内容(str)のタプル
- 戻り値の型
tuple
- file_list_attachment(doc: dict, files_oid: List[bson.objectid.ObjectId]) dict[ソース]¶
辞書データにファイルのoidを挿入する docにself.file_refがあれば、追加する処理 oidが重複していないものだけ追加 ファイルが同じでも別のoidが与えられていれば追加される
- パラメータ
doc (dict) --
files_oid (list) -- ObjectIdのリスト
- 戻り値
doc
- 戻り値の型
dict
- file_list_replace(doc: dict, files_oid: list) dict[ソース]¶
ドキュメントのファイルリファレンスを入力されたリストに置き換える もし空リストならファイルリファレンス自体を削除する
すでにファイルリファレンスデータが存在していることを前提としているため、 docにファイルリファレンスデータが無かった場合は例外を発生する
- パラメータ
doc (dict) --
files_oid (list) --
- 戻り値
doc
- 戻り値の型
dict
edman.json_manager module¶
edman.search module¶
- class edman.search.Search(db=None)[ソース]¶
ベースクラス:
object検索関連クラス
- find(collection: str, query: dict, parent_depth: int, child_depth: int, exclusion=None) dict[ソース]¶
検索用メソッド
- パラメータ
collection (str) -- 対象コレクション
query (dict) -- 検索クエリ
parent_depth (int) -- 親の指定深度
child_depth (int) -- 子の指定深度
:param None or list exclusion:除外するリファレンスキー 例 ['_ed_file'] :return: result 親 + 自分 + 子の階層構造となった辞書データ :rtype: dict
edman.utils module¶
- class edman.utils.Utils[ソース]¶
ベースクラス:
object各クラス共通の静的メソッドインスタンス化禁止- static child_combine(rec_result: list) dict[ソース]¶
- 同じコレクションのデータをリストでまとめるジェネレータコレクション:ドキュメントのリストを作成{collection:[{key:value},{key:value}...]}
- パラメータ
rec_result (list) --
- 戻り値
- 戻り値の型
dict
- static collection_name_check(collection_name: str) bool[ソース]¶
- MongoDBの命名規則チェック(コレクション名) | # $ None(null) '' system.最初がアンスコか文字mongoの制約の他に頭文字に#もNGコレクション名空間の最大長は、データベース名、ドット(.)区切り文字およびコレクション名(つまり <database>.<collection>)を合わせて120バイトを超えないことただし、子のメソッド利用時はDB名を取得するタイミングではないため、文字数のチェックは行えないことを留意すること
- パラメータ
collection_name (str) --
- 戻り値
- 戻り値の型
bool
- static conv_objectid(oid: Union[str, bson.objectid.ObjectId]) bson.objectid.ObjectId[ソース]¶
- 文字列だった場合ObjectIdを変換する元々ObjectIdならそのまま
- パラメータ
oid (ObjectId or str) --
- 戻り値
result
- 戻り値の型
ObjectId
- static doc_traverse(doc: dict, target_keys: list, query: list, f: Callable) dict[ソース]¶
- ドキュメントを走査し、クエリで指定した階層に指定の関数オブジェクトを適応関数適応後のドキュメントを返す
- パラメータ
doc (dict) --
target_keys (list) -- コールバック関数の適応対象の辞書のキーのリスト
query (list) --
f (Callable) -- コールバック関数
- 戻り値
doc
- 戻り値の型
dict
- static field_name_check(field_name: str) bool[ソース]¶
- MongoDBの命名規則チェック(フィールド名)void, None(Null), 文字列先頭に($ .)は使用不可
- パラメータ
field_name (str) --
- 戻り値
- 戻り値の型
bool
- static item_delete(doc: dict, del_keys: tuple) dict[ソース]¶
特定のキーの項目を削除 _id、親と子のリファレンス、ファイルリファレンスなど
- パラメータ
doc (dict) --
del_keys (tuple) --
- 戻り値
item
- 戻り値の型
dict
- static item_literal_check(list_child: Union[dict, list]) bool[ソース]¶
- リストデータ内にリテラルやオブジェクトのデータだけあればTrueそれ以外はFalseOKパターンlist_child = [1,2,3]list_child = [1,2,objectId()]NGパターンlist_child = {'A':'B'}list_child = ['A':[1,2,3]]list_child = [1,2,{'A':'B'}]
- パラメータ
list_child (dict or list) --
- 戻り値
- 戻り値の型
bool
- static query_check(query: list, doc: dict) bool[ソース]¶
クエリーが正しいか評価
- パラメータ
query (list) --
doc (dict) --
- 戻り値
result
- 戻り値の型
bool