HIVE-26968: Compare DPP sources when compare and gather parent operators

What changes were proposed in this pull request?

Compare parent DPP operators when compare and gather the parents of 2 TableScan operators.
Why are the changes needed?

During extended shared work optimization, 2 TS operators are merged even if they have semantically different DPP parent operators. The merged TS operator keeps only one of the DPP parent operators, and the filter generated by the missing DPP operator will not be applied on the merged TS operator. As a consequence, executing the optimized query plan returns incorrect result set.
Does this PR introduce any user-facing change?

No
How was this patch tested?

mvn test -Dtest=TestSharedWorkOptimizer
cd itests; mvn test -Dtest=TestCliDriver

Hello @zabetak. I have added a new qfile, which validates my PR. In a nutshell, this qfile submits the same query twice while varying the value of hive.optimize.shared.work.dppunion. I checked that current Hive produces different results as I described in the JIRA issue (https://issues.apache.org/jira/browse/HIVE-26968). Could you please review the changes?  Thank you.

Thanks for the update @ngsg ; I am bit underwater these days but this is on my TODO list!

Thank you for your review, @zabetak . I have checked the changes and it looks good to me.


Interval field

Add an interval input variable to specify time window granularity. If not specified, it should return the smallest time granularity available for the given user.
Suggested values are

10 seconds
30 seconds
1 min
10 min
1 hour
1 day
1 week

@herkulano are the intervals correct?
I will create an enumerator to define them. Something like:
{
  "namespace": "org.radarcns.avro.restapi",
  "type": "enum",
  "name": "Interval",
  "symbols": [
    "TEN_SEC" , "THIRTY_SEC", "ONE_MIN", "TEN_MIN", "ONE_H", "ONE_DAY", "ONE_WEEK"
  ]
}

From what we have in the UI yes.
Why not use ms? Will you return the interval in ms or as these strings? If the latter, it means we have to have a table of the strings and corresponding values in ms, which is not a good idea.
@kerzmaximilian can you confirm the intervals?

With an enumerator we can define a domain for interval and exclude any ambiguity.
The smallest time frame we have is 10 seconds, if a user request frame of 13 seconds shall we provide frame of 10 or 20 seconds? For avoid this issue, an enumerator could help us.
Since only letters can be used to name constants according to the( Google style code)[https://google.github.io/styleguide/javaguide.html#s5.2.4-constant-names], the above one was the result.
As usual, open to update it, change it or move to another approach!

That's cool as long as you send also the ms values also.
Otherwise, if there are any changes to these constants the frontend needs to be updated also.

Time-series data for each interval should be cached in the hot storage, however this imposes specific limits on the data that can be returned for a arbitrary request for a given time window.
I discussed with @fnobilia about how requests for out of phase windows should be handled. We thought that this should be parameterised to return the closest | lower-bound | upper-bound, so the requester can choose preference to return slightly too much or too little data.
If needed it one might also consider including an option to compute the data on the fly for special case applications that need this behaviour?


Update production.php

Closing for the reasons mentioned in https://github.com/bcit-ci/CodeIgniter4/pull/534


Feature Request: Simple interactive state component

I was thinking if there was any simple/easy way to use like hover and active state. Right now it's a lot of code to use any of those things. It would be really nice to have something that fits the declarative world for this. My idea was something like this:
<InteractiveSprite
  texture={someTexture}
  hoverTexture={someHoveredTexture}
  activeTexture={someActiveTexture}
/>

It would be really nice if it was possible to have prefix for these things like hoverX/activeX, hoverScale/activeScale, hoverRotation/activeRotation etc.

Hi @EloB,
Yes that would be convenient indeed. A Sprite component can be anything, having another component that does only reflect events to textures is quite specific. I'd like to stay as close to the PIXI core as possible and keep the Sprite component generic.
Here's an example:
const InteractiveSprite = ({ hoverTexture, activeTexture, ...props }) => {
  const ref = useRef<Sprite>();

  const idle = useCallback(e => {
    ref.current.texture = props.texture;
  }, [props.texture]);

  const onPointerOver = useCallback(e => {
    ref.current.texture = hoverTexture;
    props.pointerover && props.pointerover(e);
  }, [hoverTexture, props.pointerover]);

  const onPointerDown = useCallback(e => {
    ref.current.texture = activeTexture;
    props.pointerdown && props.pointerdown(e);
  }, [activeTexture, props.pointerdown]);

  const onPointerOut = useCallback(e => {
    idle();
    props.pointerout && props.pointerout(e);
  }, [idle, props.pointerout]);

  const onPointerUp = useCallback(e => {
    idle();
    props.pointerup && props.pointerup(e);
  }, [idle, props.pointerup]);

  const onPointerUpOutside = useCallback(e => {
    idle();
    props.pointerupoutside && props.pointerupoutside(e);
  }, [idle, props.pointerupoutside]);

  return (
    <Sprite
      ref={ref}
      {...props}
      pointerdown={onPointerDown}
      pointerup={onPointerUp}
      pointerupoutside={onPointerUpOutside}
      pointerover={onPointerOver}
      pointerout={onPointerOut}
    />
  )
};

code not tested

Question is do we have to include such a component into the lib? I'm not sure, what do you think?
And this PR: #164  should possibly ease the process.

Haven't tested it but I think might work... It separates all properties into stateProps and then merges them depending on state.
const update = (eventFunc, event, stateFunc, state) => {
  if (eventFunc) eventFunc(event);
  stateFunc(state);
};

const statePattern = /^(hover|active|)/;
const lowerCaseFirstLetter = str => str[0].toLowerCase() + str.slice(1);

const InteractiveSprite = (props) => {
  const [hover, setHover] = useState(false);
  const [active, setActive] = useState(false);

  const refProps = useRef();
  refProps.current = props;

  const handleProps = useMemo(() => ({
    pointerover: e => update(refProps.current.pointerover, e, setHover, true),
    pointerout: e => update(refProps.current.pointerout, e, setHover, false),
    pointerdown: e => update(refProps.current.pointerdown, e, setActive, true),
    pointerup: e => update(refProps.current.pointerup, e, setActive, false),
    pointerupoutside: e => update(refProps.current.pointerupoutside, e, setActive, false),
  }), []);

  const stateProps = Object
    .keys(props)
    .reduce((obj, key) => {
      const [match] = key.match(statePattern);
      const propName = lowerCaseFirstLetter(key.slice(match.length));
      obj[match][propName] = props[key];
    }, { '': {}, hover: {}, active: {} });

  const mergedProps = {
    ...stateProps[''],
    ...(hover && stateProps.hover),
    ...(active && stateProps.active),
  };

  return (
    <Sprite
      {...mergedProps}
      {...handleProps}
    />
  );
};
InteractiveSprite.propTypes = {
  interactive: PropTypes.bool,
};
InteractiveSprite.defaultProps = {
  interactive: true,
};

Yes that might work as well, anyhow it's fairly easy to create an interactive component. I think this should be part of your project and not to a lib like react-pixi.
I'll close this issue for now, let me know if you think otherwise.


⚠ Bofrost.de has degraded performance

In 65e608b, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1421 ms

Resolved: Bofrost.de performance has improved in e1de543.


Add czech language

Add czech language

Hi, this doesn't compile. The string confirm_album_download has a  which shouldn't be there.

I have created a new pull request, please try it now. I have no idea where was that  tag from (probably it was automatically inserted by my text editor)


Add clarification on sudo: true

The advanced example shows sudo: true but the simple example does not. Is sudo: true required for this to work?

I'm just a visitor, not even a user (yet). But I know that Travis apparently runs new projects on their new infrastructure unless they specify sudo:true. On the other hand, existing projects aparently continue on the old infrastructure unless the opt-in using sudo:false. Since travis-docker uses sudo (does it have to be that way?), it has to run on the old infrastructure, and thus the configuration setting at least doesn't hurt, and might even be required for new projects.

I agree, it looks like sudo is required but that fact is not clear from the RAEDME.

Yes, you're right, do you want to open a PR ?

Created #23. And I'd still like to know whether the sudo requirement could be avoided. From what I read about user-mode linux, it should be possible to make it run with normal user privileges. Should I open a new issue asking about this as a feature?

@gagern, yes you can open a new issue, I will try to play with a full user-mode version with /var/lib/docker in /home etc


The number of connections in the prisma connection pool suddenly decreased

Bug description
Through the monitoring system, it was found that the connections in the prisma connection pool would be closed suddenly, resulting in a timeout of fetching the connection, prompting Timed out fetching a new connection from the connection pool.
See closing links via netstat

The monitoring system prompts that the number of connections suddenly decreases

Query latency p95 is very high: ~30s

How to reproduce

Expected behavior
No response
Prisma information

// Add your schema.prisma
generator client {
  provider        = "prisma-client-js"
  output          = "./client"
  previewFeatures = ["metrics"]
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

export const prismaClient = new PrismaClient({
  log: [
    {
      emit: 'event',
      level: 'query',
    },
    {
      emit: 'stdout',
      level: 'error',
    },
    {
      emit: 'stdout',
      level: 'info',
    },
    {
      emit: 'stdout',
      level: 'warn',
    },
  ],
});

const queryTimeout = process.env.QUERY_TIMEOUT
  ? parseInt(process.env.QUERY_TIMEOUT, 10)
  : 500;
prismaClient.$on('query', e => {
  if (e.duration < queryTimeout) return;
  OrmLogger.info(
    `orm operation exceed time limit(${queryTimeout}ms)`,
    'orm-timeout',
    {
      query: e.query,
      params: e.params,
      duration: e.duration,
    }
  );
});

Environment & setup

OS: CentOS
Database: PostgreSQL
Node.js version: v20.12.1

Prisma Version
5.12.1

Hi, we can't reproduce this issue with the information given so far.
Can you please share a self-contained repository with instructions on how to reproduce this? Thanks.

Hi @jkomyno ,
I've created a self-contained repository that demonstrates the issue: https://github.com/youxq/prisma-connection-test
Please follow the instructions in the README.md to reproduce the issue. Let me know if you need any further assistance.
Thank you!


[request]  V831  and V833 support

Hi, I was wondering if there is a possiblity to support these SOCs?
http://www.sochip.com.cn/v831/index.php?title=What_is_V831_%3F
Dev board:
https://www.seeedstudio.com/Sipeed-MAIX-Dock-p-4815.html

Never mind. 64MB DDR2. Never going to work :)


Enable custom icon elements in drawer items, make drawer header fixed

Drawer/Section change is pretty straightforward, since icon is fed into a ListItem as the leftElement, and ListItem leftElement supports a custom element, the icon should too, I guess.
Drawer/Drawer - looking at the Gmail app, the Header section is fixed (does not scroll) - this contradicts https://material.io/guidelines/patterns/navigation-drawer.html#navigation-drawer-content, where it says "The navigation drawer scrolls in the same way a view scrolls.". However, I think the Gmail app behaviour is more intuitive. The change is a bit trivial, as it always assumes the first item would be the header, which is not a must, but should suffice in most cases...

@sraka1 Hey, thank you for support .. anyway, could we do it with prop? Sth like staticHeader: true ... which will be set to false by default ...


Allocation cleanup

Why this PR?
We noticed we were allocating a lot of memory in v4 compared to v3. This PR resolves many instances of extra allocations or memory and resolves some issues that existed in v3 as well.
Now- the allocations are just the EvaluationEvent object (which could be improved more for the boolean and missing defintion case), async closures, and enumerators only when needed.
Additionally-

Resolves some spelling issues
Adds a pull request template
Bumps vulnerable packages in examples and test projects

Visible Changes
No changes are visible to developers using the library. They may notice allocation wins.

@avanigupta @zhiyuanliang-ms @zhenlan This is blocking v4 release If you have time to review!

@rossgrambo Could please explain why storing task in the dictionary can save memory?

The single line that caused a developer to write in was:
return Task.FromResult(
                _definitions.GetOrAdd(
                    featureName,
                    (_) => GetMicrosoftSchemaFeatureDefinition(featureName) ?? GetDotnetSchemaFeatureDefinition(featureName)));

The problem with this function is that the lambda/delegate/func syntax of:
(_) => ...

Creates a Func. Although it's not called in the case we hit the cache- it still allocates memory for the func every time this line is hit. This is because it happens before the GetOrAdd method is called actually called, as the parameters are resolved first before the method can be called.
This line also uses Task.FromResult. This creates a unique Task object on each request- even when the item is found in cache. By adjusting the cache to include the Task, we're able to keep a 1:1 relationship between Task and FeatureDefinition- rather than a 1:1 between Task and number of called to IsEnabledAsync().

Discussed offline with @rossgrambo, this PR looks good to me.

Most benchmarking was done in VS- but it doesn't have a great way to compare. BenchmarkDotNet does! Here's the result (4.0.0/4.9999.9999 includes these changes):

Ran test again using .net8 (previous screenshot was .net6). This version is actually the most performant when using .net 8.


Create Icon and diferent size HD images for the Logo

[x] Create Icon with background
[x] Create 250x250px with colored background
[x] Create 250x250px without background
[x] Create 500x500px with colored background
[x] Create 500x500px without background

This needs no new branch neither does for a pull request, changes can be directly merged into main from dev

Here are the files, the .ico file is not supported here, so I will be sending it to you shortly

Here are the files
flor_de_linha_logos.zip

Ok, they have now been added to the assets and applied to where we wanted. They are stored so we can use them at will later.
Still to merge into main, but will close this Issue, as it will be merged together with #4


Refactoring  and cleaning up renderd filed mapping. Created common me…

Refactoring  and cleaning up renderd filed mapping. Created common method to check if field exists.

Do not merge yet, found 1 bug


Ukraine

Please, could you add Ukraine?

Sorry but right now I don't have time to work on this project, but I'll resume my work in mid September. Then I'll definitely add Ukraine :)

@Kytsiuk Map of Ukraine is Live.


[#114188075] Fix triggers and serial in deploy-cloudfoundry pipeline

What
Fix triggers in deploy-cloudfoundry pipeline
We have noticed that pipeline triggering mechanism is not consistent
across deploy pipeline and that terraform job is not triggering
generate-cf-certs job. In this commit we add pipeline-trigger semver
resource across entire pipeline to fix this problem.
Please note that this update has a side effect of triggering every job
that received pipeline-trigger during pipeline upload. It will happen
only for the first time. New trigger
resource is checking for new version and finds it in 'init' job so it
starts.
Serialize generate-cf-certs to prevent parallel runs
We have noticed that generate-cf-certs is missing serial groups
parameter that ensures serial execution of jobs in 'deploy' group. That
caused generate-cf-certs job to run in parallel with other jobs in some
edge case circumstances.
How to review

Ensure that you have a Deployer Concourse and have run the create-microbosh pipeline before.

Checkout this branch:
 git checkout 114188075_fix_deploy_pipeline_trigger

Deploy the pipeline changes from the branch:
 BRANCH=$(git rev-parse --abbrev-ref HEAD) ./concourse/scripts/pipelines-cloudfoundry.sh

Note that some of the jobs may have triggered automatically per the commit message.

Start the init job in the deploy-cloudfoundry pipeline and check that all of the jobs run.

Repeat the last step again.

Who can review
Not @combor or @dcarley.

LGTM


✅ resizing one layer to the size of another, and ambiguity in rescale function meaning

Description of the to-do item
As far as I can tell, there is not a function to take a raster and change its resolution to match the dimensions of a target raster. Doing this would be straightforward by iterating over the longitudes(a), latitudes(a) in the smaller raster and then access the values of the other raster at that coord, and have the getindex(b::SimpleSDMLayer, lat, long) handle that conversion.
When trying to do this I found rescale(layer1::T, layer2::T) where {T <: SimpleSDMLayer},which scales the values of a given raster to match a target, but not dimensions. To avoid this semantic ambiguity, perhaps the method rescale could rescale both values and dimensions by default with kw arguments to turn either off

I'm pretty sure this has been discussed as a thing ArchGDAL needs already, so a PR would probably be appreciated.

Here's the code I'm using for a project where we need to do this:
function coerce(template::TT, source::TS, f) where {TS<:SimpleSDMLayer,TT<:SimpleSDMLayer}
    coerced = similar(template)
    for k in keys(template)
        coerced[k] = f(clip(source, k .- stride(template), k .+ stride(template)))
    end
    return coerced
end

There are a few possible adjustments to make, but I wouldn't be opposed to adding this to a new release.


[Bug] Image field missing prefix inside repeatable

Bug report
What I did
I created an image field inside repeatable. The image field contains prefix, as I manually save the image from the json data and store only the image name in the database as part the data. All this is in an extras column, because this whole form is used inside a page template.
CRUD::addField([
    'name' => 'services',
    'label' => 'Services',
    'type' => 'repeatable',
    'fake' => true,
    'store_in' => 'extras',
    'fields' => [
        [
            'name' => 'title',
            'type' => 'text',
            'label' => 'Title',
        ],
        [
            'name' => 'image_name',
            'type' => 'image',
            'label' => 'Image',
            'prefix' => 'uploads/services/',
        ],
    ],

    'new_item_label' => 'Add service',
]);

What I expected to happen
I expect that the actual image shows.
What happened
The image is not displaying, as the image src contains only the image name and not the prefix.
Some insight
The repeatable.blade.php fields use
$(this).val(values[$(this).data('repeatable-input-name')]);

to set the value of the input field that later populate the image src.
Additionally, image.blade.php field prepends the prefix on the value:
// if value isn't a base 64 image, generate URL
if($value && !preg_match('/^data\:image\//', $value)) {
    // make sure to append prefix once to value
    $value = Str::start($value, $field['prefix']);

    // generate URL
    $value = $field['disk']
        ? getDiskUrl($field['disk'], $value)
        : url($value);
}

but the value is not set here yet, it is later set through JS.
So because of these two the prefix cannot be applied on the image field.
The only workaround for the moment is to put the prefix as part of the image name. I cannot think of a clean solution to prepend the prefix from the repeatable field, without making it very specific.

Hey @o15a3d4l11s2
Sorry for taking some time to come back here.
I'v thinkered a bit on how to make it work, I think if we make it more general, we can fix it in repeatable.
That said, i'v submitted PR #3538 , it's open for discussion on what's the best way to deal with this. You are very welcome to give your inputs there, we really appreciate user feedback.
Going to close this so we don't spare the conversation.
Thanks for finding the issue and taking time to report it.
Best,
Pedro


initialize nodeSelectorFunc when --manage-nodes-with-label-selector is set

What type of PR is this?
/kind bug

What this PR does / why we need it:
The reason why #346 happened is that kwok doesn't initialize nodeSelectorFunc when --manage-nodes-with-label-selector is set, this PR will initialize nodeSelectorFunc to fix it.
Which issue(s) this PR fixes:

Fixes #346
Special notes for your reviewer:
Kwok doesn't initializes nodeSelectorFunc when --manage-nodes-with-label-selector is set, so node_controller.go#L170 causes nil point panic.
Does this PR introduce a user-facing change?

Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.:

it's okay, squash commits. and can we have a test cover this change?

/ok-to-test

it's okay, squash commits. and can we have a test cover this change?

Thanks for your work, I add an unit  test to cover this change.

I have resolved your comment. @wzshiming

/approve
/lgtm
Thank you for your contribution


failureWorkflow doesn't run when a TERMINATE task failed the workflow

I noticed that when I had a task fail out - either FAILED or FAILED_WITH_TERMINAL_ERROR, my configured failureWorkflow would be started.
However, when I terminated the workflow with a TERMINATE system task, and set the terminationStatus to FAILED, my failure workflow isn't scheduled.
Is this expected?

Hello @kyle--lee,
I'm not fully aware of the details of this failureWorkflow feature, but for the TERMINATE task, the implementation only changes the wokflow status and it's output, then the decider service takes care of the rest. From a quick check here the failureWorkflow is referenced in terminateWorkflow method and I'm not sure this method is being called.

Hi @kyle--lee Thanks for flagging this and bringing this to our attention.
@Ismaley thanks for the quick check.
I have tagged this as a bug and we will roll out a fix for this soon. In the meantime, if you can contribute a fix for this issue, we would welcome that too :)

HI is the fix rolled out for this? As of today the bug is still there. Since TERMINATE task ends the workflow abruptly, it has to trigger the failure workflow.

@krishnaputhran We have yet to resolve this issue, but we can try to prioritize this. In the meantime, please feel free to contribute a fix for this if you have some cycles to spare.

Sure will see, if i'll see if I can. Thanks for the response

Fixed in #1759


not working

installed this as directed but when set nothing happens it just auto attacks no matter what job im on am i missing something ?

does the gui show up in game?

yes that shows up i select to run for the job im on but nothing happens it just stands there auto attacking with reaction attacks only this is the same for what ever job i go on but main jobs i run are PLD, BRD, NIN, MCH

sorted the problem turns out for some reason Tensorcore had been removed yet i didnt remove it.


[Bug] Cookie value depends on login request that fails due to no cookie value

Simple issue. I have 2 chained requests

POST /login
GET /whatever

From POST /login I receive a token that is set as cookie value for authentication (using response body attribute).
The problem is that when requesting /login the first time (when no history exists) then IDE gives an error that the request cookie value (authentication token) can't be read (because /login has never been requested).
So I'm unable to request the endpoint that should fill the cookie value.
The error

Things tested:

Disabling "Send cookies automatically" for login request doesn't remove the problem
Removing the cookie, making /login request and setting the cookie back will do the job. But obviously it's not a good solution.

Insomnia Version: 6.6.2
Operating System: Ubuntu 18.04

Any thoughts on ths?

Still a problem
cc @gschier

I'm not understanding what you are trying to do. Can you provide full requests as an example? Screenshots are fine

I have a REST API that authenticates requests via Cookie (not custom HTTP Header). There are 2 requests:
POST /sessions - returns a session_id that should be set to cookie
GET /sessions - retrieves the session object based on session_id (session_id is sent to server via cookie).
Problem is that if POST /sessions hasn't been called before then the cookie response value is invalid
Cookie value response

Cookie configuration:
If POST /sessions has never been called (history is empty) then it shows that cookie value "Response" is invalid and I'm not able to do POST /sessions, because it says cookie value is invalid (the screenshot in the original post)

If I remove the cookie, call POST /sessions and then re-apply the cookie then it shows a valid "Response" as value and both POST and GET /sessions work as expected

I hope this helps understand the issue :)


Guidance for console apps unclear

This page has a sister page that shows right above it, and that page contains guidance for ".NET Core/.NET Framework console application":
https://learn.microsoft.com/en-us/azure/azure-monitor/app/worker-service#net-corenet-framework-console-application
It's unclear which guidance should be applied for a console application. Both headings claim to offer that; but their guidance is completely different.
It might make sense to have a matrix explaining the differences between the differences guidances (nuget packages, classes, etc).

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: b189efce-ce4e-f8f8-ecf8-8803a18f9b65
Version Independent ID: aec54012-dae3-ce18-0f8c-30749c46a79c
Content: Application Insights for console applications - Azure Monitor
Content Source: articles/azure-monitor/app/console.md
Service: azure-monitor
Sub-service: application-insights
GitHub Login: @AaronMaxwell
Microsoft Alias: aaronmax

@apilosofms
Thanks for your feedback! We will investigate and update as appropriate.

@apilosofms, thank you for the feedback.
The link - Application Insights for .NET console applications is the legacy way of configuring the AppInsights for .NET console applications. The first Note section in this doc mentions that:
We recommend using the newer Microsoft.ApplicationInsights.WorkerService package and associated instructions from Application Insights for Worker Service applications (non-HTTP applications) for any console applications. This package is compatible with Long Term Support (LTS) versions of .NET Core and .NET Framework or higher.
While this legacy mode would work, the recommendation is to use newer method Application Insights for Worker Service applications (non-HTTP applications). This doc covers both - .NET Framework as well as .NET Core/.NET versions.
Hope it helps. Please let me know if you have any questions.

Thanks Anurag. While I did read that part, I guess I didn't quite understand the implication.
If I may offer a suggestion: Prefix that blub with "This document is outdated...", or use a phrase such as "... instead of what's explained in this document...", etc.
Thanks for the quick response!


Support Laravel 5.6

Thanks!
It looks like you forgot to run the tests.

phpunit needs to be updated to version ~7.0,
testbench to 3.6.*
php ^7.1.3

Also in the .travis.yml file removing the 7.0 version, and possibly adding 7.2


feat(bootstrap-4): checkboxWidget

Reasons for making this change
Fixes https://github.com/MLH-Fellowship/react-jsonschema-form/issues/9
Waiting for https://github.com/MLH-Fellowship/react-jsonschema-form/pull/29, https://github.com/MLH-Fellowship/react-jsonschema-form/pull/37
If this is related to existing tickets, include links to them as well.
Checklist

[ ] I'm updating documentation

[ ] I've checked the rendering of the Markdown text I've added

[ ] I'm adding or updating code

[x] I've added and/or updated tests
[ ] I've updated docs if needed

[x] I'm adding a new feature

[x] I've updated the playground with an example use of the feature

I have noted the suggestion here https://github.com/MLH-Fellowship/react-jsonschema-form/issues/74


pioasm: 1.5.1 -> 2.0.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/raspberrypi/pico-sdk/releases.
meta.description for pioasm is: Assemble PIO programs for Raspberry Pi Pico
meta.homepage for pioasm is: https://github.com/raspberrypi/pico-sdk
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.0.0 in filename of file in /nix/store/v462qgvifvniwyn9aa47ra8xfda9f0a7-pioasm-2.0.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

pioasm

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/v462qgvifvniwyn9aa47ra8xfda9f0a7-pioasm-2.0.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A pioasm https://github.com/r-ryantm/nixpkgs/archive/368126fe2262fbc9850fd6860277501bec7b481c.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/368126fe2262fbc9850fd6860277501bec7b481c#pioasm

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/v462qgvifvniwyn9aa47ra8xfda9f0a7-pioasm-2.0.0
ls -la /nix/store/v462qgvifvniwyn9aa47ra8xfda9f0a7-pioasm-2.0.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

pioasm

Maintainer pings
cc @emilytrau for testing.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 333344 run on aarch64-darwin 1

1 package built:

pioasm


no function after updating from 0.11 to 0.20

System Health details
System Information

version
core-2024.10.0

installation_type
Home Assistant OS

dev
false

hassio
true

docker
true

user
root

virtualenv
false

python_version
3.12.4

os_name
Linux

os_version
6.6.46-haos

arch
x86_64

timezone
Europe/Berlin

config_dir
/config

Home Assistant Community Store

GitHub API
ok

GitHub Content
ok

GitHub Web
ok

HACS Data
ok

GitHub API Calls Remaining
5000

Installed Version
2.0.1

Stage
running

Available Repositories
1430

Downloaded Repositories
10

Home Assistant Cloud

logged_in
false

can_reach_cert_server
ok

can_reach_cloud_auth
ok

can_reach_cloud
ok

Home Assistant Supervisor

host_os
Home Assistant OS 13.1

update_channel
stable

supervisor_version
supervisor-2024.09.1

agent_version
1.6.0

docker_version
26.1.4

disk_total
62.3 GB

disk_used
31.4 GB

healthy
true

supported
true

host_connectivity
true

supervisor_connectivity
false

ntp_synchronized
true

virtualization
kvm

board
ova

supervisor_api
ok

version_api
ok

installed_addons
Studio Code Server (5.16.3), Terminal & SSH (9.15.0), UniFi Network Application (3.3.0), Mosquitto broker (6.4.1), File editor (5.8.0), MariaDB (2.7.1), phpMyAdmin (0.10.0), ESPHome (2024.9.2)

Dashboards

dashboards
5

resources
7

views
23

mode
storage

Recorder

oldest_recorder_run
23. September 2024 um 07:52

current_recorder_run
3. Oktober 2024 um 15:50

estimated_db_size
2085.11 MiB

database_engine
mysql

database_version
10.11.6

Checklist

[X] I have enabled debug logging for my installation.
[X] I have filled out the issue template to the best of my ability.
[X] This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
[X] This issue is not a duplicate issue of any previous issues..

Describe the issue
After updateing from 0.11 to 0.20 the integration stopped working: Error in configuration.

searched for backups. But this update didn' create one.
deleted from HACS and reloaded 0.11 from HACS
Lead to error "Der Konfigurationsfluss konnte nicht geladen werden: 500 Internal Server Error Server got itself in trouble"
tried 0.20 again, same error
searched for configuration data to manually delete them - not found in file system
Of course many reboots were done. It now ends with having no Grünbeck integration at all.

-> search for a way to totally reset all data for the Grünbeck Cloud integration
-> please find the bug that made the integration dysfunctional
-> maybe the integration can create a backup when being updated?
Reproduction steps

see above

...
Debug logs
These logs are collected during my several tries to get the integration working again:

Logger: homeassistant.util.package
Quelle: util/package.py:150
Erstmals aufgetreten: 15:50:38 (3 Vorkommnisse)
Zuletzt protokolliert: 15:50:39

Unable to install package pygruenbeck_cloud==0.1.0: × No solution found when resolving dependencies: ╰─▶ Because pygruenbeck-cloud==0.1.0 depends on yarl>=1.9.4,<1.10.dev0 and yarl==1.13.1, we can conclude that pygruenbeck-cloud==0.1.0 cannot be used. And because you require pygruenbeck-cloud==0.1.0, we can conclude that your requirements are unsatisfiable.

Logger: aiohttp.server
Quelle: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:448
Erstmals aufgetreten: 15:50:39 (1 Vorkommnisse)
Zuletzt protokolliert: 15:50:39

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 477, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 559, in _handle
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 210, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 85, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper
    return await method(view, request, data, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 172, in post
    return await self._post_impl(request, data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 179, in _post_impl
    return await super()._post_impl(request, data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 84, in _post_impl
    result = await self._flow_mgr.async_init(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1287, in async_init
    flow, result = await self._async_init(flow_id, handler, context, data)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1312, in _async_init
    flow = await self.async_create_flow(handler, context=context, data=data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1499, in async_create_flow
    handler = await _async_get_flow_handler(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2959, in _async_get_flow_handler
    await _load_integration(hass, domain, hass_config)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2936, in _load_integration
    await async_process_deps_reqs(hass, hass_config, integration)
  File "/usr/src/homeassistant/homeassistant/setup.py", line 575, in async_process_deps_reqs
    await requirements.async_get_integration_with_requirements(
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 54, in async_get_integration_with_requirements
    return await manager.async_get_integration_with_requirements(domain)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 170, in async_get_integration_with_requirements
    await future
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 159, in async_get_integration_with_requirements
    await self._async_process_integration(integration, done)
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 182, in _async_process_integration
    await self.async_process_requirements(
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 269, in async_process_requirements
    await self._async_process_requirements(name, missing)
  File "/usr/src/homeassistant/homeassistant/requirements.py", line 307, in _async_process_requirements
    raise RequirementsNotFound(name, list(failures))
homeassistant.requirements.RequirementsNotFound: Requirements for gruenbeck_cloud not found: ['pygruenbeck_cloud==0.1.0'].

Diagnostics dump
cannot provide diagnostics because integration no longer apears in integration panel:
Fehler

Der Konfigurationsfluss konnte nicht geladen werden: 500 Internal Server Error Server got itself in trouble

This is duplicated with issue #129, it is fixed in the new version 1.0.0 which I try to release this week.

Can confirm this: after updating to beta 1.000 the integration could be installed again. The device could be reactivated and I got things back running.
Thanks a lot!


Bug 1263233 - Issues in guided dtable analysis - ConditionInspectors

Bug 1264746 - jboss-bpmsuite-example: GDT editor reporting impossible matches in "Mortgage Calculation"
(cherry picked from commit fa99c8a18fbf3154cb01f94051373b0f993c8fbd)
The fix for BZ-1263233 fixes BZ-1264746. Cherry-picked the commit as it was to 6.3.x.

+1 to merge.

Thanks!
6.3.x: f9bcdc54467e8d4572cb08853118dc4d6bc106d3


Ingest Program Level KPIs

"AC:
Ingest below datasets

Ohio Fuel Prices
MORPC Traffic Counts (AADT)
MORPC Turning Movement Counts (TMC)
ODOT AADT
ODOT Construction Activities
** Current
** Last 4 years
** Next 4 years
Weather Data
Traffic Incidents (ODOT-GCAT Crashes/Incidents)

Notes:

Created S3 bucket in scos-alm under the name [scos-alm-ckan-csv-backup|https://s3.console.aws.amazon.com/s3/buckets/scos-alm-ckan-csv-backup/?region=us-east-2&tab=overview]  > [public] > [Program Level KPI]
Created one folder for each dataset and its data dictionary

06-24-19: Migrated from SMRT-1397"

Moved to SCOS


Short solution needed: "How to concatenate Numpy arrays" (python-numpy)

Please help us write most modern and shortest code solution for this issue:
How to concatenate Numpy arrays (technology: python-numpy)
Fast way
Just write the code solution in the comments.
Prefered way

Create pull request with a new code file inside inbox folder.
Don't forget to use comments to make solution explained.
Link to this issue in comments of pull request.

How to concatenate Numpy arrays


Add link component

Now user interactions (clicks so far) will be handled in outer scope.
This way we can define custom logic for web components.
Current implementation will emit custom events when user clicks links
instead of changing current route

lets test to see if on link click event propagation can be stopped
facebook/react#9242 (comment)

Done, now component will call event's preventDefault.


[BESU-157] Stop processing private tx when enclave is down

When a besu node sees a private marker transaction and the enclave is down/unavailable/unreachable block processing should stop until the enclave is available again.
This will stop ALL new blocks from node processed. The node will keep retrying forever until the enclave is available again.
If the enclave becomes available but does not contain the expected data (i.e the enclave has lost data) then the privacy group may have an inconsistent state.
Signed-off-by: Antony Denyer<EMAIL_ADDRESS>

I noticed that the http response codes from Orion are not correct
@antonydenyer could you be more specific? What response code exactly is wrong?


Authorization code flow keeps prompting consent screen users

Summary
I'm using the authorization code flow as the sign in method in my Angular web app and i'm finding that after every login, the consent screen is always shown, no matter if it is the Nth sign in attempt of a same user.
According to the google documentation, I understand that this consent screen should only appear once per user (After the first token request).
Expected Behavior
The consent screen should only appear once per user.
Actual Behavior
The consent screen is appearing every time while signing in.
Code (Simplified sample)
var googleClient

function initGoogle(): void {

googleClient = google['accounts'].oauth2.initCodeClient({
          client_id: 'XXX',
          ux_mode: 'popup',
          scope:
            'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email',
          callback: ({ code }) => {
            myAuthCodeHandler(code);
          },
        });

}

function triggerAuthorizationFlow(): void {

googleClient.requestCode();

}

And I'm importing the google gsi client at my head tag:
<script src="https://accounts.google.com/gsi/client" async defer></script>
Does anybody is having the same issue? I need to keep using the authorization code flow but with the expected beehaviour mentioned above.
Thanks

experiencing the same thing


Cloud mode is not working - error 403

Recently I upgraded my printers and moved to using clode mode but unfortunatly this doesn't work.
I have tried using option 1 with the login information and option 2 with the token. In the docker log i'm seeing this error
2024-11-27 08:47:48 Caused by: java.lang.RuntimeException: java.lang.RuntimeException: org.jboss.resteasy.reactive.ClientWebApplicationException: Received: 'Forbidden, status code 403' when invoking REST Client method: 'com.tfyre.bambu.CloudApi#login'
What could this be?

I get the same Error. It all worked perfectly for some weeks

I get the same Error. It all worked perfectly for some weeks
Edit: Switching from user credentials to token fixed it for me

Hello. How you get this token. I tryied bambulab.com and makerworld for getting token from cookies, but this don't work for me. JWT decode don't work for me tokens from this sites


Direct window interaction

I saw on Vimlark stream the other the ability to "drop bombs" on the overlay. I don't exactly know how it works but I guess we could simply interact directly with the mouse on the overlay. Some ideas:

Dropping bombs
Moving the characters
Adding enemies

Finished in https://github.com/MrEliptik/godot_stream_overlays/pull/24
No enemies for now, it should be another issue


Support for multiple output formats

Since we are in feature freeze PR will go to a separate branch for now.
After some discussion, we decided that will be nice to support multiple report output formats: json, html, maybe pdf in future etc.
This PR introduces 3 things:

Improvement of writing report to json file.
Our current process of writing report to json file creates a json file before the transforms starts and then opens the file and appends a new report for every config part we have, this means the json file is opened, unmarshalled, marshalled a lot of times.
I refactored this part, now all reports are collected and final report is passed to output function, report json is created only in case when report format is set to json and file is opened only once.

Adds support for multiple output formats.
I added new package reportoutput. This package is responsible for different output formats. It is scalable and has very simple structure.

Initial steps on HTML report.
html.go in reportoutput will be handling html report format. It is using go templates and inspired by go cover tool - https://github.com/golang/tools/blob/master/cmd/cover/html.go#L195

I added a big commit with CI fix. If PR is big for review at once, you can review it by commits.

Closes https://github.com/fusor/cpma/pull/343


Preparing Illumina exome target file

Hi!
Thanks for the great pipeline!
When calling variants with exome data, to have a proper coverage report
it is necessary to provide the bed file with coordinates of exons.
I've downloaded it from the Illumina site. However it requires some parsing before run.  Exome variant calling with Illumina seems to be the frequent use case, maybe it is worth to include this into the docs if not to the data bundle? Otherwise the workflow for the new user may turn to be:

run with default bed;
fix chr issue and re-run;
fix MT issue and re-run;
delete bed_prep directory and re-run.

wget http://support.illumina.com/content/dam/illumina-support/documents/documentation/chemistry_documentation/samplepreps_nextera/nexterarapidcapture/nexterarapidcapture_exome_targetedregions_v1.2.bed
cat nexterarapidcapture_exome_targetedregions_v1.2.bed | sed s/chr//g | sed s/M/MT/g > nexterarapidcapture_exome_targetedregions_v1.2.no_chr.MT.bed
Best,
SN

Thanks much for the helpful feedback. It's so helpful to have suggestions for improving the documentation. I added a section on using sed and awk to remap coordinates using an approach from @roryk that also handles the haplotype chromosomes:
http://bcbio-nextgen.readthedocs.org/en/latest/contents/configuration.html#input-file-preparation
Thank you again.


Protect multiple RSA requesters from each other

If two ReactServerAgent requests are made to a given endpoint only one upstream http request is actually issued, and the result is provided to both requesters.  Previously this result was passed by reference, so mutations by one requester interfered with the data for others.
This patch provides a fresh deep copy to each requester.
This has the unfortunate side effect of introducing a deep copy in the browser where we previously thought we could get away without one.  It's a minor perf hit, but it's important for data integrity.

Rather than pass a different mutable copy to each requester, why not pass a single immutable reference to each requester?

@doug-wade How would that work?

If we were willing to add a library for immutability, it'd be really simple
const Immutable = import("immutable");
...
this.dfd.resolve(Immutable.map(res));

If instead we wanted to roll our own, we could do a recursive freeze:
this.dfd.resolve(deepFreeze(res));

function deepFreeze (o) {
  Object.freeze(o);

  Object.keys(o).forEach((prop) => {
    if (typeof o[prop] === "object") {
      deepFreeze(o[prop]);
    }
  });

  return o;
}

@doug-wade I see.  That would be a pretty big breaking change.
Worth discussing, but I'd still like to get a fix for the bug out in the meanwhile. 🐛

Seems like there's more work and it's failing the tests.  Should I close the PR for now?

It's not dead yet!  It could pull through!

don't we need to parse the JSON in both the if and else blocks?

Good call.  Done.

should we do the same thing for error responses

I don't think so, actually.  Error responses are less likely to be mutated, and their handling is out of band.

adding some tests

The coverage here was already pretty good (thanks @roblg), so I just modified existing tests to verify that values are deeply equal, but not references.
So... how about it? 😁


[Build/CodeClean] std headers

Code clean, it is recommended to not use stddef for NDK build, use stdlib instead.
Signed-off-by: Jaeyun<EMAIL_ADDRESS>

:memo: TAOS-CI Version: 1.5.20200925. Thank you for submitting PR #108. Please a submit 1commit/1PR (one commit per one PR) policy to get comments quickly from reviewers. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://nnstreamer.mooo.com/.


fix(tests): remove Accept-Charset from tests

Signed-off-by: Felipe Zipitria<EMAIL_ADDRESS>
removed Accept-Charset from tests.
some other whitespace changes are there, mainly because of yq processing.

Command used: yq e -i 'with(.tests.[].stages[0].stage.input.headers; del(.Accept-Charset) )' $file
Fixes #2779.

Thank you.

There are a of reformattings in this PR and event 1-2 regular expression changes (-> Infamous backslash cleanup).
Please check.

Ok, thanks for the review. Regarding reformatting, you can use the 'hide whitespace change' and it will help. Reverted that other change made to \x5c.

There are couple of new headers: {}. Do we need that?
Otherwise it looks good now.

I think the tool finds out that headers are being used in every other file and that's why it adds them. Removed anyway. Ready to merge.

Thank you. Merging now.

Great fix. I wanted to doublecheck that one Accept-Charset is remaining in 920450.yaml where we actively test for it. And it was there. Great eye for detail!


testing protocol

need one. should do a comparison of hydraulic and quality results with canonical version. probably need a binary parser to do this.

note that the text out file has a time stamp so md5 checks are problematic.

I think we would need to have a more advanced testing mechanism, which checks all the functions separately, the sets/gets, on different platforms (x64, x86 etc). Also something which we should not overlook is the connection with the EPANET-MSX, making sure that the latest EPANET version is compatible.
Together with Marios Kyriakou (@mariosmsk) we have developed such a code in Matlab which uses the DLL. You can run with it all the functions, and it also reads the binary output file and can parse the INP file. I think it would be easy to port this in Python at some point if needed. In any case, we'll try to improve it a bit in order to release it on github, and we can improve it further as needed.

i think i've seen automated python frameworks that do testing for you -- i wonder if we can integrate with something out-of-the-box.
in general, i see the need for two levels of testing: unit tests and regression tests. the regression tests would arguable be simpler, and would just track any significant changes to hydraulic and quality solutions between software versions - this could be handled by your ( @eldemet )  hydraulic binary file parser, or by running the analysis through toolkit functions and tracking/comparing results in memory.
unit testing will require some more internal tweaks to accommodate the granularity one would expect. this should definitely be on the roadmap, but maybe not as high-urgency.

With regards to unit testing It might be safer to do this from C (list of C testing frameworks) and test Python/Matlab bindings separately.
Also, a nice goal would be automated testing using a continuous integration service (e.g. travis), with a test suite status widget displayed on GH (by including it in README.md).

@willfurnass excellent. do you have any experience with travisCI?

@samhatchett Encountered it for the first time recently.  Not experienced but happy to try setting it up once we've got a basic test suite.

Has there been any action on this? I have some code that provides a convenient API for reading the binary output file that may come in handy for automated testing.

nope - not yet to my knowledge. can you make your code available here?
As an initial "straw man" test, what if we just had a static binary output file generated from 2.0.12 ("known good output"), and then as the one and only test confirmed that the binary output from the dev version matches this standard? This would just be the first step in getting better testing.
That's the way the Kilogram used to work - there was a canonical Kilogram that you would go to and weigh against your "new kilogram" to make sure that what you have is still a kilogram.

@samhatchett how do you determine if the two output files "matches"?
First, output files would always have the same size even if the numbers are totally different. Second, I think looking at hashes would also won't work since we already saw some small differences between the versions (after 4 decimal places).
I think we should compare the results "number by number". @eldemet what kind of comparison are you doing with your Matlab tool?

Hi @eladsal we are doing a full comparison of all the elements and functions, comparing two versions of epanet (e.g. 2.00.12 with any other). We can also read from the Binaries, but we also check the run-time results. We plan to release an open-source tool for this on github. We also examine multiple epanet benchmarks, with different quality, rules, controls etc.
So at the moment it just returns a flag if the output is different by doing a function-by-function comparison.
Also note that, in some cases, results will be different. For instance, corrections in the tank diameters may affect quality.
We can compile the code as an executable (so that matlab is not a requirement), or we can do this in Python (however we do have this running in matlab, so it's easier :-) ).
@eladsal, @samhatchett, if we release this tool, what would be a convenient use case? What would be a desired output? A report with the differences?

I was suggesting using Michael's binary parser to compare.

On Dec 2, 2015, at 2:04 AM, Elad Salomons<EMAIL_ADDRESS>wrote:
@samhatchett how do you determine if the two output files "matches"?
First, output files would always have the same size even if the numbers are totally different. Second, I think looking at hashes would also won't work since we already saw some small differences between the versions (after 4 decimal places).
I think we should compare the results "number by number". @eldemet what kind of comparison are you doing with your Matlab tool?
—
Reply to this email directly or view it on GitHub.

I haven’t looked at Michael’s binary format API but, for example, if it allows access to the node- and link- element value arrays at particular time steps, then I’d say that we should do the following for saying that two files are “acceptably similar"

check that the times are identical in the two candidates, for every step
if X1 and X2 are the two solution arrays, do a computation of min( — log10( abs( X1 - X2 ) ) ) and require it to be >= minNumberCorrectDigits

Where we’d specify the value of minNumberCorrectDigits to be, say, 5?

On Dec 2, 2015, at 5:57 AM, Sam Hatchett<EMAIL_ADDRESS>wrote:
I was suggesting using Michael's binary parser to compare.

On Dec 2, 2015, at 2:04 AM, Elad Salomons<EMAIL_ADDRESS>wrote:
@samhatchett how do you determine if the two output files "matches"?
First, output files would always have the same size even if the numbers are totally different. Second, I think looking at hashes would also won't work since we already saw some small differences between the versions (after 4 decimal places).
I think we should compare the results "number by number". @eldemet what kind of comparison are you doing with your Matlab tool?
—
Reply to this email directly or view it on GitHub.

—
Reply to this email directly or view it on GitHub https://github.com/OpenWaterAnalytics/EPANET/issues/16#issuecomment-161258620.

Nice discussion. Lots of great ideas. @samhatchett by all means I am happy to share my code. Right now it is written in C and compiles as a dll. It has about a dozen functions and offers convenient methods for getting different "slices" of data out of the binary file. My thought is that it can remain as a dll or we could eventually expand the toolkit functionality in this direction. Where do you think it belongs in the source tree?

Great, how about in the 'tools' directory in dev-2.1 - maybe a subdirectory in there.

it pains me to say it, but I think this is an important part of the 2.1 release -- what really is needed here? assuming Michael's code works, we could probably very quickly set up a Travis CI thing (like that suggested by @willfurnass ) to automatically test the output of dev versions against a known-good results file (or set of them). This would have the advantage of generating neat graphics to announce that the code passes all tests. does that sound like overkill?

@samhatchett from my perspective, this has always been on the critical path to completing 2.1. I figured regression testing could be done by wrapping the output API in Python and using a framework to drive a battery of tests.
I am interested in trying Travis CI. One question I have is how does it handle testing on different platforms? It looks like it only allows testing on OS X and Linux as a beta feature. Since the primary platform for EPANET has historically been Windows it makes sense to have the ability to test on Windows.
When you ported EPANET to OS X how extensively did you bench marked the code to determine what effect, if any, platform changes have on the computational results?

That’s a good question about TravisCI. Let’s face it, we don’t, to my knowledge, have a set of official correct answers for a valid set of test problems. And so I’ve never heard of anyone talking about differences on Linux/OS X compared to windows.
I’m assuming that we would need to start by identifying the network input files that the devcom and community thinks represent a relatively complete set of simulation options. I’ll also assume that the “correct” answers are represented by binary output files from running the published pre 2.1 EPA version, on windows. These correct answers would need to be stored in the repo somewhere, and be the gold standard. The answer to Michael’s question will then be derived for the first time, from a comparison of results produced by running the tests on whatever platform they’re running on.
I also don’t think it’s a bad thing to just use a simple Python application to process binary files against toolkit simulation results. That would certainly be simple. But I don’t know TravisCI. Maybe it brings a lot of other benefits, although I admit I’d be a little concerned about the “CI” part, mainly because I’m suspicious about imposing that overhead. But maybe it is really transparent.

On Dec 4, 2015, at 9:31 AM, Michael Tryby<EMAIL_ADDRESS>wrote:
@samhatchett https://github.com/samhatchett from my perspective, this has always been on the critical path to completing 2.1. I figured regression testing could be done by wrapping the output API in Python and using a framework to drive a battery of tests.
I am interested in trying Travis CI. One question I have is how does it handle testing on different platforms? It looks like it only allows testing on OS X and Linux as a beta feature. Since the primary platform for EPANET has historically been Windows it makes sense to have the ability to test on Windows.
When you ported EPANET to OS X how extensively did you bench marked the code to determine what effect, if any, platform changes have on the computational results?
—
Reply to this email directly or view it on GitHub https://github.com/OpenWaterAnalytics/EPANET/issues/16#issuecomment-161980693.

my understanding is that Travis can be pretty easy, and in fact can do exactly what you describe. It just runs a configurable set of scripts whenever there's a push to the repo, and gives you some feedback on whether you broke something or not.

I am genuinely interested in trying Travis CI. I think there is a way we can have our cake and eat it too, if we write the testing code compatible with Travis CI and so that it can be run manually as well.

I have a semi-automated code that basically compares two binary output files and give an output such as this:
Links Flow max diff = 0.003601074000000000
Links Headloss max diff = 0.001220703000000000
Links Quality max diff = 0.000000000000000000
Links Velocity max diff = 0.000010627320000000
Nodes Demand max diff = 0.003601074000000000
Nodes Head max diff = 0.000061035160000000
Nodes Pressure max diff = 0.000030517580000000
Nodes Quality max diff = 0.000000000000000000

I feel pretty strongly that all comparison results should be in terms of correct decimal digits. These will be scale/unit independent.

On Dec 4, 2015, at 1:39 PM, Elad Salomons<EMAIL_ADDRESS>wrote:
I have a semi-automated code that basically compares two binary output files and give an output such as this:
Links Flow max diff = 0.003601074000000000
Links Headloss max diff = 0.001220703000000000
Links Quality max diff = 0.000000000000000000
Links Velocity max diff = 0.000010627320000000
Nodes Demand max diff = 0.003601074000000000
Nodes Head max diff = 0.000061035160000000
Nodes Pressure max diff = 0.000030517580000000
Nodes Quality max diff = 0.000000000000000000
—
Reply to this email directly or view it on GitHub.

@jamesuber here it is using min( — log10( abs( X1 - X2 ) ) ):
(a value of two means that the third decimal point is different and 100 is no difference at all)
Links Flow max diff = 2
Links Headloss max diff = 3
Links Quality max diff = 100
Links Velocity max diff = 5
Nodes Demand max diff = 2
Nodes Head max diff = 4
Nodes Pressure max diff = 5
Nodes Quality max diff = 100

@eladsal so what is your comparison code written in? What is most valuable is that you have worked through the algorithm of doing the comparison.

The code is in VB6 and runs on my Windows machine. If there is any use for it I can polish it a bit and make it public.

Output API referred to here can be found at #50.

thanks @michaeltryby, this is great. I've also generated the .travis.yml file necessary for continuous integration - the badge in README.md confirms that the dev-2.1 branch builds without errors, and not pull requests will show whether they pass tests.
take a look at the ymlfile - it just specifies scripts that should return 0 and if they don't then it fails. Many projects offload the commands to a separate tests/build-test.sh script file and call that from the .travis.yml file, which seems to make sense for more flexible testing.
soon we can add a few more lines in there for building the bin parser and using it to compare results.

@samhatchett, @eladsal  and others,
Hopefully it's ok to have more than one test functions :-)
We have prepared a code for comparing most of the EPANET functions, and comparing the results from {Net1,Net2,Net3}.inp files from the EPANET desktop application.The code can compare any two EPANET DLLs, and takes into consideration the new functions as well.
The differences are computed using the method @jamesuber proposed.
I've uploaded our Matlab-based comparison on our github repo
The resulting report file is here
We will upload a command-line executable version as soon as possible, which does not require Matlab to run.
It still needs some work to do. Note that it does not work yet when the DLLs produce different time-steps (as in the case of the BWSN benchmark Network1.inp). We'll fix this.

That's great and needed. Thanks! As long as it can be wrapped up in a .sh script this will be really helpful.

@samhatchett et al., if you are open to it, I have been working on a wrapper for the new SWMM output API in Python.  The output API for EPANET (introduced by @michaeltryby #50 ) is ultimately the same genre of functions as the one developed for SWMM.  Within a few hours I can pull together the base framework in Python to handle passing data from the output file into Python. Once complete, we can talk specifically about tolerances and what operations you would like in place for version testing and reporting. If you think this would be a more flexible approach, I would be happy to spend some time on it.

@bemcdonnell I think that would be a useful contribution.
When you think about it there are at least two different testing use cases here.
The first less stringent case would be wanting to know if the engine output has changed from the canonical version or not. Just yes it has or no it hasn't. This might be useful for Travis CI like when you fix a bug that shouldn't impact output and you are interested in identifying any unanticipated side effects of making the change.
Then the second more stringent is when you want to know exactly what results are different and by how much. This would be useful when making changes to the hydraulics engine. For example, changing the code for PRVs to improve convergence. This would be more useful as a standalone test run on the local machine as I can see going many iterations before pushing the code to a remote.
Also, as the project evolves what we decide are the set of canonical results is going to change over time. We will need to deal with this at some point down the road.

thanks @bemcdonnell !  to clarify, is your suggestion to wrap @michaeltryby's code with Python in order to do statistical comparisons, something like the following?
.bin_file ----> tryby C parser ---> bryant Python Wrapper ---> stats comparison .py script

@samhatchett yes exactly.  We have been working toward a similar version control approach on the SWMM side.  The "Bryant Python Wrapper" would be a bit more global and expose all available results in an output file and yes, that would be called by the "compare everything magically" script.
@michaeltryby's suggestion on the two-level analysis is a nice idea.  Pass/Fail for the automated testing portion.. As well, a more detailed stand alone tool to use during development.

:+1: as long as the I/O is left to the C library, I'm completely in favor!

@samhatchett, I managed to wrap all of the functions in @michaeltryby's output API. I'm and finalizing the "Bryant Python Wrapper" and adding comments (in English :) ).  This will be committed later today.  Next, I'll pull together a script to compare the *.out files. The tolerance testing will be in line with what @jamesuber mentioned above.
For purposes of automated testing, I will give the option to return a Pass/Fail.  For development, it will output a table of differences.

@bemcdonnell. Looking forward to seeing what you have come up with.
@eladsal Would you be willing to share your VB code for performing the binary file comparison? I'm sure it would be useful for us to translate and build off your ideas in addition to what @eldemet has done.

@michaeltryby sure, I'll make it more user friendly over the weekend.

@bemcdonnell cool! let's have testing scripts like this in a tests/scripts/ directory, and I guess we should find a better place for the outputapi.* files that's more integrated with the rest of the project.

Initial commit of VB6 code to perform comparison of binary output files ec04b7f.
Would anyone want the compiled EXE (don't think it should go into GH)?

@samhatchett @michaeltryby The python wrapper currently lives in pull request #52.

good discussion over on #54 - so related directly to the prototype testing protocol, once we have the script that actually does the comparison, we will need:

another .sh script to iterate through several networks and create bin files
a set of network .inp files from which to generate results
a set of "official" bin files for comparison

any volunteers wish to think about these issues and throw out a plan?

So what we are talking about here is network based regression testing. All we need is a few networks to get the ball rolling and then design the tests in such a way that its super easy to add new networks over time.
It would be super convenient, if for example, all we had to do was add a folder containing an input file, a binary file, and some meta data to a designated test directory to include a new test. As opposed to having to modify code to do so. Make sense?
Lew accumulated a large collection of networks while developing EPANET. I'm sure they could be useful. One issue is the need to anonymize them before they could be publicly distributed as part of a test suite.

On Dec 15, 2015, at 2:42 PM, Michael Tryby<EMAIL_ADDRESS>wrote:
One issue is the need to anonymize them before they could be publicly distributed as part of a test suite.

https://github.com/OpenWaterAnalytics/epanet-tools?files=1

:hand: i will volunteer to set up the shell script for iterating / recursing through directories in order to pass paths into the testing tool

so this turned out to be pretty cool. PR #58 will add a .sh script which recurses through a test-network directory (mocked up in the directory tree), run the command-line epanet, and call into a python script to compare binary files. the actual epanet-running and comparison are all fake, but this is the structure.
Travis output is here: https://travis-ci.org/OpenWaterAnalytics/EPANET/builds/97126305

I agree! This is pretty cool. :smile:

"i have no brains" - code is poetry
@sam cool :+1:

@michaeltryby its great using the networks in Lew's collection. Maybe we can start by looking at networks in the public domain like the ones used in the battles and some other benchmark networks. These are well known and many people have worked with. I'll try to make up a list and we can see if that is sufficient to get us started.

@michaeltryby and @jamesuber related to the discussion about true/false testing / and others as well:
take a look at the results here: https://travis-ci.org/OpenWaterAnalytics/EPANET/builds/97515364
... what should the tolerances be? the "real" binary output file was generated on my mac under epanet 2.1, uploaded to github, and then used in testing to compare against what should be the same binary file (which was generated by Travis after building the same version of epanet). interesting.

Yeah, so we are comparing Mac to Linux for the first time and right out of the gate there are differences. Platform fuzz.
We could modify the script to accumulate statistics on the differences and then apply some set of criteria to determine whether they are acceptable.
What statistics should we accumulate while we process the file?

I have compared @samhatchett 's output (Mac) to my Windows DLL (both 2.1) and got no difference at all.
I do get differences compared to the version 2.0.12:
Links Flow max diff = .00003051758
Links Quality max diff = 0.2500000000

@eladsal That's really interesting and useful information. I'm pleasantly surprised there is no difference between Mac and Windows.
Has anyone been working on the water quality routines? A difference of 0.25 seems significant ...

I think there was a change in water quality - stepwise calculations. However, I see no differences in nodes quality results.
My findings so far: the difference is only in the first time step for link 110 which connects junction 12 and tank 2. As far as I can see its related to the initial water quality assigned to the pipe. The initial quality for the junction is 0.5mg/L and for the tank it's 1mg/L. version 2.0.12 reports 0.75mg/L while 2.1 reports 1mg/L. As far as I can see the correct value should be 0.75mg/L since the link quality is defined as the average of the link's segments quality (or the average of teh nodes quality if no segments are in the link).
I think I found the problem, it's the place initsegs is called. It was moved form gethyd to initqual. I have to dig in a bit more on this.

Until we get more experience with what is "unexpected," I'd suggest that the comparison and test outputs be built with compiler optimizations completely disabled. It just removes another variable. Plus, if we find that differences are dependent on compiler optimization, or even purely on platform even when optimizations are enabled, then we should question the stability of our algorithms. That might mean we should look into adhering to certain coding practices, and examine more carefully the entire suite of compiler warnings (e.g. by turning on ANSI adherence, paying close attention to implicit type conversions,...).
I still do think that basing the "true/false" designation on the number of correct digits is the way to go. I do not think that efficiency should be a consideration at this point, and I don't see how we have a chance of defining "the tolerance" if we are using input files with potentially different units, different water quality boundary conditions, etc. It's a hard enough problem, without introducing those factors.
Sadly, people who have thought about this a lot more than me have pointed out that even calculating the correct number of digits needs to be done carefully. See section 3 of this frequently cited paper by McCullough: http://www.pages.drexel.edu/~bdm25/tas1.pdf.  He points out that if the correct and test values are significantly different (more than a factor of 2), then the formula I cited above won't give the number of correct digits. It's not hard, but you have to account for that.
And, I noted that McCullough recommends normalizing the absolute error by the test value (as long as the test value is not too close to zero - ugh), in which case you are measuring the number of correct significant digits.
Until this gets worked out, it seems that the process might also benefit from simplification in the test problems. And it's probably healthy anyway to lean towards a hierarchy of test problems ranging in level of "difficulty" (e.g. "Oh my God it failed that!" or "Oh yeah, that's really a touchy one"). So for example, the initial tests maybe should be a variety of steady state hydraulic simulations of different complexity, in terms of size, pumps/valves, controls/rules. Admittedly this tests only a portion of the code, but that would be the point. From there it makes sense to move into EPS hydraulic tests, and finally into water quality.

Testing fit for purpose. @jamesuber I agree with your suggestions, but I don't believe that Travis-CI is the right place to exercise them.
The CI regression test is analogous to a build test in that it keeps you from checking in code with obvious defects.  I wouldn't want to use it to port to a different compiler/platform. Think of how many unknowns we could eliminate by running more rigorous tests locally as opposed to in the cloud.
Travis-CI runs on a Linux server somewhere. We are getting a glimpse that, as expected, there are cross platform issues we need to consider. Does that mean we need to commit to a porting exercise at this juncture?
I suggest we use Travis-CI to help narrow in on the robust Windows benchmark that we have and tackle porting issues in a later release.

Well that’s certainly all OK with me - heck I’m just an observer at present anyway.
Just seemed to me that the entire thread was not about this at all, but rather focussed on as @samhatchett put it - "what should the tolerances be?” I mean, really, if we’re obviously going to be doing something different for the “real” testing, then the Travis-CI stuff seems a little overkill to me, at the present. But I guess I’m really missing the point of the discussion.

On Dec 17, 2015, at 8:41 PM, Michael Tryby<EMAIL_ADDRESS>wrote:
Testing fit for purpose. @jamesuber https://github.com/jamesuber I agree with your suggestions, but I don't believe that Travis-CI is the right place to exercise them.
The CI regression test is analogous to a build test in that it keeps you from checking in code with obvious defects.  I wouldn't want to use it to port to a different compiler/platform. Think of how many unknowns we could eliminate by running more rigorous tests locally as opposed to in the cloud.
Travis-CI runs on a Linux server somewhere. We are getting a glimpse that, as expected, there are cross platform issues we need to consider. Does that mean we need to commit to a porting exercise at this juncture?
I suggest we use Travis-CI to help narrow in on the robust Windows benchmark that we have and tackle porting issues in a later release.
—
Reply to this email directly or view it on GitHub https://github.com/OpenWaterAnalytics/EPANET/issues/16#issuecomment-165672182.

@jamesuber clearly, when I think testing and you think testing we are thinking two different things. What I've got in mind right now is part of what the dev team at Haestad Methods was doing. Sounds to me like what you have in mind is the other part of what they were doing. I don't think of one as "real" and the other as "overkill." I think EPANET can benefit from both and its simply a matter of which one makes sense to do first using Travis-CI.

This bug, fixed in 1c06908, happened due to changes in the order initsegs was called. The links average quality value, only for the initial time step, was wrong. This average value is not used in any calculations in the engine but only reported to the user. The water quality model uses segments of water with different quality in the pipes.

think we're in pretty good shape here. a few rough edges, but it's serviceable. closing so that the 2.1 milestone can be met.


fix(rate-limits): Adding artifical delay to anon requests

:tada: This PR is included in version 2.1.2 :tada:
Your semantic-release bot :package::rocket:


Always pull from event inlet.

@odd thanks for your contribution! What's wrong with the existing code i.e. what does your change attempt to fix?

Hi, this PR was a bit premature I'm afraid. I have since submitting it found that the change (while solving my initial problem with the initial command not succeeding as the event is never sent as a response after being emitted) instead causes all following commands to fail.
Here is the code I'm testing:
  trait Aggregate[A] {
    def aggregateId(a: A): String
  }

  implicit val blogCommandAggregate: Aggregate[BlogCommand] = {
    case GetPost(id) => id.toString
    case AddPost(content) => PostId(content.title).toString
    case UpdatePost(id, _) => id.toString
  }

  def commandProcessor(aggregateId: String): Flow[BlogCommand, BlogResponse, NotUsed] =
    EventSourcing(aggregateId, BlogState(), requestHandler, eventHandler).join(akkaPersistenceEventLog.flow(aggregateId)).log("processor")

  def commandRouter(implicit agg: Aggregate[BlogCommand]): Flow[BlogCommand, BlogResponse, NotUsed] =
    Router(req => agg.aggregateId(req), (aggregateId: String) => commandProcessor(aggregateId))

  def handleCommand(cmd: BlogCommand) = Source.single(cmd).via(commandRouter).runWith(Sink.head)

The Akka Http route outside looks like this:
complete(handleCommand(cmd))

The underlying problem seems to be that the requestUpstreamFinished flag becomes set to false too early for the initial command sent so that the tryPullEi() call in the InHandler does not pull any event. I have tested to make it a counter (requestUpstreamFinishedState) instead and used requestUpstreamFinishedState <= 1 in tryPullEI() and instead used requestUpstreamFinishedState > 0 in tryPullCi() and that seems to work for my use case (both for the initial command and any succeeding commands).
I'll try to create a self contained minimal use case demonstrating the problem (as soon as I can find the time)

I'll try to create a self contained minimal use case demonstrating the problem (as soon as I can find the time

That would be very helpful. I'm still on vacation this week. Will take a closer look next week. Cheers!

All test (including the ones added in f61e9f1) now pass (since ae4f1fc).


Feature request: return count of unapplied migrations

This relates to #64 as a pattern for using tfmigrate in CI/CD.
Request
It would be helpful to return the number of unapplied migrations in addition to the current list command. I currently rely on the list command to determine whether I need to conditionally execute tfmigrate within a workflow. This works but does require some additional processing in order to arrive at a count that can be used in subsequent conditional expressions.
num_migrations=$(tfmigrate list --status unapplied | grep -c '.hcl' || true)

It would be much nicer to avoid the extra processing and error handling if tfmigrate could return the count directly such as:
num_migrations=$(tfmigrate count --status unapplied)

Ideally, a count command could also be executed in a terraform directory without tfmigrate configuration present and still return a count of 0. This would avoid any need to first parse/detect if tfmigrate configuration is present before executing a count command.
Background
I have developed a pattern for incorporating tfmigrate into our CDKTF & Terraform workflows that works quite well for both workflows that have state migrations to apply as well as workflows that do not need state migrations or have not yet needed migrations. This was desired as we have source repositories and workflows that manage multiple Terraform stacks or root modules - some of them where tfmigrate is applicable and others where it is not. Knowing the migration needs of these stacks and root modules can and will change over time, I wanted to create a CI/CD workflow that was consistent and adaptable to both situations. This design was also needed in order to take advantage of matrix builds or parallel executions of jobs in CI/CD where each Terraform workflow was the same and will conditionally execute tfmigrate plan and tfmigrate apply when migrations are configured and present.
I began using the list command and processing the count of migrations after I noticed tfmigrate will skip the terraform plan when no unapplied migrations are present to process.  I would like my CI/CD workflow to execute a terraform plan regardless of state migrations being present so I can expose and surface the plan as part of the Pull request or as part of the release.
This is the result of running tfmigrate plan when no migrations need to be processed:
2022/02/24 17:11:15 [INFO] AWS Auth provider used: "EnvProvider"
2022/02/24 17:11:16 [INFO] [runner] no unapplied migrations

Desired CI/CD workflow
Pull request / Build
graph TD
    pr((pull_request)) --> setup-tf[setup terraform]
    setup-tf --> setup-migrate[install tfmigrate]
    setup-migrate --> init[terraform init]
    init --> count[tfmigrate count --unapplied]
    count --> unapplied{unapplied state migations > 0}
    unapplied --> |Yes| migrate-plan[tfmigrate plan]
    unapplied --> |No| tf-plan[terraform plan]

Release / Deployment
graph TD
    deployment((deployment)) --> setup-tf[setup terraform]
    setup-tf --> setup-migrate[install tfmigrate]
    setup-migrate --> init[terraform init]
    init --> count[tfmigrate count --unapplied]
    count --> unapplied{unapplied state migations > 0}
    unapplied --> |Yes| migrate-apply[tfmigrate apply]
    unapplied --> |No| tf-plan[terraform plan]
    migrate-apply --> tf-plan
    tf-plan --> tf-apply[terraform apply]

Hi @jeremywitte, Thank you for your proposal.
After reading your use case, I feel that what you really need isn't count, but whether you should migrate or not. For example you can write this without count:
MIGRATION_FILES=$(tfmigrate list --status=unapplied)
if [[ -n "${MIGRATION_FILES}" ]] ; then
  # migration
else
  # no migration
fi

To me this just feels like a style issue for shell script.
On the other hand, it's worth considering that allowing us to suppress the no history setting error and exit status with 0 by adding a new flag such as --skip-no-history.
By the way, I always run tfmigrate on the root directory of a git repository with cd $(git rev-parse --show-toplevel). This is because if the settings are different for each directory, it will be difficult to handle multi_state migrations across multiple directories.

Appreciate the reply! I agree the existing support of the list command does provide what is needed to determine whether or not tfmigrate should be executed - just comes down to preference on existing solutions to script for that test.
I do like the suggestion of the --skip-no-history flag and would find that useful if implemented.
Good to close this with your confirmed solution/feedback.
Thanks again!


TFRS - Prevent fuel suppliers from creating draft compliance & exclusion reports for 2024 and beyond

Describe the task
Remove the ability for BCeID users to create draft compliance & exclusion reports for 2024. We also want to prevent suppliers from creating draft compliance & exclusion reports for 2025, which the system will allow them to do on January 1, 2024.
Purpose
The new Low Carbon Fuels Act brings significant revisions & additions to compliance & exclusion reporting beginning in the 2024 compliance period. The current draft compliance report for 2024 is not accurate in terms of the reporting requirements and associated compliance unit calculations. We want to hide this report until development of the new Act changes & additions is complete.
Acceptance Criteria

[ ] For any new Compliance Units, application shouldn't allow the user to create any new report for 2024 and beyond
[ ] Number of compliance report drafts which are already created in prod for 2024 should be reported to Justin and provide plans for migration to new LCFS.

Additional Notes
How many 2024 reports already exist? And how will we handle the existing ones?
Additional context

Need to figure out what to do with drafts that may already be created

Hey team! Please add your planning poker estimate with Zenhub @AlexZorkin @jig-patel @prv-proton


make sure log jacobian is computed even for fixed variables

Currently, if a model has a prior and is fixed, we get an error, because the log_jacobian correction is requested for the fixed variable, and it hasn't been computed.
This PR fixes that: now parameters with fixed=True and a prior will have a log_jacobian of 0. A regression test is included.

Current coverage is 99.52% (diff: 100%)

Merging #248 into master will increase coverage by 0.11%

@@             master       #248   diff @@
==========================================
  Files            23         23
  Lines          1690       1691     +1
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           1680       1683     +3
+ Misses           10          8     -2
  Partials          0          0

Powered by Codecov. Last update b8b91e0...f89ed60


Support use of role by any service account in a namespace, or other StringLike patterns (iam-role-for-service-account-eks)

Is your request related to a new offering from AWS?
No
Is your request related to a problem? Please describe.
Sometimes service accounts are created dynamically, such that it would be challenging to provide the exact service account names.
Describe the solution you'd like.
It would be useful to be able to provide a regex string to represent the service accounts, such as namespace:*.
StringEquals is currently the only supported option.
condition {
        test     = "StringEquals"
        variable = "${replace(statement.value.provider_arn, "/^(.*provider/)/", "")}:sub"
        values   = [for sa in statement.value.namespace_service_accounts : "system:serviceaccount:${sa}"]
      }

I'm currently using a custom role that does the following:
    dynamic "condition" {
      for_each = var.restrict_role_to_serviceaccount && var.serviceaccount != null ? [""] : []

      content {
        test     = "StringEquals"
        variable = "${local.oidc_provider}:sub"

        values = ["system:serviceaccount:${var.namespace}:${var.serviceaccount}"]
      }
    }

    dynamic "condition" {
      for_each = var.restrict_role_to_namespace && var.namespace != null ? [""] : []

      content {
        test     = "StringLike"
        variable = "${local.oidc_provider}:sub"

        values = ["system:serviceaccount:${var.namespace}:*"]
      }
    }

However, it theoretically could also be done by determining if any sa in statement.value.namespace_service_accounts contains a StringLike-supported character (* or ?) per https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String.
Alternatively, an extra variable for role_condition (default "StringEquals") would be a simpler way of allowing the user to specify.
Describe alternatives you've considered.
Dealing with it or continuing to use my custom module.
Additional context
The GitLab helm chart can automatically create many service accounts, but allowing a global annotation to be applied to each. This is a case where hard-coding the (probable) service account names in Terraform would be difficult.

This issue has been resolved in version 4.14.0 :tada:


Fixed bug where lookahead sets were always being turned into individu…

Fixed bug where lookahead sets were always being turned into individual characters.
Shouldn't both of these succeed? Instead:
binesh@p1gen2:/tmp/plipy-code/chap02/lookahead$ python3 ./lookahead.py < grammar-listing26.txt
[('exp', {'+'}, ['+', 'exp', 'exp']),
 ('exp', {'y', 'x'}, ['term']),
 ('term', {'y', 'x'}, ['var', 'suffix']),
 ('suffix', {'('}, ['(', 'exp', ')']),
 ('suffix', {''}, ['']),
 ('var', {'x'}, ['x']),
 ('var', {'y'}, ['y'])]
binesh@p1gen2:/tmp/plipy-code/chap02/lookahead$ python3 ./lookahead.py < grammar-listing26-bb.txt
Error: common prefix a for nonterminal var

I think this is because on Line 94 in plipy-code/chap02/lookahead.py
    GL.append((A, set(S), rule_body))

should instead be
    GL.append((A, set([S]), rule_body))

What seems to be happening, is set(S) when S is a string, is getting turned into their individual characters. It seems to me, that what we want in the set, is the whole token, ("alpha", "beta" in my var modification of listing 2.6. Is this so? If so, please accept my pull request.
If not.. Can you please tell me what my misunderstanding is? Thanks!
grammar-listing26.txt
grammar-listing26-bb.txt

Hello, thank you for submitting the PR.  I developed the lookahead program in the context of grammars with single character symbols and consequently never tested it with multi-character symbols.
Please do the following before I can accept this PR:

There is a similar situation to what you described for line 94 on line 76 of lookahead.py, if you could also fix that that would be appreciated.
Please remove all files from your PR (such as readme's, test files etc) that are not actual bugfix code.  Only submit actual bugfix code in your PR.

Once I receive the updated PR I will approve it.
Thanks again.

OK, done! Thanks! (A colleague of mine and I bought your book, and are working our way through it.. Thank you for the book, and all this material!)

Again, thank you for taking the time to submit a PR and also for reading my book.  Best, Lutz

I will merge that PR and then propagate the fix through the online resources over the next couple of days!


Figure out which Kubernetes versions we should test against

What are the candidates here?  I would guess probably at least the current HEAD and current released.


Minor code cleanup

While evaluating some new tools I ran into some minor code/doc issues that have no real affect at execution time, but did prevent some tools from working properly. (It also so happens that these sports weren't following CesiumJS coding convention either.

Thanks for the pull request @mramato!

:heavy_check_mark: Signed CLA found.
:grey_question: CHANGES.md was not updated.

If this change updates the public API in any way, please add a bullet point to CHANGES.md.

:grey_question: Changes to third party files were made.

Looks like a file in one of our ThirdParty folders (ThirdParty/, Source/ThirdParty/) has been added or modified. Please verify that it has a section in LICENSE.md and that its license information is up to date with this new version.

:grey_question: Unit tests were not updated.

Make sure you've updated tests to reflect your changes, added tests for any new code, and ran the code coverage tool.

Reviewers, don't forget to make sure that:

[ ] Cesium Viewer works.
[ ] Works in 2D/CV.
[ ] Works (or fails gracefully) in IE11.

Looks good, thanks @mramato


MOD-1 Lack of Garbage Collection Mechanism in Movement-Aptos-Core's Mempool

MOD-1 Lack of Garbage Collection Mechanism in Movement-Aptos-Core's Mempool
Auditor: Movebit
Code: Aptos Core
Severity: Major
Discovery Methods: Manual Review
Status: Pending
Code Location:
protocol-units/execution/opt-executor/src/executor/mod.rs#59
Descriptions:
A complete mempool should have a garbage collection mechanism, also known as a
transaction aging mechanism, which periodically removes expired and unused transactions to
prevent the mempool from growing indefinitely.
Aptos's garbage collection code is as follows:

Suggestion:
It is recommended to enable Aptos's mempool garbage collection feature.

https://github.com/movementlabsxyz/movement/blob/31386f74a2700920fec093775c221acdc9c6c7a2/protocol-units/execution/opt-executor/src/transaction_pipe.rs#L112


docs: update SC4S_USE_REVERSE_DNS description

:tada: This PR is included in version 3.11.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


saved Draft/Description templates/signature

Is your feature request related to a problem? Please describe.
Uploading regularly or in large quantities can be tedious on LBRY.  Often in the description i'd like to keep a similar format, or have a signature which says the same thing on every post.  Right now I have to save solutions to this in another program.
Describe the solution you'd like
I'd love a saved DRAFT/Description-Templates/Signature feature.  A place to store different descriptions that might be used for different types of content, or different channels that one is running.

This is similar to https://github.com/lbryio/lbry-desktop/issues/2694, so I'll close it. Can you make that comment there please?


Fasta should recognize cyclic generative constructors

Fasta should recognize
class A {
  A.a() : this.b();
  A.b() : this.a();
}

Fasta should mark both of A's constructors as cyclic.

We need to do the tortoise and hare here as well. We're currently detecting cycles in supertypes and redirecting factory bodies. This needs to be detected as well.


Standardize org.eclipse.krazo.defaultViewFileExtension as javax.mvc.engine.defaultViewFileExtension

As discussed in a related Google Groups thread, I recommend that the org.eclipse.krazo.defaultViewFileExtension feature be standardized as javax.mvc.engine.defaultViewFileExtension.

Moved to https://github.com/eclipse-ee4j/mvc-api/issues/39


unit tests for credential_schema::Schema

fixes #775
added tests for the functions to_string_versioned, from_string_versioned, get_schema_id

Codecov Report

Merging #808 (2161620) into main (dc94c2d) will increase coverage by 0.05%.
The diff coverage is 61.53%.

@@            Coverage Diff             @@
##             main     #808      +/-   ##
==========================================
+ Coverage   53.57%   53.62%   +0.05%
==========================================
  Files         392      392
  Lines       36905    37070     +165
  Branches     8237     8270      +33
==========================================
+ Hits        19771    19878     +107
- Misses      11071    11104      +33
- Partials     6063     6088      +25

Flag
Coverage Δ

unittests-aries-vcx
53.52% <61.53%> (+0.05%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...ies_vcx/src/common/primitives/credential_schema.rs
46.45% <61.53%> (+14.63%)
:arrow_up:

... and 65 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

hi @nachiketkanore thank you for contribution! The CI looks green, but DCO check is currently failing. No worries is simple fix! Have a look here https://github.com/hyperledger/aries-vcx/pull/808/checks?check_run_id=12831789658 what DCO means
You can fix your existing commit by ammending signoff to it
git commit --amend --signoff

and then you'll have to push force again.
Thank you!

Done


Should abort swap always be available?

I lean towards supporting this. My 4 cents:

It unfortunately facilitates the non-free option of swaps being aborted if exchange rate develops unfavorably (user's local utility), and therefore weakens the atomic swap market (global utility). On the other hand, if the exchange rate moves dramatically the swap, given loss aversion, it's better for global utility to avoid the losses of the aborting party than to protect the swaps success artificially (see 3.).

The non-free option is less of a concern than the free option prior to locking, which we're still left with anyway.

If we don't support it, then someone will either eventually modify the(ir) node or manually enforce this by killing their daemon and restoring from checkpoint once proceeding with protocol is no longer safe, or the counterparty has already initiated refund.

Following design principle of providing users with the software that maximizes their own utility, we should support aborting swaps at all times in the default software.