a2p2 0.7.5__py3-none-any.whl → 0.7.7__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.
a2p2/jmmc/catalogs.py CHANGED
@@ -26,6 +26,8 @@ class Catalog():
26
26
 
27
27
  def __init__(self, catalogName, username=None, password=None, prod=False, apiUrl=None, tapUrl=None, where=None, joins=None):
28
28
  self.catalogName = catalogName
29
+ self.updated = False
30
+ self.lastTable = None
29
31
  self.where = where
30
32
  self.joins = joins
31
33
  self.prod = prod
@@ -91,13 +93,24 @@ class Catalog():
91
93
  """
92
94
  return self.api._get(f"/{self.catalogName}/{id}")
93
95
 
94
- def getTable(self, maxrec=10000):
96
+ def getDataFrame(self):
97
+ """ Get a pandas DataFrame from the main catalog joined the other if provided in constructor.
98
+
99
+ usage: cat.getDataFrame()
100
+ """
101
+
102
+ return self.getTable().to_pandas()
103
+
104
+ def getTable(self, maxrec=10000, forceUpdate=False):
95
105
  """ Get an astropy table from the main catalog joined the other if provided in constructor.
96
106
 
97
- usage: cat.getRows()
107
+ usage: cat.getTable()
98
108
  """
99
109
  # using SELECT TOP N below to workarround astroquery.utils.tap BUG
100
110
 
111
+ if not self.updated and self.lastTable and not forceUpdate:
112
+ return self.lastTable
113
+
101
114
  clauses = []
102
115
  if self.joins :
103
116
  joinedCatalogNames = []
@@ -127,9 +140,10 @@ class Catalog():
127
140
  clauses.append(f" WHERE {self.where}")
128
141
 
129
142
  query = " ".join(clauses)
130
- logger.info(f"Queriing TAP : {query}")
131
- return self.tap.search(query,maxrec=maxrec).to_table()
132
-
143
+ logger.info(f"Querying remote catalog : {query}")
144
+ self.lastTable = self.tap.search(query,maxrec=maxrec).to_table()
145
+ self.updated=False
146
+ return self.lastTable
133
147
 
134
148
  def tableToDict(self, table):
135
149
  """ Convert table (astropy.table or row) to a list of dict so we can modify content and update remote catalog using updateRows().
@@ -159,6 +173,7 @@ class Catalog():
159
173
 
160
174
  usage: cat.updateRows(42, {"col_a":"a", "col_b":"b" })
161
175
  """
176
+ self.updated = True
162
177
  return self.api._put(f"/{self.catalogName}/{id}", values)
163
178
 
164
179
  def updateRows(self, values):
@@ -167,7 +182,7 @@ class Catalog():
167
182
 
168
183
  usage: updateRows([ { "id":42, "col_a":"a" }, { "id":24, "col_b":"b" } ])
169
184
  """
170
-
185
+ self.updated = True
171
186
  # We may check befere sending payload that we always provide an id for every record
172
187
  # What is the behaviour if we provide various data assosiated to the same id ?
173
188
  return self.api._put(f"/{self.catalogName}", values)
@@ -178,6 +193,7 @@ class Catalog():
178
193
 
179
194
  usage: addCatalogRows([ { "id":42, "col_a":"a" }, { "id":24, "col_b":"b" } ])
