a2p2 0.7.7__tar.gz → 0.7.9__tar.gz

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.
Files changed (49) hide show
  1. {a2p2-0.7.7/a2p2.egg-info → a2p2-0.7.9}/PKG-INFO +1 -1
  2. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/jmmc/catalogs.py +7 -4
  3. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/jmmc/utils.py +4 -29
  4. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/version.py +11 -3
  5. {a2p2-0.7.7 → a2p2-0.7.9/a2p2.egg-info}/PKG-INFO +1 -1
  6. {a2p2-0.7.7 → a2p2-0.7.9}/LICENSE +0 -0
  7. {a2p2-0.7.7 → a2p2-0.7.9}/MANIFEST.in +0 -0
  8. {a2p2-0.7.7 → a2p2-0.7.9}/README.rst +0 -0
  9. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/__init__.py +0 -0
  10. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/__main__.py +0 -0
  11. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/chara/__init__.py +0 -0
  12. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/chara/facility.py +0 -0
  13. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/chara/gui.py +0 -0
  14. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/client.py +0 -0
  15. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/facility.py +0 -0
  16. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/gui.py +0 -0
  17. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/instrument.py +0 -0
  18. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/jmmc/__init__.py +0 -0
  19. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/jmmc/generated_models.py +0 -0
  20. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/jmmc/models.py +0 -0
  21. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/jmmc/services.py +0 -0
  22. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/jmmc/webservices.py +0 -0
  23. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/ob.py +0 -0
  24. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/samp.py +0 -0
  25. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/utils.py +0 -0
  26. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/__init__.py +0 -0
  27. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/conf/GRAVITY_ditTable.json +0 -0
  28. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/conf/GRAVITY_rangeTable.json +0 -0
  29. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/conf/MATISSE_ditTable.json +0 -0
  30. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/conf/MATISSE_rangeTable.json +0 -0
  31. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/conf/PIONIER_ditTable.json +0 -0
  32. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/conf/PIONIER_rangeTable.json +0 -0
  33. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/facility.py +0 -0
  34. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/gravity.py +0 -0
  35. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/gui.py +0 -0
  36. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/instrument.py +0 -0
  37. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/matisse.py +0 -0
  38. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2/vlti/pionier.py +0 -0
  39. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2.egg-info/SOURCES.txt +0 -0
  40. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2.egg-info/dependency_links.txt +0 -0
  41. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2.egg-info/entry_points.txt +0 -0
  42. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2.egg-info/requires.txt +0 -0
  43. {a2p2-0.7.7 → a2p2-0.7.9}/a2p2.egg-info/top_level.txt +0 -0
  44. {a2p2-0.7.7 → a2p2-0.7.9}/pyproject.toml +0 -0
  45. {a2p2-0.7.7 → a2p2-0.7.9}/setup.cfg +0 -0
  46. {a2p2-0.7.7 → a2p2-0.7.9}/setup.py +0 -0
  47. {a2p2-0.7.7 → a2p2-0.7.9}/test/test_jmmc_catalog.py +0 -0
  48. {a2p2-0.7.7 → a2p2-0.7.9}/test/test_jmmc_models.py +0 -0
  49. {a2p2-0.7.7 → a2p2-0.7.9}/test/test_test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: a2p2
3
- Version: 0.7.7
3
+ Version: 0.7.9
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
@@ -28,6 +28,7 @@ class Catalog():
28
28
  self.catalogName = catalogName
29
29
  self.updated = False
30
30
  self.lastTable = None
31
+ self.lastDataFrame = None
31
32
  self.where = where
32
33
  self.joins = joins
33
34
  self.prod = prod
@@ -93,13 +94,15 @@ class Catalog():
93
94
  """
94
95
  return self.api._get(f"/{self.catalogName}/{id}")
95
96
 
96
- def getDataFrame(self):
97
+ def getDataFrame(self, forceUpdate=False):
97
98
  """ Get a pandas DataFrame from the main catalog joined the other if provided in constructor.
98
99
 
99
100
  usage: cat.getDataFrame()
