Improve Exposed Metrics: Add a new metric for blocked request at a given moment

First of all, thanks you to has spend time on this project, your plugin convince me to switch from pi-hole to CoreDns as my home dns !!
I have setup a graphana dashboard for my CoreDns instance, and i would like to be able to have the number of blocked request at a given moment. There is only two metrics exported for now coredns_ads_blocked_request_count_total and coredns_ads_request_count_total; unfortunately these metrics does not fit my need
I have juste read the documentation of prometheus, for this need you should need to use histogram metric
If you don't have enough time to do this it's not a problem, i could try to work on it (event if i am not really comfortable with go language )
Once again, thanks for sharing with us your work :1st_place_medal:

Hey there,
Sorry for my really late reply, I replied via mail the last time, but for whatever reason it did not work properly.
Personally i am currently busy with other tihngs, for that reason i cannot guarantee that i will implement this feature in the near future.
If you have the time, feel free to do it yourself, any contributions are appreciated.
BTW: it is good to hear that the prometheus metrics have any use, since i never used them myself.


[docs] Add major version to documentation URLs

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Summary 💡
Since the release of MUI v5 it is a PITA when looking up solutions for v4 over at stackoverflow or through github issues which do contain links to the official MUI documentation. Since the v4 documentation was moved with the release of v5, all those links to the documentation are now pointing to the v5 docs and some are broken.
The v5 documentation currently does not contain the version in the URL as well, so the same issue will repeat itself as soon as v6 will be released.
I think it would make much sense to always add the major version to the doc URLs, so when a new version is released, the internet does not break :-)
Examples 🌈
Random example, this stack overflow comment was posted in reply to a question regarding v4:

Source: https://stackoverflow.com/questions/62725780/material-ui-themeprovider-not-passing-theme-to-components

The posted docs URL https://material-ui.com/customization/globals/#css now points to the v5 docs and the #css anchor does not exist anymore.
Motivation 🔦
Keeping references to the docs within issues, blog posts, SO answers etc. intact when new MUI versions get released.

may i add a suggestion to this? when i navigate to a v5 page and i proceed to switch to v4 via the sidebar dropdown i expect to be taken to the v4 page for the same component/api that i was on. however it always just navigates to the v4 home page and i have to dig through the menu to get back to where i want to be. gets old very fast. thanks.

@krossekrabbe Thanks for opening the issue and contributing!
I personally don't think it makes sense to have the current major version in the URL - it's implicit (my assumption, at least) that the URL with no disclaimed version is the latest - but for previous versions it does, and we already do that.
Take the link you mentioned as an example — https://material-ui.com/customization/globals/#css — in order to not be redirected to the v5 docs, where this content doesn't exist anymore, you just need to add v4 to the beginning of the URL, like so: https://v4.mui.com/customization/globals/#css. You'll now be sent to the v4 docs where that content remains intact, and this also works for all the previous versions as well.
As an improvement opportunity though, maybe we should add something at https://mui.com/versions/ instructing that adding v4, v3, etc, at the start of the URL takes you to that version docs. How does that sound?

@jpodpro This is a great idea indeed, we'll look into it. But if you want to maybe try it for yourself, feel free to open a PR :)

Interesting problem. But also a bit misaligned with our incentives to move the community on a single major version: the latest. 👍 for going with the minimum effort path from the maintainers perspective, and for miximizing the advantage of upgrading to latest.

i expect to be taken to the v4 page for the same component/api that i was on

PostgreSQL does this. One challenge is what happens when a page in v5 doesn't exist in v4?

How does that sound?

I doubt it will be discovered a lot, I think that developers are more likely to figure the subdomain on their own than to read this tip first. But maybe I'm wrong. I also wonder how we will manage versioning with multiple products (we will likely need to change the approach going forward).

It reminds me a bit of the GitHub link to source line when using a branch, it gets quickly outdated, you have to use a permalink. It's something we could consider, but probably overkill for us to manage, relative to the gain.
From an SEO perspective, we use the canonical link so that older versions are not searchable on Google and so we consolidate all the backlinks on one page.


Allow automatically adding unencrypted private notes to pxe

We have the concept of unencrypted notes that live in the private data tree. From the dev perspective, these can be ImmutableSingletons without an owner (if data is constant). However, in order to interact with a contract that uses these notes, the user needs to use an app that manually adds that note to their pxe via addNote. We can no longer have the user just interact with a contract given its build artifact and address.
Should we have a way for emitting unencrypted private notes in a way they are captured by every pxe out there? It would add unnecessary data that needs to be published to a DA and stored on every pxe (or at least every pxe that intends to interact with such a contract, maybe we can lazily request those) but would greatly simplify interactions with contracts that use these global constants.

adding into what Santi said:

composability get's trickier in cases where a Private contract holding "no-owner" Notes is interacted with.

you could just grab those notes from the PXE but this becomes WAY more difficult if you do NOT know if a contract down the call trace does indeed require some Notes. Or even worse, if you don't even know even the address of the contract being internally called.

it'd be great to have a way to hold privately accessible values on contracts. Not sure if Notes are the best option for this.

something that would work as immutable constructor assigned constants do on solidity.
maybe a quick and dirty fix for this would be to add a deterministically generated address as settingsContract to the newly deployed contract. which would get later deployed with the correct parameters.

this might even point back to solving factory/child contract creation.

I think immutables is a separate (and also interesting) discussion, but here the point is how to handle unencrypted state (I was going to also write immutable, but it should work for mutable values as well) that is committed-to in the private data tree. Today we're requiring dapps to manually inject it, but @skeletor-spaceman's point on having to track down all the notes needed by all the contracts you interact with is annoying.
The "shared user" is definitely an easy solution, and "shared user by app" is even nicer. But maybe we need something more dedicated? Like an URI for this sort of publicly available content, that can be resolved by the p2p network, or point to an ipfs/web2 storage location? And the simulator automatically queries that location when it needs to get-notes in the app contract?

Early in speccing, the idea we had (but didn't implement yet) was that we'd need some kind of standard encoding* of unencrypted events, that could convey to an Aztec full node that "this unencrypted event represents the preimage of the i-th note_hash of this tx". The full node could then store the preimage against the note in the world state db.
If a sequencer then ever needs to read this note from a public function, the preimage information is in its db. Lovely.
If a user ever needs to read this note from a private function, they would need to query a full node to get the preimage information. We're investigating how to do privacy-preserving queries for sibling paths, and hopefully those techniques can be applied to this situation too. How would the PXE know to make a query to a full node? Well, the get_notes() request would probably have to convey (somehow) "I am asking for a note which is unencrypted, and therefore you might have to make a query to a full node". It always feels like a shame to "enshrine" more conditions and information in note headers, aztec.nr, the pxe, and the world state, but it might be necessary here.
* If we're not happy with standardising an encoding of unencrypted events, and we'd like to enshrine a stronger way of conveying "this note contains public information", we'd probably need to consider a new, separate public input in various core circuits for such preimage information to be broadcast on-chain. I'd prefer not to add such complexity, but am open to arguments for!

We can probably work around this for now

Sounds good! Eventually (on a proper network), small devices would run out of room, if they attempted to store all "public notes" for all apps. Although maybe if the pxe could be configured to subscribe only to "public notes" for a particular selection of apps, that would prevent such bloat.

What is the best place to process the logs?
The easiest is: after pxe simulates a private transaction, it can call pxe.addNote() to add any logs that conform to the standard.  But this only works if the dev and the user share the same pxe! Also if the tx gets dropped by the sequencer, the note still exists!
Am not sure how to make use of the full-node:

Full node (world state db) stores everything in their Merkle trees. All notes incl unencrypted private ones are already in here.
PXE - uses a memory db - stores an array of Notes. in memory. This is queried when we call get_notes() [and this is why we require a dev to manually do pxe.addNote() currently]

Perhaps pxe.get_notes() can filter against unencrypted logs with a given event selector and contract Address (this can be done as pxe can call the archiver indirectly to fetch these logs). But I am unsure how event selectors work currently, given we don't have event signatures in the same way solidity does.

What is the best place to process the logs?

Depends on what option we want to go with.
If we are fine in explicitly saying in aztec-nr get-note that "this is an unencrypted note I want to get", then we'd need a separate oracle call for it, and implement it by having the acir-simulator in the pxe make a request on the fly to the aztec-node for the note using getUnencryptedLogs (and potentially caching it, but that's another story).
If we don't want to do that, then we need to have the pxe continuously scan all logs looking for "public information" it needs to store. This info should probably be emitted in the unencrypted logs stream, which is currently not scanned by the pxe, so we'd need to start scanning unencrypted logs in addition to encrypted logs. If it detects something that it's a note and not just an event, then it stores it in its db not associated to any user. Then, when retrieving notes in the acir simulator oracle, we need to both provide the ones for the current user and the "public" ones.
Alternatively, maybe we could emit these notes in the encrypted logs stream (but unencrypted!). This has the advantage that the encrypted logs stream is already parsed by the pxe, so we'd just need to have a format that indicates that an entry is not encrypted but publicly visible. However, it feels odd to have unencrypted data as part of encrypted logs.
I'm starting to think that Mike's original option (first one in the list above) is the most elegant one. @benesjan given you've been working extensively with logs, wdyt?

I'm starting to think that Mike's original option (first one in the list above) is the most elegant one.
@spalladino You are referring to the solution bellow, right?

"the idea we had (but didn't implement yet) was that we'd need some kind of standard encoding* of unencrypted events, that could convey to an Aztec full node that "this unencrypted event represents the preimage of the i-th note_hash of this tx"."

If yes, I would agree. The downside of having to enshrine encoding doesn't seem that bad given that it's an elegant solution. Alvaro already implemented the event macro which, when used, is already correctly serialized to ABI. Maybe we could focus on ensuring that all notes use this event macro and then upon serialization encode the information in such a way that even entities without the ABI (aztec node) could distinguish whether a given unencrypted log is a note or not.
(Enforcing the use of event macro for all notes would also help with decoding the notes. Currently the notes get represented as an array of "unnamed" fields and accessed via index which is very bug prone.)
A bit unrelated but given that Ethereum's DA is expected to be quite expensive (and most likely unacceptably expensive for non-financial notes) I also like Santiago's idea of coming up with some form of URI. Has this been already considered somewhere else? If not we should probably spin up another thread/discourse post.