180
195
  """
196
+ self.updated = True
181
197
  return self.api._post(f"/{self.catalogName}", json=values)
182
198
 
183
199
 
a2p2/version.py CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "0.7.5"
1
+ __version__ = "0.7.7"
2
2
 
3
3
  __release_notes__ = {
4
4
  # "0.1.6": {
@@ -23,7 +23,15 @@ __release_notes__ = {
23
23
  # "Try to read OB in P2 and send them back to Aspro2 as a new obs",
24
24
  # ],
25
25
 
26
- "0.7.5": {
26
+ "0.7.7": {
27
+ "A2P2": [
28
+ "save some data retrival until update or force request occurs",
29
+ ],
30
+ },"0.7.6": {
31
+ "A2P2": [
32
+ "add getDataFrame() to a2p2.jmmc.Catalog to provide remote data with pandas format",
33
+ ],
34
+ },"0.7.5": {
27
35
  "A2P2": [
28
36
  "Add support for join and filter in a2p2.jmmc.Catalog wrapper",
29
37
  ],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: a2p2
3
- Version: 0.7.5
3
+ Version: 0.7.7
4
4
  Author-email: JMMC Tech Group <jmmc-tech-group@jmmc.fr>
5
5
  License: OSI Approved :: GNU General Public License v3 (GPLv3)
6
6
  Project-URL: Homepage, https://www.jmmc.fr/a2p2
@@ -7,12 +7,12 @@ a2p2/instrument.py,sha256=JI1i8vsGu1ku_3i7my278b8y8vL5Z-SF3V8XkHPSs48,732
7
7
  a2p2/ob.py,sha256=lcSm5eXv79K6cjp0VxvxD4sSlsBTKHGbmT85XEx74lY,6268
8
8
  a2p2/samp.py,sha256=DN20lWszkuuneR1BV1MBLEyoGyN8tZWvOeC5rEVLICo,3438
9
9
  a2p2/utils.py,sha256=QEA9cpc2TaqXDa4yqrFiGkCl__1wV8--rVw_A-p_HM0,23833
10
- a2p2/version.py,sha256=GLpDGpPVD2K0jGYvnnIDDQtBKAakwU6GVqNfLgQjqHU,12473
10
+ a2p2/version.py,sha256=IlWxDqoVq3nbpxcyAiJ0pxrp7opkJ4Stqhg8ICCrs6s,12734
11
11
  a2p2/chara/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  a2p2/chara/facility.py,sha256=otv0UVQVYD7dE_ENojjatjld5owgM9qRm7vsAc0jyqQ,2754
13
13
  a2p2/chara/gui.py,sha256=4O8u-g-UJSeqEV9CUPNflVNWIsmH0b_xf8c9huxAivs,5119
14
14
  a2p2/jmmc/__init__.py,sha256=Yx8Ae77UQA_aLMzhKgWym4m2fbMR_4m77TGfaXy6I4A,187
15
- a2p2/jmmc/catalogs.py,sha256=DSbtbYTVKlzeLqRRTjtoXL_VRKrwmIyQYV7wyUZ0JE0,8387
15
+ a2p2/jmmc/catalogs.py,sha256=dbo54rz26EkPWUCsV9zngLpllnFqvNKpS84Gomn2WL8,8955
16
16
  a2p2/jmmc/generated_models.py,sha256=69fmPfkCMBc0GyDeHp1rs0vkoPqOE4j0egMBWX5mB1U,11823
17
17
  a2p2/jmmc/models.py,sha256=ikI8Dk-9ThkG1uHtoPJwB43tPF_YZj8M5tftIcJio7s,3776
18
18
  a2p2/jmmc/services.py,sha256=kcRaRnR4COKijF5izDqqNHjKyU1j2H8PEPvbDsBUFcw,312
@@ -31,9 +31,9 @@ a2p2/vlti/conf/MATISSE_ditTable.json,sha256=2RQXb9UL1_VlcAAGoxqpe3nTrRfO4gyOX_IG
31
31
  a2p2/vlti/conf/MATISSE_rangeTable.json,sha256=_j5m-EOh4bbfwdaANdh23yjgNef95AUku_uNujr9BDc,5770
32
32
  a2p2/vlti/conf/PIONIER_ditTable.json,sha256=BKK7nF0nE_LOP44l_fAvAnpG8oOq5p9srcdTNQ2udKo,857
33
33
  a2p2/vlti/conf/PIONIER_rangeTable.json,sha256=71Ycm2h-uBUVSAWy6lTpaBDOYwKKL5MuZH6F5ESHOI0,2113
34
- a2p2-0.7.5.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
35
- a2p2-0.7.5.dist-info/METADATA,sha256=oFkoCUDTJtJcg3R2CoGt3lh0CczgpGnTpKlL5hLTDP4,4188
36
- a2p2-0.7.5.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
37
- a2p2-0.7.5.dist-info/entry_points.txt,sha256=5Pq7faxs04hSEtjpqtBAlHw3cGUpvTmBugnS5PzgJMY,44
38
- a2p2-0.7.5.dist-info/top_level.txt,sha256=lLDb6xGRyHYSbrO0EUx8vNEzTiCDtPe2z7PSbqGY4kE,5
39
- a2p2-0.7.5.dist-info/RECORD,,
34
+ a2p2-0.7.7.dist-info/licenses/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
35
+ a2p2-0.7.7.dist-info/METADATA,sha256=2PINF64OeVs9rRtgU5NY7DVEODvfjXB7BlAB_9nc07M,4188
36
+ a2p2-0.7.7.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
37
+ a2p2-0.7.7.dist-info/entry_points.txt,sha256=5Pq7faxs04hSEtjpqtBAlHw3cGUpvTmBugnS5PzgJMY,44
38
+ a2p2-0.7.7.dist-info/top_level.txt,sha256=lLDb6xGRyHYSbrO0EUx8vNEzTiCDtPe2z7PSbqGY4kE,5
39
+ a2p2-0.7.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (79.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5