esgvoc 0.1.2__py3-none-any.whl → 0.2.1__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.

Potentially problematic release.


This version of esgvoc might be problematic. Click here for more details.

@@ -7,7 +7,6 @@ from sqlmodel import Column, Field, Relationship, SQLModel
7
7
 
8
8
  import esgvoc.core.db.connection as db
9
9
  from esgvoc.core.db.models.mixins import IdMixin, PkMixin, TermKind
10
-
11
10
  _LOGGER = logging.getLogger("project_db_creation")
12
11
 
13
12
 
@@ -34,13 +33,10 @@ class PTerm(SQLModel, PkMixin, IdMixin, table=True):
34
33
  kind: TermKind = Field(sa_column=Column(sa.Enum(TermKind)))
35
34
  collection_pk: int | None = Field(default=None, foreign_key="collections.pk")
36
35
  collection: Collection = Relationship(back_populates="terms")
36
+ __table_args__ = (sa.Index(
37
+ "drs_name_index", specs.sa_column["drs_name"]
37
38
 
38
-
39
- def create_drs_name_index():
40
- PTerm.__table_args__ = sa.Index(
41
- "drs_name_index", PTerm.__table__.c.specs["drs_name"]
42
- )
43
-
39
+ ),)
44
40
 
45
41
  def project_create_db(db_file_path: Path):
46
42
  try:
@@ -53,7 +49,6 @@ def project_create_db(db_file_path: Path):
53
49
  tables_to_be_created = [SQLModel.metadata.tables['projects'],
54
50
  SQLModel.metadata.tables['collections'],
55
51
  SQLModel.metadata.tables['pterms']]
56
- create_drs_name_index()
57
52
  SQLModel.metadata.create_all(connection.get_engine(), tables=tables_to_be_created)
58
53
  except Exception as e:
59
54
  msg = f'Unable to create tables in SQLite database at {db_file_path}. Abort.'
@@ -11,6 +11,7 @@ from pydantic import BaseModel
11
11
  import esgvoc.core.db.connection as db
12
12
  from esgvoc.core.db.connection import read_json_file
13
13
  from esgvoc.core.db.models.project import Collection, Project, PTerm
14
+ import esgvoc.core.service as service
14
15
 
15
16
 
16
17
  _LOGGER = logging.getLogger("project_ingestion")
@@ -74,7 +75,9 @@ def ingest_collection(collection_dir_path: Path,
74
75
  if term_file_path.is_file() and term_file_path.suffix==".json":
75
76
  try:
76
77
  json_specs = DataMerger(data=JsonLdResource(uri =str(term_file_path)),
77
- locally_available={"https://espri-mod.github.io/mip-cmor-tables":".cache/repos/mip-cmor-tables"}).merge_linked_json()[-1]
78
+ # locally_available={"https://espri-mod.github.io/mip-cmor-tables":".cache/repos/WCRP-universe"}).merge_linked_json()[-1]
79
+ locally_available={"https://espri-mod.github.io/mip-cmor-tables":service.service_settings.universe.local_path}).merge_linked_json()[-1]
80
+
78
81
  term_kind = infer_term_kind(json_specs)
79
82
  term_id = json_specs["id"]
80
83
 
@@ -11,6 +11,7 @@ from esgvoc.core.db.connection import read_json_file
11
11
  from esgvoc.core.db.models.mixins import TermKind
12
12
  from esgvoc.core.db.models.universe import DataDescriptor, UTerm, Universe
13
13
  from esgvoc.core.db.models.universe import universe_create_db
14
+ import esgvoc.core.service as service
14
15
 
15
16
  _LOGGER = logging.getLogger(__name__)
16
17
 
@@ -32,7 +33,7 @@ def ingest_universe(universe_repo_dir_path: Path, universe_db_file_path: Path) -
32
33
  raise IOError(msg) from e
33
34
 
34
35
  for data_descriptor_dir_path in universe_repo_dir_path.iterdir():
