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.
@@ -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
- gsfc-spdf-support@lists.nasa.gov
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.11
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 &copy; 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
- Package for accessing the Coordinate Data Analysis System (CDAS)
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 &copy; 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=NAMESPACES):
368
+ 'cdas:ObservatoryGroupDescription', namespaces=NS):
393
369
 
394
370
  observatory_ids = []
395
371
  for observatory_id in description.findall(\
396
- 'cdas:ObservatoryId', namespaces=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=NAMESPACES).text,
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=NAMESPACES):
443
+ 'cdas:InstrumentTypeDescription', namespaces=NS):
468
444
 
469
445
  instrument_types.append({
470
446
  'Name': description.find('cdas:Name',
471
- namespaces=NAMESPACES).text
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=NAMESPACES):
510
+ 'cdas:InstrumentDescription', namespaces=NS):
535
511
 
536
512
  instruments.append({
537
513
  'Name': instrument_description.find(\
538
- 'cdas:Name', namespaces=NAMESPACES).text,
514
+ 'cdas:Name', namespaces=NS).text,
539
515
  'ShortDescription': instrument_description.find(\
540
- 'cdas:ShortDescription', namespaces=NAMESPACES).text,
516
+ 'cdas:ShortDescription', namespaces=NS).text,
541
517
  'LongDescription': instrument_description.find(\
542
- 'cdas:LongDescription', namespaces=NAMESPACES).text
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=NAMESPACES):
582
+ 'cdas:ObservatoryDescription', namespaces=NS):
607
583
  observatories.append({
608
584
  'Name': observatory.find(\
609
- 'cdas:Name', namespaces=NAMESPACES).text,
585
+ 'cdas:Name', namespaces=NS).text,
610
586
  'ShortDescription': observatory.find(\
611
- 'cdas:ShortDescription', namespaces=NAMESPACES).text,
587
+ 'cdas:ShortDescription', namespaces=NS).text,
612
588
  'LongDescription': observatory.find(\
613
- 'cdas:LongDescription', namespaces=NAMESPACES).text
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=NAMESPACES):
649
+ namespaces=NS):
674
650
 
675
651
  o_g_i_d_name = o_g_i_d.find('cdas:Name',
676
- namespaces=NAMESPACES).text
652
+ namespaces=NS).text
677
653
  o_is = []
678
654
  for o_i in o_g_i_d.findall('cdas:ObservatoryInstruments',
679
- namespaces=NAMESPACES):
655
+ namespaces=NS):
680
656
 
681
657
  o_i_name = o_i.find('cdas:Name',
682
- namespaces=NAMESPACES).text
658
+ namespaces=NS).text
683
659
  i_ds = []
684
660
  for i_d in o_i.findall('cdas:InstrumentDescription',
685
- namespaces=NAMESPACES):
661
+ namespaces=NS):
686
662
  i_d_name = i_d.find('cdas:Name',
687
- namespaces=NAMESPACES).text
663
+ namespaces=NS).text
688
664
  i_d_short_description = \
689
665
  i_d.find('cdas:ShortDescription',
690
- namespaces=NAMESPACES).text
666
+ namespaces=NS).text
691
667
  i_d_long_description = \
692
668
  i_d.find('cdas:LongDescription',
693
- namespaces=NAMESPACES).text
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=NAMESPACES):
830
+ namespaces=NS):
855
831
 
856
832
  observatory_groups = []
857
833
  for o_g in ds.findall('cdas:ObservatoryGroup',
858
- namespaces=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=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=NAMESPACES):
844
+ namespaces=NS):
869
845
  dataset_links.append({
870
846
  'Title': d_l.find('cdas:Title',
871
- namespaces=NAMESPACES).text,
847
+ namespaces=NS).text,
872
848
  'Text': d_l.find('cdas:Text',
873
- namespaces=NAMESPACES).text,
849
+ namespaces=NS).text,
874
850
  'Url': d_l.find('cdas:Url',
875
- namespaces=NAMESPACES).text,
851
+ namespaces=NS).text,
876
852
  })
877
853
 
878
854
  observatories = []
879
855
  for obs_elem in ds.findall('cdas:Observatory',
880
- namespaces=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=NAMESPACES):
861
+ namespaces=NS):
886
862
  instruments.append(instr_elem.text)
887
863
 
888
864
  dataset = {
889
- 'Id': ds.find('cdas:Id', namespaces=NAMESPACES).text,
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=NAMESPACES).text,
871
+ namespaces=NS).text,
896
872
  'TimeInterval': {
897
873
  'Start': ds.find('cdas:TimeInterval/cdas:Start',
898
- namespaces=NAMESPACES).text,
874
+ namespaces=NS).text,
899
875
  'End': ds.find('cdas:TimeInterval/cdas:End',
900
- namespaces=NAMESPACES).text
876
+ namespaces=NS).text
901
877
  },
902
878
  'PiName': ds.find('cdas:PiName',
903
- namespaces=NAMESPACES).text,
879
+ namespaces=NS).text,
904
880
  'PiAffiliation': ds.find('cdas:PiAffiliation',
905
- namespaces=NAMESPACES).text,
881
+ namespaces=NS).text,
906
882
  'Notes': ds.find('cdas:Notes',
907
- namespaces=NAMESPACES).text,
883
+ namespaces=NS).text,
908
884
  'DatasetLink': dataset_links
909
885
  }