Tangent but @iAmMichaelConnor for the note discovery, this should also hold i.e. users should still be able to automatically add these unencrypted notes to pxe (just like how they would with their unenecrypted notes)!


Retire ZipBlob in favor of a better Blob

Use the new major version 2.0 to retire an old workaround of ZipBlob resource. Make Blob support assets and archives instead.
The changes:

azure.storage.ZipBlob is removed
azure.storage.Blob gets a new property content instead of the property source

Examples of the new Blob usage:
Upload an HTML file. Pulumi will watch the content changes and re-upload if needed (TypeScript):
const sampleFile = new azure.storage.Blob("test.html", {
    storageAccountName: storageAccount.name,
    storageContainerName: storageContainer.name,
    type: "Block",
    content: new pulumi.asset.FileAsset("./test.html"),
    contentType: "text/html",
});

Zip the contents of a folder and upload the archive as a blob (C#):
var blob = new Blob("zip", new BlobArgs
{
    StorageAccountName = storageAccount.Name,
    StorageContainerName = container.Name,
    Type = "Block",
    Content = new FileArchive("wwwroot")
});

@lukehoban Marked this issue and the note in the changelog as breaking. Expanded the PR description with more details and two examples.


Create a button to fetch toml file rather than fetching on filed change

Preview is available here:http://stellar-anchor-tests-pr24.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-anchor-tests-pr24.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-anchor-tests-pr24.previews.kube001.services.stellar-ops.com/


Creating and publishing a scheduled change request shows duplicate entries in the 'scheduling' tab when versioning enabled

To reproduce:

In an environment with versioning enabled, create a change request scheduled for the future
Navigate to the 'Change Requests' tab and notice that there is only one change request
Publish the change request
Navigate to the 'Scheduling' tab and notice that there are 2 identical scheduled changes pending

I've looked into this, and the underlying cause is that there are 2 change_sets for the change request, one that is deleted and one that is not. These 2 are identical. The fact that there are 2 change sets, means that the underlying SQL is returning 2 duplicate rows.
I will look to resolve this on the back end to prevent this, however, the issue is caused by the fact that the FE is doing a PUT immediately after the POST request, as you can see in the following screenshots.

In fact, from looking at the payloads, the API is doing the correct thing here. The FE is sending the PUT with the same payload as the post (i.e. it's not including the id of the version change set) so the API is deleting the one that was no longer included in the PUT request and creating a new one.
I'll still need to prevent the API from returning duplicates here to account for when multiple change sets are a valid use case but the immediate fix should be done on the FE.


Add a solution to the problem "Wildcard Matching"

I would like to add a solution the problem "Wildcard Matching" using Dynamic Programming (DP) in C++.
@Kuwarsaab Please assign me this issue with the labels: hacktoberfest, hacktoberfest-accepted.

I have opened a pull request solving issue #102 and #103
Please check and merge the pr asap.


[KNX plugin] allow to specify two GAs for an item for read and write

Often, KNX actors provide two connections, one for writing the value and one for reading.
The connections are often translated directly to two different GAs.
The KNX binding should support this behavior by allowing to specify two GAs, one for read and one for writing value changes.

fixed with 12d5a20


When prop's type is plain object, it's wonderful to merge default object and prop object when they all exist

What problem does this feature solve?
When the parent component passes prop to the child component if the prop type is object, and its value has been given as a plain object, at the same time, and the child component's default value build function also returns a plain object, we should merge the default object and the prop object (shadow merge), which is very conducive to customize the default value. and also greatly enhance the feel of writing Vue components.
A simple example:
//parent component
<Editor :options="editorOption"></Editor>

data () {
      return {
        editorOptions: {
          line: true,
          autoCloseTags: true
          }
        }
      }

// Child component
    props: {
      options: {
        type: Object,
        default () {
          return {
            line: false
            mode: 'text/javascript'
          }
        },
        required: true
      },
    },

In correct version, the options in child component will be rendered as:
{
          line: true,
          autoCloseTags: true
}

but the ideal result should be:
{
            line: false
            autoCloseTags: true
            mode: 'text/javascript'
}

For performance reasons, we just need to do shadow merge.
It will greatly enhance the writing feeling for some flexible and largely configurable component.
What does the proposed API look like?
No need new API, just handle in the logic of check default value

I tried to realized this feature at: commit
And I also write a UT at the above condition
But several another UTs failed. So I think my change is not comprehensive and reliable.

Unfortunately this will be a breaking change, so unlikely to happen :/

why closing a feature request only because causes a breaking change?
aren't breaking changes supposed to go into major versions?
a feature that merges props it's actually super nice and it's something that I have to do manually every time because it's a very common scenario when creating complex components.
I get the breaking change but why not add this feature to a roadmap or something?
@yyx990803 Besides my point on the "closed ticket", could you suggest an elegant and reusable way to achieve this kind of behavior? I could maybe write a plugin :)
Thanks for your time

@MatteoGabriele and @ulivz , I agree with everyone who says that this should be the behavior. Just because I want to override one attribute/property, I should not have to provide all the other properties.
Having said that, here's how I've achieved that behaviour;
props: {
            student: {
                type: Object,
                default: function(){
                    return {}
                }
            },
            labels: {
                type: Object,
                default: function(){
                    return {
                    };
                }
            }

        },
computed: {
            mergedLabels: function(){
                return Object.assign(
                    {},
                    {
                        billing: 'Billing',
                        firstName: 'First name',
                        generalInfo: 'General Info',
                        middleName: 'Middle name',
                        lastName: 'Last name',
                        dob: 'Date of birth',
                        gender: 'Gender',
                        placeOfBirth: 'Country of birth',
                        nationalities: 'Nationalities',
                        gradeLevel: 'Grade level'
                    },
                    this.labels
                )
            }

In the above case, I want to be able to override the labels.
instead of using labels.firstName, I use mergedLabels.firstName
Important Note: Make sure the in the call to Object.assign(), this.labels is the last argument. Otherwise, the value passed in by the user will be overridden.

@yyx990803 in the light of Vue.js 3 can we please reconsider this option ?

Any news ? Or workaround.


Features/gandi driver

Add a driver for Gandi Iaas provider
Same patching logic than in digitalocean driver is done to have a working docker daemon with identity support.

Thanks for the contribution!  I will get this in the integration tests to get the merge process started.

I rebased and adapt to new driver structure and workflow. It's working really fine using default image

Hi @ehazlett. Is there anything preventing this from being merged, or anything that can be done to help?

@soulshake hey! this needs to be rebased against the new driver model (from the latest refactor).  here is the new spec: https://github.com/docker/machine/blob/master/docs/DRIVER_SPEC.md.
we are going to announce this to all of the driver PRs after the 0.2.0 release -- you beat me to it :)

Ok good to hear, I'll rebase in next days. Thanks for your reply.

@gdchamal thanks!

update done, all is working fine on my side.

Hi , thanks for your efforts and persistence in submitting this driver. We are extremely excited that there is so much interest in Docker Machine and we really appreciate your interest. However, at this time it is proving to be extremely difficult for us to keep up with reviewing and testing each of these drivers for inclusion in the Machine core. We really want to switch to a more pluggable model, as well as polish up a few things about the driver model which need to be changed to ensure a smooth and sustainable future.
Therefore, we will be moving to a plugin model for 0.5 and would love to have you involved in the design and development process. We are closing the outstanding driver PRs at this time, but please keep the code. We will stick closely to the current driver interface and you should be able to re-use a lot (if not all) of the existing driver along with the new plugin model. We will be moving all of the drivers which are merged directly into Machine today to the plugin model when it is available, so there will be no special treatment of those, and there will be documentation outlining the process of developing and using a Docker Machine driver plugin.
With all of that being said, we want to apologize for the lack of feedback on your pull request. As contributors ourselves, we understand that being left in limbo is no fun. We would have liked to address this sooner, and in the future we will be more responsive around these kinds of issues.
Once again, we thank you for the contribution and the tremendous support. Keep hacking strong!
If you want to contribute to the design of the plugin model, we'd love to get your input on this issue where we will be planning it:
https://github.com/docker/machine/issues/1626
@ehazlett & @nathanleclaire


Add specific scopes needed for API key

Currently the API key is defined with no scope enforcement. We could lock it down to only the specific scopes needed. I don't think these will change, at least not for this release so we can do this now.
Currently these are set with the setting:

CANVAS_OAUTH_SCOPES: []

To test:

change your API Developer Key to enforce scopes and add the scopes listed in the default scopes file.

 Then relaunch and go through the OAuth process. Then look at the logs for an INFO level message from [oauth.py:73], where you should see the OAuth redirect to Canvas with the scopes in the URL, similar to the following message:
 [INFO] [oauth.py:73] Redirecting user to https://canvas-test.it.umich.edu/login/oauth2/auth?client_id=17700000000000271&redirect_uri=https%3A%2F%2F4ac5-141-213-175-192.ngrok.io%2Foauth%2Foauth-callback&response_type=code&scope=url%3AGET%7C%2Fapi%2Fv1%2Fcourses%2F%3Acourse_id%2Ftabs+url%3APUT%7C%2Fapi%2Fv1%2Fcourses%2F%3Acourse_id%2Ftabs%2F%3Atab_id&state=7tHHBmfJyMKI

Remove one of the scopes in the API Developer Key, then add only the remaining scopes to the environment variable. Delete your user's token in the admin, then re-launch and authorize. The handshake should work, but the application will throw an error when it tries to use the scope you are missing:
Error occurred! Status: 401; Message: An error occurred while communciating with Canvas. "Insufficient scopes on access token.

Verified on test server:

remove one scope (e.g. url:GET|/api/v1/courses/:course_id/tabs), user would get alert Error occurred! Status: 401 (Unauthorized); Message: An error occurred while communciating with Canvas. "Invalid access token."
fix the scope, delete user OAuth token, and re-authenticate, and then user can use the CAE tool.


Upgrade UNV plugin

I have improved the "unv" plugin so as to read "iv" files that are
produced by "FreeCAD" when exporting a mesh (strangely FreeCAD does not
save a mesh in unv format).
Reference for FreeCAD can be found here:
Mesh: https://wiki.freecadweb.org/Mesh_Workbench
File formats: https://wiki.freecadweb.org/Import_Export
I have added a script "script_iv.py" that reads "essai.iv" and produces
"essai_iv0000.png".
The example is one of the basic ones provided with FreeCAD.
This format is for meshes represented by a list of triangles.
Enclosed is file "unvAddsiv.tar.gz" with
the updated sources avtunvFileFormat.C, unvPluginInfo.C, and image.
unvAddsiv.tar.gz

Thank you Mark for posting ; the unvAddsiv.tar.gz file is indeed a unvAddsiv.tar file only.

Beyond the Inventor Reader included in the unv plugin, there now is a gmsh native files ".msh" reader for legacy1, 2 (gmsh 2 to 3 series) and current with gmsh 4. It reads linear elements. In the attachment there are two scripts for msh files as well as views. Thanks to Christophe Geuzaine for his help.
unv.tar.gz

Hi @cessenat ... I am curious, what would you say about maybe trying to assemble a pull request yourself? This would certainly make it easier at our end to incorporate your needed changes and would make it more likely those changes will get included in the next release.

Hi @cessenat have you tried creating a pull request?
Here are the basic steps...

Fork this repo to your own personal space using the Fork button in the upper right of this page.
clone your forked repo to your local machine using the green Code button you will see at top-right of your fork

Execute this command on your local machine git clone git@github.com:cessenat/visit.git

Switch to the3.1RC branch

git checkout 3.1RC

Create a branch off of 3.1RC branch

git checkout -b feat-cessenat-30nov20-unv-update

Do all your work there
git commit -a -m 'updating UNV plugin'
git push --set-upstream origin feat-cessenat-30nov20-unv-update
Use your browser and navigate to the visit repo (not your for...our repo). You should see a button to start a pull request there. Follow the instructions.

Hello Mark,
I made it, I think (or hope, this is my first time with git...) with #5280.
Just for info (or check), here is what I did :
Fork this repo to your own personal space using the Fork button in
the upper right of this page.

Delta compression using up to 16 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 5.92 KiB | 5.92 MiB/s, done.
Total 8 (delta 7), reused 0 (delta 0)
remote: Resolving deltas: 100% (7/7), completed with 7 local objects.
remote:
remote: Create a pull request for 'feat-cessenat-30nov20-unv-update' on
GitHub by visiting:
remote:
https://github.com/cessenat/visit/pull/new/feat-cessenat-30nov20-unv-update
remote:
To https://github.com/cessenat/visit.git
 * [new branch]            feat-cessenat-30nov20-unv-update ->
feat-cessenat-30nov20-unv-update
Branch 'feat-cessenat-30nov20-unv-update' set up to track remote branch
'feat-cessenat-30nov20-unv-update' from 'origin'.

I did not provide the .py and ".iv", ".msh" files, neither did I provide
the outputs ".png" files since I did not know where to put them and they
already are attached to the issue.
Now I would have some changes for Silo Fortran interface...
It was a pleasure and a honour for me to make this pull request.
Sincerely,
Olivier Cessenat
Le 30/11/2020 à 19:40, Mark C. Miller a écrit :

Hi @cessenat https://github.com/cessenat have you tried creating a
pull request?
Here are the basic steps...

Fork this repo to your own personal space using the |Fork| button
in the upper right of this page.
clone your forked repo to your local machine using the green
|Code| button you will see at top-right of your fork

Execute this command on your local machine |git clone
git@github.com:cessenat/visit.git|

Switch to the|3.1RC| branch

|git checkout 3.1RC|

Create a branch off of |3.1RC| branch

git checkout -b feat-cessenat-30nov20-unv-update

Do all your work there
|git commit -a -m 'updating UNV plugin'|
|git push --set-upstream origin feat-cessenat-30nov20-unv-update|
Use your browser and navigate to the visit repo (not your
for...our repo). You should see a button to start a pull request
there. Follow the instructions.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/visit-dav/visit/issues/4892#issuecomment-735967572,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJXB6GH3SKDHQI7BB7UZWATSSPRIRANCNFSM4O2W4PPA.

Ok, great job! Thanks for sticking with this and getting this far. There were just some changes I needed to make...I closed your original PR (#5280) because it was set up to merge into visit-dav:develop instead of visit-dav:3.1RC. And, I created a new PR (#5281). That PR will get reviewed by one or two other VisIt developers (and they may request changes) and then we can get it merged.

BTW...if you still need to make changes for this PR, you can make them on your local system, commit and then push them and they will appear in the PR. This is possible as long as the PR has not yet been merged.

Thanks a lot Mark.
I do not understand when it went wrong after
Switch to the3.1RC branch
cd visit ; git checkout 3.1RC
Create a branch off of 3.1RC branch
git checkout -b feat-cessenat-30nov20-unv-update
Do all your work there :
git commit -a -m 'updating UNV plugin'
git push --set-upstream origin feat-cessenat-30nov20-unv-update
No other change for the time being...
Olivier
Le 01/12/2020 à 16:12, Mark C. Miller a écrit :

Ok, great job! Thanks for sticking with this and getting this far.
There were just some changes I needed to make...I closed your original
PR (#5280 https://github.com/visit-dav/visit/pull/5280) because it
was set up to merge into |visit-dav:develop| instead of
|visit-dav:3.1RC|. And, I created a new PR (#5281
https://github.com/visit-dav/visit/pull/5281). That PR will get
reviewed by one or two other VisIt developers (and they may request
changes) and then we can get it merged.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/visit-dav/visit/issues/4892#issuecomment-736615296,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJXB6GAZ35XHN2CYXEBQCETSSUBUXANCNFSM4O2W4PPA.

This was resolved in #5281


libc: implement fscanf()

This was originally added as a ticket under POSIX, but fscanf() is not a POSIX function. It is from C89.
https://en.cppreference.com/w/c/io/fscanf
The expectation from the POSIX API is that this function is implemented as part of whatever C library is in use.

@cfriedt, are you working on this? If not I would like to work on this.

Hi, just wondering if there has been any progress made on any of these libc functions, or am I all good to try to implement some of these myself?

@CiaranRoche1 - this might depend on the changes included in the (unfortunately reverted) posix_device_io or posix_fd_mgmt PRs.
Again, it might make more sense to look at fixing a bug for your first PR, since the workflow could take some practice.
https://github.com/zephyrproject-rtos/zephyr/issues?page=3&q=is%3Aopen+is%3Aissue+label%3Abug


Make cypress tests work on full dictionary

At some point the inflectional categories were renamed in the full
dictionary, and the test dictionary was not updated. That made these two
cypress tests fail when run against a database that has the full
dictionary. This is the minimal change to make those work again.

Compare with:

https://itwewina.altlab.app/word/nîpin/
https://itwewina.altlab.app/word/wâpiw/

Codecov Report

Merging #725 (a77ff4d) into master (e83060f) will increase coverage by 0.03%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #725      +/-   ##
==========================================
+ Coverage   82.02%   82.05%   +0.03%
==========================================
  Files          82       82
  Lines        3060     3060
  Branches      453      453
==========================================
+ Hits         2510     2511       +1
  Misses        465      465
+ Partials       85       84       -1

Impacted Files
Coverage Δ

...CreeDictionary/management/commands/ensuretestdb.py
81.08% <0.00%> (ø)

CreeDictionary/paradigm.py
91.58% <0.00%> (-0.94%)
:arrow_down:

CreeDictionary/utils/paradigm_filler.py
91.50% <0.00%> (+1.88%)
:arrow_up:

Continue to review full report at Codecov.

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


bookinfo-gateway cannot create

root@han-ThinkPad-T480s:/home/soft/istio-1.0.0# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
unable to recognize "samples/bookinfo/networking/bookinfo-gateway.yaml": no matches for kind "Gateway" in version "networking.istio.io/v1alpha3"
unable to recognize "samples/bookinfo/networking/bookinfo-gateway.yaml": no matches for kind "VirtualService" in version "networking.istio.io/v1alpha3"

Looks like you need make sure Istio was installed successfully. Please see https://istio.io/docs/setup/kubernetes/ and make sure you are able to install without any issues.

After you install istio correctly, you may run kubectl get crd and check that the following resources appear, among others:
gateways.networking.istio.io
virtualservices.networking.istio.io

bump

SImilar error on GKE. When I try to run kubectl apply -f ./samples/bookinfo/networking/bookinfo-gateway.yaml, I get following error:-
unable to recognize "./samples/bookinfo/networking/bookinfo-gateway.yaml": no matches for kind "Gateway" in version "networking.istio.io/v1alpha3"
unable to recognize "./samples/bookinfo/networking/bookinfo-gateway.yaml": no matches for kind "VirtualService" in version "networking.istio.io/v1alpha3"

After you install istio correctly, you may run kubectl get crd and check that the following resources appear, among others:
gateways.networking.istio.io
virtualservices.networking.istio.io

@vadimeisenbergibm Can you tell through which commands should we use to install gateways.networking.istio.io1 and virtualservices.networking.istio.io?

For me kubectl create -f samples/bookinfo/networking/bookinfo-gateway.yaml worked

unable to recognize "https://raw.githubusercontent.com/istio/istio/release-1.2/samples/bookinfo/networking/bookinfo-gateway.yaml": no matches for kind "VirtualService" in version "networking.istio.io/v1alpha3"

Also this one does the same...
ubuntu@ip-172-26-12-49:~/istio-1.7.0$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
unable to recognize "samples/bookinfo/networking/bookinfo-gateway.yaml": no matches for kind "Gateway" in version "networking.istio.io/v1alpha3"
unable to recognize "samples/bookinfo/networking/bookinfo-gateway.yaml": no matches for kind "VirtualService" in version "networking.istio.io/v1alpha3"


Farmer's delight support

Support for Farmer's Delight would be really cool, but it seems like it would need a custom module to support the special crafting blocks it uses. To me it's the best cooking mod out there though, so I think it'd be worth it.

Here's a data pack thing to help get Farmer's Delight support started (not sure if intermediate ingredients belong on the GENERAL list, though. If not, remove "rice" and "milk_bottle" from the top of the general list and remove "rice_panicle" from the top of the ingredients list):
{
"modid": "farmersdelight",
"foods": {
"GENERAL": [
"farmersdelight:rice",
"farmersdelight:milk_bottle",
"farmersdelight:hot_cocoa",
"farmersdelight:apple_pie",
"farmersdelight:sweet_berry_cheesecake",
"farmersdelight:chocolate_pie",
"farmersdelight:roast_chicken_block",
"farmersdelight:stuffed_pumpkin_block",
"farmersdelight:honey_glazed_ham_block",
"farmersdelight:shepherds_pie_block"
],
"INGREDIENTS": [
"farmersdelight:rice_panicle",
"farmersdelight:rice",
"farmersdelight:milk_bottle"
]
},
"kitchenItemProviders": [
"farmersdelight:basket",
"farmersdelight:pantry"
]
}
But there's also still this special cooking appliance that Farmer's Delight adds called a Cooking Pot. It's like a Crafting Table combined with a Furnace and has a slot for Bowls or Glass Bottles to go in. It would be cool if the Cooking Table could insert items into the Cooking Pot like it does with the Oven.
The only other things I know of that you might possibly add support for are the Stove and the Cutting Board. The Stove is just a Campfire that holds 6 items instead of 4. But Cooking for Blockheads doesn't support the vanilla Campfire, so maybe it doesn't make sense to support the Farmer's Delight Stove.
The other thing is the Cutting Board. You can place one of the many cakes or a pumpkin or a melon on the Cutting Board and click it with a knife to cut it into slices. Not sure how important supporting the Cutting Board is. Might be kind of cool though to craft a cake and immediately send it to the cutting board.

The cutting board is actually required for many of the cooking recipes, it's not just for slicing stuff.

Basic support has been added via #542, but I'm not really sold on supporting the special crafting blocks yet.
It feels like it kind of defeats the point of Farmer's Delight to just have its in-world crafting be performed automatically.
Moving this over to Discussions for now.


Upgrade Gas refund to refund the last 3 failed or reverted transactions

update was made to refund all transactions


YouTube shields show 'invalid' subscriber count

Are you experiencing an issue with...
shields.io
🐞 Description
Sub counts no longer display on YouTube shield:

🔗 Link to the badge
https://img.shields.io/youtube/channel/subscribers/UCgBMqK7SRL5R__3qM-YAcSg?label=Follow %40AdamLuiTube&style=social
💡 Possible Solution
No response

Thanks but closing as a duplicate of #8605


Dynamic imports for custom overrides and SaaS fixtures

Closes #2168
Code Changes

[x] Added dynamic imports for custom overrides and SaaS fixtures

Steps to Confirm

[x] Ran the SaaS integration tests to verify custom overrides and fixtures are still loaded correctly

Pre-Merge Checklist

[ ] All CI Pipelines Succeeded
Documentation:

[ ] documentation complete, PR opened in fidesdocs
[ ] documentation issue created in fidesdocs

[ ] Issue Requirements are Met
[ ] Relevant Follow-Up Issues Created
[ ] Update CHANGELOG.md

Thanks for the review @adamsachs. I updated both the custom overrides module and the SaaS fixtures module because I want to wrap up https://github.com/ethyca/fides/pull/1795 before I go on break since AG is close to getting to the point of writing tests for the connectors they've been working on.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target/pull/842 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-target.git

Docs Build status updates of commit 0014765:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-GitBranchDeletedOrForcePushed] Cannot sync git repo to specified commit because branch Release_Archive_master_2021-05-26-07-21-44 has been deleted or has been force pushed

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Point help to class repos directly

The bottom of each page currently says to "ask for help in the class repo", but it doesn't actually link the learner to that page. So unless the user has the class repo on another window, it might be difficult for them to figure out exactly where to get help. Additionally, new users may not be familiar with concepts like "open a new issue".
This PR tries to make asking for help easy by pointing each page to a specific link where learners can ask for help. That link is currently just a new issue with some pre populated text. In the future, these templates can be improved so that we can get information about exactly which page the learner is stuck at.

Before
After

In the future, these templates can be improved so that we can get information about exactly which page the learner is stuck at.

🤤 I love this potential feature so much. It would allow us to identify what content needs to be fixed or looked at the next time we do a content refresh / inspection.

@hectorsector :heart: Thank you for doing this. I think it will make it easier for people to ask for help, which is the point!
I pushed a commit which changes the issue that is opened, so it will automagically have the "Help Wanted" label attached. I think this might make it a little easier for us to see and help, or even for other community members to help. As always please feel free to edit or revert. 😊 🚢

Thanks, @brianamarie 🚢ing.


Refused to display https://login.microsoftonline.com/common/oauth2/ in a frame because it set 'X-Frame-Options' to 'deny'.

I'm submitting a...

[ ] Issue similar to #84

Browser:

[ ] Chrome version 70.0.3538.102

Library version
@azure/msal-angular: 0.1.2

Current behavior
Configure the application to acquire an access token in Google Chrome and used
consentScopes: ["https://litware.onmicrosoft.com/demoApi/user.read"]
where
litware.onmicrosoft.com is the B2C tenant
demoapi is the APP ID URI
user.read is the published scope of the api application
However getting the issue in console - Refused to display "https://login.microsoftonline.com/common/oauth2/............" in a frame because it set 'X-Frame-Options' to 'deny'.
Expected behavior

It should work without any issue

@subhendu-de @jsomdev I noticed you are using msal-angular. Can you let us know if your app is creating nested iframes by the way msal is loading? Please check this FAQ topic to see if it helps with x-frame deny issue.

any update? same issue here when trying to integrate editprofile policy. I'm using<EMAIL_ADDRESS>& latest Chrome.

@navyasric I'm checking the Q6  from FAQ. for the first workaround Specify a different html for the iframe, can you elaborate a little more how it works? I mean how to configure the application in AD and source. I'm trying to update the Reply URL in B2C AD to another valid page, but then it breaks the login.


Add option to sync tmux panes

-s to equivalently to :setw synchronize-panes on

closed by cd6d170139d21b26d1569a881088e00c3cb23d4e


Adding Nav and Filter toggle

Documented in #93

Also added in the new nav layout described in #105.

Merging. Made issue #109 to cover visibility of the show/hide chart buttons.


Autocompletion keywords are returned in a very Swarmy way

Feature Idea
I've been using autocompletions in the Comfy tab via this node and it's been working great. However, in Swarm's Generate tab, after copying the exact same autocomplete file I was using in the Comfy tab, the autocompletions are listed in a different order.
This might not sound like much of a problem but let me explain it this way:
Imagine I'm building myself a prompt and I have an idea of what I want. Let's say that, as an example, one of the things I want is some sort of machine but I don't yet know what exact keywords I'd like to use. Just 'machine'...something, or something...'machine'.
In the comfy node, anything that matches the word I type is listed, along with the (I assume) popularity number.

In Swarm's autocomplete, the results are returned without the associated number and in a completely different order.

Why is this important? Plenty of models I've tested respond better to more popular tags. This is why I've been experimenting with Pony models. I have a higher success rate with models that are trained with more common tags than by letting the checkpoint try to sort itself out with guesswork.
In Comfy, I was using the numbers to help guide me to whichever tags seemed most likely to be understood by the model.
My feature request is to have the resulting keywords appear either:

The keyword with a number to be displayed in the order of highest-lowest number.
Have an option to return results in the order in which they appear in the autocompletion file if the file does not contain the numbers.

Regarding the second one, this file is the one I've been using. I'm using the exact same file in the exact same order for both Comfy and Swarm autocomplete but Swarm reorders the results. In the file itself, all tags are already sorted in order of highest number to lowest. If keywords are returned by autocomplete with the highest numbered ones first, then I can make an educated guess as to what I'm likely to have most success with.
Dare I say it: Swarm's keyword matching is a little bit too clever for this use case.
It would be icing on the cake if Swarm would also list the corresponding number (as in the Comfy node) so I'm aware of whether or not I'm trying to generate a barely used obscure tag.
Thanks.
Other
No response

Oh, that's a unique format I haven't seen before
https://raw.githubusercontent.com/DominikDoom/a1111-sd-webui-tagcomplete/main/tags/danbooru.csv is I think the same data (danbooru tags list) but in a format Swarm does support
I can add support for the other format.
And yes Swarm matching list is sorted by how good of a match it is rather than source order. I can add a user setting to disable the smarter matching logic if you don't like that

Added support for the wonky 2-part csv with a .txt extension
added Match Mode user setting to control whether or not startswith/contains get bucketed
added Sort Mode user setting to control how tags are sorted

For what you requested, you'll want:

or 'Frequency' on sort mode at your own preference


How to use ribbon to fail quickly

Question
How to use ribbon to fail quickly
When a service in the cluster is abnormal (crashes), the call to that address will remain abnormal.
Until Eureka removed it, it took a little longer and had a very unfriendly effect.
I tried to configure retry in gateway, but it was more likely to call exception services.
By looking at the source code (Load Balancer Client Filter), I found that gateway did not use ribbon's fast failure feature.
When the number of exceptions to a service reaches a threshold and the service is isolated, I think this is a very common scenario.
I have searched for the type of question #568
Is there a solution now?
Thank you

AFAIK there is no out-of-the-box solution yet. Because a lot of projects under the Spring Cloud Netflix umbrella went into maintenance mode, including spring-cloud-netflix-hystrix and spring-cloud-netflix-ribbon, we don't want to rely too much on them.
However work is being put into Spring Cloud Circuit Breaker which will be the replacement, but it's still in its incubating phase.

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.


Consider being on zsh-completions

Something a bit more mainstream is zsh-completions c:

That seems like something a contributor could do. I personally wont do it at least yet since the CLI is still quite volatile.


Add high level overview of features to main README and update broken link

Ticket

N/A

Changes

What was added, updated, or removed in this PR.

Updates main README.md to:

List main features of the repo
Fix a broken doc link

Context for reviewers

Testing instructions, background context, more in-depth details of the implementation, and anything else you'd like to call out or ask reviewers. Explain how the changes were verified.

I wanted to add an at-a-glance overview of all the features built into this repo.
Testing

Screenshots, GIF demos, code examples or output to help show the changes working as expected. ProTip: you can drag and drop or paste images into this textbox.

Fixed this broken link:

@chouinar If this looks good to you, I think we should also port these changes to https://github.com/navapbc/template-application-flask


Freeze header fields

We are using the px-data-table. The issue is that when the user scrolls the header scrolls out of view.  We would like to have the ability to freeze the header so it does not move during scrolling. This seems like it is what most users would want.

This is a duplicate of https://github.com/PredixDev/px-data-table/issues/66 - Our friend @benmak11 is looking to implement this.

Actually, I'll close this as this is represented well by the other discussion. Thanks for the enhancement request.


Don't convert data with time units to timedeltas by default

Don't convert data with time units to timedeltas by default. Most of the time this behavior is not desirable (e.g: wave period data).
@shoyer suggest:

possibly we should add an explicit toggle for decoding timedeltas vs datetimes.

xref: https://github.com/pydata/xarray/pull/842#issuecomment-216933269

@shoyer is this what you have in mid? Replacing decode_time for decode_datetimes and decode_timedelta and then:
    if decode_datetimes and 'units' in attributes and 'since' in attributes['units']:
        units = pop_to(attributes, encoding, 'units')
        calendar = pop_to(attributes, encoding, 'calendar')
        data = DecodedCFDatetimeArray(data, units, calendar)

    if decode_timedelta and attributes['units'] in TIME_UNITS:
        units = pop_to(attributes, encoding, 'units')
        data = DecodedCFTimedeltaArray(data, units)

To be honest I cannot see why someone might want to convert time data to a timedelta and I would be inclined to remove decode_timedelta instead. However, that may be my very biased view since such transformation does not make sense with my data :smile:
Do you have any advice? (I would like to try this before you release v0.8.0)

It's too late for v0.8.0, I'm afraid! I already tagged/uploaded the release and am about to send out the announcement.

No problem. I want to solve this anyways b/c it is quite awkward to keep converting back from timedeltas to time data. I will have a PR soon.

To answer your original question: yes, separate decode_timedeltasand decode_datetimes options seems like a sane way to handle this.

Prototype is ready http://nbviewer.jupyter.org/gist/ocefpaf/cabdcb27a5ef7da1b6110327a5f03e17
I will polish this and send a PR soon.

@shoyer the more I think about this the more I don't like the addition of extra keywords. Even though I would like this behavior to be the default one I really do not like the complexity I added here.
Closing this...


Start bilingual translation of docs/wiki

20240406: Closing issue during retrofit/rebase of this TEF V1 based/modified repo to TEF V4 standards
This issue may participate in the LZ refactor after rebase
Query on all issues related to the older V1 version via the tag
https://github.com/GoogleCloudPlatform/pbmm-on-gcp-onboarding/labels/2024-pre-tef-v4


[PE-D][Tester D] Java version not accurate

Project constraint set the java version to be 11, but it is stated as java 11 or above in user guide.

Labels: type.DocumentationBug severity.Low
original: swtan346/ped#15

Sure, we will change it.


[AbemaTV] site broken

Checklist

[X] I'm reporting a broken site
[X] I've verified that I'm running yt-dlp version 2022.06.29 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[ ] I've read about sharing account credentials and I'm willing to share it if required

Region
Japan
Provide a description that is worded well enough to be understood
2022.6.29 version has the error.
Then I used 2022.5.18 version, no error, downloaded successfully.
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['-vU', 'https://abema.tv/video/episode/19-98_s3_p1']
[debug] Portable config "G:\Video\DL\yt-dlp\yt-dlp.conf": ['--ffmpeg-location', 'G:/Video/DL/ffmpeg-2021-04-25-git-d98884be41-full_build/bin/', '--console-title', '-o', 'G:/Video/Anime/%(title)s.%(ext)s', '--no-playlist', '--embed-thumbnail', '--convert-thumbnails', 'webp>png']
[debug] Encodings: locale cp950, fs utf-8, pref cp950, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.06.29 [9d339c4] (win32_exe)
[debug] Python 3.8.10 (CPython 64bit) - Windows-10-10.0.19044-SP0
[debug] Checking exe version: "G:/Video/DL/ffmpeg-2021-04-25-git-d98884be41-full_build/bin/ffmpeg" -bsfs
[debug] Checking exe version: "G:/Video/DL/ffmpeg-2021-04-25-git-d98884be41-full_build/bin/ffprobe" -bsfs
[debug] exe versions: ffmpeg 2021-04-25-git-d98884be41-full_build-www.gyan.dev (setts), ffprobe 2021-04-25-git-d98884be41-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.06.15, mutagen-1.45.1, sqlite3-2.6.0, websockets-10.3
[debug] Proxy map: {}
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
[debug] Downloading _update_spec from https://github.com/yt-dlp/yt-dlp/releases/download/2022.06.29/_update_spec
Latest version: 2022.06.29, Current version: 2022.06.29
yt-dlp is up to date (2022.06.29)
[debug] [AbemaTV] Extracting URL: https://abema.tv/video/episode/19-98_s3_p1
[AbemaTV] Authorizing
[AbemaTV] 19-98_s3_p1: Downloading webpage
[AbemaTV] 19-98_s3_p1: Checking playability
[AbemaTV] 19-98_s3_p1: Downloading m3u8 information
[debug] Default format spec: bestvideo*+bestaudio/best
[info] 19-98_s3_p1: Downloading 1 format(s): 5300
[info] Downloading video thumbnail 0 ...
[info] Writing video thumbnail 0 to: G:\Video\Anime\第1話 ハルマゲドンかるたX.jpg
[ThumbnailsConvertor] Not converting thumbnail "G:\Video\Anime\第1話 ハルマゲドンかるたX.jpg"; could not find a mapping for jpg
[debug] Invoking hlsnative downloader on "https://vod-abematv.akamaized.net/program/19-98_s3_p1/1080/playlist.m3u8?aver=1"
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 237
[download] Destination: G:\Video\Anime\第1話 ハルマゲドンかるたX.mp4
[debug] File locking is not supported. Proceeding without locking
[download]   0.4% of ~518.10MiB at  509.50KiB/s ETA 17:15 (frag 1/237)[AbemaTV] Fetching media token
[AbemaTV] Requesting playback license
ERROR: base None exceeds table length 58
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1420, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1504, in __extract_info
  File "yt_dlp\YoutubeDL.py", line 1561, in process_ie_result
  File "yt_dlp\YoutubeDL.py", line 2630, in process_video_result
  File "yt_dlp\YoutubeDL.py", line 3129, in process_info
  File "yt_dlp\YoutubeDL.py", line 2829, in dl
  File "yt_dlp\downloader\common.py", line 444, in download
  File "yt_dlp\downloader\hls.py", line 354, in real_download
  File "yt_dlp\downloader\fragment.py", line 526, in download_and_append_fragments
  File "yt_dlp\downloader\fragment.py", line 354, in decrypt_fragment
  File "yt_dlp\downloader\fragment.py", line 346, in _get_key
  File "yt_dlp\YoutubeDL.py", line 3596, in urlopen
  File "urllib\request.py", line 525, in open
  File "urllib\request.py", line 542, in _open
  File "urllib\request.py", line 502, in _call_chain
  File "yt_dlp\extractor\abematv.py", line 141, in abematv_license_open
  File "yt_dlp\extractor\abematv.py", line 127, in _get_videokey_from_ticket
  File "yt_dlp\utils.py", line 4778, in decode_base_n
  File "yt_dlp\utils.py", line 4759, in _base_n_table
ValueError: base None exceeds table length 58

Should be fixed in master HEAD (by commit 44f14eb43e1601342955bbb4f34cee523cb8a874).


github_runner_matrix: cleanup GitHub macOS runner

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[ ] Have you successfully run brew tests with your changes locally?

These come with some pre-installed software that we probably want to
clean up first.

It won't get rid of everything, but it'll be a start.

Yup. I opened Homebrew/homebrew-test-bot#916 to get rid of more stuff.

Thanks @carlocab
1


link frontend and backend in production

Issue Description
In an earlier issue, I managed to link the two together for local development https://github.com/bldg14/eventual/pull/17, and I had made an assumption about how I might make that work:

The assumption is that in production we'll be serving the client from the some origin as the server. A problem left for later.

This is no longer the case. Without having control of the reverse proxy to direct some of the paths to a different server, my plan is to use a subdomain for the server, effectively a different domain than the client. Using a subdomain for the server should make some security problems simpler.
According to the create-react-app docs, environment variables are embedded during the build time and looks for environment variables prefixed with REACT_APP_. These must not be secrets since they get embedded into the build and served, easily inspectable.
As an example of this:
REACT_APP_BACKEND_URL=http://your-production-backend.domain.com

Then in the client, it can be referenced via
const backendUrl = process.env.REACT_APP_BACKEND_URL;

We'll have to ensure that these environment variables are set during build time though.
Supporting Documentation

https://github.com/bldg14/eventual/pull/17
https://create-react-app.dev/docs/adding-custom-environment-variables/

Implementation Details
This is going to require the implementation of some client side code, which will be useful later on. I'll create an http directory to export from.
const baseUrl = process.env.REACT_APP_BACKEND_URL;

export const get = async (endpoint: string, queryParameters?: Record<string, string>): Promise<any> => {
    const queryString = queryParameters ? new URLSearchParams(queryParameters).toString() : '';
    const url = queryString ? `${baseUrl}${endpoint}?${queryString}` : `${baseUrl}${endpoint}`;

    const headers = {
        "Content-Type": "application/json",
    };

    const config: RequestInit = {
        method: "GET",
        headers,
    };

    let response;
    try {
        response = await fetch(url, config);
        if (!response.ok) {
            throw new Error(String(response.status));
        }
    } catch (error) {
        throw new Error(`Fetching ${url} failed: ${error}`);
    }

    return response.json();
};

Acceptance Criteria

[ ] can make api requests from the client to the server where they are hosted at different domains.

The resulting PR from this issue will resolve both this issue and https://github.com/bldg14/eventual/issues/18.


(Frontend) Ajax result are not decoded

Home Assistant release with the issue:
0.72.1
Last working Home Assistant release (if known):
No
Operating environment (Hass.io/Docker/Windows/etc.):
New virtual machine with fedora 28. fresh installed with pip3.
Description of problem:
Ajax result are not decoded. Many function not work. ( config, history ... )
ha-state-history-data.js:24 Uncaught (in promise) TypeError: t.forEach is not a function
    at f (ha-state-history-data.js:24)
    at hass.callApi.then.t (ha-state-history-data.js:379)

Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
homeassistant:
  # Name of the location where Home Assistant is running
  name: Home
  # Location required to calculate the time the sun rises and sets
  latitude: 40.035409
  longitude: 116.214148
  # Impacts weather/sunrise data (altitude above sea level in meters)
  elevation: 43.5
  # metric for Metric, imperial for Imperial
  unit_system: metric
  # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
  time_zone: Asia/Shanghai
  # Customization file
  customize: !include customize.yaml

# Show links to resources in log and frontend
introduction:

# Enables the frontend
frontend:
  javascript_version: latest

# Enables configuration UI
config:

http:
  # Secrets are defined in the file secrets.yaml
  # api_password: !secret http_password
  # Uncomment this if you are using SSL/TLS, running in Docker container, etc.
  base_url: home-assistant.service.gongt.me:59443

# Checks for available updates
# Note: This component will send some information about your system to
# the developers to assist with development of Home Assistant.
# For more information, please see:
# https://home-assistant.io/blog/2016/10/25/explaining-the-updater/
updater:
  # Optional, allows Home Assistant developers to focus on popular components.
  include_used_components: true

# Discover some devices automatically
discovery:

# Allows you to issue voice commands from the frontend in enabled browsers
conversation:

# Enables support for tracking state changes over time
history:

# View all events in a logbook
logbook:

# Enables a map showing the location of tracked devices
map:

# Track the sun
sun:

# Weather prediction
sensor:
  - platform: yr

# Text to speech
tts:
  - platform: google

# Cloud
cloud:

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml

Traceback (if applicable):
2018-07-03 06:43:33 INFO (MainThread) [homeassistant.components.http.view] Serving /api/history/period/2018-07-02T16:00:00.000Z to <IP_ADDRESS> (auth: True)

the last screenshot seems have something wrong with chrome DevTools, the value shown is stateHistory, not stateInfo.

/move to home-assistant/home-assistant-polymer


GitHub Secrets

GitHub Secrets
https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets
https://github.com/xgqfrms/GitHub-Actions-All-in-One/settings/secrets/actions/new

https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets#naming-your-secrets

https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets#using-encrypted-secrets-in-a-workflow
steps:
  - name: Hello world action
    with: # Set the secret as an input
      super_secret: ${{ secrets.SuperSecret }}
    env: # Or as an environment variable
      super_secret: ${{ secrets.SuperSecret }}


Fix for FileNotFoundException on Mac - Issue 6643

Overview
Fix for FileNotFoundException that appeared on import of the Examples package on a Mac.
Changes

Fixes: #6643

Verification

As a reviewer, it is possible to check out this change locally by using the following
commands (substituting {PR_ID} with the ID of this pull request):
git fetch origin pull/{PR_ID}/head:name_of_local_branch
git checkout name_of_local_branch

/azp run


Update creating-a-system-versioned-temporal-table.md

Clarify purpose of hidden columns as to avoid confusion like in forum question: https://social.msdn.microsoft.com/Forums/en-US/3007cd80-c6aa-45a9-93c7-e61f6481bf36/why-hidden-columns-are-shown-via-odbc

@guzmanda : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Hi @CarlRabeler
Would you review the proposed changes to your article?
Thank you

@guzmanda thanks for the clarification - I have approved its merger into master for publication later today.
Carl


Missing and wrong translations for German

In the locales file for German there are missing these entries:
'yes': 'Yes',
'no': 'No'

in the section general.
In the section blocks there are some entries, that are not translated yet:

for the image block the field upload_error should be corrected like this:

image: {
  'title': "Bild",
  'upload_error': "Es wurde ein Problem beim Upload festgestellt"
}

for the heading block the field title should be corrected like this:

heading: {
  'title': 'Überschrift'
}

I also noticed, that there is a problem with the translations for the ui-delete-controls. When I set the language to de by
SirTrevor.config.language = "de";

these delete controls are already rendered. So it is way too late for reacting to the language change.


Added Wintec

NZ Technical College
Website: https://www.wintec.ac.nz/
Info tech courses can be found here: https://www.wintec.ac.nz/study-at-wintec/courses/information-technology
Verification of the email address can be seen on the zendesk document below the image: https://wintec.zendesk.com/hc/en-us/articles/201115004-Accessing-Wintec-Student-Emails

@adrhumphreys Pull request merged. Thank you!


Thumbnails not loading ratings

The video thumbnails doesn't load the ratings, causing the rating bar to be blank and every video thumbnail having no upvotes or downvotes.
Developer version 525, Firefox 37.0.2.

Enable API v3 in the General settings page.

That fixed it, thanks!


Support for db_out

Accepts incoming payloads generated by db_out (https://github.com/streamingfast/substreams-sink-database-changes).
TODO: Remove ./src/tmp.ts and replace with the updated versions of substreams-sink-database-changes and substrams-sink-webhook.

👍  looks good, published npm package for DatabaseChanges


discussion: Julia - Python interop configuration

You may be interested in the Julia - Python interop configuration we setup over on conda-forge:
https://github.com/conda-forge/julia-feedstock/blob/main/recipe/scripts/activate.sh
Originally posted by @mkitti in https://github.com/tensorchord/envd/issues/495#issuecomment-1163520956

The script does two tasks:

It helps Julia locate Python and Conda
It locates the Julia depot, where packages and other data are stored, within the conda environment.

It does not install Julia packages via conda. There are very few Julia packages that allow for that.
Do you need to have Julia store data and packages somewhere else other than $HOME/.julia?
Do you plan on integrating the Python and Julia installs for interop? Julia's default procedure via the Julia package Conda.jl is to setup a new Python environment within $JULIA_DEPOT.

From my few experiences in using Julia, as long as PyCall.jl can find python it can fully interoperate with Python. It means the configuration can be very flexible, I can use system python3, python from venv or conda env and even python2 from conda
https://github.com/JuliaPy/PyCall.jl#installation

By default on Mac and Windows systems, Pkg.add("PyCall") or Pkg.build("PyCall") will use the Conda.jl package to install a minimal Python distribution (via Miniconda) that is private to Julia (not in your PATH). You can use the Conda Julia package to install more Python packages, and import Conda to print the Conda.PYTHONDIR directory where python was installed. On GNU/Linux systems, PyCall will default to using the python3 program (if any, otherwise python) in your PATH.

The discussion can be tailed down to two questions:

Should Conda be installed by default or choose by user?
I think it can inheritance envd's python configuration.
What environment variables should be set and env activation order?

@mkitti correct me if I'm wrong.

@gaocegege I just tried to install PyCall.jl with envd main branch, and here is some information you may interested in.
The first thing I have to point out is that conda is installed in docker.io/tensorchord/julia:1.8rc1-ubuntu20.04 image while the installation command is not shown in base-images/julia1.8rc1-ubuntu20.04.Dockerfile.
There is not problem creating a base Julia environment (e.g., examples/julia-basic/envd.build) and install PyCall.jl in Julia REPL. It uses system python3 by default.
envd@8fddf0a0e655:~/bin$ julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.8.0-rc1 (2022-05-27)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

press “]”
(@v1.8) pkg> add PyCall
press “Backspace”

julia> using PyCall

julia> pyversion
v"3.8.10"

julia> PyCall.libpython
"/usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0"
julia> pymath = pyimport("math")
PyObject <module 'math' (built-in)>

julia> pymath.pi
3.141592653589793

However, if I put PyCall in build.envd, the envd build will fail. Because PyCall package cannot find neither /usr/bin/python3 nor /opt/conda/bin/python. python is not in PATH I guess. Then it installs miniconda + numpy to ~/.julia. The conda (package) installation error cause the building failure.
As Python is always available in Linux system and it required by Jupyter ecosystem. Julia does not need to maintain its own Python distribution in our use case.
I made an ad-hoc patch to julia.go
root = root.AddEnv("PATH", "/usr/local/julia/bin")
// root = root.AddEnv("PYTHON", "/usr/bin/python3")
root = root.AddEnv("PYTHON", "/opt/conda/bin/python")
run := root.Run(llb.Shlex(cmd), llb.WithCustomNamef("install julia packages"))

Then PyCall.jl can find python binary and be installed successfully by envd.
Here is the output when using Python from Conda.
julia> using PyCall

julia> pyversion
v"3.9.7"

julia> PyCall.libpython
"/opt/conda/lib/libpython3.9.so.1.0"

I propose always compile python state and set environment variable PYTHON before Julia state. Add python to PATH or active the python env may also works. For now, I just find env variable PYTHON is required. Not sure about other conda related variables e.g., CONDA_JL_HOME, CONDA_JL_CONDA_EXE.

I propose always compile python state and set environment variable PYTHON before Julia state. Add python to PATH or active the python env may also works. For now, I just find env variable PYTHON is required. Not sure about other conda related variables e.g., CONDA_JL_HOME, CONDA_JL_CONDA_EXE.

SGTM. I think we do not setup conda well in Julia image since we do not expect users need it before.

The code that PyCall.jl uses to find Python is located here:
https://github.com/JuliaPy/PyCall.jl/blob/master/deps/build.jl
It does the following:

First it looks for the PYTHON environment variable.
Second, if the PYTHON environment variable is not found it looks for a file called ~/.julia/prefs/PyCall.
Third, if both of the above fail it asks Conda.jl.

Conda.jl will by default build its own conda environment within ~/.julia/conda
https://github.com/JuliaPy/Conda.jl/blob/master/deps/build.jl
Conda.jl uses the CONDA_JL_* environment variables.


Adding New buttons

Details
I would like to add a new button palette.
Kindly assign me this issue under gssoc'23
Screenshots
No response
Type of Contribution

[ ] Update to an existing Animated Button
[X] Adding a new Button
[ ] Resolving a bug
[ ] Proposal to the Repository
[ ] Changes related to documentation or README.md
[ ] Other Changes

Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue
[X] I am a GSSoC'23 contributor

I would like to add a 3d button. Kindly assign me this issue under gssoc'23.


[Question][devlake] Setting up a development environment on macOS Sonoma 14.2

Question

About mysqlclient module compatibility(ISO C99 and later do not support implicit function declarations)
The problem of mysqlclient not being installed during installation of fakeplugin due to a version issue was resolved by using 2.2.x instead of 2.1.1.

Occur panic on go run server/main.go

panic: plugin.Open("bin/plugins/gitextractor/gitextractor.so"): dlopen(/Users/admin/PycharmProjects/incubator-devlake/backend/bin/plugins/gitextractor/gitextractor.so, 0x000A): Library not loaded: @rpath/libgit2.1.3.dylib
  |   Referenced from: <65ABAC48-5208-388B-845A-10DFA9ADD47F> /Users/admin/PycharmProjects/incubator-devlake/backend/bin/plugins/gitextractor/gitextractor.so
  |   Reason: no LC_RPATH's found
Wraps: (2) plugin.Open("bin/plugins/gitextractor/gitextractor.so"): dlopen(/Users/admin/PycharmProjects/incubator-devlake/backend/bin/plugins/gitextractor/gitextractor.so, 0x000A): Library not loaded: @rpath/libgit2.1.3.dylib
  |   Referenced from: <65ABAC48-5208-388B-845A-10DFA9ADD47F> /Users/admin/PycharmProjects/incubator-devlake/backend/bin/plugins/gitextractor/gitextractor.so
  |   Reason: no LC_RPATH's found
Error types: (1) *hintdetail.withDetail (2) *errors.errorString

goroutine 1 [running]:
github.com/apache/incubator-devlake/core/errors.Must(...)
        /Users/admin/PycharmProjects/incubator-devlake/backend/core/errors/util.go:34
github.com/apache/incubator-devlake/server/services.Init()
        /Users/admin/PycharmProjects/incubator-devlake/backend/server/services/init.go:96 +0x38b
github.com/apache/incubator-devlake/server/api.Init(...)
        /Users/admin/PycharmProjects/incubator-devlake/backend/server/api/api.go:58
github.com/apache/incubator-devlake/server/api.CreateAndRunApiServer()
        /Users/admin/PycharmProjects/incubator-devlake/backend/server/api/api.go:70 +0x14
main.main()
        /Users/admin/PycharmProjects/incubator-devlake/backend/server/main.go:33 +0x30
exit status 2
make[1]: *** [run] Error 1
make: *** [dev] Error 2

Screenshots
If applicable, add screenshots to help explain.
Additional context
Add any other context here.

Only by resolving this issue will the environment be ready to contribute to devlake.
I will work hard to solve it in my own way. If you can help solve the problem, please comment.
Here's what I did it:

Custom install libgit2 correct version on devlake
Added LC_RPATH by install_name_tool

install_name_tool -add_rpath /$path/libgit2/libgit2/build  /$path/incubator-devlake/backend/bin/plugins/gitextractor/gitextractor.so
then, go run server/main.go

Hi, I don't understand the 1st problem, and I don't use mac.
But for the libgit2, you may clone the repo https://github.com/libgit2/libgit2, check out the v1.3.2 tag and build the library by following the README.md https://github.com/libgit2/libgit2/tree/v1.3.2?tab=readme-ov-file#building-libgit2---using-cmake

I had many issues installing it in macOS that I personally gave up. I went the Docker Compose route using the recently added watch command. I also added a layer to the Dockerfile to execute the tests.
The test database is created with docker compose -f docker-compose-dev.yml up mysql_test and tests can be run with docker build --target test -f backend/Dockerfile ./backend --progress=plain --network=host. For developing, docker compose -f docker-compose-dev.yml watch devlake re-builds as it changes.
The changes files are in this commit and might be outdated.
This might seem a lot of work, but I do not have to install anything on my machine or deal with any incompatibilities.
@klesh @abeizn I recall reading about an item in the roadmap about making it simpler to set up the local environment. Is any work being done in this direction, or are there any ideas?

Thanks. I will comment after trying you suggested.

@gustavobini   Not sure, maybe it was about making it simpler for Users? I don't recall any milestone to make Developers' life easier.
However, we did try replacing libgit2 to make things easier for developers with Macs #6615, but it was not very successful due to #7202.

Just adding the LC_RPATH by install_name_tool didn't worked for me 😞
Has anyone using macOS managed to solve this problem?

@caioq We managed to get it working by modifying the following in the backend/Makefile file:
run:
-	go run server/main.go
+	go run -exec "env DYLD_LIBRARY_PATH=/usr/local/lib" server/main.go

https://github.com/apache/incubator-devlake/blob/9251c42a7599d3b20aae1d0868a25024b3d7bb33/backend/Makefile#L62
Hope it helps :)

@caioq We managed to get it working by modifying the following in the backend/Makefile file:
run:
-	go run server/main.go
+	go run -exec "env DYLD_LIBRARY_PATH=/usr/local/lib" server/main.go

https://github.com/apache/incubator-devlake/blob/9251c42a7599d3b20aae1d0868a25024b3d7bb33/backend/Makefile#L62
Hope it helps :)

Thank you so much! this worked for me!


[IconButton] Change tooltipStyles to tooltipStyle in IconButton

[ ] PR has tests / docs demo, and is linted.
[ ] Commit and PR titles begin with [ComponentName], and are in imperative form: "[Component] Fix leaky abstraction".
[ ] Description explains the issue / use-case resolved, and auto-closes the related issue(s) (http://tr.im/vFqem).

I'm gonna close that PR following our ROADMAP we only accept bug fixes for the master branch.

We try to avoid as many breaking changes as possible. Thanks for the suggestion through, the name is definitly no ideal.


Upgrade dependencies

babel 6.24.1 -> 6.26.0
eslint 4.4.1 -> 4.6.1
jest 21.0.0 -> 21.0.1

Codecov Report

Merging #97 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master    #97   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          69     69
  Lines         130    130
  Branches        7      7
=====================================
  Hits          130    130

Continue to review full report at Codecov.

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


Add WidgetButton

This PR adds a widget button. The "normal" button allows only a text caption. With this new extension it's possible to make a button out of every existing widget.

ping @fjvallarino

Ah there is onClick for a box_? Then this is indeed not needed. I'll
double check
On Tue, May 24, 2022, 11:31 Muhammed Zakir @.***> wrote:

I think the intended way is: box_ [onClick Event] someWidget. Is
widgetButton different?
—
Reply to this email directly, view it on GitHub
https://github.com/fjvallarino/monomer/pull/158#issuecomment-1136079729,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADAJPEVJMGKQ3ZMVMKMWVLVLTY6VANCNFSM5WSUOP7A
.
You are receiving this because you authored the thread.Message ID:
@.***>

Stupid me: I already used box_ with onClick in my project, forgot about it and then added this mess instead, lol.

@prolic sorry for the long delay; been dealing with personal issues and may not be as responsive as usual for a couple more weeks.
One problem with using button instead of box is that it includes default styling based on the current theme; in most cases, you would need to disable it, providing ignoreTheme as a configuration flag. Another issue is that styling can become a bit of a nightmare since the current implementation is quite tightly tied to label (it passes down styling options in a way that avoids these issues). While demanding a bit more effort, I think using box is more explicit regarding what you can expect, instead of finding limitations or weird behavior.
One missing thing in box is that when marked as focusable, it does not respond to Enter/Space when it has focus. I intended this to be handled by a wrapper keystroke widget, but I guess it's more intuitive if it works that way out of the box. I'll think about it a bit and push changes.


Prefix css to prevent modifying default python kerenl look/feel

@jbeezley PTAL

Current coverage is 38.35% (diff: 100%)

Merging #63 into master will not change coverage

@@             master        #63   diff @@
==========================================
  Files             8          8
  Lines            73         73
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits             28         28
  Misses           45         45
  Partials          0          0

Powered by Codecov. Last update b6410a4...1c208dc


Add /g as default option

i would like to see the option to set the global chat as default, per player.

You try to say that you wantus to add this option to settings?

yes, just like on the overcast, doing /g without further text will set the global chat by default.


Cluster-Autoscaler: consider node with unknown readiness unready

Node with non-responsive kubelet seems to be marked as NodeReady: Unknown, which is currently considered as ready by CA.

This change is

/lgtm
/approve


No price info from Ehningen to Nufringen

https://herrenberg.beta.stadtnavi.eu/reiseplan/Ehningen%3A%3A48.6592556%2C8.9405097/Nufringen%3A%3A48.6224388%2C8.8881021/0?time=1624876708

For me, both itineraries have a price. Can you clarify @leonardehrenfried?

Strange, cannot reproduce anymore.


[Pytests] - Should HCLattice class be able to create 1D lattices?

Just started creating some test files using pytest, as part of the code improvement roadmap. (check the test_files branch)
While testing the instantiation of the HCLattice class for 1D lattices (commit 5f26ca4), I ran into the error below.
            )
E           ValueError: At least two points are required to calculate the distance.

HC_Lattice.py:772: ValueError

Yes, I think this could happen sometime since I defined a lot of functions and tested them only for 2+1D, so for every other cases I usually put a raise error to fill the gap. In this and every other case I suggest to a) leave it as it is and check that the function is called only in certain cases so we don't get error messages OR b) extend the action of the function (but of course this requires more work)


