rda-python-dsarch 2.0.15__tar.gz → 2.0.17__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 (26) hide show
  1. rda_python_dsarch-2.0.17/PKG-INFO +82 -0
  2. rda_python_dsarch-2.0.17/README.md +64 -0
  3. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/pyproject.toml +4 -2
  4. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch/dsarch.py +5 -1
  5. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch/dsarch.usg +8 -2
  6. rda_python_dsarch-2.0.17/src/rda_python_dsarch/dsarch_setup.py +69 -0
  7. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch/pg_arch.py +1 -0
  8. rda_python_dsarch-2.0.17/src/rda_python_dsarch.egg-info/PKG-INFO +82 -0
  9. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch.egg-info/SOURCES.txt +1 -0
  10. rda_python_dsarch-2.0.17/src/rda_python_dsarch.egg-info/entry_points.txt +3 -0
  11. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch.egg-info/requires.txt +1 -0
  12. rda_python_dsarch-2.0.15/PKG-INFO +0 -22
  13. rda_python_dsarch-2.0.15/README.md +0 -5
  14. rda_python_dsarch-2.0.15/src/rda_python_dsarch.egg-info/PKG-INFO +0 -22
  15. rda_python_dsarch-2.0.15/src/rda_python_dsarch.egg-info/entry_points.txt +0 -2
  16. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/LICENSE +0 -0
  17. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/MANIFEST.in +0 -0
  18. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/setup.cfg +0 -0
  19. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch/PgArch.py +0 -0
  20. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch/PgMeta.py +0 -0
  21. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch/__init__.py +0 -0
  22. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch/ds_arch.py +0 -0
  23. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch/pg_meta.py +0 -0
  24. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch.egg-info/dependency_links.txt +0 -0
  25. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/src/rda_python_dsarch.egg-info/top_level.txt +0 -0
  26. {rda_python_dsarch-2.0.15 → rda_python_dsarch-2.0.17}/tests/test_dsarch.py +0 -0
