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

static exclusion_key(data: dict, ex_keys: tuple) dict[ソース]

指定のキーの要素を除外する

パラメータ
  • data (dict) --

  • ex_keys (tuple) --

戻り値

result

戻り値の型

dict

static pullout_key(data: dict, pull_key: str) dict[ソース]

最初に発見した指定のキーの要素を、子要素を含めて抜き出す

パラメータ
  • data (dict) --

  • pull_key (str) --

戻り値

output

戻り値の型

dict

edman.db module

class edman.db.DB(con=None)[ソース]

ベースクラス: object

DB関連クラス
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_child_all(self_doc: dict) dict[ソース]

子のドキュメントを再帰で全部取得

パラメータ

self_doc (dict) --

戻り値

戻り値の型

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

structure(collection: str, oid: bson.objectid.ObjectId, structure_mode: str, new_collection: str) list[ソース]

構造をrefからembへ、またはembからrefへ変更する

パラメータ
  • collection (str) --

  • oid (ObjectId) --

  • structure_mode (str) --

  • new_collection (str) --

戻り値

structured_result

戻り値の型

list

update(collection: str, oid: Union[str, bson.objectid.ObjectId], amend_data: dict, structure: str) bool[ソース]

修正データを用いてDBデータをアップデート

パラメータ
  • collection (str) --

  • oid (str or ObjectId) --

  • amend_data (dict) --

  • structure (str) --

戻り値

戻り値の型

bool

edman.exceptions module

exception edman.exceptions.EdmanDbConnectError(message)[ソース]

ベースクラス: edman.exceptions.EdmanError

DB接続に関するエラー

exception edman.exceptions.EdmanDbProcessError(message)[ソース]

ベースクラス: edman.exceptions.EdmanError

DB実行処理に関するエラー

exception edman.exceptions.EdmanError(message)[ソース]

ベースクラス: Exception

exception edman.exceptions.EdmanFormatError(message)[ソース]

ベースクラス: edman.exceptions.EdmanError

Edmanの名称や決まりごとに関するエラー

exception edman.exceptions.EdmanInternalError(message)[ソース]

ベースクラス: edman.exceptions.EdmanError

Edmanの処理に関するエラー

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

fs_delete(oids: list) None[ソース]

fsからファイル削除

パラメータ

oids (list) --

戻り値

get_file_names(collection: str, oid: Union[bson.objectid.ObjectId, str], structure: str, query=None) dict[ソース]

ファイル一覧を取得 ファイルが存在しなければ空の辞書を返す

パラメータ
  • collection (str) --

  • oid (str) --

  • structure (str) --

  • query (list or None) -- embの時だけ必要. refの時はNone

戻り値

result

戻り値の型

dict

get_file_ref(doc: dict, structure: str, query=None) list[ソース]

ファイルリファレンス情報を取得

パラメータ
  • doc (dict) --

  • structure (str) --

  • query --

Type

list or None

戻り値

files_list

戻り値の型

list

edman.json_manager module

class edman.json_manager.JsonManager[ソース]

ベースクラス: object

JSONファイルの取扱いクラス

static save(report_data: dict, path: Union[str, pathlib.Path], name: str, date=False) None[ソース]

JSONファイルに書き出し

パラメータ
  • report_data (dict) -- 対象の辞書データ

  • path (str or Path) -- ファイルパス

  • name (str) -- ファイル名

  • date (bool) -- 日付 ファイル名先頭に追加

戻り値

None

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

process_data_derived_from_mongodb(result_dict: dict, exclusion=None) dict[ソース]
MongoDB依存の項目を処理する::

_idとrefの削除 型をJSONに合わせる

パラメータ
  • result_dict (dict) --

  • exclusion (List or None) -- default ['_id', self.parent, self.child, self.file]

戻り値

result_dict

戻り値の型

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
それ以外はFalse

OKパターン
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

static to_datetime(s: str) Union[datetime.datetime, str][ソース]
日付もしくは日付時間をdatetimeオブジェクトに変換
日付や日付時間にならないものは文字列に変換
パラメータ

s (str) --

戻り値

戻り値の型

datetime or str

static type_cast_conv(datatype: str) Union[bool, int, float, str, dateutil.parser._parser.parse][ソース]

データタイプに合わせて型を選択する

パラメータ

datatype (int) --

戻り値

戻り値の型

bool or int or float or str or dateutil.parser.parse

Module contents