Vehicle arrives early at Shipment with DeliveryTimeWindow

Issue
When creating a shipment with a delivery timewindow set to a specific time, the assigned vehicle will arrive early at the corresponding pickup and delivery activities:
/*
 * Licensed to GraphHopper GmbH under one or more contributor
 * license agreements. See the NOTICE file distributed with this work for
 * additional information regarding copyright ownership.
 *
 * GraphHopper GmbH licenses this file to you under the Apache License,
 * Version 2.0 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.graphhopper.jsprit.examples;

import com.graphhopper.jsprit.core.algorithm.VehicleRoutingAlgorithm;
import com.graphhopper.jsprit.core.algorithm.box.Jsprit;
import com.graphhopper.jsprit.core.algorithm.state.StateManager;
import com.graphhopper.jsprit.core.problem.Location;
import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem;
import com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.FleetSize;
import com.graphhopper.jsprit.core.problem.constraint.ConstraintManager;
import com.graphhopper.jsprit.core.problem.constraint.HardActivityConstraint;
import com.graphhopper.jsprit.core.problem.constraint.SoftActivityConstraint;
import com.graphhopper.jsprit.core.problem.cost.VehicleRoutingTransportCosts;
import com.graphhopper.jsprit.core.problem.job.Shipment;
import com.graphhopper.jsprit.core.problem.misc.JobInsertionContext;
import com.graphhopper.jsprit.core.problem.solution.SolutionCostCalculator;
import com.graphhopper.jsprit.core.problem.solution.VehicleRoutingProblemSolution;
import com.graphhopper.jsprit.core.problem.solution.route.VehicleRoute;
import com.graphhopper.jsprit.core.problem.solution.route.activity.TimeWindow;
import com.graphhopper.jsprit.core.problem.solution.route.activity.TourActivity;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleImpl;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleType;
import com.graphhopper.jsprit.core.problem.vehicle.VehicleTypeImpl;
import com.graphhopper.jsprit.core.reporting.SolutionPrinter;
import com.graphhopper.jsprit.core.util.Coordinate;
import com.graphhopper.jsprit.core.util.Solutions;
import com.graphhopper.jsprit.core.util.VehicleRoutingTransportCostsMatrix;
import com.graphhopper.jsprit.util.Examples;

import java.util.Collection;

public class ShipmentWithOpenPickupAndSetDeliveryTimeWindowExample {

    public static void main(String[] args) {
        /*
         * some preparation - create output folder
         */
        Examples.createOutputFolder();

        VehicleType type = VehicleTypeImpl.Builder.newInstance("type")
            .addCapacityDimension(0, 2)
            .setCostPerTransportTime(1)
            .build();
        VehicleImpl vehicle = VehicleImpl.Builder.newInstance("vehicle")
            .setStartLocation(Location.Builder.newInstance().setId("0").setCoordinate(Coordinate.newInstance(0,0)).build())
            .setEarliestStart(0)
            .setReturnToDepot(false)
            .setType(type)
            .build();
        Shipment s1 = Shipment.Builder.newInstance("shipment")
            .addSizeDimension(0, 1)
            .setPickupLocation(Location.Builder.newInstance().setId("1").setCoordinate(Coordinate.newInstance(10,10)).build())
            .setDeliveryLocation(Location.Builder.newInstance().setId("2").setCoordinate(Coordinate.newInstance(20,20)).build())
            .setDeliveryTimeWindow(TimeWindow.newInstance(40, 45))
            .setMaxTimeInVehicle(15)
            .build();

        //define a matrix-builder building a symmetric matrix
        VehicleRoutingTransportCostsMatrix.Builder costMatrixBuilder = VehicleRoutingTransportCostsMatrix.Builder.newInstance(true);
        costMatrixBuilder.addTransportTime("0", "0", 0.0);
        costMatrixBuilder.addTransportTime("0", "1", 10.0);
        costMatrixBuilder.addTransportTime("0", "2", 20.0);
        costMatrixBuilder.addTransportTime("1", "1", 0.0);
        costMatrixBuilder.addTransportTime("1", "2", 10.0);
        costMatrixBuilder.addTransportTime("2", "2", 0.0);

        VehicleRoutingTransportCosts costMatrix = costMatrixBuilder.build();

        VehicleRoutingProblem vrp = VehicleRoutingProblem.Builder.newInstance()
            .setFleetSize(FleetSize.INFINITE)
            .setRoutingCost(costMatrix)
            .addVehicle(vehicle).addJob(s1).build();

        SoftActivityConstraint lateArrivalsSoftConstraint = new SoftActivityConstraint() {
            @Override
            public double getCosts(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) {
                double transportTime = prevActDepTime + costMatrix.getTransportTime(prevAct.getLocation(), newAct.getLocation(), 0, null, null);
                double difference = newAct.getTheoreticalEarliestOperationStartTime() - transportTime;
                return Math.max(0, difference);
            }
        };

        HardActivityConstraint lateArrivalsHardConstraint = new HardActivityConstraint() {
            @Override
            public ConstraintsStatus fulfilled(JobInsertionContext iFacts, TourActivity prevAct, TourActivity newAct, TourActivity nextAct, double prevActDepTime) {
                double transportTime = prevActDepTime + costMatrix.getTransportTime(prevAct.getLocation(), newAct.getLocation(), 0, null, null);
                double difference = newAct.getTheoreticalEarliestOperationStartTime() - transportTime;
                if (difference <= 0) {
                    return ConstraintsStatus.FULFILLED;
                }
                return ConstraintsStatus.NOT_FULFILLED;
            }
        };

        SolutionCostCalculator objectiveFunction = new SolutionCostCalculator() {
            @Override
            public double getCosts(VehicleRoutingProblemSolution solution) {
                double costs = 0;
                for (VehicleRoute route : solution.getRoutes()) {
                    for (TourActivity activity : route.getActivities()) {
                        double difference = activity.getTheoreticalEarliestOperationStartTime() - activity.getArrTime();
                        costs += Math.max(0, difference);
                    }
                }
                return costs;
            }
        };

        StateManager stateManager = new StateManager(vrp);

        ConstraintManager constraintManager = new ConstraintManager(vrp, stateManager);
        constraintManager.addTimeWindowConstraint();
//        constraintManager.addConstraint(lateArrivalsSoftConstraint);
//        constraintManager.addConstraint(lateArrivalsHardConstraint, ConstraintManager.Priority.CRITICAL);

        VehicleRoutingAlgorithm vra = Jsprit.Builder.newInstance(vrp)
            .setStateAndConstraintManager(stateManager,constraintManager)
            .setObjectiveFunction(objectiveFunction)
            .buildAlgorithm();

        Collection<VehicleRoutingProblemSolution> solutions = vra.searchSolutions();

        SolutionPrinter.print(vrp, Solutions.bestOf(solutions), SolutionPrinter.Print.VERBOSE);
    }

}

+--------------------------+
| problem                  |
+---------------+----------+
| indicator     | value    |
+---------------+----------+
| noJobs        | 1        |
| noServices    | 0        |
| noShipments   | 1        |
| noBreaks      | 0        |
| fleetsize     | INFINITE |
+--------------------------+
+----------------------------------------------------------+
| solution                                                 |
+---------------+------------------------------------------+
| indicator     | value                                    |
+---------------+------------------------------------------+
| costs         | 20.0                                     |
| noVehicles    | 1                                        |
| unassgndJobs  | 0                                        |
+----------------------------------------------------------+
+--------------------------------------------------------------------------------------------------------------------------------+
| detailed solution                                                                                |
+---------+----------------------+-----------------------+-----------------+-----------------+-----------------+-----------------+
| route   | vehicle              | activity              | job             | arrTime         | endTime         | costs           |
+---------+----------------------+-----------------------+-----------------+-----------------+-----------------+-----------------+
| 1       | vehicle              | start                 | -               | undef           | 0               | 0               |
| 1       | vehicle              | pickupShipment        | shipment        | 10              | 10              | 10              |
| 1       | vehicle              | deliverShipment       | shipment        | 20              | 40              | 20              |
| 1       | vehicle              | end                   | -               | 40              | undef           | 20              |
+--------------------------------------------------------------------------------------------------------------------------------+

Expected behaviour:
The vehicle arrives at 40 for the delivery and figures out the latest time to achieve this.

If I set a corresponding pickup timewindow, I can force the desired behaviour, yet I'd like to not restrict this too much and let Jsprit figure out the optimal time.
My guess is that is a current limitation Jsprit calculating a solution from start to end and not vice versa as well, e.g. here:
https://github.com/graphhopper/jsprit/blob/74c3c6839bf64b6bbd73814397b06137be386a79/jsprit-core/src/main/java/com/graphhopper/jsprit/core/algorithm/recreate/ShipmentInsertionCalculator.java#L143

Any sulotion to this problem?


Turbines behave poorly when interior is modified without removing casing

Using an EnderIO staff of travel (and likely other methods) it is possible to get inside a reactor or turbine without removing any casing. doing so to add coils after the rest of the turbine was constructed, a turbine which should have spun to ~900 rpm spun to an arbitrarily large speed while generating no power. Removing and then replacing a casing appears to fix the issue.

That's intentional and by design.
Turbines and reactors only calculate most of their production-related values when they assemble. This is considerably cheaper than calculating them at runtime - in fact, one of the reasons you have to "seal" a reactor in casing/glass is to prevent modifications to reactor/turbine interiors while they're running.
You'll also notice that you don't die (even though you logically should), because I omitted checks to see if there's any entities inside. Normally, that can't happen, so they're unnecessary and are omitted to reduce tick time.
So, basically, don't do that.