@@ -0,0 +1,82 @@
1
+ Metadata-Version: 2.4
2
+ Name: rda_python_dsarch
3
+ Version: 2.0.17
4
+ Summary: RDA Python package for utility program dsarch archive RDA data
5
+ Author-email: Zaihua Ji <zji@ucar.edu>
6
+ Project-URL: Homepage, https://github.com/NCAR/rda-python-dsarch
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Requires-Python: >=3.7
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: rda_python_common
15
+ Requires-Dist: rda_python_setuid
16
+ Requires-Dist: rda_python_miscs
17
+ Dynamic: license-file
18
+
19
+ # dsarch
20
+
21
+ Python project to archive and maintain datasets for the [NSF NCAR Geoscience Data Exchange (GDEX)](https://gdex.ucar.edu).
22
+
23
+ The user guide for this utility tool can be viewed at: [User guide](https://gdex-docs-dsarch.readthedocs.io).
24
+
25
+ ## Setuid Setup
26
+
27
+ `dsarch` is executed as the common user `gdexdata` via the `rda_python_setuid`
28
+ setuid mechanism. `rda_python_setuid` is declared as a dependency and is
29
+ installed automatically with this package.
30
+
31
+ ### Environment setup
32
+
33
+ #### Option A — Python venv (DECS machines)
34
+
35
+ ```bash
36
+ python3 -m venv $ENVHOME # e.g. /glade/u/home/gdexdata/gdexmsenv
37
+ source $ENVHOME/bin/activate
38
+ pip install rda_python_dsarch
39
+ ```
40
+
41
+ #### Option B — Conda (DAV/Casper)
42
+
43
+ ```bash
44
+ conda activate pg-gdex # e.g. /glade/work/gdexdata/conda-envs/pg-gdex
45
+ pip install rda_python_dsarch
46
+ ```
47
+
48
+ ### Full setuid install (requires sudo access to gdexdata)
49
+
50
+ Run these steps once per environment after `pip install`:
51
+
52
+ ```bash
53
+ # Compile the pywrapper C binary (once per environment):
54
+ pywrapper-install --user gdexdata
55
+
56
+ # Wire up dsarch as a setuid entry:
57
+ pywrapper-install --link dsarch --user gdexdata
58
+ ```
59
+
60
+ `pywrapper-install` with no arguments displays the full user guide.
61
+
62
+ ### Simple install (no sudo required, runs as current user)
63
+
64
+ Users who do not need the setuid mechanism can create a direct symlink instead:
65
+
66
+ ```bash
67
+ pywrapper-install --link dsarch --simple
68
+ ```
69
+
70
+ This creates `bin/dsarch -> bin/setuid_dsarch` and the program runs as the
71
+ current user with no privilege change.
72
+
73
+ ### Setup guide
74
+
75
+ After `pip install`, run `dsarch-setup` at any time to display the setup guide:
76
+
77
+ ```bash
78
+ dsarch-setup
79
+ ```
80
+
81
+ The guide is also shown automatically if `setuid_dsarch` is invoked directly
82
+ before the setuid wrapper has been configured.
@@ -0,0 +1,64 @@
1
+ # dsarch
2
+
3
+ Python project to archive and maintain datasets for the [NSF NCAR Geoscience Data Exchange (GDEX)](https://gdex.ucar.edu).
4
+
5
+ The user guide for this utility tool can be viewed at: [User guide](https://gdex-docs-dsarch.readthedocs.io).
6
+
7
+ ## Setuid Setup
8
+
9
+ `dsarch` is executed as the common user `gdexdata` via the `rda_python_setuid`
10
+ setuid mechanism. `rda_python_setuid` is declared as a dependency and is
11
+ installed automatically with this package.
12
+
13
+ ### Environment setup
14
+
15
+ #### Option A — Python venv (DECS machines)
16
+
17
+ ```bash
18
+ python3 -m venv $ENVHOME # e.g. /glade/u/home/gdexdata/gdexmsenv
19
+ source $ENVHOME/bin/activate
20
+ pip install rda_python_dsarch
21
+ ```
22
+
23
+ #### Option B — Conda (DAV/Casper)
24
+
25
+ ```bash
26
+ conda activate pg-gdex # e.g. /glade/work/gdexdata/conda-envs/pg-gdex
27
+ pip install rda_python_dsarch
28
+ ```
29
+
30
+ ### Full setuid install (requires sudo access to gdexdata)
31
+
32
+ Run these steps once per environment after `pip install`:
33
+
34
+ ```bash
35
+ # Compile the pywrapper C binary (once per environment):
36
+ pywrapper-install --user gdexdata
37
+
38
+ # Wire up dsarch as a setuid entry:
39
+ pywrapper-install --link dsarch --user gdexdata
40
+ ```
41
+
42
+ `pywrapper-install` with no arguments displays the full user guide.
43
+
44
+ ### Simple install (no sudo required, runs as current user)
45
+
46
+ Users who do not need the setuid mechanism can create a direct symlink instead:
47
+
48
+ ```bash
49
+ pywrapper-install --link dsarch --simple
50
+ ```
51
+
52
+ This creates `bin/dsarch -> bin/setuid_dsarch` and the program runs as the
53
+ current user with no privilege change.
54
+
55
+ ### Setup guide
56
+
57
+ After `pip install`, run `dsarch-setup` at any time to display the setup guide:
58
+
59
+ ```bash
60
+ dsarch-setup
61
+ ```
62
+
63
+ The guide is also shown automatically if `setuid_dsarch` is invoked directly
64
+ before the setuid wrapper has been configured.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rda_python_dsarch"
7
- version = "2.0.15"
7
+ version = "2.0.17"
8
8
  authors = [
9
9
  { name="Zaihua Ji", email="zji@ucar.edu" },
10
10
  ]
@@ -20,6 +20,7 @@ classifiers = [
20
20
  dependencies = [
21
21
  "rda_python_common",
22
22
  "rda_python_setuid",
23
+ "rda_python_miscs",
23
24
  ]
24
25
 
25
26
  [tool.pytest.ini_options]
@@ -31,4 +32,5 @@ pythonpath = [
31
32
  "Homepage" = "https://github.com/NCAR/rda-python-dsarch"
32
33
 
33
34
  [project.scripts]
34
- "dsarch.py" = "rda_python_dsarch.dsarch:main"
35
+ "setuid_dsarch" = "rda_python_dsarch.dsarch:main"
36
+ "dsarch-setup" = "rda_python_dsarch.dsarch_setup:main"
@@ -2645,7 +2645,7 @@ class DsArch(PgArch, PgMeta):
2645
2645
  if 'RO' in self.params and 'DO' in self.params:
2646
2646
  self.params['DO'][i] = self.get_next_disp_order(dsid, gindex)
2647
2647
  record = self.build_record(flds, pgrec, tname, i)
2648
- if pgrec and (pgrec['status'] == 'D' or self.PGOPT['ACTS']&self.OPTS['AW'][0]):
2648
+ if pgrec and (pgrec['status'] == 'D' or 'WS' in self.params or self.PGOPT['ACTS']&self.OPTS['AW'][0]):
2649
2649
  record['uid'] = self.PGOPT['UID']
2650
2650
  if not (info and info['date_modified']):
2651
2651
  info = self.check_local_file(self.get_web_path(i, file, 1, type),
@@ -4957,6 +4957,10 @@ def main():
4957
4957
  Instantiates DsArch, parses arguments via read_parameters(), executes the
4958
4958
  requested action via start_actions(), and exits cleanly.
4959
4959
  """
4960
+ import sys
4961
+ if os.path.basename(sys.argv[0]) == 'setuid_dsarch':
4962
+ from rda_python_dsarch.dsarch_setup import main as setup_main
4963
+ setup_main()
4960
4964
  object = DsArch()
4961
4965
  object.read_parameters()
4962
4966
  object.start_actions()
@@ -866,6 +866,8 @@ d260001-G2: DS-552780725 DC-522 WC-522 SS-465789806 SC-51
866
866
  processing, used with -GX (-GatherXML)
867
867
  -(SC|SetChecksum) - computes MD5 checksums for files on the GDEX
868
868
  Server and saves them to GDEXDB
869
+ -(WS|WithFileSize) - gathers file size information for Web files on the GDEX
870
+ Server and saves them to GDEXDB
869
871
 
870
872
  Web file names must be provided via -WF (-WebFile) unless -ON
871
873
  (-OrderNames) is used to reorder files. The number of values supplied
@@ -1878,6 +1880,10 @@ behavior.
1878
1880
  (-GetDataset), the counts are calculated on the fly and included
1879
1881
  in the output.
1880
1882
 
1883
+ -WS or -WithFileSize, rechecks Web file sizes and timestamps for
1884
+ provided web files with -WF (-WebFile), and updates them into GDEXDB
1885
+ This Mode option works with action -SW (SetWebFile) only.
1886
+
1881
1887
  -XC or -CrossCopy, used with -AW or -AS to fill gaps in storage:
1882
1888
  copies files from Glade disk to bOreas (or vice versa) wherever
1883
1889
  copies are missing.
@@ -2010,7 +2016,7 @@ They come in two forms:
2010
2016
  A multi-value Info option accepts a list of one or more values.
2011
2017
  Supplying zero values causes an error.
2012
2018
 
2013
- -AF or -ArchiveFormat (Alias: -FF|-FileFormat|-ExternalFormat),
2019
+ -AF or -ArchiveFormat (Alias: -FF|-FileFormat),
2014
2020
  describes how a data file has been packaged or compressed.
2015
2021
  Recognized values:
2016
2022
  'BI' - binary (COS) blocked
@@ -2071,7 +2077,7 @@ They come in two forms:
2071
2077
  containing spaces on the command line. With version control
2072
2078
  actions (-SV), this becomes the version note.
2073
2079
 
2074
- -DF or -DataFormat (Alias: -TF|-ContentFormat|-InternalFormat),
2080
+ -DF or -DataFormat (Alias: -TF|-ContentFormat),
2075
2081
  the scientific format of the data content (e.g., NetCDF, IMMA,
2076
2082
  BINARY). A dataset-level default can be set via -SD and is applied
2077
2083
  automatically when no format is specified at archive time.
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/env python3
2
+ #
3
+ ##################################################################################
4
+ #
5
+ # Title: dsarch-setup
6
+ # Author: Zaihua Ji, zji@ucar.edu
7
+ # Date: 2026-05-12
8
+ # Purpose: Display the setuid setup guide for dsarch after pip install.
9
+ # Run automatically when setuid_dsarch is invoked directly instead
10
+ # of through the dsarch -> pywrapper setuid symlink.
11
+ #
12
+ # Github: https://github.com/NCAR/rda-python-dsarch.git
13
+ #
14
+ ##################################################################################
15
+
16
+ import os
17
+ import sys
18
+
19
+
20
+ SETUP_GUIDE = """
21
+ dsarch - Setuid Setup Guide
22
+ ===========================
23
+
24
+ dsarch must be run as the common user 'gdexdata' via the rda_python_setuid
25
+ mechanism. rda_python_setuid is installed automatically as a dependency.
26
+
27
+ If you are seeing this message after running 'setuid_dsarch' directly, it
28
+ means the setuid wrapper has not been set up yet. Follow the steps below.
29
+
30
+ Run 'pywrapper-install' with no arguments for the full pywrapper user guide.
31
+
32
+ Environment Setup
33
+ -----------------
34
+
35
+ Option A - Python venv (DECS machines):
36
+ python3 -m venv $ENVHOME # e.g. /glade/u/home/gdexdata/gdexmsenv
37
+ source $ENVHOME/bin/activate
38
+ pip install rda_python_dsarch
39
+
40
+ Option B - Conda (DAV/Casper):
41
+ conda activate pg-gdex # e.g. /glade/work/gdexdata/conda-envs/pg-gdex
42
+ pip install rda_python_dsarch
43
+
44
+ Full Setuid Install (requires sudo access to gdexdata)
45
+ ------------------------------------------------------
46
+
47
+ # Compile the pywrapper C binary (once per environment):
48
+ pywrapper-install --user gdexdata
49
+
50
+ # Wire up dsarch as a setuid entry:
51
+ pywrapper-install --link dsarch --user gdexdata
52
+
53
+ Simple Install (no sudo required, runs as current user)
54
+ -------------------------------------------------------
55
+
56
+ pywrapper-install --link dsarch --simple
57
+
58
+ This creates bin/dsarch -> bin/setuid_dsarch.
59
+ The program runs as the current user with no privilege change.
60
+
61
+ """
62
+
63
+
64
+ def main():
65
+ print(SETUP_GUIDE)
66
+ sys.exit(0)
67
+
68
+
69
+ if __name__ == '__main__': main()
@@ -126,6 +126,7 @@ class PgArch(PgOPT, PgCMD, PgSplit):
126
126
  'WC' : [0, 'WithChecksum', 0],
127
127
  'WM' : [0, 'WithMetadata', 3],
128
128
  'WN' : [0, 'WithFileNumber',3],
129
+ 'WS' : [0, 'WithFileSize', 3],
129
130
  'XC' : [0, 'CrossCopy', 1],
130
131
  'XM' : [0, 'CrossMove', 1],
131
132
  'ZD' : [0, 'ZipData', 3],
@@ -0,0 +1,82 @@
1
+ Metadata-Version: 2.4
2
+ Name: rda_python_dsarch
3
+ Version: 2.0.17
4
+ Summary: RDA Python package for utility program dsarch archive RDA data
5
+ Author-email: Zaihua Ji <zji@ucar.edu>
6
+ Project-URL: Homepage, https://github.com/NCAR/rda-python-dsarch
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Requires-Python: >=3.7
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: rda_python_common
15
+ Requires-Dist: rda_python_setuid
16
+ Requires-Dist: rda_python_miscs
17
+ Dynamic: license-file
18
+
19
+ # dsarch
20
+
21
+ Python project to archive and maintain datasets for the [NSF NCAR Geoscience Data Exchange (GDEX)](https://gdex.ucar.edu).
22
+
23
+ The user guide for this utility tool can be viewed at: [User guide](https://gdex-docs-dsarch.readthedocs.io).
24
+
25
+ ## Setuid Setup
26
+
27
+ `dsarch` is executed as the common user `gdexdata` via the `rda_python_setuid`
28
+ setuid mechanism. `rda_python_setuid` is declared as a dependency and is
29
+ installed automatically with this package.
30
+
31
+ ### Environment setup
32
+
33
+ #### Option A — Python venv (DECS machines)
34
+
35
+ ```bash
36
+ python3 -m venv $ENVHOME # e.g. /glade/u/home/gdexdata/gdexmsenv
37
+ source $ENVHOME/bin/activate
38
+ pip install rda_python_dsarch
39
+ ```
40
+
41
+ #### Option B — Conda (DAV/Casper)
42
+
43
+ ```bash
44
+ conda activate pg-gdex # e.g. /glade/work/gdexdata/conda-envs/pg-gdex
45
+ pip install rda_python_dsarch
46
+ ```
47
+
48
+ ### Full setuid install (requires sudo access to gdexdata)
49
+
50
+ Run these steps once per environment after `pip install`:
51
+
52
+ ```bash
53
+ # Compile the pywrapper C binary (once per environment):
54
+ pywrapper-install --user gdexdata
55
+
56
+ # Wire up dsarch as a setuid entry:
57
+ pywrapper-install --link dsarch --user gdexdata
58
+ ```
59
+
60
+ `pywrapper-install` with no arguments displays the full user guide.
61
+
62
+ ### Simple install (no sudo required, runs as current user)
63
+
64
+ Users who do not need the setuid mechanism can create a direct symlink instead:
65
+
66
+ ```bash
67
+ pywrapper-install --link dsarch --simple
68
+ ```
69
+
70
+ This creates `bin/dsarch -> bin/setuid_dsarch` and the program runs as the
71
+ current user with no privilege change.
72
+
73
+ ### Setup guide
74
+
75
+ After `pip install`, run `dsarch-setup` at any time to display the setup guide:
76
+
77
+ ```bash
78
+ dsarch-setup
79
+ ```
80
+
81
+ The guide is also shown automatically if `setuid_dsarch` is invoked directly
82
+ before the setuid wrapper has been configured.
@@ -8,6 +8,7 @@ src/rda_python_dsarch/__init__.py
8
8
  src/rda_python_dsarch/ds_arch.py
9
9
  src/rda_python_dsarch/dsarch.py
10
10
  src/rda_python_dsarch/dsarch.usg
11
+ src/rda_python_dsarch/dsarch_setup.py
11
12
  src/rda_python_dsarch/pg_arch.py
12
13
  src/rda_python_dsarch/pg_meta.py
13
14
  src/rda_python_dsarch.egg-info/PKG-INFO
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ dsarch-setup = rda_python_dsarch.dsarch_setup:main
3
+ setuid_dsarch = rda_python_dsarch.dsarch:main
@@ -1,2 +1,3 @@
1
1
  rda_python_common
2
2
  rda_python_setuid
3
+ rda_python_miscs
@@ -1,22 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: rda_python_dsarch
3
- Version: 2.0.15
4
- Summary: RDA Python package for utility program dsarch archive RDA data
5
- Author-email: Zaihua Ji <zji@ucar.edu>
6
- Project-URL: Homepage, https://github.com/NCAR/rda-python-dsarch
7
- Classifier: Programming Language :: Python :: 3
8
- Classifier: License :: OSI Approved :: MIT License
9
- Classifier: Operating System :: OS Independent
10
- Classifier: Development Status :: 5 - Production/Stable
11
- Requires-Python: >=3.7
12
- Description-Content-Type: text/markdown
13
- License-File: LICENSE
14
- Requires-Dist: rda_python_common
15
- Requires-Dist: rda_python_setuid
16
- Dynamic: license-file
17
-
18
- # dsarch
19
-
20
- Python project to archive and maintain datasets for the [NSF NCAR Geoscience Data Exchange (GDEX)](https://gdex.ucar.edu).
21
-
22
- The user guide for this utility tool can be viewed at: [User guide](https://gdex-docs-dsarch.readthedocs.io).
@@ -1,5 +0,0 @@
1
- # dsarch
2
-
3
- Python project to archive and maintain datasets for the [NSF NCAR Geoscience Data Exchange (GDEX)](https://gdex.ucar.edu).
4
-
5
- The user guide for this utility tool can be viewed at: [User guide](https://gdex-docs-dsarch.readthedocs.io).
@@ -1,22 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: rda_python_dsarch
3
- Version: 2.0.15
4
- Summary: RDA Python package for utility program dsarch archive RDA data
5
- Author-email: Zaihua Ji <zji@ucar.edu>
6
- Project-URL: Homepage, https://github.com/NCAR/rda-python-dsarch
7
- Classifier: Programming Language :: Python :: 3
8
- Classifier: License :: OSI Approved :: MIT License
9
- Classifier: Operating System :: OS Independent
10
- Classifier: Development Status :: 5 - Production/Stable
11
- Requires-Python: >=3.7
12
- Description-Content-Type: text/markdown
13
- License-File: LICENSE
14
- Requires-Dist: rda_python_common
15
- Requires-Dist: rda_python_setuid
16
- Dynamic: license-file
17
-
18
- # dsarch
19
-
20
- Python project to archive and maintain datasets for the [NSF NCAR Geoscience Data Exchange (GDEX)](https://gdex.ucar.edu).
21
-
22
- The user guide for this utility tool can be viewed at: [User guide](https://gdex-docs-dsarch.readthedocs.io).
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- dsarch.py = rda_python_dsarch.dsarch:main