cdasws 1.8.11__tar.gz → 1.8.12__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.
- {cdasws-1.8.11 → cdasws-1.8.12}/LICENSE +1 -1
- {cdasws-1.8.11 → cdasws-1.8.12}/PKG-INFO +3 -1
- {cdasws-1.8.11 → cdasws-1.8.12}/README.md +2 -0
- cdasws-1.8.12/cdasws/__init__.py +85 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws/__main__.py +1 -1
- cdasws-1.8.11/cdasws/__init__.py → cdasws-1.8.12/cdasws/cdasws.py +75 -99
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws.egg-info/PKG-INFO +3 -1
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws.egg-info/SOURCES.txt +1 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/setup.py +1 -1
- {cdasws-1.8.11 → cdasws-1.8.12}/tests/test_cdasws.py +3 -4
- {cdasws-1.8.11 → cdasws-1.8.12}/tests/test_timeinterval.py +1 -2
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws/datarepresentation.py +0 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws/datarequest.py +0 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws/timeinterval.py +0 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws.egg-info/dependency_links.txt +0 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws.egg-info/requires.txt +0 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/cdasws.egg-info/top_level.txt +0 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/setup.cfg +0 -0
- {cdasws-1.8.11 → cdasws-1.8.12}/tests/test_datarequest.py +0 -0
|
@@ -17,7 +17,7 @@ Government Agency Original Software Designation: GSC-14730-1
|
|
|
17
17
|
Government Agency Original Software Title: "Space Physics Data Facility Web Services"
|
|
18
18
|
User Registration Requested. Please Visit http://spdf.gsfc.nasa.gov/
|
|
19
19
|
Government Agency Point of Contact for Original Software:
|
|
20
|
-
|
|
20
|
+
NASA-SPDF-Support@nasa.onmicrosoft.com
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
1. DEFINITIONS
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cdasws
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.12
|
|
4
4
|
Summary: NASA's Coordinated Data Analysis System Web Service Client Library
|
|
5
5
|
Home-page: https://cdaweb.gsfc.nasa.gov/WebServices/REST
|
|
6
6
|
Author: Bernie Harris
|
|
@@ -57,6 +57,8 @@ and can return data from any of
|
|
|
57
57
|
[pandas.DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)
|
|
58
58
|
with all source and
|
|
59
59
|
[ISTP/SPDF](https://spdf.gsfc.nasa.gov/sp_use_of_cdf.html) metadata.
|
|
60
|
+
Note that this package is included in the [HelioCloud](https://heliocloud.org/)
|
|
61
|
+
base image, so there is no need to install it there.
|
|
60
62
|
Frequently asked questions concerning this library are at
|
|
61
63
|
[FAQ](https://cdaweb.gsfc.nasa.gov/WebServices/REST/py/FAQ.html).
|
|
62
64
|
For more general details about the CDAS web services, see
|
|
@@ -13,6 +13,8 @@ and can return data from any of
|
|
|
13
13
|
[pandas.DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)
|
|
14
14
|
with all source and
|
|
15
15
|
[ISTP/SPDF](https://spdf.gsfc.nasa.gov/sp_use_of_cdf.html) metadata.
|
|
16
|
+
Note that this package is included in the [HelioCloud](https://heliocloud.org/)
|
|
17
|
+
base image, so there is no need to install it there.
|
|
16
18
|
Frequently asked questions concerning this library are at
|
|
17
19
|
[FAQ](https://cdaweb.gsfc.nasa.gov/WebServices/REST/py/FAQ.html).
|
|
18
20
|
For more general details about the CDAS web services, see
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
#
|
|
4
|
+
# NOSA HEADER START
|
|
5
|
+
#
|
|
6
|
+
# The contents of this file are subject to the terms of the NASA Open
|
|
7
|
+
# Source Agreement (NOSA), Version 1.3 only (the "Agreement"). You may
|
|
8
|
+
# not use this file except in compliance with the Agreement.
|
|
9
|
+
#
|
|
10
|
+
# You can obtain a copy of the agreement at
|
|
11
|
+
# docs/NASA_Open_Source_Agreement_1.3.txt
|
|
12
|
+
# or
|
|
13
|
+
# https://cdaweb.gsfc.nasa.gov/WebServices/NASA_Open_Source_Agreement_1.3.txt.
|
|
14
|
+
#
|
|
15
|
+
# See the Agreement for the specific language governing permissions
|
|
16
|
+
# and limitations under the Agreement.
|
|
17
|
+
#
|
|
18
|
+
# When distributing Covered Code, include this NOSA HEADER in each
|
|
19
|
+
# file and include the Agreement file at
|
|
20
|
+
# docs/NASA_Open_Source_Agreement_1.3.txt. If applicable, add the
|
|
21
|
+
# following below this NOSA HEADER, with the fields enclosed by
|
|
22
|
+
# brackets "[]" replaced with your own identifying information:
|
|
23
|
+
# Portions Copyright [yyyy] [name of copyright owner]
|
|
24
|
+
#
|
|
25
|
+
# NOSA HEADER END
|
|
26
|
+
#
|
|
27
|
+
# Copyright (c) 2018-2025 United States Government as represented by
|
|
28
|
+
# the National Aeronautics and Space Administration. No copyright is
|
|
29
|
+
# claimed in the United States under Title 17, U.S.Code. All Other
|
|
30
|
+
# Rights Reserved.
|
|
31
|
+
#
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
"""
|
|
35
|
+
Package for accessing the Coordinate Data Analysis System (CDAS)
|
|
36
|
+
web services <https://cdaweb.gsfc.nasa.gov/WebServices/REST/>.<br>
|
|
37
|
+
|
|
38
|
+
Copyright © 2018-2025 United States Government as represented by the
|
|
39
|
+
National Aeronautics and Space Administration. No copyright is claimed in
|
|
40
|
+
the United States under Title 17, U.S.Code. All Other Rights Reserved.
|
|
41
|
+
|
|
42
|
+
Notes
|
|
43
|
+
-----
|
|
44
|
+
<ul>
|
|
45
|
+
<li>Due to rate limiting implemented by the CDAS web services, an
|
|
46
|
+
attempt to make simultaneous requests from many threads is likely
|
|
47
|
+
to actually reduce performance. At this time, it is best to make
|
|
48
|
+
calls from five or fewer threads.</li>
|
|
49
|
+
<li>Since CDAS data has datetime values with a UTC timezone, all
|
|
50
|
+
client provided datetime values should have a timezone of UTC.
|
|
51
|
+
If a given value's timezone is not UTC, the value is adjusted to
|
|
52
|
+
UTC. If a given value has no timezone (is naive), a UTC timezone
|
|
53
|
+
is set.</li>
|
|
54
|
+
</ul>
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
__version__ = "1.8.12"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
#
|
|
62
|
+
# Limit on the number of times an HTTP request which returns a
|
|
63
|
+
# 429 or 503 status with a Retry-After header will be retried.
|
|
64
|
+
#
|
|
65
|
+
RETRY_LIMIT = 100
|
|
66
|
+
|
|
67
|
+
#
|
|
68
|
+
# XML schema namespace
|
|
69
|
+
#
|
|
70
|
+
NS = 'http://cdaweb.gsfc.nasa.gov/schema'
|
|
71
|
+
#
|
|
72
|
+
# XHTML schema namespace
|
|
73
|
+
#
|
|
74
|
+
XHTML_NS = 'http://www.w3.org/1999/xhtml'
|
|
75
|
+
#
|
|
76
|
+
# All namespaces found in responses.
|
|
77
|
+
#
|
|
78
|
+
NAMESPACES = {
|
|
79
|
+
'cdas': NS,
|
|
80
|
+
'xhtml': XHTML_NS
|
|
81
|
+
}
|
|
82
|
+
#
|
|
83
|
+
# For backward compatibility with cdasws versions < 1.8.12.
|
|
84
|
+
#
|
|
85
|
+
from cdasws.cdasws import *
|
|
@@ -48,7 +48,7 @@ import logging.config
|
|
|
48
48
|
from typing import List
|
|
49
49
|
import urllib3
|
|
50
50
|
#import matplotlib.pyplot as plt
|
|
51
|
-
from cdasws import CdasWs
|
|
51
|
+
from cdasws.cdasws import CdasWs
|
|
52
52
|
from cdasws.timeinterval import TimeInterval
|
|
53
53
|
from cdasws.datarequest import GraphOptions, ImageFormat, Overplot, TextFormat
|
|
54
54
|
from cdasws.datarepresentation import DataRepresentation
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
"""
|
|
35
|
-
|
|
35
|
+
Module for accessing the Coordinate Data Analysis System (CDAS)
|
|
36
36
|
web services <https://cdaweb.gsfc.nasa.gov/WebServices/REST/>.<br>
|
|
37
37
|
|
|
38
38
|
Copyright © 2018-2025 United States Government as represented by the
|
|
@@ -143,31 +143,7 @@ try:
|
|
|
143
143
|
except ImportError:
|
|
144
144
|
CACHE_AVAILABLE = False
|
|
145
145
|
|
|
146
|
-
|
|
147
|
-
__version__ = "1.8.11"
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
#
|
|
151
|
-
# Limit on the number of times an HTTP request which returns a
|
|
152
|
-
# 429 or 503 status with a Retry-After header will be retried.
|
|
153
|
-
#
|
|
154
|
-
RETRY_LIMIT = 100
|
|
155
|
-
|
|
156
|
-
#
|
|
157
|
-
# XML schema namespace
|
|
158
|
-
#
|
|
159
|
-
NS = 'http://cdaweb.gsfc.nasa.gov/schema'
|
|
160
|
-
#
|
|
161
|
-
# XHTML schema namespace
|
|
162
|
-
#
|
|
163
|
-
XHTML_NS = 'http://www.w3.org/1999/xhtml'
|
|
164
|
-
#
|
|
165
|
-
# All namespaces found in responses.
|
|
166
|
-
#
|
|
167
|
-
NAMESPACES = {
|
|
168
|
-
'cdas': NS,
|
|
169
|
-
'xhtml': XHTML_NS
|
|
170
|
-
}
|
|
146
|
+
from cdasws import __version__, RETRY_LIMIT, NAMESPACES as NS
|
|
171
147
|
|
|
172
148
|
|
|
173
149
|
def _get_data_progress(
|
|
@@ -389,17 +365,17 @@ class CdasWs:
|
|
|
389
365
|
|
|
390
366
|
observatory_group_descriptions = []
|
|
391
367
|
for description in observatory_response.findall(\
|
|
392
|
-
'cdas:ObservatoryGroupDescription', namespaces=
|
|
368
|
+
'cdas:ObservatoryGroupDescription', namespaces=NS):
|
|
393
369
|
|
|
394
370
|
observatory_ids = []
|
|
395
371
|
for observatory_id in description.findall(\
|
|
396
|
-
'cdas:ObservatoryId', namespaces=
|
|
372
|
+
'cdas:ObservatoryId', namespaces=NS):
|
|
397
373
|
|
|
398
374
|
observatory_ids.append(observatory_id.text)
|
|
399
375
|
|
|
400
376
|
observatory_group_descriptions.append({
|
|
401
377
|
'Name': description.find(\
|
|
402
|
-
'cdas:Name', namespaces=
|
|
378
|
+
'cdas:Name', namespaces=NS).text,
|
|
403
379
|
'ObservatoryId': observatory_ids
|
|
404
380
|
})
|
|
405
381
|
|
|
@@ -464,11 +440,11 @@ class CdasWs:
|
|
|
464
440
|
|
|
465
441
|
instrument_types = []
|
|
466
442
|
for description in instrument_response.findall(\
|
|
467
|
-
'cdas:InstrumentTypeDescription', namespaces=
|
|
443
|
+
'cdas:InstrumentTypeDescription', namespaces=NS):
|
|
468
444
|
|
|
469
445
|
instrument_types.append({
|
|
470
446
|
'Name': description.find('cdas:Name',
|
|
471
|
-
namespaces=
|
|
447
|
+
namespaces=NS).text
|
|
472
448
|
})
|
|
473
449
|
return instrument_types
|
|
474
450
|
|
|
@@ -531,15 +507,15 @@ class CdasWs:
|
|
|
531
507
|
|
|
532
508
|
instruments = []
|
|
533
509
|
for instrument_description in instruments_response.findall(\
|
|
534
|
-
'cdas:InstrumentDescription', namespaces=
|
|
510
|
+
'cdas:InstrumentDescription', namespaces=NS):
|
|
535
511
|
|
|
536
512
|
instruments.append({
|
|
537
513
|
'Name': instrument_description.find(\
|
|
538
|
-
'cdas:Name', namespaces=
|
|
514
|
+
'cdas:Name', namespaces=NS).text,
|
|
539
515
|
'ShortDescription': instrument_description.find(\
|
|
540
|
-
'cdas:ShortDescription', namespaces=
|
|
516
|
+
'cdas:ShortDescription', namespaces=NS).text,
|
|
541
517
|
'LongDescription': instrument_description.find(\
|
|
542
|
-
'cdas:LongDescription', namespaces=
|
|
518
|
+
'cdas:LongDescription', namespaces=NS).text
|
|
543
519
|
})
|
|
544
520
|
|
|
545
521
|
return instruments
|
|
@@ -603,14 +579,14 @@ class CdasWs:
|
|
|
603
579
|
observatories = []
|
|
604
580
|
|
|
605
581
|
for observatory in observatory_response.findall(\
|
|
606
|
-
'cdas:ObservatoryDescription', namespaces=
|
|
582
|
+
'cdas:ObservatoryDescription', namespaces=NS):
|
|
607
583
|
observatories.append({
|
|
608
584
|
'Name': observatory.find(\
|
|
609
|
-
'cdas:Name', namespaces=
|
|
585
|
+
'cdas:Name', namespaces=NS).text,
|
|
610
586
|
'ShortDescription': observatory.find(\
|
|
611
|
-
'cdas:ShortDescription', namespaces=
|
|
587
|
+
'cdas:ShortDescription', namespaces=NS).text,
|
|
612
588
|
'LongDescription': observatory.find(\
|
|
613
|
-
'cdas:LongDescription', namespaces=
|
|
589
|
+
'cdas:LongDescription', namespaces=NS).text
|
|
614
590
|
})
|
|
615
591
|
|
|
616
592
|
return observatories
|
|
@@ -670,27 +646,27 @@ class CdasWs:
|
|
|
670
646
|
|
|
671
647
|
for o_g_i_d in observatories_response.findall(\
|
|
672
648
|
'cdas:ObservatoryGroupInstrumentDescription',\
|
|
673
|
-
namespaces=
|
|
649
|
+
namespaces=NS):
|
|
674
650
|
|
|
675
651
|
o_g_i_d_name = o_g_i_d.find('cdas:Name',
|
|
676
|
-
namespaces=
|
|
652
|
+
namespaces=NS).text
|
|
677
653
|
o_is = []
|
|
678
654
|
for o_i in o_g_i_d.findall('cdas:ObservatoryInstruments',
|
|
679
|
-
namespaces=
|
|
655
|
+
namespaces=NS):
|
|
680
656
|
|
|
681
657
|
o_i_name = o_i.find('cdas:Name',
|
|
682
|
-
namespaces=
|
|
658
|
+
namespaces=NS).text
|
|
683
659
|
i_ds = []
|
|
684
660
|
for i_d in o_i.findall('cdas:InstrumentDescription',
|
|
685
|
-
namespaces=
|
|
661
|
+
namespaces=NS):
|
|
686
662
|
i_d_name = i_d.find('cdas:Name',
|
|
687
|
-
namespaces=
|
|
663
|
+
namespaces=NS).text
|
|
688
664
|
i_d_short_description = \
|
|
689
665
|
i_d.find('cdas:ShortDescription',
|
|
690
|
-
namespaces=
|
|
666
|
+
namespaces=NS).text
|
|
691
667
|
i_d_long_description = \
|
|
692
668
|
i_d.find('cdas:LongDescription',
|
|
693
|
-
namespaces=
|
|
669
|
+
namespaces=NS).text
|
|
694
670
|
i_ds.append({
|
|
695
671
|
'Name': i_d_name,
|
|
696
672
|
'ShortDescription': i_d_short_description,
|
|
@@ -851,74 +827,74 @@ class CdasWs:
|
|
|
851
827
|
|
|
852
828
|
datasets = []
|
|
853
829
|
for ds in dss.findall('cdas:DatasetDescription',
|
|
854
|
-
namespaces=
|
|
830
|
+
namespaces=NS):
|
|
855
831
|
|
|
856
832
|
observatory_groups = []
|
|
857
833
|
for o_g in ds.findall('cdas:ObservatoryGroup',
|
|
858
|
-
namespaces=
|
|
834
|
+
namespaces=NS):
|
|
859
835
|
observatory_groups.append(o_g.text)
|
|
860
836
|
|
|
861
837
|
instrument_types = []
|
|
862
838
|
for i_t in ds.findall('cdas:InstrumentType',
|
|
863
|
-
namespaces=
|
|
839
|
+
namespaces=NS):
|
|
864
840
|
instrument_types.append(i_t.text)
|
|
865
841
|
|
|
866
842
|
dataset_links = []
|
|
867
843
|
for d_l in ds.findall('cdas:DatasetLink',
|
|
868
|
-
namespaces=
|
|
844
|
+
namespaces=NS):
|
|
869
845
|
dataset_links.append({
|
|
870
846
|
'Title': d_l.find('cdas:Title',
|
|
871
|
-
namespaces=
|
|
847
|
+
namespaces=NS).text,
|
|
872
848
|
'Text': d_l.find('cdas:Text',
|
|
873
|
-
namespaces=
|
|
849
|
+
namespaces=NS).text,
|
|
874
850
|
'Url': d_l.find('cdas:Url',
|
|
875
|
-
namespaces=
|
|
851
|
+
namespaces=NS).text,
|
|
876
852
|
})
|
|
877
853
|
|
|
878
854
|
observatories = []
|
|
879
855
|
for obs_elem in ds.findall('cdas:Observatory',
|
|
880
|
-
namespaces=
|
|
856
|
+
namespaces=NS):
|
|
881
857
|
observatories.append(obs_elem.text)
|
|
882
858
|
|
|
883
859
|
instruments = []
|
|
884
860
|
for instr_elem in ds.findall('cdas:Instrument',
|
|
885
|
-
namespaces=
|
|
861
|
+
namespaces=NS):
|
|
886
862
|
instruments.append(instr_elem.text)
|
|
887
863
|
|
|
888
864
|
dataset = {
|
|
889
|
-
'Id': ds.find('cdas:Id', namespaces=
|
|
865
|
+
'Id': ds.find('cdas:Id', namespaces=NS).text,
|
|
890
866
|
'Observatory': observatories,
|
|
891
867
|
'Instrument': instruments,
|
|
892
868
|
'ObservatoryGroup': observatory_groups,
|
|
893
869
|
'InstrumentType': instrument_types,
|
|
894
870
|
'Label': ds.find('cdas:Label',
|
|
895
|
-
namespaces=
|
|
871
|
+
namespaces=NS).text,
|
|
896
872
|
'TimeInterval': {
|
|
897
873
|
'Start': ds.find('cdas:TimeInterval/cdas:Start',
|
|
898
|
-
namespaces=
|
|
874
|
+
namespaces=NS).text,
|
|
899
875
|
'End': ds.find('cdas:TimeInterval/cdas:End',
|
|
900
|
-
namespaces=
|
|
876
|
+
namespaces=NS).text
|
|
901
877
|
},
|
|
902
878
|
'PiName': ds.find('cdas:PiName',
|
|
903
|
-
namespaces=
|
|
879
|
+
namespaces=NS).text,
|
|
904
880
|
'PiAffiliation': ds.find('cdas:PiAffiliation',
|
|
905
|
-
namespaces=
|
|
881
|
+
namespaces=NS).text,
|
|
906
882
|
'Notes': ds.find('cdas:Notes',
|
|
907
|
-
namespaces=
|
|
883
|
+
namespaces=NS).text,
|
|
908
884
|
'DatasetLink': dataset_links
|
|
909
885
|
}
|
|
910
|
-
doi = ds.find('cdas:Doi', namespaces=
|
|
886
|
+
doi = ds.find('cdas:Doi', namespaces=NS)
|
|
911
887
|
if doi is not None:
|
|
912
888
|
dataset['Doi'] = doi.text
|
|
913
889
|
|
|
914
890
|
spase_resource_id = ds.find('cdas:SpaseResourceId',
|
|
915
|
-
namespaces=
|
|
891
|
+
namespaces=NS)
|
|
916
892
|
if spase_resource_id is not None:
|
|
917
893
|
dataset['SpaseResourceId'] = spase_resource_id.text
|
|
918
894
|
|
|
919
895
|
additional_metadata = []
|
|
920
896
|
for add_meta in ds.findall('cdas:AdditionalMetadata',
|
|
921
|
-
namespaces=
|
|
897
|
+
namespaces=NS):
|
|
922
898
|
meta_type = add_meta.attrib['Type']
|
|
923
899
|
value = add_meta.text
|
|
924
900
|
additional_metadata.append({
|
|
@@ -1034,16 +1010,16 @@ class CdasWs:
|
|
|
1034
1010
|
intervals = []
|
|
1035
1011
|
for inventory_desc in inventory.findall(\
|
|
1036
1012
|
'cdas:InventoryDescription',
|
|
1037
|
-
namespaces=
|
|
1013
|
+
namespaces=NS):
|
|
1038
1014
|
for time_interval in inventory_desc.findall(\
|
|
1039
1015
|
'cdas:TimeInterval',
|
|
1040
|
-
namespaces=
|
|
1016
|
+
namespaces=NS):
|
|
1041
1017
|
intervals.append(
|
|
1042
1018
|
TimeInterval(
|
|
1043
1019
|
time_interval.find('cdas:Start',
|
|
1044
|
-
namespaces=
|
|
1020
|
+
namespaces=NS).text,
|
|
1045
1021
|
time_interval.find('cdas:End',
|
|
1046
|
-
namespaces=
|
|
1022
|
+
namespaces=NS).text
|
|
1047
1023
|
)
|
|
1048
1024
|
)
|
|
1049
1025
|
|
|
@@ -1124,18 +1100,18 @@ class CdasWs:
|
|
|
1124
1100
|
variables = []
|
|
1125
1101
|
for var_description in var_descriptions.findall(\
|
|
1126
1102
|
'cdas:VariableDescription',
|
|
1127
|
-
namespaces=
|
|
1103
|
+
namespaces=NS):
|
|
1128
1104
|
name = var_description.find('cdas:Name',
|
|
1129
|
-
namespaces=
|
|
1105
|
+
namespaces=NS).text
|
|
1130
1106
|
short_description = var_description.find(\
|
|
1131
1107
|
'cdas:ShortDescription',
|
|
1132
|
-
namespaces=
|
|
1108
|
+
namespaces=NS).text
|
|
1133
1109
|
if short_description is None:
|
|
1134
1110
|
short_description = ''
|
|
1135
1111
|
|
|
1136
1112
|
long_description = var_description.find(\
|
|
1137
1113
|
'cdas:LongDescription',
|
|
1138
|
-
namespaces=
|
|
1114
|
+
namespaces=NS).text
|
|
1139
1115
|
if long_description is None:
|
|
1140
1116
|
long_description = ''
|
|
1141
1117
|
|
|
@@ -1194,55 +1170,55 @@ class CdasWs:
|
|
|
1194
1170
|
"""
|
|
1195
1171
|
thumbnail_desc = file_description_elem.find(\
|
|
1196
1172
|
'cdas:ThumbnailDescription',
|
|
1197
|
-
namespaces=
|
|
1173
|
+
namespaces=NS)
|
|
1198
1174
|
if thumbnail_desc is not None:
|
|
1199
1175
|
time_interval = thumbnail_desc.find('cdas:TimeInterval',
|
|
1200
|
-
namespaces=
|
|
1176
|
+
namespaces=NS)
|
|
1201
1177
|
start = time_interval.find('cdas:Start',
|
|
1202
|
-
namespaces=
|
|
1178
|
+
namespaces=NS).text
|
|
1203
1179
|
end = time_interval.find('cdas:End',
|
|
1204
|
-
namespaces=
|
|
1180
|
+
namespaces=NS).text
|
|
1205
1181
|
return {
|
|
1206
1182
|
'Name': thumbnail_desc.find('cdas:Name',
|
|
1207
|
-
namespaces=
|
|
1183
|
+
namespaces=NS).text,
|
|
1208
1184
|
'Dataset': thumbnail_desc.find('cdas:Dataset',
|
|
1209
|
-
namespaces=
|
|
1185
|
+
namespaces=NS).text,
|
|
1210
1186
|
'TimeInterval': {
|
|
1211
1187
|
'Start': start,
|
|
1212
1188
|
'End': end
|
|
1213
1189
|
},
|
|
1214
1190
|
'VarName': thumbnail_desc.find('cdas:VarName',
|
|
1215
|
-
namespaces=
|
|
1191
|
+
namespaces=NS).text,
|
|
1216
1192
|
'Options': int(thumbnail_desc.find(\
|
|
1217
1193
|
'cdas:Options',
|
|
1218
|
-
namespaces=
|
|
1194
|
+
namespaces=NS).text),
|
|
1219
1195
|
'NumFrames': int(thumbnail_desc.find(\
|
|
1220
1196
|
'cdas:NumFrames',
|
|
1221
|
-
namespaces=
|
|
1197
|
+
namespaces=NS).text),
|
|
1222
1198
|
'NumRows': int(thumbnail_desc.find(\
|
|
1223
1199
|
'cdas:NumRows',
|
|
1224
|
-
namespaces=
|
|
1200
|
+
namespaces=NS).text),
|
|
1225
1201
|
'NumCols': int(thumbnail_desc.find(\
|
|
1226
1202
|
'cdas:NumCols',
|
|
1227
|
-
namespaces=
|
|
1203
|
+
namespaces=NS).text),
|
|
1228
1204
|
'TitleHeight': int(thumbnail_desc.find(\
|
|
1229
1205
|
'cdas:TitleHeight',
|
|
1230
|
-
namespaces=
|
|
1206
|
+
namespaces=NS).text),
|
|
1231
1207
|
'ThumbnailHeight': int(thumbnail_desc.find(\
|
|
1232
1208
|
'cdas:ThumbnailHeight',
|
|
1233
|
-
namespaces=
|
|
1209
|
+
namespaces=NS).text),
|
|
1234
1210
|
'ThumbnailWidth': int(thumbnail_desc.find(\
|
|
1235
1211
|
'cdas:ThumbnailWidth',
|
|
1236
|
-
namespaces=
|
|
1212
|
+
namespaces=NS).text),
|
|
1237
1213
|
'StartRecord': int(thumbnail_desc.find(\
|
|
1238
1214
|
'cdas:StartRecord',
|
|
1239
|
-
namespaces=
|
|
1215
|
+
namespaces=NS).text),
|
|
1240
1216
|
'MyScale': float(thumbnail_desc.find(\
|
|
1241
1217
|
'cdas:MyScale',
|
|
1242
|
-
namespaces=
|
|
1218
|
+
namespaces=NS).text),
|
|
1243
1219
|
'XyStep': float(thumbnail_desc.find(\
|
|
1244
1220
|
'cdas:XyStep',
|
|
1245
|
-
namespaces=
|
|
1221
|
+
namespaces=NS).text)
|
|
1246
1222
|
}
|
|
1247
1223
|
return None
|
|
1248
1224
|
|
|
@@ -1268,26 +1244,26 @@ class CdasWs:
|
|
|
1268
1244
|
data_result = ET.fromstring(xml_data_result)
|
|
1269
1245
|
file_descriptions = []
|
|
1270
1246
|
for file_description in data_result.findall(\
|
|
1271
|
-
'cdas:FileDescription', namespaces=
|
|
1247
|
+
'cdas:FileDescription', namespaces=NS):
|
|
1272
1248
|
|
|
1273
1249
|
dict_file_description = {
|
|
1274
1250
|
'Name': file_description.find('cdas:Name',
|
|
1275
|
-
namespaces=
|
|
1251
|
+
namespaces=NS).text,
|
|
1276
1252
|
'MimeType': file_description.find(\
|
|
1277
1253
|
'cdas:MimeType',
|
|
1278
|
-
namespaces=
|
|
1254
|
+
namespaces=NS).text,
|
|
1279
1255
|
'StartTime': file_description.find(\
|
|
1280
1256
|
'cdas:StartTime',
|
|
1281
|
-
namespaces=
|
|
1257
|
+
namespaces=NS).text,
|
|
1282
1258
|
'EndTime': file_description.find(\
|
|
1283
1259
|
'cdas:EndTime',
|
|
1284
|
-
namespaces=
|
|
1260
|
+
namespaces=NS).text,
|
|
1285
1261
|
'Length': int(file_description.find(\
|
|
1286
1262
|
'cdas:Length',
|
|
1287
|
-
namespaces=
|
|
1263
|
+
namespaces=NS).text),
|
|
1288
1264
|
'LastModified': file_description.find(\
|
|
1289
1265
|
'cdas:LastModified',
|
|
1290
|
-
namespaces=
|
|
1266
|
+
namespaces=NS).text
|
|
1291
1267
|
}
|
|
1292
1268
|
thumbnail_dict = CdasWs._get_thumbnail_description_dict(\
|
|
1293
1269
|
file_description)
|
|
@@ -1297,7 +1273,7 @@ class CdasWs:
|
|
|
1297
1273
|
|
|
1298
1274
|
thumbnail_id_elem = file_description.find(\
|
|
1299
1275
|
'cdas:ThumbnailId',
|
|
1300
|
-
namespaces=
|
|
1276
|
+
namespaces=NS)
|
|
1301
1277
|
if thumbnail_id_elem is not None:
|
|
1302
1278
|
dict_file_description['ThumbnailId'] = \
|
|
1303
1279
|
thumbnail_id_elem.text
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cdasws
|
|
3
|
-
Version: 1.8.
|
|
3
|
+
Version: 1.8.12
|
|
4
4
|
Summary: NASA's Coordinated Data Analysis System Web Service Client Library
|
|
5
5
|
Home-page: https://cdaweb.gsfc.nasa.gov/WebServices/REST
|
|
6
6
|
Author: Bernie Harris
|
|
@@ -57,6 +57,8 @@ and can return data from any of
|
|
|
57
57
|
[pandas.DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html)
|
|
58
58
|
with all source and
|
|
59
59
|
[ISTP/SPDF](https://spdf.gsfc.nasa.gov/sp_use_of_cdf.html) metadata.
|
|
60
|
+
Note that this package is included in the [HelioCloud](https://heliocloud.org/)
|
|
61
|
+
base image, so there is no need to install it there.
|
|
60
62
|
Frequently asked questions concerning this library are at
|
|
61
63
|
[FAQ](https://cdaweb.gsfc.nasa.gov/WebServices/REST/py/FAQ.html).
|
|
62
64
|
For more general details about the CDAS web services, see
|
|
@@ -10,7 +10,7 @@ README = (HERE / "README.md").read_text()
|
|
|
10
10
|
# This call to setup() does all the work
|
|
11
11
|
setup(
|
|
12
12
|
name="cdasws",
|
|
13
|
-
version="1.8.
|
|
13
|
+
version="1.8.12",
|
|
14
14
|
description="NASA's Coordinated Data Analysis System Web Service Client Library",
|
|
15
15
|
long_description=README,
|
|
16
16
|
long_description_content_type="text/markdown",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
#
|
|
25
25
|
# NOSA HEADER END
|
|
26
26
|
#
|
|
27
|
-
# Copyright (c) 2019-
|
|
27
|
+
# Copyright (c) 2019-2025 United States Government as represented by
|
|
28
28
|
# the National Aeronautics and Space Administration. No copyright is
|
|
29
29
|
# claimed in the United States under Title 17, U.S.Code. All Other
|
|
30
30
|
# Rights Reserved.
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"""
|
|
34
34
|
Module for unittest of the CdasWs class.<br>
|
|
35
35
|
|
|
36
|
-
Copyright © 2019-
|
|
36
|
+
Copyright © 2019-2025 United States Government as represented by the
|
|
37
37
|
National Aeronautics and Space Administration. No copyright is claimed in
|
|
38
38
|
the United States under Title 17, U.S.Code. All Other Rights Reserved.
|
|
39
39
|
"""
|
|
@@ -47,8 +47,7 @@ from typing import Dict
|
|
|
47
47
|
from context import cdasws # pylint: disable=unused-import
|
|
48
48
|
|
|
49
49
|
# pylint: enable=import-error,wrong-import-position
|
|
50
|
-
from cdasws import CdasWs
|
|
51
|
-
#from cdasws.cdasws import CdasWs
|
|
50
|
+
from cdasws.cdasws import CdasWs
|
|
52
51
|
from cdasws.timeinterval import TimeInterval
|
|
53
52
|
from cdasws.datarequest import GraphOptions, ImageFormat, Overplot
|
|
54
53
|
# pylint: enable=import-error,wrong-import-position
|
|
@@ -43,8 +43,7 @@ from datetime import datetime, timezone
|
|
|
43
43
|
|
|
44
44
|
from context import cdasws # pylint: disable=unused-import
|
|
45
45
|
|
|
46
|
-
from cdasws import TimeInterval # pylint: disable=import-error
|
|
47
|
-
#from cdasws.cdasws import TimeInterval # pylint: disable=import-error
|
|
46
|
+
from cdasws.cdasws import TimeInterval # pylint: disable=import-error
|
|
48
47
|
|
|
49
48
|
|
|
50
49
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|