35
- if data_descriptor_dir_path.is_dir() and (data_descriptor_dir_path / "000_context.jsonld").exists(): # TODO maybe put that in setting
36
+ if data_descriptor_dir_path.is_dir() and (data_descriptor_dir_path / "000_context.jsonld").exists(): # TODO maybe put that in setting
36
37
  try:
37
38
  ingest_data_descriptor(data_descriptor_dir_path, connection)
38
39
  except Exception as e:
@@ -61,7 +62,6 @@ def ingest_data_descriptor(data_descriptor_path: Path,
61
62
  _LOGGER.warning(msg)
62
63
  return
63
64
 
64
-
65
65
  with connection.create_session() as session:
66
66
  data_descriptor = DataDescriptor(id=data_descriptor_id,
67
67
  context=context,
@@ -74,7 +74,7 @@ def ingest_data_descriptor(data_descriptor_path: Path,
74
74
  if term_file_path.is_file() and term_file_path.suffix == ".json":
75
75
  try:
76
76
  json_specs=DataMerger(data=JsonLdResource(uri=str(term_file_path)),
77
- locally_available={"https://espri-mod.github.io/mip-cmor-tables":".cache/repos/mip-cmor-tables"}).merge_linked_json()[-1]
77
+ locally_available={"https://espri-mod.github.io/mip-cmor-tables":service.service_settings.universe.local_path}).merge_linked_json()[-1]
78
78
  term_kind = infer_term_kind(json_specs)
79
79
  term_id = json_specs["id"]
80
80
 
@@ -4,7 +4,7 @@ from pathlib import Path
4
4
  import toml
5
5
 
6
6
 
7
- SETTINGS_FILE = Path(__file__) / "settings.toml"
7
+ SETTINGS_FILE = Path(__file__).parent / "settings.toml"
8
8
 
9
9
  class ProjectSettings(BaseModel):
10
10
  project_name: str
@@ -44,21 +44,30 @@ def load_settings() -> ServiceSettings:
44
44
  else:
45
45
  default_settings = ServiceSettings(
46
46
  universe=UniverseSettings(
47
- github_repo="https://github.com/ESPRI-Mod/mip-cmor-tables",
48
- branch="uni_proj_ld",
49
- local_path=".cache/repos/mip-cmor-tables",
47
+ github_repo="https://github.com/WCRP-CMIP/WCRP-universe",
48
+ branch="esgvoc",
49
+ local_path=".cache/repos/WCRP-universe",
50
50
  db_path=".cache/dbs/universe.sqlite"
51
51
  ),
52
52
  projects={"cmip6plus":ProjectSettings(
53
53
  project_name="CMIP6Plus_CVs",
54
- github_repo="https://github.com/ESPRI-Mod/CMIP6Plus_CVs",
55
- branch="uni_proj_ld",
54
+ github_repo="https://github.com/WCRP-CMIP/CMIP6Plus_CVs",
55
+ branch="esgvoc",
56
56
  local_path=".cache/repos/CMIP6Plus_CVs",
57
57
  db_path=".cache/dbs/cmip6plus.sqlite"
58
+ ),
59
+
60
+ "cmip6":ProjectSettings(
61
+ project_name="CMIP6_CVs",
62
+ github_repo="https://github.com/WCRP-CMIP/CMIP6_CVs",
63
+ branch="esgvoc",
64
+ local_path=".cache/repos/CMIP6_CVs",
65
+ db_path=".cache/dbs/cmip6.sqlite"
58
66
  )
59
67
  }
60
-
61
- )
68
+
69
+ )
70
+
62
71
 
63
72
  default_settings.save_to_file(str(SETTINGS_FILE))
64
73
  return default_settings
@@ -1,12 +1,17 @@
1
1
  [[projects]]
2
+ project_name = "cmip6"
3
+ github_repo = "https://github.com/WCRP-CMIP/CMIP6_CVs"
4
+ branch = "esgvoc"
5
+ local_path = ".cache/repos/CMIP6_CVs"
6
+ db_path = ".cache/dbs/cmip6.sqlite"
7
+ [[projects]]
2
8
  project_name = "cmip6plus"
3
- github_repo = "https://github.com/ESPRI-Mod/CMIP6Plus_CVs"
4
- branch = "uni_proj_ld"
9
+ github_repo = "https://github.com/WCRP-CMIP/CMIP6Plus_CVs"
10
+ branch = "esgvoc"
5
11
  local_path = ".cache/repos/CMIP6Plus_CVs"
6
12
  db_path = ".cache/dbs/cmip6plus.sqlite"
7
-
8
13
  [universe]
9
- github_repo = "https://github.com/ESPRI-Mod/mip-cmor-tables"
10
- branch = "uni_proj_ld"
11
- local_path = ".cache/repos/mip-cmor-tables"
14
+ github_repo = "https://github.com/WCRP-CMIP/WCRP-universe"
15
+ branch = "esgvoc"
16
+ local_path = ".cache/repos/WCRP-universe"
12
17
  db_path = ".cache/dbs/universe.sqlite"
@@ -1,20 +1,17 @@
1
-
2
- # [[projects]]
3
- # project_name = "TestProject"
4
- # github_repo = "XXX"
5
- # branch = "XXX"
6
- # local_path = "XXX"
7
- # db_path = "./cache/dbs/XXXX.sqlite"
8
-
1
+ [[projects]]
2
+ project_name = "cmip6"
3
+ github_repo = "https://github.com/WCRP-CMIP/CMIP6_CVs"
4
+ branch = "esgvoc"
5
+ local_path = ".cache/repos/CMIP6_CVs"
6
+ db_path = ".cache/dbs/cmip6.sqlite"
9
7
  [[projects]]
10
8
  project_name = "cmip6plus"
11
- github_repo = "https://github.com/ESPRI-Mod/CMIP6Plus_CVs"
12
- branch = "uni_proj_ld"
9
+ github_repo = "https://github.com/WCRP-CMIP/CMIP6Plus_CVs"
10
+ branch = "esgvoc"
13
11
  local_path = ".cache/repos/CMIP6Plus_CVs"
14
12
  db_path = ".cache/dbs/cmip6plus.sqlite"
15
-
16
13
  [universe]
17
- github_repo = "https://github.com/ESPRI-Mod/mip-cmor-tables"
18
- branch = "uni_proj_ld"
19
- local_path = ".cache/repos/mip-cmor-tables"
14
+ github_repo = "https://github.com/WCRP-CMIP/WCRP-universe"
15
+ branch = "esgvoc"
16
+ local_path = ".cache/repos/WCRP-universe"
20
17
  db_path = ".cache/dbs/universe.sqlite"
@@ -89,6 +89,9 @@ class BaseState:
89
89
  def check_sync_status(self):
90
90
  self.fetch_versions()
91
91
  return {
92
+ "github" : self.github_version if self.github_version else None,
93
+ "local": self.local_version if self.local_version else None,
94
+ "db" : self.db_version if self.db_version else None,
92
95
  "github_local_sync": self.github_version == self.local_version if self.github_access and self.github_version and self.local_version else None,
93
96
  "local_db_sync": self.local_version == self.db_version if self.local_access and self.local_version and self.db_version else None,
94
97
 
@@ -108,7 +111,7 @@ class BaseState:
108
111
  from esgvoc.core.db.models.project import project_create_db
109
112
  from esgvoc.core.db.models.universe import universe_create_db
110
113
  from esgvoc.core.db.universe_ingestion import ingest_universe
111
-
114
+
112
115
  if self.db_path :
113
116
  if os.path.exists(self.db_path):
114
117
  os.remove(self.db_path)
@@ -116,12 +119,16 @@ class BaseState:
116
119
  os.makedirs(Path(self.db_path).parent,exist_ok=True)
117
120
 
118
121
  if self.db_sqlmodel == Universe: # Ugly
122
+ print("Building Universe DB from ",self.local_path)
119
123
  universe_create_db(Path(self.db_path))
120
124
  ingest_metadata_universe(DBConnection(Path(self.db_path)),self.local_version)
125
+ print("Filling Universe DB")
121
126
  ingest_universe(Path(self.local_path), Path(self.db_path))
122
127
 
123
128
  elif self.db_sqlmodel == Project:
129
+ print("Building Project DB from ", self.local_path)
124
130
  project_create_db(Path(self.db_path))
131
+ print("Filling project DB")
125
132
  ingest_project(Path(self.local_path),Path(self.db_path),self.local_version)
126
133
  self.fetch_version_db()
127
134
 
@@ -132,32 +139,32 @@ class BaseState:
132
139
 
133
140
  def sync(self):
134
141
  summary = self.check_sync_status()
142
+
135
143
  if self.github_access and summary["github_db_sync"] is None and summary["local_db_sync"]is None and summary["github_local_sync"] is None:
136
144
  self.clone_remote()
137
145
  self.build_db()
138
146
  elif self.github_access and not summary["github_db_sync"]:
147
+
139
148
  if not summary["local_db_sync"] and summary["local_db_sync"] is not None:
140
149
  self.clone_remote()
141
150
  self.build_db()
151
+ elif not summary["github_local_sync"] and summary["github_local_sync"] is not None:
152
+ self.clone_remote()
153
+ self.build_db()
142
154
  else: # can be simply build in root and clone if neccessary
143
155
  self.build_db()
144
156
  elif self.local_access:
145
- if not summary["local_db_sync"] and summary is not None:
157
+ if not summary["local_db_sync"] and summary["local_db_sync"] is not None:
146
158
  self.build_db()
159
+ else:
160
+ print("Cache db is uptodate from local repository")
147
161
  elif not self.db_access: # it can happen if the db is created but not filled
148
162
  self.build_db()
163
+ else:
164
+ print("Nothing to install, everything up to date")
165
+ print("Try 'esgvoc status' for more details")
149
166
 
150
167
 
151
- """
152
- if self.github_version and self.github_version != self.local_version:
153
- owner, repo = self.github_repo.lstrip("https://github.com/").split("/")
154
- self.rf.clone_repository(owner, repo, self.branch)
155
- #self.fetch_versions()
156
-
157
- if self.local_version != self.db_version:
158
- # delete and redo the DB?
159
- pass
160
- """
161
168
  class StateUniverse(BaseState):
162
169
  def __init__(self, settings: UniverseSettings):
163
170
  super().__init__(**settings.model_dump())
@@ -0,0 +1,58 @@
1
+ Metadata-Version: 2.3
2
+ Name: esgvoc
3
+ Version: 0.2.1
4
+ Summary: python library and CLI to interact with WCRP CVs
5
+ Project-URL: Repository, https://github.com/ESGF/esgf-vocab
6
+ Author-email: Sébastien Gardoll <sebastien@gardoll.fr>, Guillaume Levavasseur <guillaume.levavasseur@ipsl.fr>, Laurent Troussellier <laurent.troussellier@ipsl.fr>
7
+ License: CECILL-2.1
8
+ Requires-Python: <3.13,>=3.12
9
+ Requires-Dist: idna>=3.10
10
+ Requires-Dist: pydantic>=2.9.2
11
+ Requires-Dist: pyld>=2.0.4
12
+ Requires-Dist: requests>=2.32.3
13
+ Requires-Dist: sphinx-copybutton>=0.5.2
14
+ Requires-Dist: sphinx-tabs>=3.4.7
15
+ Requires-Dist: sqlalchemy>=2.0.36
16
+ Requires-Dist: sqlmodel>=0.0.22
17
+ Requires-Dist: toml>=0.10.2
18
+ Requires-Dist: typer>=0.15.0
19
+ Description-Content-Type: text/markdown
20
+
21
+ # ESGVOC Library
22
+
23
+ ESGVOC is a Python library designed to simplify interaction with controlled vocabularies (CVs) used in WCRP climate data projects. It supports querying, caching, and validating terms across various CV repositories like the [universe](https://github.com/WCRP-CMIP/WCRP-universe/tree/esgvoc) and project-specific repositories (e.g., [CMIP6Plus](https://github.com/WCRP-CMIP/CMIP6Plus_CVs/tree/esgvoc), [CMIP6](https://github.com/WCRP-CMIP/CMIP6_CVs/tree/esgvoc), etc.).
24
+
25
+ Full documentation is available at [https://esgf.github.io/esgf-vocab/](https://esgf.github.io/esgf-vocab/).
26
+
27
+ ---
28
+
29
+ ## Features
30
+
31
+ - **Query controlled vocabularies**:
32
+ - Retrieve terms, collections, or descriptors.
33
+ - Perform cross-validation and search operations.
34
+ - Supports case-sensitive, wildcard, and approximate matching.
35
+
36
+ - **Caching**:
37
+ - Download CVs to a local database for offline use.
38
+ - Keep the local cache up-to-date.
39
+
40
+ - **Validation**:
41
+ - Validate strings against CV terms and templates.
42
+
43
+ ---
44
+
45
+ ## Installation
46
+
47
+ ESGVOC is available on PyPI. Install it with pip:
48
+
49
+ ```bash
50
+ pip install esgvoc
51
+ ```
52
+
53
+ Following this command to install or update the latest CVs.
54
+
55
+
56
+ ```bash
57
+ esgvoc install
58
+ ```
@@ -1,14 +1,16 @@
1
1
  esgvoc/__init__.py,sha256=kPejgt5LFlzacS1O0vGN5JC7AlpRpWCmGIHUcBr_6-M,35
2
- esgvoc/api/__init__.py,sha256=yjrmVpHAR5_OChzzWziebIeUYh_6qyXBJx3VUimaFkE,2933
2
+ esgvoc/api/__init__.py,sha256=eGYIcKbz0y4mmgEJtHf3EYAtp-iKaoTKDzHQCnILd9s,3327
3
3
  esgvoc/api/_utils.py,sha256=eIVP7d3jbr7u_LNliLoM2Up3Zl5rcxIw_hjqLdfaxUA,1390
4
- esgvoc/api/projects.py,sha256=JZuqDTeAv7GcJ4IclyHU1bKWrGdqGafvxQAJ8fgux-8,38629
5
- esgvoc/api/report.py,sha256=MFMN9oVG9WWRvPtBeQj4o7XDahPu-Fq302Qy2G8Qt2Q,2875
6
- esgvoc/api/search.py,sha256=JYTegv0ebdm8AqK8V6DccPR88K2vWVtHXnstJmG07xE,3501
7
- esgvoc/api/universe.py,sha256=YGphsws7iSQZKYfRx4XfiZOuBylc0HYFG2KItsjyVjM,9609
8
- esgvoc/api/data_descriptors/__init__.py,sha256=K-qzokgt3bdiwSJcnBzAub4Duw87cHTX9VdF-RU-pQ8,2910
4
+ esgvoc/api/project_specs.py,sha256=uX1zqvTC8Dj5bOegZQVMAqU1VOle01s_8ncPXvtp0J4,2328
5
+ esgvoc/api/projects.py,sha256=n6zXTjEJ8yXJEFri6YZ4RdhvPOtdxTSOOKMz7pdPCnM,40605
6
+ esgvoc/api/report.py,sha256=F6hs1cNnlH4OodQiko-jWO0Pu1ji0TrLFN_eFSADgyI,3341
7
+ esgvoc/api/search.py,sha256=XE7kAfDA9gAb_wYUm5viA0lT4-_L3P0hclerpU42Q1U,4097
8
+ esgvoc/api/universe.py,sha256=W9liJW2NPF7vYxgoOIute2o4aNNhYrtgd90l4iB3OY4,9643
9
+ esgvoc/api/data_descriptors/__init__.py,sha256=9XGHmSDsRmQPvu9WxtJy_lNxe-iabAfV6UxhfiPr3aA,3085
9
10
  esgvoc/api/data_descriptors/activity.py,sha256=o-RlmAFJkIb9TkUZIjEJaHi9dnQ70GHH5-5bKACRwMI,1371
10
11
  esgvoc/api/data_descriptors/consortium.py,sha256=fhAaEqxBpBDSmO7rIya1nnEz9aRyhQQFnIBExcyQxQM,1467
11
12
  esgvoc/api/data_descriptors/date.py,sha256=q4YXqaEryrcXO3ndk4SwyKwn56iGuBiJbHs8JSUpXJU,781
13
+ esgvoc/api/data_descriptors/directory_date.py,sha256=uX89W68SqrX8iC52K1Voth6VI9T8UV5O13SrAWDRoiY,906
12
14
  esgvoc/api/data_descriptors/experiment.py,sha256=DCPYhgGWgD7LKgheqreXKGd5_0pQ6a1GnJ17IDt5WXY,1838
13
15
  esgvoc/api/data_descriptors/forcing_index.py,sha256=m2SBobNTN8P_TFS-uIwMyqbJ9d6CNr21bzW7qT3MVe0,796
14
16
  esgvoc/api/data_descriptors/frequency.py,sha256=XIu1v5NIcaNKj-9K3WNa4jH_Lds5XO5CP4M79nNVuVE,842
@@ -31,15 +33,19 @@ esgvoc/api/data_descriptors/table.py,sha256=bhh-bSx7UYAAETmMAGNOIfwkyvywIhX0HlJh
31
33
  esgvoc/api/data_descriptors/time_range.py,sha256=bBVRwmc7NEeGacV-UA0vadQXsyrlwBjyjVoYTw26rYA,630
32
34
  esgvoc/api/data_descriptors/variable.py,sha256=2Y6MfDzRvLF3FR5bhhJ6jTmPc2NTZVsoGF1Y2SEGeLU,2145
33
35
  esgvoc/api/data_descriptors/variant_label.py,sha256=ExP68t3v1xtjFEjOgVr2NFEOkQVGmf9GzStRlSPmNMU,931
34
- esgvoc/apps/drs/__init__.py,sha256=uNkxKa7wbUAHlldtrCxTZraJJ2Y9NQEdpWTy-lLrGAY,562
35
- esgvoc/apps/drs/models.py,sha256=ZWTXkgMKTCvMkmOB2c-l_npl_9ph0qXewa0e5J02mAI,937
36
- esgvoc/apps/drs/parser.py,sha256=DlCnVn0cguu5_I-gKinw_Hd_gomfET90AqMlZlawVz8,734
37
- esgvoc/cli/config.py,sha256=JCUppLaMPO6Xa3pZ-RL-meWy4wwTw1hr_IJM3LL1vac,2877
38
- esgvoc/cli/get.py,sha256=60W-MSrIUvQkAmGB2HXr2qGKYbel-_IKDL5N_uEIr8Y,5122
36
+ esgvoc/apps/__init__.py,sha256=k_IDucNtxAJsP1RkDCwEkqTHZqMRhALBVCdD0J9qUbY,300
37
+ esgvoc/apps/drs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ esgvoc/apps/drs/constants.py,sha256=kZxFo7Aa8DNy3WBq2j0FuZVEqOyxG53ZAkkjQaObE8s,95
39
+ esgvoc/apps/drs/generator.py,sha256=BB-qHkpPNkZiLKOLC4DYB-os_1UlfVapB5EPmQezugI,22724
40
+ esgvoc/apps/drs/report.py,sha256=37ETMcnx56B30NQqGPVGKc4jDdfpAToh3W6UId9nd-Q,13720
41
+ esgvoc/apps/drs/validator.py,sha256=HlDKKS9Xfxr0vlA_-6NC6JTnqPpKnbd-dhjiBhCaMfM,14803
42
+ esgvoc/cli/config.py,sha256=BCRshQ8kdeTMv4b2uN4qaZoFrEi7k43mKJT79vitrP4,2951
43
+ esgvoc/cli/drs.py,sha256=C0TsBvcoK7C6dEhHpEcq9HpKSYFsqxDlUai_5e1NycI,8672
44
+ esgvoc/cli/get.py,sha256=dz_BsegIg9hSD1s11DREQiQq3DbXyneO4Kjs3dUPMgg,5134
39
45
  esgvoc/cli/install.py,sha256=tJl9Z9UoBbRXK8dMAehTTHfH9aT6fAqtEX7tt5Wl0F8,236
40
- esgvoc/cli/main.py,sha256=jXJ9rNzI276cYJaZ8LxKBsblxHLw51_OK0_OyAGPe8A,490
41
- esgvoc/cli/status.py,sha256=_6Wx3bGzsoxv_Hv0ENO-NcFJzzzUpLTlsUlQH-E3d-o,465
42
- esgvoc/cli/valid.py,sha256=C_z1nrAP7mD3Iws0esVJsXpbiwjWZBtgXmikJruRRtY,7057
46
+ esgvoc/cli/main.py,sha256=Yx5hWVl11GEu44vug_udmia-lr8j0AzZjtZOesKdNIY,557
47
+ esgvoc/cli/status.py,sha256=-IG41NorXwE2C6YD3RHFKNBLsCqpcVBovKyLJ9MXgSM,1312
48
+ esgvoc/cli/valid.py,sha256=QO2RJhBDFUKNL9PCBt6CrLp2FBNwnQ2yRlAWBgcjOtI,6909
43
49
  esgvoc/core/constants.py,sha256=b9GoM3pTICki95gMCnUZbg4_mMiywKhJX5ME01pgwMs,431
44
50
  esgvoc/core/convert.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
51
  esgvoc/core/data_handler.py,sha256=BmcD_dSvX5fCkUEGAQnadPTeuKA7IvgMmQtesMXKh5g,5004
@@ -48,19 +54,20 @@ esgvoc/core/logging_handler.py,sha256=NhqKX2nFYVi01EhZPysFZ4UWBWJwgxafC_pWtd28Yl
48
54
  esgvoc/core/repo_fetcher.py,sha256=m0Qh2kBAa-ij2ZJ7uEYYW-CakoLs5deFHl7zniLgW5Y,9738
49
55
  esgvoc/core/db/__init__.py,sha256=gjAT_lUJtPqxsc8WnwbG_sxDqSIFAlG8vEKxdGyH82w,150
50
56
  esgvoc/core/db/connection.py,sha256=dhnCy1mwytUUvt149WHk7eYW0KSP64IaF3kMvKOQSJE,877
51
- esgvoc/core/db/project_ingestion.py,sha256=Sx63UhHjZ_2b5hkObDci2X7VB9f3DfU7-uKtqgl12Rk,6114
52
- esgvoc/core/db/universe_ingestion.py,sha256=weF8f4AUF20NHiDoUe8paQmxOpuNUe8QSTslEtOfKGA,5148
53
- esgvoc/core/db/models/mixins.py,sha256=M4gP42fydNcrZO9Z9wfKVU_1tK__fc2NosWumpU9lc0,291
54
- esgvoc/core/db/models/project.py,sha256=KHnVsaFbA67e28doJ4TFCDkW04x4Es-uv3fDL3WDup4,2349
57
+ esgvoc/core/db/project_ingestion.py,sha256=sVtQFg-gF6TTYjEPasqk2Ox4V4Al8rrd1Q_A6Zvn18U,6330
58
+ esgvoc/core/db/universe_ingestion.py,sha256=K1IeMlQ0SoAH0HgXNwzj9Z3qR0KLsGIfrca8a5PTvWM,5197
59
+ esgvoc/core/db/models/mixins.py,sha256=S4_6iuKf1kYLdUXAgqRKSTXs8H9I--43MKlEq4F-dm4,445
60
+ esgvoc/core/db/models/project.py,sha256=tuVcwNOkv0fQLFojpQCWacpnM7ZIX3eMDq6Mnko5OI0,2284
55
61
  esgvoc/core/db/models/universe.py,sha256=32oWFvzqqFr86M14phbfvfmEzlldi3DSTAALjTigR_8,2199
56
62
  esgvoc/core/service/__init__.py,sha256=ByAE1LhD5cKIcwrSIH0Y___KP2Ewh55P57sAMQ4CHeM,308
57
63
  esgvoc/core/service/data_merger.py,sha256=GNFp5DTV2jlBVJZNpILngi6jCbUvVGcqka4EMWKj_Os,3456
58
64
  esgvoc/core/service/esg_voc.py,sha256=5G0P4_xmQzoI_RG_agpq-yHoYYZx220P27v2nPrpyNs,2420
59
- esgvoc/core/service/settings.py,sha256=oNA4BKgZopxLA51R2PlRJ9rpqHgOqhGWLx-pffVUOlk,2160
60
- esgvoc/core/service/settings.toml,sha256=XzcnD3l4xk5UXNxgod7uSbQ_iYFn2CjyLvVPlQ88Edw,383
61
- esgvoc/core/service/settings_default.toml,sha256=lxHkuLn3T65SxWh5owxqREMQ88LwIgoQ85-5HaDVuRo,529
62
- esgvoc/core/service/state.py,sha256=RPzgGTPyhqizbDKSEHbPGmNRss7iSi_bZnDafJokrEI,9203
63
- esgvoc-0.1.2.dist-info/METADATA,sha256=GGTJeCE71fd-SDGePr6LkmRFkz2_0WfHpqMFfeMQ6-k,1456
64
- esgvoc-0.1.2.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
65
- esgvoc-0.1.2.dist-info/entry_points.txt,sha256=ZXufSC7Jlx1lb52U6Buv9IitJMcqAAXOerR2V9DaIto,48
66
- esgvoc-0.1.2.dist-info/RECORD,,
65
+ esgvoc/core/service/settings.py,sha256=bFAEX1k866jLrp4gQRmls5v7eL2bjuECHx3cll-CC80,2471
66
+ esgvoc/core/service/settings.toml,sha256=NSd-d_OyK7hOfG8zltUXK4XP1d79GEu09eK8JI9z9y8,551
67
+ esgvoc/core/service/settings_default.toml,sha256=NSd-d_OyK7hOfG8zltUXK4XP1d79GEu09eK8JI9z9y8,551
68
+ esgvoc/core/service/state.py,sha256=nppULtefcpahpHOOkOxayJ5Hp8u-pA2VBYfx5P9wMWE,9676
69
+ esgvoc-0.2.1.dist-info/METADATA,sha256=50Q2tsO63h1I7-FZ1w_xIAUpA2dKHtUjB3-Wzk8cfY8,1928
70
+ esgvoc-0.2.1.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
71
+ esgvoc-0.2.1.dist-info/entry_points.txt,sha256=ZXufSC7Jlx1lb52U6Buv9IitJMcqAAXOerR2V9DaIto,48
72
+ esgvoc-0.2.1.dist-info/licenses/LICENSE.txt,sha256=rWJoZt3vach8ZNdLq-Ee5djzCMFnJ1gIfBeJU5RIop4,21782
73
+ esgvoc-0.2.1.dist-info/RECORD,,