910
- doi = ds.find('cdas:Doi', namespaces=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=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=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=NAMESPACES):
1013
+ namespaces=NS):
1038
1014
  for time_interval in inventory_desc.findall(\
1039
1015
  'cdas:TimeInterval',
1040
- namespaces=NAMESPACES):
1016
+ namespaces=NS):
1041
1017
  intervals.append(
1042
1018
  TimeInterval(
1043
1019
  time_interval.find('cdas:Start',
1044
- namespaces=NAMESPACES).text,
1020
+ namespaces=NS).text,
1045
1021
  time_interval.find('cdas:End',
1046
- namespaces=NAMESPACES).text
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=NAMESPACES):
1103
+ namespaces=NS):
1128
1104
  name = var_description.find('cdas:Name',
1129
- namespaces=NAMESPACES).text
1105
+ namespaces=NS).text
1130
1106
  short_description = var_description.find(\
1131
1107
  'cdas:ShortDescription',
1132
- namespaces=NAMESPACES).text
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=NAMESPACES).text
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=NAMESPACES)
1173
+ namespaces=NS)
1198
1174
  if thumbnail_desc is not None:
1199
1175
  time_interval = thumbnail_desc.find('cdas:TimeInterval',
1200
- namespaces=NAMESPACES)
1176
+ namespaces=NS)
1201
1177
  start = time_interval.find('cdas:Start',
1202
- namespaces=NAMESPACES).text
1178
+ namespaces=NS).text
1203
1179
  end = time_interval.find('cdas:End',
1204
- namespaces=NAMESPACES).text
1180
+ namespaces=NS).text
1205
1181
  return {
1206
1182
  'Name': thumbnail_desc.find('cdas:Name',
1207
- namespaces=NAMESPACES).text,
1183
+ namespaces=NS).text,
1208
1184
  'Dataset': thumbnail_desc.find('cdas:Dataset',
1209
- namespaces=NAMESPACES).text,
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=NAMESPACES).text,
1191
+ namespaces=NS).text,
1216
1192
  'Options': int(thumbnail_desc.find(\
1217
1193
  'cdas:Options',
1218
- namespaces=NAMESPACES).text),
1194
+ namespaces=NS).text),
1219
1195
  'NumFrames': int(thumbnail_desc.find(\
1220
1196
  'cdas:NumFrames',
1221
- namespaces=NAMESPACES).text),
1197
+ namespaces=NS).text),
1222
1198
  'NumRows': int(thumbnail_desc.find(\
1223
1199
  'cdas:NumRows',
1224
- namespaces=NAMESPACES).text),
1200
+ namespaces=NS).text),
1225
1201
  'NumCols': int(thumbnail_desc.find(\
1226
1202
  'cdas:NumCols',
1227
- namespaces=NAMESPACES).text),
1203
+ namespaces=NS).text),
1228
1204
  'TitleHeight': int(thumbnail_desc.find(\
1229
1205
  'cdas:TitleHeight',
1230
- namespaces=NAMESPACES).text),
1206
+ namespaces=NS).text),
1231
1207
  'ThumbnailHeight': int(thumbnail_desc.find(\
1232
1208
  'cdas:ThumbnailHeight',
1233
- namespaces=NAMESPACES).text),
1209
+ namespaces=NS).text),
1234
1210
  'ThumbnailWidth': int(thumbnail_desc.find(\
1235
1211
  'cdas:ThumbnailWidth',
1236
- namespaces=NAMESPACES).text),
1212
+ namespaces=NS).text),
1237
1213
  'StartRecord': int(thumbnail_desc.find(\
1238
1214
  'cdas:StartRecord',
1239
- namespaces=NAMESPACES).text),
1215
+ namespaces=NS).text),
1240
1216
  'MyScale': float(thumbnail_desc.find(\
1241
1217
  'cdas:MyScale',
1242
- namespaces=NAMESPACES).text),
1218
+ namespaces=NS).text),
1243
1219
  'XyStep': float(thumbnail_desc.find(\
1244
1220
  'cdas:XyStep',
1245
- namespaces=NAMESPACES).text)
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=NAMESPACES):
1247
+ 'cdas:FileDescription', namespaces=NS):
1272
1248
 
1273
1249
  dict_file_description = {
1274
1250
  'Name': file_description.find('cdas:Name',
1275
- namespaces=NAMESPACES).text,
1251
+ namespaces=NS).text,
1276
1252
  'MimeType': file_description.find(\
1277
1253
  'cdas:MimeType',
1278
- namespaces=NAMESPACES).text,
1254
+ namespaces=NS).text,
1279
1255
  'StartTime': file_description.find(\
1280
1256
  'cdas:StartTime',
1281
- namespaces=NAMESPACES).text,
1257
+ namespaces=NS).text,
1282
1258
  'EndTime': file_description.find(\
1283
1259
  'cdas:EndTime',
1284
- namespaces=NAMESPACES).text,
1260
+ namespaces=NS).text,
1285
1261
  'Length': int(file_description.find(\
1286
1262
  'cdas:Length',
1287
- namespaces=NAMESPACES).text),
1263
+ namespaces=NS).text),
1288
1264
  'LastModified': file_description.find(\
1289
1265
  'cdas:LastModified',
1290
- namespaces=NAMESPACES).text
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=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.11
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
@@ -3,6 +3,7 @@ README.md
3
3
  setup.py
4
4
  cdasws/__init__.py
5
5
  cdasws/__main__.py
6
+ cdasws/cdasws.py
6
7
  cdasws/datarepresentation.py
7
8
  cdasws/datarequest.py
8
9
  cdasws/timeinterval.py
@@ -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.11",
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-2024 United States Government as represented by
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 &copy; 2019-2024 United States Government as represented by the
36
+ Copyright &copy; 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