Issue when setting compileSdkVersion to 34

I get this error when I set the compileSdkVersion to 34:
Class 'TileView' is not abstract and does not implement abstract base class member public abstract fun onFling(p0: MotionEvent?, p1: MotionEvent, p2: Float, p3: Float): Boolean defined in ovh.plrapps.mapview.MapView

Yes indeed, I need to publish a new version compatible with api 34. Will do asap.

The version 3.1.7 is released


"suggestion details" in intellisense stopped showing on Ctrl+Space

Type: Bug

Behaviour
Expected vs. Actual
Pressing Ctrl+Space opens the suggestions menu from intellisense as expected. Pressing it again should show a details panel floating next to the suggestions menu. That panel doesn't show. The preview of the details that should show inline with the suggestion itself when the panel is hidden also do not show.
Steps to reproduce:
Screenshot:

Diagnostic data

Python version (& distribution if applicable, e.g. Anaconda): 3.8.16
Type of virtual environment used (e.g. conda, venv, virtualenv, etc.): Conda
Value of the python.languageServer setting: Pylance

Output for Python in the Output panel (View→Output, change the drop-down the upper-right of the Output panel to Python)

XXX

User Settings

Multiroot scenario, following user settings may not apply:

languageServer: "Pylance"

terminal
• activateEnvironment: false

Extension version: 2023.5.10831011
VS Code version: Code - Insiders 1.77.0-insider (b9226e1ccc11625bcb42b55efb795e07ee533bb0, 2023-03-24T18:57:27.096Z)
OS version: Windows_NT x64 10.0.22621
Modes:
Sandboxed: Yes
Remote OS version: Linux x64 5.4.0-1085-azure

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-8665U CPU @ 1.90GHz (8 x 2112)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
undefined

Memory (System)
15.79GB (0.60GB free)

Process Argv
--crash-reporter-id 99e317c3-0ab7-4106-9d83-dcf6c481fe98

Screen Reader
no

VM
0%

Might be a dupe of https://github.com/microsoft/pylance-release/issues/4145?

CHRF seems to work for me.. it appears to have a squiggle mark under it, so maybe it can't find it.
if you right click 'go to defintion' does it find the class with a class docstring?
I think you might not have the correct python environment selected with sacrebleu installed.

I can navigate to it and intellisense shows me both its signature and a list of members under it.
The same applies to symbols from any other library, including local symbols.
Only the side floating card for details of a highlighted suggestion do not show.

are you using a notebook?

This issue has been fixed in prerelease version 2023.3.41, which we've just released. You can find the changelog here: CHANGELOG.md


Support instance_index / partitioning

Seems like we want to track https://github.com/mesosphere/marathon/issues/1242

We're currently addressing a workaround in spring-cloud-deployer-mesos#17


Getting latest commitment transaction

For learning about the lightning network and bitcoin I would like to get access to the latest commitment transaction without broadcasting it. How would one be able to do this?

You can modify lnd to log the commitment transaction. It isn't available any where on the RPC layer atm. Also you can check out the specification to see how the commitment transactions are crafted and updated.