GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — fix: parse Tableau Cloud's inlined subscription <schedule> (#1627) by jacalata · Pull Request #1875 · tableau/server-client-python

Conversation

@jacalata

@jacalata jacalata commented Aug 26, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Motivation

Related to #1627. Tableau Server references a schedule by id inside a <subscription>:

<schedule id="cfb2..." name="Weekday mornings"/>

Tableau Cloud inlines the schedule instead — no id, but a frequency, nextRunAt, and nested <frequencyDetails>. SubscriptionItem only parsed the Server shape, so on Cloud every subscription came back with schedule_id is None and no structured access to the schedule metadata. Client code doing [s for s in subs if s.schedule_id == target] silently returned [] on Cloud.

Behavior change

Read side (server response → model):

  • SubscriptionItem.schedule (new) is populated for both shapes with a ScheduleItem. On Server: schedule.id and .name are set. On Cloud: schedule.frequency, schedule.next_run_at, and schedule.interval_item are set; schedule_id remains None on Cloud because the API doesn't send one.
  • ScheduleItem.frequency (new property): the underlying XML attribute was already being read to pick the interval type but was discarded — now exposed.
  • parse_datetime accepts Cloud's %Y-%m-%dT%H:%M:%S%z form (e.g. 2026-08-29T16:55:00-0700) in addition to Server's ...Z. Unparseable input still returns None.
  • Malformed Cloud interval data (missing start attribute, or <interval hours="3"/> outside IntervalItem.VALID_INTERVALS) no longer crashes subscriptions.get(); the offending schedule degrades to interval_item = None with a warning log, sibling schedules are unaffected.

Write side (user assignment → model):

  • property_is_datetime (setter decorator) now raises ValueError when a str value fails to parse. Previously the attribute was silently set to None. This affects direct user assignment to typed datetime properties on model classes; server-response parsing is unchanged.

Testing Run

  • New test/assets/subscription_get_cloud.xml mirrors the shape observed on a live Cloud site (API 3.29). Companion parse tests verify Server and Cloud paths.
  • Three malformed-Cloud fixtures + tests cover _parse_interval_item's graceful-degradation paths (missing <frequencyDetails>, empty <intervals/>, <interval hours="3"/>).
  • Existing subscription tests extended to cover sub 2 and get_subscription_by_id.
  • New test/test_datetime_helpers.py directly covers parse_datetime (None / "" / garbage / Server / Cloud / colon-offset / microseconds) and property_is_datetime (valid / bad / non-str inputs).
  • test/test_schedule.py::test_get asserts the new frequency property on the standard /schedules endpoint.
  • Live verification (not in-tree): raw XML captured from main-windows.tsi.lan (API 3.31, Server shape) and stage-dp1 (API 3.29, Cloud shape) — matches the two fixture shapes.
  • Full suite: 936 passed, 1 skipped. black --check and mypy clean.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@jacalata @claude
fix: parse Tableau Cloud's inlined subscription <schedule> (#1627)
93d9c87
Tableau Server references a schedule by id inside a <subscription>:

    <schedule id="cfb2..." name="Weekday mornings"/>

Tableau Cloud inlines the schedule instead -- no id attribute, but
a `frequency`, `nextRunAt` and a nested `<frequencyDetails>`:

    <schedule frequency="Daily" nextRunAt="2026-08-29T16:55:00-0700">
      <frequencyDetails start="16:55:00" end="16:55:00">
        <intervals>
          <interval hours="24"/>
          <interval weekDay="Saturday"/>
        </intervals>
      </frequencyDetails>
    </schedule>

Previously `SubscriptionItem` only pulled `id`/`name` off `<schedule>`,
so on Cloud every subscription came back with `schedule_id == None`
and no structured way to see what the API sent. Client code filtering
`[s for s in subs if s.schedule_id == target]` silently returned `[]`
on Cloud. This is the bug described in issue #1627.

Model changes:

* `SubscriptionItem` now populates a `schedule: ScheduleItem` attribute
  for both shapes. On Server, `schedule.id`/`.name` are set (and
  `schedule_id` remains populated for back-compat). On Cloud,
  `schedule.frequency`, `schedule.next_run_at`, and
  `schedule.interval_item` are set. `schedule_id` is `None` on Cloud --
  the API does not send one, unavoidable. Docstring calls out the
  Cloud-vs-Server discriminator and warns callers who filter by
  `schedule_id`. Fixes a latent bug where the previous Cloud branch
  assigned a list (return of `ScheduleItem.from_element`) to
  `sub.schedule` instead of a single item.
* `ScheduleItem` gains a `frequency` property. The XML attribute was
  already being read to select the interval type but was discarded;
  now it's exposed so callers can distinguish the Cloud shape without
  reaching into the interval object. The class `Attributes` docstring
  is rewritten to cover every public property and to note that only
  `frequency` / `next_run_at` / `interval_item` are populated when the
  item comes from an inlined Cloud subscription schedule.
* `_parse_interval_item` is defensive against malformed Cloud data:
  a `<frequencyDetails>` without a `start` attribute no longer crashes
  on `strptime(None, ...)`, and an out-of-range `<interval hours="3"/>`
  (or unknown weekDay / monthDay) no longer raises `ValueError` out of
  `IntervalItem` and poisons sibling schedules in the same page. Bad
  data degrades to `interval_item = None` with a warning log.

Datetime plumbing:

* `parse_datetime` learns the Tableau Cloud `%Y-%m-%dT%H:%M:%S%z` form
  (e.g. `2026-08-29T16:55:00-0700`) in addition to the Server `...Z`
  form. Unparseable input still returns `None` on the read path
  (preserving the pre-change contract that a malformed server-side
  date cannot crash a page-through of unrelated data).
* `property_is_datetime` now raises `ValueError` when `parse_datetime`
  returns `None` for a non-empty str value. Bad *user* input is
  surfaced at the assignment site instead of silently nulling the
  attribute.
* `TABLEAU_CLOUD_DATE_FORMAT` is public, matching the existing
  `TABLEAU_DATE_FORMAT`.

Tests:

* New `test/assets/subscription_get_cloud.xml` mirroring the shape
  observed on `stage-dp1` (API 3.29) and matching parse tests for
  both Cloud and Server shapes.
* Three edge-case Cloud fixtures + tests: no `<frequencyDetails>`,
  empty `<intervals/>`, out-of-set `<interval hours="3"/>`.
* Existing subscription tests extended to cover sub 2 and
  `get_subscription_by_id`.
* New `test/test_datetime_helpers.py` with direct coverage of
  `parse_datetime` (None / "" / garbage / Server / Cloud / colon-offset
  / microseconds) and `property_is_datetime` (valid / bad / non-str).
* `test/test_schedule.py::test_get` asserts the new
  `ScheduleItem.frequency` property on the standard /schedules endpoint.

Refs: #1627

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@github-actions

github-actions Bot commented Aug 26, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

Coverage

Coverage Report
FileStmtsMissCoverMissing
tableauserverclient
   __init__.py50100% 
   config.py150100% 
   datetime_helpers.py3011 97%
   exponential_backoff.py200100% 
   filesys_helpers.py310100% 
   namespace.py2533 88%
tableauserverclient/bin
   __init__.py20100% 
   _version.py358212212 41%
tableauserverclient/helpers
   __init__.py10100% 
   logging.py20100% 
   strings.py3111 97%
tableauserverclient/models
   __init__.py470100% 
   auth_federation_item.py8799 90%
   collection_item.py4177 83%
   column_item.py553232 42%
   connection_credentials.py351111 69%
   connection_item.py1131313 88%
   custom_view_item.py1442121 85%
   data_acceleration_report_item.py5411 98%
   data_alert_item.py15844 97%
   data_freshness_policy_item.py1551515 90%
   database_item.py2073636 83%
   datasource_item.py3001212 96%
   dqw_item.py10455 95%
   exceptions.py40100% 
   extensions_item.py13244 97%
   extract_item.py4444 91%
   favorites_item.py6988 88%
   fileupload_item.py190100% 
   flow_item.py1491010 93%
   flow_run_item.py710100% 
   group_item.py8966 93%
   groupset_item.py4977 86%
   interval_item.py1822828 85%
   job_item.py1921010 95%
   linked_tasks_item.py7911 99%
   location_item.py2922 93%
   metric_item.py1291313 90%
   oidc_item.py6333 95%
   pagination_item.py3411 97%
   permissions_item.py1111212 89%
   project_item.py2073131 85%
   property_decorators.py1021010 90%
   reference_item.py2622 92%
   revision_item.py5911 98%
   schedule_item.py22277 97%
   server_info_item.py3777 81%
   site_item.py6361313 98%
   subscription_item.py10211 99%
   table_item.py1191818 85%
   tableau_auth.py612525 59%
   tableau_types.py2711 96%
   tag_item.py150100% 
   target.py60100% 
   task_item.py5622 96%
   user_item.py3381717 95%
   view_item.py2201616 93%
   virtual_connection_item.py6488 88%
   webhook_item.py6911 99%
   workbook_item.py3621616 96%
tableauserverclient/server
   __init__.py90100% 
   exceptions.py40100% 
   filter.py2911 97%
   pager.py3311 97%
   query.py1431515 90%
   request_factory.py1368195195 86%
   request_options.py38655 99%
   server.py2502525 90%
   sort.py60100% 
tableauserverclient/server/endpoint
   __init__.py360100% 
   auth_endpoint.py731010 86%
   auth_federation_endpoint.py800100% 
   custom_views_endpoint.py1521212 92%
   data_acceleration_report_endpoint.py210100% 
   data_alert_endpoint.py942323 76%
   databases_endpoint.py1113030 73%
   datasources_endpoint.py3233333 90%
   default_permissions_endpoint.py4433 93%
   dqw_endpoint.py451616 64%
   endpoint.py2602525 90%
   exceptions.py7966 92%
   extensions_endpoint.py310100% 
   favorites_endpoint.py942222 77%
   fileuploads_endpoint.py510100% 
   flow_runs_endpoint.py6299 85%
   flow_task_endpoint.py2122 90%
   flows_endpoint.py1984747 76%
   groups_endpoint.py12699 93%
   groupsets_endpoint.py7277 90%
   jobs_endpoint.py6899 87%
   linked_tasks_endpoint.py370100% 
   metadata_endpoint.py881414 84%
   metrics_endpoint.py5566 89%
   oidc_endpoint.py4211 98%
   permissions_endpoint.py4433 93%
   projects_endpoint.py1782424 87%
   resource_tagger.py1273535 72%
   schedules_endpoint.py1191111 91%
   server_info_endpoint.py361010 72%
   sites_endpoint.py1302727 79%
   subscriptions_endpoint.py561414 75%
   tables_endpoint.py1103636 67%
   tasks_endpoint.py6366 90%
   users_endpoint.py17077 96%
   views_endpoint.py15099 94%
   virtual_connections_endpoint.py1131010 91%
   webhooks_endpoint.py5499 83%
   workbooks_endpoint.py3382222 93%
TOTAL12372141789% 
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jacalata jacalata mentioned this pull request Aug 27, 2026
Replace custom time handling with datetime/timedelta #1336
Closed
@jacalata jacalata mentioned this pull request Sep 5, 2026
Add Schedules.get_subscriptions_by_schedule to list a schedule's subscriptions #1873
Closed
@jacalata
jacalata requested a lite review from Copilot September 9, 2026 22:40
Copilot started reviewing on behalf of jacalata September 9, 2026 22:40
View session
Copilot AI reviewed Sep 9, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

A few API/docs/type-safety inconsistencies were introduced (notably around Cloud schedules where schedule_id can be None), and should be corrected before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR updates the client’s subscription and schedule parsing to correctly handle Tableau Cloud’s inline <schedule> shape (no schedule id, but frequency, nextRunAt, and nested <frequencyDetails>), while preserving Tableau Server behavior and improving datetime parsing/validation.

Changes:

  • Populate a structured SubscriptionItem.schedule for both Server (id/name reference) and Cloud (inline frequency/next-run/intervals) schedule shapes.
  • Expose ScheduleItem.frequency and make interval parsing degrade gracefully (warn + interval_item=None) on malformed Cloud interval payloads.
  • Expand parse_datetime to accept Cloud offset timestamps and make property_is_datetime setters raise on unparseable strings; add comprehensive fixtures and tests.
File summaries
File Description
test/test_subscription.py Adds coverage for Cloud inline schedule parsing and malformed interval degradation, plus asserts structured schedule parsing for Server shape.
test/test_schedule.py Asserts the new ScheduleItem.frequency property on /schedules responses.
test/test_datetime_helpers.py New direct tests for parse_datetime formats and property_is_datetime strict setter behavior.
test/assets/subscription_get_cloud.xml Cloud-shaped subscription fixture with inline schedule and frequency details.
test/assets/subscription_get_cloud_no_frequency_details.xml Cloud fixture with schedule missing <frequencyDetails>.
test/assets/subscription_get_cloud_empty_intervals.xml Cloud fixture with empty <intervals/>.
test/assets/subscription_get_cloud_bad_hours.xml Cloud fixture with invalid interval hours that should degrade without breaking siblings.
tableauserverclient/models/subscription_item.py Adds schedule attribute parsing and documents Server vs Cloud schedule shapes.
tableauserverclient/models/schedule_item.py Adds frequency property and makes interval parsing resilient with warning logs on malformed data.
tableauserverclient/models/property_decorators.py Makes datetime setter decorator strict by raising on unparseable strings.
tableauserverclient/datetime_helpers.py Extends datetime parsing to accept Cloud %z offsets while staying lenient for server-response parsing.
Review details
  • Files reviewed: 11/11 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread tableauserverclient/models/subscription_item.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tableauserverclient/models/property_decorators.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tableauserverclient/models/subscription_item.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

jacalata and others added 3 commits September 9, 2026 16:18
@jacalata @claude
Address type-hint and docstring feedback on Cloud schedule parsing
9895995
- Widen SubscriptionItem.__init__.schedule_id to Optional[str]; Cloud
  inline <schedule> elements have no id and _parse_element passes None
- Rewrite property_is_datetime docstring: parse_datetime accepts both
  trailing-Z and explicit-offset forms; setter now raises ValueError on
  unparseable strings
- Correct the SubscriptionItem docstring's Cloud-vs-Server discriminator:
  the reliable check is (schedule is not None and schedule.id is None),
  not (interval_item is not None) - Cloud can omit <frequencyDetails>

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@jacalata @claude
Normalize Cloud <schedule nextRunAt=...> to UTC on parse
af11671
Previously parse_datetime returned Cloud datetimes with the wire's offset
attached (e.g. tzinfo == timezone(-7:00)), so the same field had different
tzinfo depending on cell type. Callers using .strftime("...Z") got wrong
output on Cloud; callers comparing to a UTC constant with == got False even
on the same instant.

Convert the Cloud branch's strptime result via .astimezone(utc), so every
next_run_at returned from TSC is uniformly tzinfo == utc regardless of
whether the wire used trailing Z or an explicit numeric offset. Callers
who want the site's local zone can inspect the wire elsewhere (schedule
name, admin API); nobody was relying on the offset today.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@jacalata @claude
Collapse implicit string concatenation in logger.warning
84701b0
Cosmetic — reads cleaner as a single literal.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
jacalata added a commit that referenced this pull request Sep 11, 2026
@jacalata @claude
Address review: Cloud round-trip + hardening on refreshExtractTriggered
81cbdc2
- update() now falls back to subscription.schedule.id when schedule_id
  is None. Fixes Cloud fetch-then-update (schedule_id is always None on
  Cloud inline-schedule responses per #1875), which the property
  docstring recommended but the guard rejected.
- request_factory create_req: replace assert with if-raise so python -O
  and direct-import callers get an actionable error instead of an
  unhelpful ElementTree TypeError.
- Add regression tests: (a) manually-constructed SubscriptionItem
  through update() emits the intended refreshExtractTriggered value,
  and (b) fetch-parse-mutate-update round-trip preserves the flag.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@bcantoni
Merge branch 'development' into jac/subscription-schedule-cloud-parity
5d625ff
Copilot AI lite review requested due to automatic review settings October 14, 2026 05:25
Copilot started reviewing on behalf of jacalata October 14, 2026 05:26
View session
Copilot AI reviewed Oct 14, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Cloud updates still send an empty schedule, and two schedule-parsing paths can return incorrect frequency or interval data.

4 open findings
  • Medium severity Preserve parsed schedule frequency during updates · New
  • Medium severity Test subscription parsing without frequencyDetails start · New
  • Medium severity Convert hourly interval hours to numeric values · New
  • Medium severity Implement Cloud subscription schedule update support · New
3 resolved since last review
  • Medium severity SubscriptionItem._parse_element() now constructs instances with schedule_id=None for the Cloud…
  • Low severity The docstring claims schedule.interval_item is not None is a reliable Cloud-vs-Server…
  • Low severity The property_is_datetime docstring still says values are always returned with a trailing Z and…

🧠 Review effort: Lite

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread tableauserverclient/models/schedule_item.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tableauserverclient/models/schedule_item.py
Comment on lines 365 to +367
start_time = parsed_response.get("start", None)
start_time = datetime.strptime(start_time, "%H:%M:%S").time()
if start_time is not None:
start_time = datetime.strptime(start_time, "%H:%M:%S").time()
Comment thread tableauserverclient/models/schedule_item.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tableauserverclient/models/subscription_item.py
schedule = None
schedule: Optional[ScheduleItem] = None
if schedule_element is not None:
schedule_id = schedule_element.get("id", None)
@bcantoni

bcantoni commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

@jacalata copilot found several things that I think you'll want to check here.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jacalata @claude
fix: keep frequency on schedule update and parse hourly hours as numbers
99bad08
- ScheduleItem._parse_common_tags discarded the frequency returned by
  _parse_element, so a schedule returned from schedules.update() had
  frequency None. Capture it and pass it to _set_values, as from_element does.
- _parse_interval_item left hourly hours="N" as a string, so an invalid
  value such as 3 passed HourlyInterval validation instead of degrading to
  interval_item None. Convert with float(), matching the Daily branch.
- Add tests for <frequencyDetails> without start and for hourly hours
  validation; update test_create_hourly to expect numeric intervals.

Co-Authored-By: Claude Code <[email protected]>
Copilot AI lite review requested due to automatic review settings October 20, 2026 00:30
jacalata
jacalata commented Oct 20, 2026
View reviewed changes

@jacalata jacalata left a comment

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 99bad08. _parse_common_tags now keeps the frequency from _parse_element and passes it to _set_values, as from_element does.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
jacalata
jacalata commented Oct 20, 2026
View reviewed changes

@jacalata jacalata left a comment

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added test_get_subscriptions_cloud_frequency_details_without_start in 99bad08. Its fixture has <frequencyDetails> with intervals but no start. It asserts subscriptions.get() succeeds and that interval_item is None.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
jacalata
jacalata commented Oct 20, 2026
View reviewed changes

@jacalata jacalata left a comment

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 99bad08. The hourly branch now uses float(i[1]), like the Daily branch. hours="3" now raises ValueError, is caught, and degrades to interval_item=None. Added test_get_subscriptions_cloud_hourly_hours_are_numeric. test_create_hourly previously asserted the string ("8",), so I changed it to (8.0,).

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
jacalata
jacalata commented Oct 20, 2026
View reviewed changes

@jacalata jacalata left a comment

Copy link
Copy Markdown
Contributor Author

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Schedule 'null' could not be found error on update needs a server-side fix: TSC sends an empty <schedule/>, and the server has to accept a subscription update that carries no schedule id. This PR only covers parsing the inline Cloud schedule into .schedule, so I'm changing Fixes #1627 to Related to #1627.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Copilot started reviewing on behalf of jacalata October 20, 2026 00:30
View session
Copilot AI reviewed Oct 20, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Cloud subscription updates still serialize an empty schedule because schedule_id remains unset.

2 open issues
  • Medium severity Implement Cloud subscription schedule update support
  • Medium severity Test subscription parsing without frequencyDetails start
2 resolved since last review
  • Medium severity Convert hourly interval hours to numeric values
  • Medium severity Preserve parsed schedule frequency during updates

Review effort: Lite

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bcantoni
Merge branch 'development' into jac/subscription-schedule-cloud-parity
932f39a
Copilot AI lite review requested due to automatic review settings October 27, 2026 20:40
Copilot started reviewing on behalf of jacalata October 27, 2026 20:41
View session
Copilot AI reviewed Oct 27, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The review found no active blocking issues in the changes or their supporting tests.

2 open issues
  • Medium severity Implement Cloud subscription schedule update support
  • Medium severity Test subscription parsing without frequencyDetails start

Review effort: Lite

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments

At least 1 approving review is required to merge this pull request.

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@jacalata @bcantoni
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.