Reimplement limit_push_down

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
(This section helps Arrow developers understand the context and why for this feature, in addition to  the what)

Current limit_push_down keep a global state, it's a bad design.
can't remove redundant limit

Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

I'm doing it, after merge #4257 , I will create a PR


Prepare Execute Parameter Array

When working with:
pool.prepareExecute(sql,params)
I am receiving the following Error:

Error: The parameter object must define a value property

I believe this is due to an issue inside of routine setupParms()
My code looks as follows:
 const sql =CALL . (?, ?, ?, ?, ?, ?, ?)`
const params = [
{value: 'PARM1', io: 'in', asClob: false},
{value: 'PARM2', io: 'in', asClob: false},
{value: 'PARM3', io: 'in', asClob: false},
{value: 'PARM4', io: 'in', asClob: false},
{value: 'PARM5', io: 'out', asClob: true},
{value: 0, io: 'out', asClob: false},
{value: 'PARM6', io: 'out', asClob: false}
];
await pool.prepareExecute(sql, params);`
Looking at the IDB-pconnector Code I see this which I am thinking should be equal too null "not" not equal too null:
Line : if (!value && value !== null)
`   * Internal helper function to format params and set Param Indicator & Bind Type

@param {array} params - an array of values to bind. type of values should be:
(string , number , or null)
@param {object} options - an object with config options to set for all parameters.
Currently, the input/output indicator is the only available option to set:
{io: in | out | both}.
This will override the default which is to bind as 'both'.
@returns {array} - an array of bounded params properly formated to use.
*/
setupParams(params, options) {
const boundParams = [];
let { io } = options;

io = io || 'both';

params.forEach((parameter) => {
  if (parameter instanceof Object) {
    const { value, asClob = false } = parameter;

    if (!value && value !== null) {
      throw new Error('The parameter object must define a value property');
    }`

Or there could be something wrong with my Code.  Any feedback would be appreciated.  Thank You...
M0rwhsky

Seems like any falsy value execpt for null will cause the error here :
Error: The parameter object must define a value property
This param:
{value: 0, io: 'out', asClob: false},

The value 0 here which is falsy caused the condition to be true and throw the error.
You can see this issue in the repl
As a fix I think the condition cause the error when value is undefined because 0, boolean, and null would all be valid values here.
Should be patched to:
if (typeof value === 'undefined') {
  throw new Error('The parameter object must define a value property');
}

Thank you @abmusse I wasn't thinking of null acutally being a valid value but your are absolutely correct.  Much better patch.

@M0rwhsky
1.0.8 has been published to NPM. This includes a bug fix for this issue.


Rebuild 0.2.0

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

The 0.2.0 PR were full green but somehow the merged commits on main are failing. Trying to rebuild here.

The cuda builds are all faling due to CUDA errors:
/home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(155): error: type name is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(133): error: incomplete type is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(192): error: type name is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(170): error: incomplete type is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(225): error: type name is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(202): error: incomplete type is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(254): error: type name is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(232): error: incomplete type is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(287): error: type name is not allowed

  /home/conda/feedstock_root/build_artifacts/pyg-lib_1679585057016/work/pyg_lib/csrc/ops/cuda/matmul_kernel.cu(264): error: incomplete type is not allowed

I don't have time to look into it at the moment but will come back later.

@conda-forge-admin, please rerender

For the record, building with CUDA 11.2 fails with the error reported above. So I added a custom conda build config to only build for CUDA 11.8.


Ask for help about distributed transaction based on Hystrix fallback

I have a question about how should I use hystrix fallback to implement distributed transaction. I asked a question in stackoverfow but got no answer, so I ask here. And this is my question:
I am using spring cloud to implement my micro services system, a ticket sale platform. The scenario is, there is a zuul proxy, a eureka registry, and 3 service: user service, order service and ticket service. Services use feign declarative REST Client to communicate with each other.
Now there is a function to buy tickets, the main process is as below:

order service accepts request to create order
order service creates Order entity with Pending status.
order service calls user service to process user pay.
order service calls ticket service to update user tickets.
order service updates the order entity as FINISHED.

And I want to use Hystrix Fallback to implement transaction. For example, if the payment process is finished, but some error happened during ticket movement. How to revet user payment, and order status. Because user payment is in other service.
The following is my current solution, I am not sure whether it is proper. Or is there any other better way to do that.
At first, the OrderResource:
@RestController
@RequestMapping("/api/order")
public class OrderResource {

  @HystrixCommand(fallbackMethod = "createFallback")
  @PostMapping(value = "/")
  public Order create(@RequestBody Order order) {
    return orderService.create(order);
  }

  private Order createFallback(Order order) {
    return orderService.createFallback(order);
  }
}

Then the OrderService:
@Service
public class OrderService {

    @Transactional
    public Order create(Order order) {
        order.setStatus("PENDING");
        order = orderRepository.save(order);

        UserPayDTO payDTO = new UserPayDTO();
        userCompositeService.payForOrder(payDTO);

        order.setStatus("PAID");
        order = orderRepository.save(order);

        ticketCompositeService.moveTickets(ticketIds, currentUserId);

        order.setStatus("FINISHED");
        order = orderRepository.save(order);
        return order;
    }

    @Transactional
    public Order createFallback(Order order) {
        // order is the object processed in create(), there is Transaction in create(), so saving order will be rollback,
        // but the order instance still exist.
        if (order.getId() == null) { // order not saved even.
            return null;
        }
        UserPayDTO payDTO = new UserPayDTO();
        try {
            if (order.getStatus() == "FINISHED") { // order finished, must be paid and ticket moved
                userCompositeService.payForOrderFallback(payDTO);
                ticketCompositeService.moveTicketsFallback(getTicketIdList(order.getTicketIds()), currentUserId);
            } else if (order.getStatus() == "PAID") { // is paid, but not sure whether has error during ticket movement.
                userCompositeService.payForOrderFallback(payDTO);
                ticketCompositeService.moveTicketsFallback(getTicketIdList(order.getTicketIds()), currentUserId);
            } else if (order.getStatus() == "PENDING") { // maybe have error during payment.
                userCompositeService.payForOrderFallback(payDTO);
            }
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
        }

        order.setStatus("FAILED");
        orderRepository.save(order); // order saving is rollbacked during create(), I save it here to trace the failed orders.
        return order;
    }
}