100
101
  """
101
-
102
- return self.getTable().to_pandas()
102
+ if not ( self.updated or forceUpdate or self.lastDataFrame is None):
103
+ return self.lastDataFrame
104
+ self.lastDataFrame = self.getTable(forceUpdate=forceUpdate).to_pandas()
105
+ return self.lastDataFrame
103
106
 
104
107
  def getTable(self, maxrec=10000, forceUpdate=False):
105
108
  """ Get an astropy table from the main catalog joined the other if provided in constructor.
@@ -108,7 +111,7 @@ class Catalog():
108
111
  """
109
112
  # using SELECT TOP N below to workarround astroquery.utils.tap BUG
110
113
 
111
- if not self.updated and self.lastTable and not forceUpdate:
114
+ if not ( self.updated or forceUpdate or self.lastTable is None ):
112
115
  return self.lastTable
113
116
 
114
117
  clauses = []
@@ -27,7 +27,7 @@ logger = logging.getLogger(__name__)
27
27
  def requests_retry_session(
28
28
  retries=3,
29
29
  backoff_factor=1.0,
30
- status_forcelist=(500, 502, 504)):
30
+ status_forcelist=(401, 500, 502, 504)):
31
31
 
32
32
  adapter = HTTPAdapter()
33
33
  adapter.max_retries = Retry(
@@ -79,38 +79,13 @@ class JmmcAPI():
79
79
  def _put(self, url, json):
80
80
  return self._request('PUT', url, json)
81
81
 
82
- def _post(self, url, json):
83
- return self._request('POST', url, json)
84
-
85
82
  def _post(self, url, **kwargs):
86
- return self._request2('POST', url, **kwargs)
87
-
88
- def _request2(self, method, url, **kwargs):
89
- logger.info("performing %s request on %s" % (method, self.rootURL+url))
90
- r = self.requests_session.request(
91
- method, self.rootURL+url, **kwargs)
92
- # handle response if any or throw an exception
93
- if (r.status_code == 204): # No Content : everything is fine
94
- return
95
- elif 200 <= r.status_code < 300:
96
- if 'Content-Type' in r.headers.keys() and 'application/json' in r.headers['Content-Type']:
97
- return r.json()
98
- else:
99
- return r.content
100
- # TODO enhance error handling ? Throw an exception ....
101
- error = []
102
- error.append("status_code is %s"%r.status_code)
103
- if r.reason :
104
- error.append(r.reason)
105
- if "X-Http-Error-Description" in r.headers.keys():
106
- error.append(r.headers["X-Http-Error-Description"])
107
-
108
- raise Exception(error)
83
+ return self._request('POST', url, **kwargs)
109
84
 
110
- def _request(self, method, url, json=None, data=None, files=None):
85
+ def _request(self, method, url, **kwargs):
111
86
  logger.info("performing %s request on %s" % (method, self.rootURL+url))
112
87
  r = self.requests_session.request(
113
- method, self.rootURL+url, auth=self.auth, json=json, data=data, files=files)
88
+ method, self.rootURL+url, auth=self.auth, **kwargs)
114
89
  # handle response if any or throw an exception
115
90
  if (r.status_code == 204): # No Content : everything is fine
116
91
  return
@@ -1,4 +1,4 @@
1
- __version__ = "0.7.7"
1
+ __version__ = "0.7.9"
2
2
 
3
3
  __release_notes__ = {
4
4
  # "0.1.6": {
@@ -23,9 +23,17 @@ __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.7": {
26
+ "0.7.9": {
27
27
  "A2P2": [
28
- "save some data retrival until update or force request occurs",
28
+ "catalogs : remove duplicated code and force auth on POST requests",
29
+ ],
30
+ },"0.7.8": {
31
+ "A2P2": [
32
+ "catalogs : use cache for dataFrame() so we can modify it (was recreated from astropy table on each call)",
33
+ ],
34
+ },"0.7.7": {
35
+ "A2P2": [
36
+ "catalogs : save some data retrieval until update or force request occurs",
29
37
  ],
30
38
  },"0.7.6": {
31
39
  "A2P2": [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: a2p2
3
- Version: 0.7.7
3
+ Version: 0.7.9
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes