From 8f4025b35525488e1bed02fbdb7886a61915a54f Mon Sep 17 00:00:00 2001 From: cmspeed Date: Fri, 13 Mar 2026 11:02:09 -0700 Subject: [PATCH 01/13] Add AWS Element84 routing for Sentinel-2 L2A COGs --- src/hyp3_autorift/process.py | 53 ++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/src/hyp3_autorift/process.py b/src/hyp3_autorift/process.py index ad7ec062..84c09f7d 100644 --- a/src/hyp3_autorift/process.py +++ b/src/hyp3_autorift/process.py @@ -143,7 +143,53 @@ def get_raster_bbox(path: str): ] -def get_s2_metadata(scene_name): +def get_s2_l2a_metadata(scene_name: str) -> dict: + url = f"https://earth-search.aws.element84.com/v1/collections/sentinel-2-c1-l2a/items/{scene_name}" + + response = requests.get(url) + response.raise_for_status() + item = response.json() + + band_url = item['assets']['nir']['href'] + + if band_url.startswith('s3://'): + vsi_path = band_url.replace('s3://', '/vsis3/') + elif band_url.startswith('https://'): + vsi_path = '/vsicurl/' + band_url + else: + vsi_path = band_url + + bbox = item.get('bbox') + if not bbox: + bbox = get_raster_bbox(vsi_path) + + raw_dt = item['properties']['datetime'] + try: + dt_obj = datetime.strptime(raw_dt, "%Y-%m-%dT%H:%M:%S.%fZ") + except ValueError: + dt_obj = datetime.strptime(raw_dt, "%Y-%m-%dT%H:%M:%SZ") + + clean_dt = dt_obj.strftime("%Y-%m-%dT%H:%M:%SZ") + + return { + 'path': vsi_path, + 'bbox': bbox, + 'id': scene_name, + 'properties': { + 'datetime': clean_dt, + 'proj:epsg': item['properties'].get('proj:epsg') + }, + } + + +def get_s2_metadata(scene_name: str) -> dict: + """Routes the metadata request based on the scene name format.""" + + # Element84 L2A STAC items + if scene_name.endswith('_L2A') or 'L2A' in scene_name: + return get_s2_l2a_metadata(scene_name) + + # Google Cloud L1C .SAFE items path = get_s2_path(scene_name) bbox = get_raster_bbox(path) acquisition_start = datetime.strptime(scene_name.split('_')[2], '%Y%m%dT%H%M%S') @@ -344,11 +390,6 @@ def process( netcdf_file = process_sentinel1_slc_isce3( reference[0], secondary[0], publish_bucket, use_static_files, chip_size=chip_size ) - - elif platform == 'NISAR': - from hyp3_autorift.nisar_isce3 import process_nisar_pair - - netcdf_file = process_nisar_pair(reference[0], secondary[0]) else: # Set config and env for new CXX threads in Geogrid/autoRIFT gdal.SetConfigOption('GDAL_DISABLE_READDIR_ON_OPEN', 'EMPTY_DIR') From 07e394e14142db779a8824040ef561ced3159455 Mon Sep 17 00:00:00 2001 From: cmspeed Date: Fri, 13 Mar 2026 11:17:11 -0700 Subject: [PATCH 02/13] Update CHANGELOG.md --- CHANGELOG.md | 6 ++++++ src/hyp3_autorift/process.py | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12181191..cb94d41e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [PEP 440](https://www.python.org/dev/peps/pep-0440/) and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +### Added +* Support for Sentinel-2 L2A COG processing via the AWS Element84 API. + +### Changed +* `process.get_s2_metadata` now dynamically routes to either the Google Cloud Storage L1C workflow or the new AWS L2A workflow based on the scene name format. + ## [0.28.0] ### Added diff --git a/src/hyp3_autorift/process.py b/src/hyp3_autorift/process.py index 84c09f7d..e543a764 100644 --- a/src/hyp3_autorift/process.py +++ b/src/hyp3_autorift/process.py @@ -390,6 +390,11 @@ def process( netcdf_file = process_sentinel1_slc_isce3( reference[0], secondary[0], publish_bucket, use_static_files, chip_size=chip_size ) + + elif platform == 'NISAR': + from hyp3_autorift.nisar_isce3 import process_nisar_pair + + netcdf_file = process_nisar_pair(reference[0], secondary[0]) else: # Set config and env for new CXX threads in Geogrid/autoRIFT gdal.SetConfigOption('GDAL_DISABLE_READDIR_ON_OPEN', 'EMPTY_DIR') From 72d4000d38cf316e5f3807bf2649c442454b3b62 Mon Sep 17 00:00:00 2001 From: mfangaritav Date: Thu, 2 Apr 2026 18:05:57 -0800 Subject: [PATCH 03/13] Update CHANGELOG.md --- CHANGELOG.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb94d41e..c9e2decd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,10 +12,18 @@ and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Changed * `process.get_s2_metadata` now dynamically routes to either the Google Cloud Storage L1C workflow or the new AWS L2A workflow based on the scene name format. +## [0.28.1] + +### Changed +* updated autoRIFT to [v2.1.2](https://github.com/nasa-jpl/autoRIFT/releases/tag/v2.1.2) for improved OpenMP performance. + ## [0.28.0] ### Added -* Support for NISAR RSLC and GSLC products +* Preliminary support for NISAR RSLC and GSLC products. Workflow tested with uncalibrarted data and there are some known metadata/packaging issues. Use with caution. + +### Fixed +* `crop.py` now uses the appropriate fill value when padding the cropped dataset to align chunks instead of always using -32767 and causing integer underflows for ushort and ubyte type variables. Re-cropping existing granules will fix integer underflow issues in them. See [#419](https://github.com/ASFHyP3/hyp3-autorift/issues/419) for more details. ## [0.27.0] From 22b109eb859e15e352025f99910a5d79ee6ac475 Mon Sep 17 00:00:00 2001 From: Mario Angarita Date: Fri, 3 Apr 2026 10:54:40 -0800 Subject: [PATCH 04/13] ruff --- CHANGELOG.md | 6 ------ src/hyp3_autorift/process.py | 27 ++++++++++++--------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9e2decd..9f9ec429 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,12 +6,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [PEP 440](https://www.python.org/dev/peps/pep-0440/) and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -### Added -* Support for Sentinel-2 L2A COG processing via the AWS Element84 API. - -### Changed -* `process.get_s2_metadata` now dynamically routes to either the Google Cloud Storage L1C workflow or the new AWS L2A workflow based on the scene name format. - ## [0.28.1] ### Changed diff --git a/src/hyp3_autorift/process.py b/src/hyp3_autorift/process.py index e543a764..70809399 100644 --- a/src/hyp3_autorift/process.py +++ b/src/hyp3_autorift/process.py @@ -144,14 +144,14 @@ def get_raster_bbox(path: str): def get_s2_l2a_metadata(scene_name: str) -> dict: - url = f"https://earth-search.aws.element84.com/v1/collections/sentinel-2-c1-l2a/items/{scene_name}" - + url = f'https://earth-search.aws.element84.com/v1/collections/sentinel-2-c1-l2a/items/{scene_name}' + response = requests.get(url) response.raise_for_status() item = response.json() - + band_url = item['assets']['nir']['href'] - + if band_url.startswith('s3://'): vsi_path = band_url.replace('s3://', '/vsis3/') elif band_url.startswith('https://'): @@ -162,33 +162,30 @@ def get_s2_l2a_metadata(scene_name: str) -> dict: bbox = item.get('bbox') if not bbox: bbox = get_raster_bbox(vsi_path) - + raw_dt = item['properties']['datetime'] try: - dt_obj = datetime.strptime(raw_dt, "%Y-%m-%dT%H:%M:%S.%fZ") + dt_obj = datetime.strptime(raw_dt, '%Y-%m-%dT%H:%M:%S.%fZ') except ValueError: - dt_obj = datetime.strptime(raw_dt, "%Y-%m-%dT%H:%M:%SZ") - - clean_dt = dt_obj.strftime("%Y-%m-%dT%H:%M:%SZ") + dt_obj = datetime.strptime(raw_dt, '%Y-%m-%dT%H:%M:%SZ') + + clean_dt = dt_obj.strftime('%Y-%m-%dT%H:%M:%SZ') return { 'path': vsi_path, 'bbox': bbox, 'id': scene_name, - 'properties': { - 'datetime': clean_dt, - 'proj:epsg': item['properties'].get('proj:epsg') - }, + 'properties': {'datetime': clean_dt, 'proj:epsg': item['properties'].get('proj:epsg')}, } def get_s2_metadata(scene_name: str) -> dict: """Routes the metadata request based on the scene name format.""" - + # Element84 L2A STAC items if scene_name.endswith('_L2A') or 'L2A' in scene_name: return get_s2_l2a_metadata(scene_name) - + # Google Cloud L1C .SAFE items path = get_s2_path(scene_name) bbox = get_raster_bbox(path) From d60658cc6915655ec215f28d41ecf7b508f9d6a3 Mon Sep 17 00:00:00 2001 From: Mario Angarita Date: Fri, 3 Apr 2026 10:58:21 -0800 Subject: [PATCH 05/13] changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f9ec429..84d40411 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [PEP 440](https://www.python.org/dev/peps/pep-0440/) and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.28.2] + +### Added +* Support for Sentinel-2 L2A COG processing via the AWS Element84 API. + +### Changed +* `process.get_s2_metadata` now dynamically routes to either the Google Cloud Storage L1C workflow or the new AWS L2A workflow based on the scene name format. + ## [0.28.1] ### Changed From bf23c57f7889164c385a240af33fafdec0dd50e2 Mon Sep 17 00:00:00 2001 From: Joseph H Kennedy Date: Fri, 3 Apr 2026 11:51:41 -0800 Subject: [PATCH 06/13] Add condition to skip merge for forked repos --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ad13caeb..4a5a67a6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -116,6 +116,7 @@ jobs: merge: runs-on: ubuntu-latest + if: ${{ ! github.event.pull_request.head.repo.fork }} permissions: contents: read packages: write From 8f2af5dfb982475b4452a3655b9c960ca11521f2 Mon Sep 17 00:00:00 2001 From: Lily Larsen Date: Fri, 12 Jun 2026 17:01:27 -0700 Subject: [PATCH 07/13] chore: remove unused gitleaks file --- .gitleaks.toml | 55 -------------------------------------------------- 1 file changed, 55 deletions(-) delete mode 100644 .gitleaks.toml diff --git a/.gitleaks.toml b/.gitleaks.toml deleted file mode 100644 index cddfcd7c..00000000 --- a/.gitleaks.toml +++ /dev/null @@ -1,55 +0,0 @@ -title = "gitleaks config" -[[rules]] - description = "AWS Manager ID" - regex = '''(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}''' - tags = ["key", "AWS"] -[[rules]] - description = "AWS Secret Key" - regex = '''(?i)aws(.{0,20})?(?-i)[0-9a-zA-Z\/+]{40}''' - tags = ["key", "AWS"] -[[rules]] - description = "AWS MWS key" - regex = '''amzn\.mws\.[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}''' - tags = ["key", "AWS", "MWS"] -[[rules]] - description = "Github" - regex = '''(?i)github(.{0,20})?(?-i)[0-9a-zA-Z]{35,40}''' - tags = ["key", "Github"] -[[rules]] - description = "Asymmetric Private Key" - regex = '''-----BEGIN ((EC|PGP|DSA|RSA|OPENSSH) )?PRIVATE KEY( BLOCK)?-----''' - tags = ["key", "AsymmetricPrivateKey"] -[[rules]] - description = "Generic Credential" - regex = '''(?i)(api_key|apikey|secret|password|pass|pw|key)(.{0,20})?[0-9a-zA-Z]{16,45}''' - tags = ["key", "API", "generic"] - [[rules.whitelist]] - regex = '''KeyChecking.no.*''' - description = "Ignore ssh settings for GitLab tools-bot" -[[rules]] - description = "Google API key" - regex = '''AIza[0-9A-Za-z\\-_]{35}''' - tags = ["key", "Google"] -[[rules]] - description = "Google (GCP) Service Account" - regex = '''"type": "service_account"''' - tags = ["key", "Google"] -[[rules]] - description = "Heroku API key" - regex = '''(?i)heroku(.{0,20})?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}''' - tags = ["key", "Heroku"] -[[rules]] - description = "MailChimp API key" - regex = '''(?i)(mailchimp|mc)(.{0,20})?[0-9a-f]{32}-us[0-9]{1,2}''' - tags = ["key", "Mailchimp"] -[[rules]] - description = "Mailgun API key" - regex = '''((?i)(mailgun|mg)(.{0,20})?)?key-[0-9a-z]{32}''' - tags = ["key", "Mailgun"] -[[rules]] - description = "Slack Webhook" - regex = '''https://hooks.slack.com/services/T[a-zA-Z0-9_]{8}/B[a-zA-Z0-9_]{8}/[a-zA-Z0-9_]{24}''' - tags = ["key", "slack"] -[whitelist] - description = "Whitelisted files" - files = ['''(^.*gitleaks.toml$|(.*?)(jpg|gif|doc|pdf|bin)$)'''] From eac85ab70d5cdf10ffb27b26c26fcdde1ff0e1bb Mon Sep 17 00:00:00 2001 From: Andrew Player Date: Mon, 22 Jun 2026 17:56:27 -0400 Subject: [PATCH 08/13] add option to force regeneration of static files --- src/hyp3_autorift/process.py | 27 ++++++++++++++++++++++++--- src/hyp3_autorift/s1_isce3.py | 14 ++++++++++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/hyp3_autorift/process.py b/src/hyp3_autorift/process.py index 70809399..192634d7 100644 --- a/src/hyp3_autorift/process.py +++ b/src/hyp3_autorift/process.py @@ -347,6 +347,7 @@ def process( naming_scheme: Literal['ITS_LIVE_OD', 'ITS_LIVE_PROD'] = 'ITS_LIVE_OD', publish_bucket: str = '', use_static_files: bool = True, + regenerate_static_files: bool = False, frame_id: str | None = None, ) -> Tuple[Path, Path, Path]: """Process a Sentinel-1, Sentinel-2, or Landsat-8 image pair @@ -359,7 +360,8 @@ def process( search_range: (Optional) Specify a search range in pixels (e.g., 32 or 64). Overrides parameter-file defaults. naming_scheme: Naming scheme to use for product files publish_bucket: S3 bucket to upload Sentinel-1 static topographic correction files to - use_static_files: Use pre-generated static topographic correction files if available + use_static_files: Use pre-generated static topographic correction files if available (Sentinel-1 only). + regenerate_static_files: Force the creation of, and upload of, new static files (Sentinel-1 only). frame_id: OPERA frame ID to record in the img_pair_info variable in the autoRIFT product file Returns: @@ -378,14 +380,25 @@ def process( from hyp3_autorift.s1_isce3 import process_sentinel1_burst_isce3 netcdf_file = process_sentinel1_burst_isce3( - reference, secondary, publish_bucket, use_static_files, frame_id, chip_size=chip_size + reference, + secondary, + publish_bucket, + use_static_files, + frame_id, + regenerate_static_files=regenerate_static_files, + chip_size=chip_size, ) elif platform == 'S1-SLC': from hyp3_autorift.s1_isce3 import process_sentinel1_slc_isce3 netcdf_file = process_sentinel1_slc_isce3( - reference[0], secondary[0], publish_bucket, use_static_files, chip_size=chip_size + reference[0], + secondary[0], + publish_bucket, + use_static_files, + regenerate_static_files=regenerate_static_files, + chip_size=chip_size, ) elif platform == 'NISAR': @@ -624,6 +637,12 @@ def main(): default=True, help='Use static topographic correction files for ISCE3 processing if available (Sentinel-1 only).', ) + parser.add_argument( + '--regenerate-static-files', + type=string_is_true, + default=False, + help='Force the creation of, and upload of, new static files (Sentinel-1 only).', + ) parser.add_argument( '--frame-id', type=utils.nullable_string, @@ -631,6 +650,7 @@ def main(): help='Optional OPERA frame ID to include in metadata for Sentinel-1 multi-burst processing, ' 'and will be ignored otherwise.', ) + args = parser.parse_args() logging.basicConfig( @@ -692,6 +712,7 @@ def main(): naming_scheme=args.naming_scheme, publish_bucket=args.publish_bucket, use_static_files=args.use_static_files, + regenerate_static_files=args.regenerate_static_files, frame_id=args.frame_id, ) diff --git a/src/hyp3_autorift/s1_isce3.py b/src/hyp3_autorift/s1_isce3.py index 9d550b82..bdb3524a 100644 --- a/src/hyp3_autorift/s1_isce3.py +++ b/src/hyp3_autorift/s1_isce3.py @@ -41,6 +41,7 @@ def process_sentinel1_burst_isce3( static_files_bucket, use_static_files, frame_id, + regenerate_static_files: bool = False, chip_size: int | None = None, search_range: int | None = None, ): @@ -100,6 +101,7 @@ def process_burst( burst_id_sec, static_files_bucket, use_static_files, + regenerate_static_files: bool = False, chip_size: int | None = None, search_range: int | None = None, ): @@ -113,7 +115,10 @@ def process_burst( bounds=[lon_limits[0], lat_limits[0], lon_limits[1], lat_limits[1]], ) - if use_static_files: + if regenerate_static_files: + has_static_layer = False + do_static_upload = True + elif use_static_files: retrieval_bucket = static_files_bucket if static_files_bucket else S3_BUCKET has_static_layer = get_static_layer(burst_id_ref, retrieval_bucket) do_static_upload = not has_static_layer and static_files_bucket @@ -209,6 +214,7 @@ def process_sentinel1_slc_isce3( slc_sec, static_files_bucket, use_static_files, + regenerate_static_files: bool = False, chip_size: int | None = None, search_range: int | None = None, ): @@ -246,6 +252,7 @@ def process_slc( static_files_bucket, use_static_files, frame_id, + regenerate_static_files: bool = False, swaths=(1, 2, 3), chip_size: int | None = None, search_range: int | None = None, @@ -265,7 +272,10 @@ def process_slc( swath = int(burst_id.split('_')[-1][-1]) burst = s1reader.load_bursts(safe_ref, orbit_ref, swath, pol, burst_ids=[burst_id])[0] - if use_static_files: + if regenerate_static_files: + has_static_layer = False + do_static_upload = True + elif use_static_files: retrieval_bucket = static_files_bucket if static_files_bucket else S3_BUCKET has_static_layer = get_static_layer(burst_id, retrieval_bucket) do_static_upload = not has_static_layer and static_files_bucket From 947752df77b377d46d0dc7f3218babd0762a93d1 Mon Sep 17 00:00:00 2001 From: Andrew Player Date: Mon, 22 Jun 2026 18:01:21 -0400 Subject: [PATCH 09/13] updated chagelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84d40411..a32038e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Added * Support for Sentinel-2 L2A COG processing via the AWS Element84 API. +* Option to force the regeneration of Sentinel-1 static layers. ### Changed * `process.get_s2_metadata` now dynamically routes to either the Google Cloud Storage L1C workflow or the new AWS L2A workflow based on the scene name format. From 5001ca123a9b42c01a2a31e9a2d0f2a8a2f3756a Mon Sep 17 00:00:00 2001 From: Andrew Player Date: Mon, 22 Jun 2026 18:10:58 -0400 Subject: [PATCH 10/13] fixed args --- src/hyp3_autorift/s1_isce3.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/hyp3_autorift/s1_isce3.py b/src/hyp3_autorift/s1_isce3.py index bdb3524a..ecd48bd8 100644 --- a/src/hyp3_autorift/s1_isce3.py +++ b/src/hyp3_autorift/s1_isce3.py @@ -68,7 +68,9 @@ def process_sentinel1_burst_isce3( use_static_files, frame_id, swaths, + regenerate_static_files, chip_size, + search_range, ) reference = reference[0] @@ -86,8 +88,10 @@ def process_sentinel1_burst_isce3( burst_id_ref, burst_id_sec, static_files_bucket, + regenerate_static_files, use_static_files, chip_size, + search_range, ) @@ -239,6 +243,7 @@ def process_sentinel1_slc_isce3( frame_id='N/A', chip_size=chip_size, search_range=search_range, + regenerate_static_files=regenerate_static_files, ) @@ -252,8 +257,8 @@ def process_slc( static_files_bucket, use_static_files, frame_id, - regenerate_static_files: bool = False, swaths=(1, 2, 3), + regenerate_static_files: bool = False, chip_size: int | None = None, search_range: int | None = None, ): From 5b6abbda821374157048a96ee308c7fe62d84ec1 Mon Sep 17 00:00:00 2001 From: Andrew Player Date: Mon, 22 Jun 2026 18:12:48 -0400 Subject: [PATCH 11/13] added search_range arg to s1 processing calls --- src/hyp3_autorift/process.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/hyp3_autorift/process.py b/src/hyp3_autorift/process.py index 192634d7..e257d2f9 100644 --- a/src/hyp3_autorift/process.py +++ b/src/hyp3_autorift/process.py @@ -387,6 +387,7 @@ def process( frame_id, regenerate_static_files=regenerate_static_files, chip_size=chip_size, + search_range=search_range, ) elif platform == 'S1-SLC': @@ -399,6 +400,7 @@ def process( use_static_files, regenerate_static_files=regenerate_static_files, chip_size=chip_size, + search_range=search_range, ) elif platform == 'NISAR': From 5dd9e50771d3fe7b6b96d1576712530b6633ce63 Mon Sep 17 00:00:00 2001 From: Andrew Player Date: Mon, 22 Jun 2026 18:14:55 -0400 Subject: [PATCH 12/13] updated changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a32038e2..eac621a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Changed * `process.get_s2_metadata` now dynamically routes to either the Google Cloud Storage L1C workflow or the new AWS L2A workflow based on the scene name format. +### Fixed +* The Sentinel-1 workflow now correctly uses the chip size and search range overrides. + ## [0.28.1] ### Changed From dc0e5280902a2a9aab23c1891b40c1f956b0270f Mon Sep 17 00:00:00 2001 From: Andrew Player Date: Mon, 22 Jun 2026 18:51:50 -0400 Subject: [PATCH 13/13] correct arg order --- src/hyp3_autorift/s1_isce3.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hyp3_autorift/s1_isce3.py b/src/hyp3_autorift/s1_isce3.py index ecd48bd8..d0575705 100644 --- a/src/hyp3_autorift/s1_isce3.py +++ b/src/hyp3_autorift/s1_isce3.py @@ -88,8 +88,8 @@ def process_sentinel1_burst_isce3( burst_id_ref, burst_id_sec, static_files_bucket, - regenerate_static_files, use_static_files, + regenerate_static_files, chip_size, search_range, )