Some key points here are:

Using @HystrixCommand in OrderResource.create(order) method, with fallback function.
If there is some error in creation, the order instance used in  OrderResource.create(order) will be used again in fallback function. Although the persistence of this order will be roll-backed. But the data in this instance still can be used to check the running.
So I use a status: 'PENDING', 'PAID', 'FINISHED' to check whether some service call is made.
ticketCompositeService and userCompositeService is a feign client. For feign client method payForOrder(), there is another method payForOrderFallback() for fallback.
I need to make sure the fallback methods can be called multiple times, for re-check or timeout.
I add try/catch for ticketCompositeService and userCompositeService call, to make sure the order will be save anyway with 'FAILED' status.

It seems that this solution can work at the most of the time. Except that, in fallback function, if there is some error in userCompositeService.payForOrderFallback(payDTO);, then the following composite service call will not be called.
And, another problem is, I think it is too complicated.
So, for this scenario, how should I implement dist transaction properly and effectively. Any suggestion or advice will help. Thanks.

I don't think I would use Hystrix and a transaction together.  I have no experience doing so - if others do please chime in.
My reasoning is that there are many ways a fallback can get triggered.  Handling a transaction semantic failure, timeout, short-circuit, etc with the same fallback logic sounds like adding extra complexity.
Personally, I would fine a way to separate the transaction aspect into one layer and then wrap that layer with Hystrix (if Hystrix is necessary for resilience purposes)

yes I also find it is not proper to implement dist transaction with fallback.
So, based on this scenario:

accept request in order service, and create order.
call user service to charge
call ticket service to move tickets. (when this part has error, but user charge has been finished.)

How should I fix this?
I know in some cases, I can use MQ to drive the process. But I don't want to use MQ for now.

This seems like a general architectural question and not related to Hystrix.
From a system architecture perspective, if possible, IMHO and YMMV, I would avoid "distributed transactions" / "two phase commits" all together - and I mean, avoid like the plague... :running_man: .
I would ask myself...

Do I really need distributed transactions?
Do I really need Hystrix?
If I really have a truly distributed system, why am I avoiding using messages?

P.S. If you want to experience some really funky system behaviour wrap Hystrix commands inside Hystrix commands and then throw one or two Spring @Transactional annotations into your code. :smile:

@Mavlarn , I notice that you are actually using JMS already...
https://github.com/Mavlarn/spring-cloud-dist-transaction-tutorial/tree/master/jms-jta-service/src/main
Why not just create a listener for a message called "reverse order / charge" or something?

@bltb that repo is just a learning project. In my current product, we use spring cloud without mq, and not considering distributed transaction. I just avoid that by designing business process properly.
But now, I have a function as above: 'buying tickets', interacting with 3 other services. So I need to make sure if there is an error in the last service calling, I should rollback the previous service process.
At the beginning, I thought the Hystrix fallback can do the 'rollback' job. But as discussed above, it seems that it is not a good solution.


Move towards Flux v2 GA

[ ] support Source v1 and the Artifact digest
[ ] revise blob pulling and pushing mechanism

Hi, is this the reason why I am getting this error with Flux v2 v2.0.0-rc.1?
failed to verify artifact: computed checksum '58771dfcb77e839c07029ff76d526aff704d26a9ca1028709f4dc1b4de7f8353' doesn't match advertised ''

Yes, that's correct @klauserber
It's a big breaking change for TF Controller. Many parts to be fixed.
So please stay tuned.

I am also facing this issue after updating to Flux v2.0.0-rc.1 good to know you are on it. Thanks!

@klauserber @onedr0p the PR is upped, and we have the image from the PR in case you'd like to try it:
---
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: HelmRepository
metadata:
  name: tf-controller
  namespace: flux-system
spec:
  interval: 1h0s
  url: https://weaveworks.github.io/tf-controller/
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: tf-controller
  namespace: flux-system
spec:
  chart:
    spec:
      chart: tf-controller
      sourceRef:
        kind: HelmRepository
        name: tf-controller
      version: '>=0.11.0'
  interval: 1h0s
  releaseName: tf-controller
  targetNamespace: flux-system
  install:
    crds: Create
  upgrade:
    crds: CreateReplace
  values:
    replicaCount: 1
    concurrency: 24
    resources:
      limits:
        cpu: 1000m
        memory: 2Gi
      requests:
        cpu: 400m
        memory: 64Mi
    caCertValidityDuration: 24h
    certRotationCheckFrequency: 30m
    image:
      tag: upgrade-to-flux-2-rc-1-634c26bf
    runner:
      image:
        tag: upgrade-to-flux-2-rc-1-634c26bf

@chanwit I tried out that image but get this
❯ k get terraforms -A
NAMESPACE     NAME         READY     STATUS                                                                                AGE
flux-system   cloudflare   False     error running Plan: rpc error: code = Unknown desc = planPath cannot be blank: use Show() if not passing planPath   94d

Pushed the fix. Please give the new tag upgrade-to-flux-2-rc-1-d3949b9e a try and see if it resolves the issue.

It works, thanks @chanwit !


Weather411 unable to write data to InfluxDB v1.8

Problem
After upgrading to v0.2.0 of weather411 I was not seeing any weather data in my Powerwall dashboard. Enabling debug logging and restarting showed the following;
powerwall_weather.1.dgnjryq9xnzr@nuc02    | DEBUG:Weather411 [0.2.0]
powerwall_weather.1.dgnjryq9xnzr@nuc02    |
powerwall_weather.1.dgnjryq9xnzr@nuc02    | Weather411 Server [0.2.0]
powerwall_weather.1.dgnjryq9xnzr@nuc02    | * Configuration Loaded [/var/lib/weather/weather.conf]
powerwall_weather.1.dgnjryq9xnzr@nuc02    |  + Weather411 - Debug: True, Activate API: True, API Port: 8676
powerwall_weather.1.dgnjryq9xnzr@nuc02    |  + OpenWeatherMap - Key: zzz, Wait: 10, Units: metric
powerwall_weather.1.dgnjryq9xnzr@nuc02    |  + OpenWeatherMap - Lat: xxx, Lon: yyy, Timeout: 10
powerwall_weather.1.dgnjryq9xnzr@nuc02    |  + InfluxDB - Enable: True, Host: db, Port: 8086, DB: powerwall, Field: weather
powerwall_weather.1.dgnjryq9xnzr@nuc02    | * Starting threads
powerwall_weather.1.dgnjryq9xnzr@nuc02    |  + fetchWeather thread
powerwall_weather.1.dgnjryq9xnzr@nuc02    |  + apiServer thread - Listening on http://localhost:8676
powerwall_weather.1.dgnjryq9xnzr@nuc02    | DEBUG:Starting new HTTPS connection (1): api.openweathermap.org:443
powerwall_weather.1.dgnjryq9xnzr@nuc02    | DEBUG:https://api.openweathermap.org:443 "GET /data/2.5/weather?lat=xxx&lon=yyy&units=metric&appid=zzz HTTP/1.1" 200 489
powerwall_weather.1.dgnjryq9xnzr@nuc02    | DEBUG:Weather data loaded
powerwall_weather.1.dgnjryq9xnzr@nuc02    | DEBUG:Writing to InfluxDB
powerwall_weather.1.dgnjryq9xnzr@nuc02    | DEBUG:Cannot parse error response to JSON: 404 page not found
powerwall_weather.1.dgnjryq9xnzr@nuc02    | , Extra data: line 1 column 5 (char 4)
powerwall_weather.1.dgnjryq9xnzr@nuc02    | DEBUG:Error writing to InfluxDB

To Reproduce
Surprised no one else is reporting this. Perhaps something to do with my setup.
Screenshots
If applicable, add screenshots to help explain your problem.
Host System

Intel NUC
Ubuntu
Running in Docker Swarm

Additional context
The error "Cannot parse error response to JSON" doesn't show up in any good search, except here. I wonder if the weather script is incorrectly attempting to use InfluxDB v2 connection properties, when I am still on v1.8.
My weather.conf is unchanged from v0.1.2;
[Weather411]
DEBUG = yes

[API]
# Port to listen on for requests (default 8676)
ENABLE = yes
PORT = 8676

[OpenWeatherMap]
# Register and get APIKEY from OpenWeatherMap.org
APIKEY = openweathermap_apikey
# Enter your location in latitude and longitude
LAT = xxx
LON = yyy
WAIT = 10
TIMEOUT = 10
# standard, metric or imperial
UNITS = metric

[InfluxDB]
# Record data in InfluxDB server
ENABLE = yes
HOST = db
PORT = 8086
DB = powerwall
FIELD = weather
# Leave blank if not used
USERNAME = powerwall
PASSWORD = influxdb_password

I have reverted back to v0.1.2 and now my weather data is flowing thru to InfluxDB and my dashboard.

Thanks for opening this!
I cannot duplicate the error on my test systems (all work) including an intel+ubuntu system, but I'm not using docker swarm.
Would you be willing to test a debug version that should expose more data on the exception stack?
jasonacox/weather411:0.2.0beta

USERNAME = powerwall
PASSWORD = influxdb_password

This seems to be the issue.  The default install for the Dashboard project and my tests use no username or password for InfluxDB.  I just tested using user/pass and I am getting the same DEBUG error you are getting.  While I research, I'm going to revert the latest to v0.1.2 in case there are others who have customized their install to use credentials.
Thanks again for reporting this!

I think I found the problem. The new influxdb-client requires the username and password to be sent via token for connections to InfluxDB 1.8.  I was able to test by activating auth and a user/pass on a test DB.  It is now working in my tests.  I've pushed the changes in this commit: https://github.com/jasonacox/Powerwall-Dashboard/commit/831f88eced955f71b139aa218e04db48fc002e08
You can test it by downloading:
jasonacox/weather411:0.2.1

I would love to hear if this fixes your problem.  Thanks again for your help.

I will test now, thank you for the very prompt action on this!! Love this dashboard, only just got my Powerwall installed a few months ago, but this setup is fantastic!!

Yep that seems to be working fine - great stuff - thanks very much!!

Awesome! Once again, thank you for opening this issue. Good find. 🙏
I just set v0.2.1 as 'latest'.  Anyone running upgrade.sh or pulling it manually will get the fix. Please report any other issues.
./verify.sh output:


404 Error Page

Is your feature request related to a problem? Please describe.
When visiting a link nothing really happens right now. This can be a bit misleading.
Describe the solution you'd like
Show a nice (maybe even funny) 404 page.

How about using these? https://http.cat/


The Minskins 26-11

Great project Carlos!
The page is looking good and the code is amazing! Nice modules and initialization of the whole website. Interesting stuff!
⭐⭐⭐⭐⭐

😄

Thanks guys!


[Tizen] Implement ScanNetworks.

This pacth:
-> Implements ScanNetworks function.
-> Implements callback functions related to the ScanNetworks. -> Implements Count and Next function.

!!!!!!!!!! Please delete the instructions below and replace with PR description
If you have an issue number, please use a syntax of
Fixes #12345 and a brief change description
If you do not have an issue number, please have a good description of
the problem and the fix. Help the reviewer understand what to expect.
Make sure you delete these instructions (to prove you have read them).
!!!!!!!!!! Instructions end

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Looks good to me.


mac-scroll-spy and sub sections

Hi,
mac-scroll-spy works nice for single items menu. The problem is that if I have a menu with items and subitems, that is:   Item   Subitem
When I scroll down to Subitem, the parent "Item" losses the active class. I need to keep the parent with class active as well. This allows to handle auto collapse/expand subitems with pure CSS.
I found that ScrollSpy can handle this situation if your sections are well structured:
`

`
But I definitely prefer your solution since it is angular based.
Any idea ?

Currently mac-scroll-spy doesn't support nested items but this is a great feature suggestion.


Aom drafts update

This Pull Requests proposes updates to the boiler plates for AOM. They have been reviewed and approved by AOM.

@tabatkins for one of the AOM specs (AVIF), I need to override the logo. I initially tried setting the Logo: value directly in the bikeshed file, but it did not work. I ended up using Local Boilerplate: logo yes. see https://github.com/AOMediaCodec/av1-avif/commit/d299bc88a80a739d3e02989c5618fb7837456f1c (I should also add a height). But is that the recommended way to do it?

The Logo metadata just fills in the [LOGO] macro, which may or may not be used by any particular boilerplate. WHATWG uses it, for example, to let each of their specs have a different logo - their header.include uses the macro to sub it in.
Your AOM boilerplates don't use it, so it won't have any effect. You could make it work both ways with a conditional inclusion:

(Note that I just had to push a bugfix to make this work correctly, so make sure you're on Bikeshed 3.3.3 or later.)

I like the idea of not needing the additional, local logo.include and of being able to override the default logo directly in the BS file. I don't understand what data-fill-with="logo" does.
Would the following work?

I tried bikeshed update, it seemed to work but now bikeshed --version returns ??? and the above does not seem to work.

I upgraded bikeshed with pip3 install bikeshed --upgrade and I did get version 3.3.3 (Successfully installed bikeshed-3.3.3). bikeshed --version still returns ???

There is a change of design regarding logos. We want to always have the AOM logo present, and an additional logo when the spec has one. I pushed a new commit for that. @tabatkins Is it good to merge?


Rename valid test folders to be consistent with naming convention of invalid test folders.

Follow up of https://github.com/GoogleCloudPlatform/ops-agent/pull/111 as we decided to hold on renaming in that PR to avoid rebase conflicts before GA.
To summarize the renaming in this PR:
$ $ git diff origin/master..HEAD  | grep rename | sed 's/confgenerator\/testdata\/valid\///g;s/\/input.yaml//g' | grep -v golden
rename from linux/logging-no_conf
rename to linux/logging-default_overrides_disable_all
rename from linux/logging-complex_logs
rename to linux/logging-pipeline_multiple_pipelines
rename from linux/logging-complex_logs_with_processors
rename to linux/logging-processor_parse_json_and_parse_regex_types
rename from linux/logging-processor_parse_regex_on_default_pipeline
rename to linux/logging-processor_parse_regex_type_on_default_pipeline
rename from linux/logging-multiple_file_sources
rename to linux/logging-receiver_files_type_multiple_receivers
rename from linux/logging-multiple_syslog_sources
rename to linux/logging-receiver_syslog_type_multiple_receivers
rename from linux/metrics-no_conf
rename to linux/metrics-default_overrides_disable_all
rename from linux/metrics-exclude_metrics_by_prefixes
rename to linux/metrics-processor_exclude_metrics_type_filter_by_prefixes
rename from linux/metrics-exclude_metrics_by_prefixes_with_glob
rename to linux/metrics-processor_exclude_metrics_type_filter_with_globs
rename from linux/metrics-custom_collection_interval
rename to linux/metrics-receiver_custom_collection_interval
rename from windows/logging-no_conf
rename to windows/logging-default_overrides_disable_all
rename from windows/logging-multiple_file_sources
rename to windows/logging-receiver_files_type_multiple_receivers
rename from windows/metrics-no_conf
rename to windows/metrics-default_overrides_disable_all
rename from windows/metrics-turn_off_iis
rename to windows/metrics-default_overrides_disable_iis
rename from windows/metrics-turn_off_mssql
rename to windows/metrics-default_overrides_disable_mssql
rename from windows/valid_config
rename to windows/metrics-pipeline_multiple_pipelines
rename from windows/metrics-custom_collection_interval
rename to windows/metrics-receiver_custom_collection_interval

It also deletes a test case
linux/logging-multiple_google_exporters

and adds a few test cases:
linux/all-backward_compatible_with_explicit_exporters
windows/all-backward_compatible_with_explicit_exporters
windows/metrics-processor_exclude_metrics_type_filter_by_prefixes
windows/metrics-processor_exclude_metrics_type_filter_with_globs

Addressed the feedback. PTAL

Ready for review again.

Just fixed the builtInConfTestName. PTAL

Updated. PTAL


Add processing options as arguments for cubes configuration

Thanks for this nice package. But currently there seems to be no option to pass extra processing arguments apart from upsampling and downsampling c.f. I think it's needed incase of Sentinel1 and Sentinel5P L2 may be some other sensor as well which has extra processing arguments apart from upsamling and downsmapling. So I made a PR to fix this.

Thanks @daspk04!


[File Locksmith] Add infobar when not running as admin

Summary of the Pull Request

PR Checklist

[x] Closes: #21805
[ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
[ ] Tests: Added/updated and all pass
[x] Localization: All end user facing strings can be localized
[ ] Dev docs: Added/updated
[ ] New binaries: Added on the required places

[ ] JSON for signing for new binaries
[ ] WXS for installer for new binaries and localization folder
[ ] YML for CI pipeline for new test projects
[ ] YML for signed pipeline

[ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

Would be extra nice to have a "Restart as admin" button somewhere here :-)

It exists in the ui. At the top where the reload button is.

Thanks for opening the PR. I've tried running the PR in both Debug and release, but both are crashing for me when trying to start File Locksmith.

I can replicate this problem when running from a clean build at the first time, but it does not crash in subsequent runs.
Seems to be related to this issue: https://github.com/microsoft/microsoft-ui-xaml/issues/7143

Thanks for opening the PR. I've tried running the PR in both Debug and release, but both are crashing for me when trying to start File Locksmith.

I can replicate this problem when running from a clean build at the first time, but it does not crash in subsequent runs. Did a couple of tests, crash happens as long as a Infobar is present. Seems to be related to this issue: microsoft/microsoft-ui-xaml#7143

Thank for looking into it.
Seems related, although we're not using the mentioned flags:
IncludeNativeLibrariesForSelfExtract or PublishSingleFile
Definitely can't bring it in if it's causing crashes, though.
Regarding the change itself, can you please share some screenshots? I'm thinking this will look a bit big in the UI.

Thanks for opening the PR. I've tried running the PR in both Debug and release, but both are crashing for me when trying to start File Locksmith.

I can replicate this problem when running from a clean build at the first time, but it does not crash in subsequent runs. Did a couple of tests, crash happens as long as a Infobar is present. Seems to be related to this issue: microsoft/microsoft-ui-xaml#7143

Thank for looking into it. Seems related, although we're not using the mentioned flags: IncludeNativeLibrariesForSelfExtract or PublishSingleFile
Definitely can't bring it in if it's causing crashes, though. Regarding the change itself, can you please share some screenshots? I'm thinking this will look a bit big in the UI.

This is how it looks currently.

Maybe putting the restart as admin button in the infobar would be better?

@HydroH
Yes. Please move the button. But then we should use a text instead of a symbol, I think.

@HydroH Yes. Please move the button. But then we should use a text instead of a symbol, I think.

Sorry for responding late, I was on a holiday.
This is what it looks like now.

I know it's kinda late, but I think a Popup control might be even better: you can connect it to the existing restart-as-admin button. And it's just as intrusive as an info bar.


Report block import timings

Description
To improve diagnostics and aim in performance improvements, we need to establish a way to report key timings for the block import process.  This includes:

How long after slot start the block is received
How long between then and ForkChoice.onBlock first being called
How long it takes to retrieve the parent state
How long it takes to create the block post state
How long it takes to actually import the block (ForkChoice.importBlockAndState)
How long it takes for the transaction to commit

The aim is to get a view of what takes time for block import (in a real node).  We need to ensure that capturing the timings is extremely lightweight so it doesn't affect performance.
Reporting this data is challenging - metrics are only sampled periodically so while a gauge showing timings for the last imported block may be useful, it can also miss information between samples being taken. A histogram shows the average well but tends to hide outliers and doesn't show time periods were performance is unusually slow. Logging the data for every block is too noisy.
I'd suggest:

Add a gauge to show timings for the last imported block (a labelled gauge with a label for each step and the value being the number of millis into the slot when that step was completed).
If a block completes importing more than 4s into a slot (and the node is not in syncing mode), log a warning including the full timing details.

Probably worth doing the logging of a warning when the block finishes importing more than 4s into the slot as the first step - that likely gives us really useful information with lots of detail but without being overwhelming since late blocks are always noteworthy as they cause incorrect head votes.

@ajsutton I was thinking to a different approach for metrics:
image we have a labeled gauge for each import stage
the label in this gauges are "0-50ms", "50-100ms", and so on with last ">1s"
and we may have an overall processing time gauge with wider time frames
so we can count blocks processing stages that fall into a particular timeframe
with the overall processing time working similarly
it is just matter of finding timeframe "bands" that make sense for each stage.
and we may activate it with a --Xblock-processing-performance-metrics-enabled or similar

replace "gauge" with "counter"

Yeah I like that idea. If they're counters you can track the rate they  increase or just look at relative distribution between them. Might need to play with grafana dashboards to see how to best visualise it but I think we'd be able to make something work.


Fix error with module not found for feedparser

Issue #, if available:
There is no issue available.
Description of changes:

Adding feedparser==6.0.10 to the list of requirements for a task.
It fixes the following error: ModuleNotFoundError: No module named 'feedparser'
It happens when processing files for workspaces in the ECS docker image

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

I reviewed this and confirm this bug was introduced as part of the RSS subscription integration.
I've searched through the code base for other possible related issues, but I think this was the only one.


updated Index.html and style.css

Updated the html and css file of the portfolio section.

Also deploy it, so that you can track what changes you are doing, also we can see what you are up to


fix(app): fix for Apollo error

Description
Fixed error for ApolloError: Response not successful: Received status code 404
With help from here

Issue Ticket Number
Fixes #591
Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] Fix or improve the documentation
[ ] This change requires a documentation update

Checklist

[x] I have followed the contributing guidelines of this project as mentioned in CONTRIBUTING.md
[x] I have created an issue ticket for this PR
[x] I have checked to ensure there aren't other open Pull Requests for the same update/change?
[x] I have performed a self-review of my own code
[x] I have run tests locally to ensure they all pass
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes needed to the documentation

thanks @amjedidiah

@all-contributors please add @amjedidiah for doc


Added VM metrics, VM health, and VM Health Changes tiles to ACSS_Aggregated and SAP_Inventory_Checks workbooks.

Added the following tiles to the ACSS_Aggregated workbook:

VM Monitoring Metrics (Last 24 hours):

Shows the list of VMs for the selected VIS(es), and their health metrics in the past 24 hours.

Since this is a metrics tile which gets the metrics for VMs, I had to find a workaround to add a column for the SID of the VMs. To do that I had to create 2 hidden steps, and then create a 3rd query step in which I'm getting the data by merging the results of the previous 2 steps.

Current VM Health & Annotations:

Shows the list of VMs for the selected VIS(es), and their current health and annotations.

VM Health Changes (Last 14 days):

Shows the list of VMs for the selected VIS(es), and their corresponding health changes in the past 14 days.

I also had to add a parameter vmIds to the ACSS_Aggregated workbook, as I had to supply that column to get the metrics for the VMs. The existing vmList parameter is a list of comma separated visIds and vmIds.

Added the same tiles to the SAP_Inventory_Checks workbook:

Link to try out changes: https://ms.portal.azure.com/?feature.workbookGalleryRedirect=https%3A%2F%2Fworkbookpoctemplates.blob.core.windows.net%2Facss-workbook-templates%2Fpackage#home
PR Checklist

[x] Explain your changes, so people looking at the PR know what and why, the code changes are the how.
[x] Validate your changes using one or more of the testing methods.

If adding or updating templates:

[x] post a screenshot of templates and/or gallery changes
[x] ensure your template has a corresponding gallery entry in the gallery folder
[ ] If you are adding a new template, add your team and template/gallery file(s) to the CODEOWNERS file. CODEOWNERS entries should be teams, not individuals
[x] ensure all steps have meaningful names
[x] ensure all parameters and grid columns have display names set so they can be localized
[x] ensure that parameters id values are unique or they will fail PR validation (parameter ids are used for localization)
[x] ensure that steps names are unique or they will fail PR validation (step names are used for localization)
[x] grep /subscription/ and ensure that your parameters don't have any hardcoded resourceIds or they will fail PR validation
[x] remove fallbackResourceIds and fromTemplateId fields from your template workbook or they will fail PR validation

What is problem in using the same VMList parameters. Even though this have, and VIS ID what problem we faced in using same parameter?

Lets fix this user behavior, This is not expected, We should have a proper message to land to customer.

When show help is set to "no" then this message should not appear. This might have missed earlier but let's fix this now.

When show help is set to "no" then this message should not appear. This might have missed earlier but let's fix this now.

Done.

Lets fix this user behavior, This is not expected, We should have a proper message to land to customer.

Hiding all 4 tiles when no VIS is selected, and instead showing a message bar telling the user to select a VIS.


Entry file changed from skate.js to index.js

The dist entry stays the same: dist/skate.js and dist/skate.min.js.
lib and src: skatej.js -> index.js.

This would be worth mentioning in release notes (if there is release notes)

Last one in list: https://github.com/skatejs/skatejs/blob/master/CHANGELOG.md#changed.


Add value input to chips

Is your feature request related to a problem? Please describe.
When working with filter or choice chips, there doesn't seem to be any way to assign a value to each chip, so when the change event is fired all you get is an autogenerated id and no easy way to determine what the value of the chip that was added or removed is.
Describe the solution you'd like
Create an Input() for value on MdcChip and emit that on selectionChange for both the chip and the chip set change event.
Describe alternatives you've considered
I tried looking through the source code to see if there was any way to assign a value to a chip currently but could not see anything.

@micahwood All set. Merging PR in a few, and it'll be made available in v0.44.0.

Adds FormControl, ngModel and value support.

Add value property on mdc-chip and mdc-chip-set
Improve click and keydown logic
Refactored template bindings
Fix filter chip checkmark animation
Add custom chip examples

Wow thanks for the super quick turnaround on that!


Release v3.5.2

Description of the change
Release v3.5.2
Type of change

[x] New release

@waltjones can you release a new version in rubygems?


docs: describe vi.setSystemTime string parameter

Clear and concise description of the problem

vi.setSystemTime
Type: (date: string | number | Date) => void
Sets current date to the one that was passed.

https://vitest.dev/api/vi.html#vi-setsystemtime
I see the docs use JS Dates, but I don't want to do that. The API documentation is lacking here. Can we describe the string option please?
As for the number, people with common sense can assume it's a Unix timestamp.
What is the string? ISO 8601? RFC 3339? Date.toString? Most people will probably be thinking ISO 8601, although I am not sure if that is the case. Please confirm.
This is a question or a docs issue. Your call, I'll pull for it.
Suggested solution
Something like,

Strings must be ISO 8601 compliant.

Strings must follow the ISO 8601 <specification|format>

Strings must be parsable <according to|as specified by> ISO 8601.

Alternative
No response
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

It just passes down values to new Date.

Yeah I would not have guessed that. Thanks for the answer. So then via MDN JS Date we have,

There are many ways to format a date as a string. The JavaScript specification only specifies one format to be universally supported: the date time string format, a simplification of the ISO 8601 calendar date extended format. The format is as follows:

YYYY-MM-DDTHH:mm:ss.sssZ

As it turns out this ISO 8601 subset is robust enough and is what I was looking for.
Why was I hoping to circumvent JS Dates. Besides the weak ISO 8601 subset. Well, you can't even escape it in that section of documentation -

When the time zone offset is absent, date-only forms are interpreted as a UTC time and date-time forms are interpreted as local time. This is due to a historical spec error that was not consistent with ISO 8601 but could not be changed due to web compatibility.

So this issue becomes something like,
Change

Sets current date to the one that was passed.

to

Sets current date to the Date argument or Date constructed with the argument.


Consider Adding Topic: Embedding HTML5 video

See #265

Should we close this one? I'm not sure what kind of value we can provide over basic instructions on embedding HTML5 video: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video

I second @loganfranken.


s/OS X/macOS in diagnostics

I heard this is the official name now.

Oh... it will break all the tests, will it not? :-/

@swift-ci Please smoke test


When WindowConfig is set, automatically default autoAck to false

Motivation
We set the value of autoAck true by default. This is done so because users should not need to set another variable when executing regular simple functions. However for window functions, the window library does ack management by itself, which means autoAck should be set to false. However this means that for submitting windowing functions, users have to explicitly set autoAck to be false which is not the seemless experience. This pr automatically sets the autoAck to false for window functions
Modifications
Describe the modifications you've done.


Use json-schema to validate our outgoing cases

We serialize order information to send to SIGNIFYD. Their API provides a (mostly valid) json-schema that we can use to validate our payloads. I have included a lightly modified version of their schema, which has been edited for format.
Validation is provided by https://github.com/ruby-json-schema/json-schema

:+1:


Update analyse script to provide the repo object

The analyse.rb script was broken by changes to the report
class which were not back-ported. This commit fixes that.
Also, the README has been updated to document the two scripts
and the necessary token scopes.

I've updated the commit (and PR) description.


Unexclude fixed jfr tests on JDK8

Enabled:

jdk/jfr/event/sampling/TestNative.java - fixed by JDK-8301143. However there is still issue on MacOS, so kept excluded there.
jdk/jfr/event/io/TestInstrumentation.java - fixed by JDK-8202142

Fixed issue link for TestCompilerPhase.java.

Testing:
x86-64_linux: OK (unrelated failures)
aarch64_linux: OK
x86-64_windows: OK
x86-64_mac: OK


fix(cli): rest emitter should override config and env variables

Checklist

[x] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[ ] Links to related issues (if applicable)
[ ] Tests for the changes have been added/updated (if applicable)
[ ] Docs related to the changes have been added/updated (if applicable). If a new feature has been added a Usage Guide has been added for the same.
[ ] For any breaking change/potential downtime/deprecation/big changes an entry has been made in Updating DataHub

Lint might fail for Tableau source which is unrelated to this change. Already fixed in separate PR https://github.com/datahub-project/datahub/pull/4621

@gabe-lyons  Putting that other way around would make the utils depend on the rest emitter which seems wrong to me.
I'll see how I can change it somehow to remove the debugging confusion.


TS-4976: Regularize plugins - protocol

Incremental work on #1114.
This also updates the documentation on building a protocol plugin. In addition to changes required by the standardization of the plugin code, other errors were correct. Literal references were converted to links as much as possible.

RAT check successful! https://ci.trafficserver.apache.org/job/RAT-github/105/

clang format successful! https://ci.trafficserver.apache.org/job/clang-format-github/92/

AU check successful! https://ci.trafficserver.apache.org/job/autest-github/89/

FreeBSD11 build successful! https://ci.trafficserver.apache.org/job/freebsd-github/1787/

Linux build successful! https://ci.trafficserver.apache.org/job/linux-github/1680/

Intel CC build successful! https://ci.trafficserver.apache.org/job/icc-github/218/

clang-analyzer build successful! https://ci.trafficserver.apache.org/job/clang-analyzer-github/350/

@maskit 's comment reminds me that I also remove a number of printf statements which seemed to duplicate the debug output.

RAT check successful! https://ci.trafficserver.apache.org/job/RAT-github/108/

clang format successful! https://ci.trafficserver.apache.org/job/clang-format-github/95/

AU check successful! https://ci.trafficserver.apache.org/job/autest-github/92/

FreeBSD11 build successful! https://ci.trafficserver.apache.org/job/freebsd-github/1790/

Linux build successful! https://ci.trafficserver.apache.org/job/linux-github/1683/

Intel CC build successful! https://ci.trafficserver.apache.org/job/icc-github/221/

clang-analyzer build successful! https://ci.trafficserver.apache.org/job/clang-analyzer-github/353/


Is it possible to add dedicated server as worker?

As the headline says, i would like to run a cluster on Hetzner cloud, but be able to add additional worker nodes from my dedicated servers in Hetzner robot.

Please search for existing issues and discussions before opening new ones :)
https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/discussions/283

Discussion on this topic has been opened here: https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/discussions/1311


ema model

I saw the train script set a option for EMA model. Do we need EMA at all?
Is simple torch.nn.AdamW okay for training?

It is not neccesary,
Yes.


CloudNativePG

[ ] Backup to B2
[ ] Backup to cluster-native storage (avoid egress $$$). S3-compatible?
[ ] Custom image with extensions for crt.sh, similar to PostGIS
[ ] Read replica for crt.sh
[ ] Metrics
[ ] PgBouncer and read replicas based on metric results

https://cloudnative-pg.io/docs/


Update BaseArrayHelper.php

Terrible behavior. What happen when we have \ArrayObject without some properties?

Thanks!

@samdark https://github.com/yiisoft/yii2/issues/7193#issuecomment-73287156 ?

@alchimik I don't like error in this case. Much more logical is to return null.

Hi @samdark.
But if the property is exists and the value is null it will return default value instead of null
isn't it better to use property_exists in this case?

Nope. Why?

Yes. Probably. Can you send a pull request fixing it?

@alchimik I don't like error in this case. Much more logical is to return null.

isn't this a BC break?

It probably is.

Yes. Current behavior could be used. @azureru let's leave it as is.

@samdark I mean the original PR is a BC break.

Sorry, guess I quoted incorrectly.

@cebe umm, I don't think anyone used erroring there...

Ah, and since it's for 2.0.7 then there's no BC break yet.

https://github.com/yiisoft/yii2/commit/4b511fb9bcbb1fc5838ad8bc65f3852b09287acb

@samdark commit reverted https://github.com/yiisoft/yii2/issues/10588
f72e9d5

That is only one problem that could arise from this. adding this may break code that overrides __get() but not __isset(). Imo the whole check should be reverted.

I have opended a PR to revert this, lets discuss the topic there: #10590


Unikernel experiment

Try to run unikernel images on Virtlet.
Demonstrate the ability of unikernel application to access cluster networks, utilize services etc.
For more info see kubernetes/kubernetes#25885

I'm running OSv unikernel using virtlet and it works pretty well so far 👍
What I'm missing very much, however, is ability to see what unikernel writes into console:
$ kubectl logs my-vm-pod
failed to open log file "/var/log/pods/52b85f47-12cc-11e7-9c2e-02420ac00002/_0.log": open /var/log/pods/52b85f47-12cc-11e7-9c2e-02420ac00002/_0.log: no such file or directory

I've tried to connect to virtlet container and examine logs in /var/log/libvirt/qemu/ folder. But the logs there are provided only up until VM/unikernel starts. Then if I do virsh console <...>, I get connection to the VM's console, but can't see what was printed there when VM started.
@ivan4th am I perhaps missing something, or is this yet to be implemented?

We don't have any support for logs, but I see there one possibility - we can add as option archiving output sent to serial console. This sets requirements on workload side, but should work if we would use it with http://www.conserver.com/

Closing that, since both unikernel and logs are done (some imporvements needed but let's close that issue).


Rename project/CONTRIBUTORS.md -> project/CONTRIBUTING.md

Signed-off-by: Manjunath A Kumatagi<EMAIL_ADDRESS>
- What I did
Renamed file project/CONTRIBUTORS.md -> project/CONTRIBUTING.md
- How I did it
- How to verify it
- Description for the changelog

fixes #31825
In latest godep tool they have included a logic to scan through the projects and include all the authors, contributors files part of godep. But in this case it is copying the project/contributors.md file but fails to copy CONTRIBUTING.md from root docker folder. So this will create a issue because the original file is missing and only the symbolic link is retained.
Ideally contributors filename is meant for the copyright authors file and not for the documentation for how to contribute, so avoid the confusion I'm renaming the filename here.!
- A picture of a cute animal (not mandatory but encouraged)

/cc @thaJeztah @cblecker

LGTM


Rules not granting access

First of all, thanks for this code! I have been testing it using the python and mqtt implementations with a lot of success. Using the Wild Apricot implementation I can't get the access to be granted.

There are no errors. The ACL is successfully loaded into the controller but access is "N". Is there something obvious I'm missing?
uhppoted.conf
bind.address = <IP_ADDRESS>
broadcast.address = <IP_ADDRESS>
listen.address = <IP_ADDRESS>:60001
timeout = 2.5s
; monitoring.healthcheck.interval = 15s
; monitoring.healthcheck.idle = 1m0s
; monitoring.healthcheck.ignore = 5m0s
; monitoring.watchdog.interval = 5s
card.format = any

# Wild Apricot
wild-apricot.http.client-timeout = 10s
wild-apricot.http.retries = 3
wild-apricot.http.retry-delay = 5s
wild-apricot.fields.card-number = FOB
; wild-apricot.fields.PIN = PIN
; wild-apricot.display-order.groups =
; wild-apricot.display-order.doors =
wild-apricot.facility-code = 43

UT0311-L0x.123456789.name = D123456789
UT0311-L0x.123456789.address = <IP_ADDRESS>:60000
UT0311-L0x.123456789.door.1 = Front Door
UT0311-L0x.123456789.door.2 = Back Door
UT0311-L0x.123456789.door.3 = Unused3
UT0311-L0x.123456789.door.4 = Unused4
UT0311-L0x.123456789.timezone = UTC

Thanks,

Oooops ... apologies - the README is wrong :-(.
The grules file should add the grant to the permissions not the record:
// *** GRULES ***

rule Doors "Grants a member access to both doors" {
     when
         member.HasGroup("Doors")
     then
         permissions.Grant("Front Door");
         permissions.Grant("Back Door");
         permissions.Grant("Unused3");
         permissions.Grant("Unused4");
         Retract("Doors");
}

// *** END GRULES ***

Can you try that and let me know?

I made the changes but no changes regarding the ACL.  Let me set up a test system that mirrors yours and see if I can replicate it.

Hmmm - I've set up a test system that mirrors yours (except that my grules file revokes access to Unused3 and Unused4) and am getting the expected result:
./bin/uhppoted-app-wild-apricot --debug --config ../runtime/wild-apricot/uhppoted.conf get-acl --credentials ../runtime/wild-apricot/.credentials.json --rules ../runtime/wild-apricot/debug.grl
2024/02/13 10:40:23 INFO   Stashed downloaded 'grules' file to /usr/local/var/com.github.uhppoted/wild-apricot.grl
MEMBERS:
  Name     Card Number Membership         Active Suspended Registered Expires    Board Members Doors Electronics Committee Laser Cutter Table Saw
  Jane Doe 12345679    Regular membership Y      N         2024-02-12 2024-03-11 Y             Y     N                     Y            Y
  John Doe 12345677    Regular membership Y      N         2024-02-12 2024-03-11 N             Y     Y                     Y            Y

DOORS:
  Back Door
  Front Door
  Unused3
  Unused4

ACL:
  Card Number From       To         Back Door Front Door Unused3 Unused4
  12345677    2024-01-01 2025-01-31 Y         Y          N       N
  12345679    2024-01-01 2025-01-31 Y         Y          N       N

Can you perhaps add some debugging to your grules file? e.g.
// *** GRULES ***

rule Doors "Grants a member access to both doors" {
     when
         member.HasGroup("Doors")
     then
         permissions.Grant("Front Door");
         permissions.Grant("Back Door");
         permissions.Revoke("Unused3");
         permissions.Revoke("Unused4");
         Retract("Doors");
}

rule Debug "Logs debug information" {
     when
         true
     then
         Log(">>>> DEBUG " + member.CardNumber);
         Log(">>>> DEBUG " + member.HasGroup("Doors"));
         Retract("Debug");
}

// *** END GRULES ***

I copy/pasted the above rules.
 Now to figure out why ...
Can you run the get-members and get-groups commands:
sudo ./uhppoted-app-wild-apricot --debug --config uhppoted.conf  get-members --credentials credentials.json --file members.tsv

sudo ./uhppoted-app-wild-apricot --debug --config uhppoted.conf  get-groups --credentials credentials.json --file groups.tsv

and post the files here?

Thanks for your help!

Ok, I see where the problem is - for some reason the group names returned with the member record don't match the actual group names:
11293050
[
  { 784771, Laser Cutter, 0},
  {784772, Table Saw, 0},
  {784779, Electronics Committee, 0},
  {784869, DoorAccess, 0},
]

12345679
[
  {782239, Board Members, 0},
  {784771, Laser Cutter, 0},
  {784772, Table Saw, 0},
  {784869, Door, 0},
]

Not entirely sure why - possibly you edited the Doors group name after assigning it to the member and Wild Apricot didn't carry it through because internally they only use the group ID.
You may be able to fix it from the Wild Apricot dashboard, but if not you can actually use the group ID in HasGroup e.g.:
// *** GRULES ***

rule Doors "Grants a member access to both doors" {
     when
         member.HasGroup(784869)
     then
         permissions.Grant("Front Door");
         permissions.Grant("Back Door");
         permissions.Revoke("Unused3");
         permissions.Revoke("Unused4");
         Retract("Doors");
}

// *** END GRULES ***

which is unambiguous and also won't break if people edit the group names (which they do for no good reason at all :-)) but is also harder to read.
I'll have to think about maybe reworking the lookup logic - the assumption was that Wild Apricot would keep it consistent but clearly not.

Oh, right - our replies crossed :-)
Great, very glad you've got it working! I'll add in some logic to make it a bit more robust and also easier to debug in future.


(Towards #34) First implementation to manage scope and typing of declared variables

Currently lacking tests, and as mentioned in #34 there are certainly some potential issues. Notably:

[ ] No way to distinguish order of array accesses and children, i.e. Not sure if it would correctly distinguish a.b[i] vs a[i].b
[ ] The other issue is that the printf is not yet resolved.

Codecov Report

Merging #35 (6a85384) into main (4e942e0) will decrease coverage by 2.36%.
The diff coverage is 85.36%.

:exclamation: Current head 6a85384 differs from pull request most recent head aac1b22. Consider uploading reports for the commit aac1b22 to get more accurate results

@@             Coverage Diff             @@
##              main      #35      +/-   ##
===========================================
- Coverage   100.00%   97.63%   -2.37%
===========================================
  Files           15       16       +1
  Lines         1100     1268     +168
===========================================
+ Hits          1100     1238     +138
- Misses           0       30      +30

Impacted Files
Coverage Δ

...artreeParticleDSL/backends/base_backend/backend.py
97.29% <50.00%> (-2.71%)
:arrow_down:

...c/HartreeParticleDSL/backends/FDPS_backend/FDPS.py
92.83% <55.81%> (-7.17%)
:arrow_down:

src/HartreeParticleDSL/HartreeParticleDSL.py
99.23% <87.50%> (-0.77%)
:arrow_down:

...artreeParticleDSL/language_utils/variable_scope.py
90.16% <90.16%> (ø)

...ParticleDSL/backends/FDPS_backend/FDPS_visitors.py
97.77% <91.66%> (-2.23%)
:arrow_down:

src/HartreeParticleDSL/backends/C_AOS/visitors.py
99.35% <95.55%> (-0.65%)
:arrow_down:

...HartreeParticleDSL/HartreeParticleDSLExceptions.py
100.00% <100.00%> (ø)

src/HartreeParticleDSL/backends/C_AOS/C_AOS.py
100.00% <100.00%> (ø)

...rtreeParticleDSL/backends/base_backend/visitors.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4e942e0...aac1b22. Read the comment docs.

I added a check_valid test to the access_to_string, however its currently not used in the DSL. It will hopefully be added later, but visit_Call currently breaks if its used (as there are many instances of undefined variables existing there).