Add support for an app user identity token

Allows an OrgUser to create an Identity token for a specified AppUser. A consuming application can find an IdentityX AppUser that they have externally identified, and obtain an Identity token. The Identity token is valid for 2 years, and provides access to an extremely narrow view of the AppUser's data:

The AppUser id (for tracking purposes)
All available external IDs (for the same)
If the user must explicitly verify their data
If all required fields (required custom boolean, select, and optional core/root fields via input) have been provided.

In a consuming application, the AppIdentity bearer prefix can be used to indicate that the supplied token should be verified as an identity token, rather than a user token, and to show the correct context.
When using an identity token, the activeAppContext query field will contain the additional identity-specific fields:
# With `authorization: AppIdentity eyJhbGciOiJI...` header
query ActiveContext {
  activeAppContext {
    application {
      id
      name
      organization { id name }
    }
    user {
      id
      email
    }
    identity {
      id
      mustReVerifyProfile
      hasAllFields(fields: ["countryCode"])
      externalIds { id }
    }
  }
}

{
  "data": {
    "activeAppContext": {
      "application": {
        "id": "5d1b86070ce467bff670a052",
        "name": "Cogs & Widgets",
        "organization": {
          "id": "5d1b820d5e7209436c7de987",
          "name": "Contoso"
        }
      },
      "user": null,
      "identity": {
        "id": "6215472f13ad4d5111c5854e",
        "mustReVerifyProfile": false,
        "hasAllFields": true,
        "externalIds": [
          {
            "id": "omeda.allucd.customer*4902E1408978D9Y~encrypted"
          },
          {
            "id": "omeda.hcl.customer*1034764015"
          }
        ]
      }
    }
  }
}

 Support user identification from incoming braze external id parameters


🐛 Bug Report — ports on Windows

On Windows, workerd silently ignores Address in use errors when trying to bind to an already occupied port.
Using the following capnp:
using Workerd = import "/workerd/workerd.capnp";

const config :Workerd.Config = (
  services = [
    ( name = "main", worker = .worker ),
  ],
  sockets = [
    ( name = "http", address = "<IP_ADDRESS>:8080", http = (), service = "main" ),
  ]
);

const worker :Workerd.Worker = (
  modules = [
    ( name = "index.mjs",
      esModule =
        `export default {
        `  async fetch(request, env, ctx) {
        `    return new Response("body");
        `  }
        `}
    )
  ],
  compatibilityDate = "2023-02-28",
);

When running two workerd processes, the first successfully binds to 8080, and is accessible from a browser. The second workerd process also reports that it's successfully bound to 8080, but is not accesible from a browser.
On macOS or Linux, the second workerd process crashes with:
*** Fatal uncaught kj::Exception: kj/async-io-unix.c++:945: failed: ::bind(sockfd, &addr.generic, addrlen): Address already in use; toString() = <IP_ADDRESS>:8080

cc @mrbbot @RamIdeas

Bug

This probably has to do with the SO_REUSEADDR socket option, which I'm told has a different meaning on Windows vs. Linux.
On Linux, this option doesn't actually allow a port to be bound multiple times. Instead, it merely avoids the need to wait 5 minutes after a server releases the port before a new server can bind it. Just about everyone always wants to use this option on Linux because otherwise you have 5 minutes of downtime whenever your server crashes. Therefore, KJ sets this on all sockets by default.
I had always assumed it had the same meaning on other platforms. But it seems that on Windows, this option apparently allows multiple processes to bind to the same port. I'm a little unclear on the exact behavior, and I don't have a Windows box to test on. I have no idea what the effect is on MacOS.
Probably KJ needs to change to not set this option on Windows. But someone needs to verify that it won't lead to the 5 minute downtime issue. And someone needs to check if there's a problem on MacOS.


samples: exclude mec15xxevb_assy6853 in espi sample when sanitycheck

ESPI is supported in MEC15 chips but similar to PECI, I2C, eSPI bus
testing requires another device to act as eSPI host.
While this sample can be run in EVB the HW connection to a eSPI host
(Intel RVP) is not documented/supported.
Mark as not supported in that HW only in Modular card
(which setup is documented)
Fixes #28148
Signed-off-by: Maksim Masalski<EMAIL_ADDRESS>

@nashif If it possible please merge that fix


Header does not follow drawer when the latest gets hidden

You can reproduce the bug here http://www.getmdl.io/templates/dashboard/index.html
If you reside the browser you will see that drawer is hidden when you reach 1024px because it respects $layout-screen-size-threshold on https://github.com/google/material-design-lite/blob/master/src/_variables.scss#L363
while header does not follow it until on 850px which is as a result of https://github.com/google/material-design-lite/blob/master/src/layout/layout.js#L39

Oh good find! Mismatch in breakpoints. Thanks for the issue, @lBilali, I’ll get right on that.


CI is failing on master but not locally

Description
Locally the tests ci is passing but it is failig on master.

It is now passing even though I just uploaded an issue template, issue can be reopened if it starts happening again.


feat: automate pg_upgrade testing

What kind of change does this PR introduce?
Bug fix, feature, docs update, ...
What is the current behavior?
Please link any relevant issues here.
What is the new behavior?
Feel free to include screenshots if it includes visual changes.
Additional context
Add any other context or screenshots.

Looks great! 👍I guess we don't need to include Testinfra tests since this should only affect PG stuff?

Sorry I missed this earlier - gave it a quick skim and looks great. Any changes needed to bring it up to speed?
@supabase/postgres any concerns with this change?

Need to follow up on this and merge the more recent upgrade script changes into it.
Also want to add tests around encrypted columns (since those are more critical), some extensions such as ltree now that it is possibly problematic, and have pick it up the last ~5 PG releases to cover, besides the configured baseline
@steve-chavez running debug.sh would run this locally, but it requires the scripts and binaries stored in the dev account. I’ll add some docs around this and ping the team in Slack to confirm that everybody can run it

Looks great! 👍I guess we don't need to include Testinfra tests since this should only affect PG stuff?

Yep! This would run as a parallel check to those, so no dependency between the two workflows


Update to latest keycloak and AWS SDKs

The only error when building was that the signature of send() swapped the UserModel for just a string of the address

@dasniko would you consider merging this?

the PR might need to be updated again before merged.

I'm happy to update it if it's going to get merged shortly.
But otherwise I'd end up bumping it perpetually.

@mirko-pira done.
@martinsotirov I have bumped keycloak now because of the InternetAddress deprecation.

Hi @james-callahan
Thanks for your efforts and the PR. As you might have noticed, I don't actively maintain this repository any more, but I will be happy to merge your updates.
For a complete update PR, IMO also the README.md should be updated to reflect the current configuration possibilities. The current README still describes Wildfly configuration, but this is no more valid, as Wildfly is gone. If you are able to adjust also the README, please include an updated version to this PR.
Thanks.

@james-callahan really looking forward to an updated docs , thanks for your effort

I would also greatly appreciate some documentation. I am struggling to understand how to enable this SPI.

Ok I figured it out, I had to set --spi-email-sender-provider=aws-ses as a build arg


How does this work - and api limitations

Hello,
On one of the previous versions of this project, someone requested a description showing how this project works. I don't think you ever posted one, but I would be very interested in learning more about it as well.
Also, what are the approximate limits of the API (both the version you host, and one we host ourselves)?  If I wanted to call it thousand times per day, is that possible?  What are the constraints?  If hosted ourselves, don't we have to use our own Spotify account(s) and if that is the case, are there limits to how many api calls one can make?
Thanks!

Third this


Service Description is wrong/misleading

https://learn.microsoft.com/en-us/azure/dns/dns-private-resolver-overview
Point 4 of DNS Query Process states as following:
I"f the query doesn't match a Private DNS zone linked to the virtual network, then Virtual network links for DNS forwarding rulesets are consulted."
This is not true, because DNS Forwarding Rulesets are consulted first and take priority over Private DNS Zone link - it has a huge impact on how service works and what is returned at the end.
Easy way to test it:

Create some easy to deploy service e.g. storage account and private endpoint + private dns zone for one of sub-services (let's say blob.core.windows.net)
Link Private DNS Zone to VNET
Deploy DNS Private Resolver and Ruleset to forward whole domain blob.core.windows.net to external DNS (for example <IP_ADDRESS>) - link it with the same VNET
Test name resolution targeting DNS Private Resolver inbound endpoint as DNS server

Results:
Even when we have Private DNS Zone linked with correct (A) record in it, DNS forwarding rule will take priority and <IP_ADDRESS> server will be queried instead of Azure DNS. External DNS will return public DNS information (with public IP).
Best Regards,
Tomasz

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

ID: b312425f-a486-6c4b-9608-cca8ccd30937
Version Independent ID: 1d306c78-99e8-8f2c-d0f3-1aa5bf60d794
Content: What is Azure DNS Private Resolver?
Content Source: articles/dns/dns-private-resolver-overview.md
Service: dns
GitHub Login: @greg-lindsay
Microsoft Alias: greglin

Hi @TomaszWRutkowski , we shall review this and get back to you shortly

Hi @TomaszWRutkowski , I tried to repo your issue and I am not seeing such issues.
I created a Private DNS Resolver linked to a VNet with two Private DNS Zones.

google.com.
blob.core.windows.net.

The DNS server in the forwarding rules is configured as <IP_ADDRESS>
I also have an OnPrem Network that uses the InboundEndPoint of the DNS Resolver for DNS queries.
Now, when I try to do a nslookup from a VM in this VNet, I can see PrivateDNSZone is getting prioritized,

When I Try the same from OnPrem Network,

Here, <IP_ADDRESS> is the InBoundEndPoint.
Please let me know if I have missed anything.

Hello,
Thank you Kapil for your investigation. I will share with you results of my
testing and we might find a solution:
VM I am testing from is targeting inbound endpoint same as in your
scenario. VNET is linked both to 1) Private DNS Zones 2) DNS Forwarding
Rules to <IP_ADDRESS>
<IP_ADDRESS> - is my Private DNS Resolver Inbound Endpoint

With Ruleset enabled (blob.core.windows.net ----> <IP_ADDRESS>)
[image: image.png]
As soon as I disable this ruleset (no other changes has been made):
[image: image.png]
Please take note that I am testing zones created for the purpose of Private
Endpoints/Private Link - which are a special case when it comes to DNS
resolution (Normal use case is where we query public name of a service for
example sbawepod01otds1.blob.core.windows.net and Azure DNS returns IP
related to private endpoint in privatelink domain - if match is being found
in linked Private DNS Zone) and I am certain that it will be the major part
of Private DNS Resolver usecase (and main point why this service has been
built).

When I tested with random domain (wp.pl) results are exacly as yours. So
it brings me to other conclusions:

I is a Private DNS Resolver service itself that requires looking into -
not documentation
Somewhere along the way priority and order of name resolution is
disturbed when it comes to private link domains (probably because of reason
explained above - we are never going to directly query FQDN in privatelink
domain but in blob.core.windows.net one).

Please take a look at example with privatelink domain that I mentioned.
Looking forward to any updates.
Best Regards,
Tomasz
pt., 21 paź 2022 o 21:58 Kapil Ananth @.***> napisał(a):

Hi @TomaszWRutkowski https://github.com/TomaszWRutkowski , I tried to
repo your issue and I am not seeing such issues.
I created a Private DNS Resolver linked to a VNet with two Private DNS
Zones.

google.com.
blob.core.windows.net.

The DNS server in the forwarding rules is configured as <IP_ADDRESS>
I also have an OnPrem Network that uses the InboundEndPoint of the DNS
Resolver for DNS queries.
Now, when I try to do a nslookup from a VM in this VNet, I can see
PrivateDNSZone is getting prioritized,
[image: image]
https://user-images.githubusercontent.com/107474080/197225455-4ac2814c-8099-4000-b28c-5e4bbdfa51a1.png
When I Try the same from OnPrem Network,
[image: image]
https://user-images.githubusercontent.com/107474080/197225614-e1b2368b-e880-472e-a2bb-021b33421078.png
Here, <IP_ADDRESS> is the InBoundEndPoint.
Please let me know if I have missed anything.
—
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/100273#issuecomment-1287082564,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQMX2ZHJCFNQHC7W6T5PVVLWEKVQVANCNFSM6AAAAAARLBP5TE
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hi @TomaszWRutkowski ,
Yes, I am able to reproduce this now.
It appears Private DNS Zones linked to Private EndPoints behave differently and have least precedence.
I shall get this checked and update here.
Thanks again for bringing this to our attention.

Hi @TomaszWRutkowski ,
I was able to discuss this with our Product team and we did some digging

We must note that the precedence order is not followed because we have "privatelink.blob.core.windows.net” in private DNS Zones and “blob.core.windows.net” in Forwarding RuleSet, which are actually not same.
If we are to have a "privatelink.blob.core.windows.net” in private DNS Zones and “privatelink.blob.core.windows.net” in Forwarding RuleSet, then Private DNS Zone will take the precedence
However, I can understand why this confusion may arise.

I have assigned this thread to the author @greg-lindsay , they should update the docs soon to provide additional comments on the privatelink part.
Thank you

Thank you for an update. One more thing that should be mentioned too. It seems that in rulesets its not possible to put Azure DNS IP as DNS Server for forwarding purposes.
it ends up with:
[Exception while making add request for rule :rule01])
Encountered exception while adding rule : [object Object]
Use case where we wanted to use that for was to forward specific FQDNs from blob.core.windows.net domain to Azure DNS only, but whole blob.core.windows.net domain to be resolved by other public DNS.

Yes @TomaszWRutkowski,
We did have a discussion about that as well and should be updated along with other changes

@TomaszWRutkowski we'll update the docs with a diagram but the name resolution is correct. If you query the inbound endpoint directly you're bypassing the name resolution order and will not do a query against your private DNS Zones. For the name resolution order to be respected, your VNET setting should have Azure provided DNS servers and your VMs will query the private DNS zone first, then rulesets.

Hi - we have plans to add a flow diagram here that should help to understand how DNS resolution works with the implementation of the DNS resolver. There is currently not an error in the article with regard to the flow.
Note: VNETs must be configured to use Azure DNS so that the clients in the VNET use Azure DNS.  When this is set, then private DNS zones are always queried first.  This is stated in step 3: **If Default (Azure-provided) DNS servers are configured in the virtual network, and there are Private DNS zones linked to the same virtual network**, these zones are consulted.
Keep in mind that private endpoint domains are private zones.

#please-close

Hello,
Thank you for your reply. It's a bit a pity that it was closed without
giving me any time to reply - as I am not really agreeing if your last
comments Sergio&Greg

Inbound endpoint of Private DNS Resolver is exacly what should be
queried - that's the reason it exists - especially  from on-prem networks
as a target IP of Conditional Forwarders. It does not disturb DNS flow -
its the correct DNS flow
The reason why this service exist in the first place is that we don't need
additional VM DNS forwarders in place in Azure to ensure that from on-prem
networks private dns zones can be queried. Having VNETs setup with default
Azure DNS is a nice solutions for Labs, POC, small separate environments.
In big enterprise scale envs its very rarely the case - Custom DNS servers
are almost always used
Step3 Mentioned by Gred - yes this is the simplest scenario but it does
not say that using custom DNS Servers (100% of hybrid network cases) wont
make use of Private DNS Zones. Please go back to all proofs that I sent and
also read DNS forwarding scenarios explained here:
https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-dns

To summarize your last comments are not correct - I take blame on myself,
maybe my explanation was not clear enough. I am keen to have a discussion
or call to help you better understand this scenario and also show you "in
action" few
Best Regards,
Tomasz
pt., 18 lis 2022 o 05:44 prmerger-automator[bot] @.***>
napisał(a):

Closed #100273 https://github.com/MicrosoftDocs/azure-docs/issues/100273
as completed.
—
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/100273#event-7838458275,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQMX2ZH7BYLZUWUPWDIUM5TWI2YLDANCNFSM6AAAAAARLBP5TE
.
You are receiving this because you were mentioned.Message ID:
@.***>

@TomaszWRutkowski we're going to update the document with a diagram to illustrate both inbound and outbound endpoints flow.

inbound endpoint - will resolve names from Private DNS zones linked to the VNET where the resolver and inbound endpoint is provisioned and should not resolve publicly
name resolution order for egress with azure provided DNS servers configured at the VNET level: a) private DNS zone b) ruleset via longest suffix match c) public recursion if no wildcard configured on the ruleset towards an IP address which you configure

Anything that falls outside this description will either be misconfiguration or an unexpected behavior.
If you find anything that doesn't match what is documented please open a service request via the Azure Portal for our support services to look into your scenario.
Thank you!


mwc-textfield label clipped when font-size changed

Describe the bug
When the  --mdc-typography-subtitle1-font-size: is changed the input label is clipped when the textfield is "filled" or with focus.
When the field is not focused or not filled

When the field is focused or filled.

I have tried the textfield.layout() with several different approachs. I tried set it with timeout or when the field is focused and no lucky.
To Reproduce
Set the css below to change the mwc-textfield font-size, it was too big with the new font that i must use.
mwc-textfield{
    --mdc-typography-font-family: "Comfortaa";
    --mdc-typography-subtitle1-font-size: "14px";
}

Expected behavior
To show the label without clip the text
Browser Version (please complete the following information):

OS: Windows 10
Browser chrome

Thanks for the issue. Custom font-sizes are not supported right now, but there is an upcoming rewrite of the generic "field" component which should resolve this issue.

I am going to close this, I found the issue was I had a double suffix that was causing the issue. When I remove the extra suffix.. the label would work again.
Would not work:
     <mwc-textfield
          id="input"
          value=${this.value}
          .type=${this.type}
          .placeholder=${this.placeholder}
          .prefix=${this.prefix}
          .suffix=${this.suffix}
          .suffix=${this.suffix}
          .icon=${this.icon}
          .iconTrailing=${this.iconTrailing}
          .disabled=${this.disabled}
          .charCounter=${this.charCounter}
          ?outlined=${this.outlined}
          .helper=${this.helper}
          ?helperPersistent=${this.helperPersistent}
          ?required=${this.required}
          .maxLength=${this.maxLength}
          .validationMessage=${this.validationMessage}
          .pattern=${this.pattern}
          .min=${this.min}
          .max=${this.max}
          .size=${this.size}
          .step=${this.step}
          ?autoValidate=${this.autoValidate}
          ?willValidate=${this.willValidate}
          ?validityTransform=${this.validityTransform}
          ?validateOnInitialRender=${this.validateOnInitialRender}
          .name=${this.name}
          .label=${this.label}
          ></mwc-textfield>

Did work successfully:
        <mwc-textfield
          id="input"
          value=${this.value}
          .type=${this.type}
          .placeholder=${this.placeholder}
          .prefix=${this.prefix}
          .suffix=${this.suffix}
          .icon=${this.icon}
          .iconTrailing=${this.iconTrailing}
          .disabled=${this.disabled}
          .charCounter=${this.charCounter}
          ?outlined=${this.outlined}
          .helper=${this.helper}
          ?helperPersistent=${this.helperPersistent}
          ?required=${this.required}
          .maxLength=${this.maxLength}
          .validationMessage=${this.validationMessage}
          .pattern=${this.pattern}
          .min=${this.min}
          .max=${this.max}
          .size=${this.size}
          .step=${this.step}
          ?autoValidate=${this.autoValidate}
          ?willValidate=${this.willValidate}
          ?validityTransform=${this.validityTransform}
          ?validateOnInitialRender=${this.validateOnInitialRender}
          .name=${this.name}
          .label=${this.label}
          ></mwc-textfield>

This is fixed in the new Material 3 text field


Code for interpretability

Hello,
Thanks for this repo! Do you plan to release the code you used to plot intersample attention and self attention as in the paper (section 5.2)? I would like to reproduce the figure 3.

Hi Fabien, I will release the attention plotting code in the next version. I am busy with another project rn, I am targeting the end of November for this. If you need it urgently let me know.

Thanks for your answer! I understand your time is precious but it would help me a lot if you could just share the code for attention plots.

@somepago Wold be great help if you can share the code for interpretability. I have reached out to you by email as well.

HEllo,
Thanks for this project. It will be of great help to get the attention plotting code for the SAINT implementation.


Provide a webots simulation

Summary
Provide a webots simulation.
Base the implementation using webots_ros2. The description from noah_description might be necessary to be extended in order to use webots references instead of gazebo ones.
To identify/investigate

webots_ros2 provides a way to spwan urdf in runtime. We might to identify if there can be used webots references or we should use ros2 control to correctly work with the simulation.

Definition of done

[ ] Provide a noah_webots package for the webots simulation
[ ] Import URDF from noah_description on runtime
[ ] Launchfiles should be provided to run the simulation

Project milestones:

[ ] Create the noah_webots package
[ ] Launch a simple world in Webots using a ROS2 launchfile
[ ] Spawn a robot from a URDF in Webots
[ ] Attach a diff drive controller to a spawned robot
[ ] Spawn Noahbot from description pkg from launchfile
[ ] Spawn Noahbot on runtime
[ ] Create a functional custom plugin example


Add hagansolaton by haganhawk22

Song Name
hagansolaton
Artist Name
haganhawk22
Source
Youtube
Youtube Link
H7YVLfVoV6U-VG7O
Direct File Link
No response
Song ID
76743
Start Offset [ms]
0
Extra
Created from Auto Nong.
Created for level: 92107229
Downloaded: No

reject
invalid YouTube link


Add cost to downtime activities

Please add the option to define costs per roll (maybe even with automatic deduction)

Thanks a lot :D
Just as an idea, you could add a checkbox for "automatic deduction" that would probably be the easiest way ^^

Just a quick update on this. It's slated for v.0.5.0 or sometime shortly after. My main focus with the changes of this update is extensibility - I want to give users the tools to make the module work for them. This means that as far as feature requests like this one go, I'm asking myself if it should be part of the core functionality of the module, or if it's a more specific use-case. Cost/auto-deduction is a really specific use case, but I can go general with this...
Currently I'm looking at giving users the option to add some customizable extra fields to activities - this could be cost, time spent, and any number of other things - and then giving them the tools they need (hooks, an accessible API, etc) to make them do what they want to with those fields.
It's something I'm still thinking about how to best implement, so I'm not entirely certain all of this will make it into 0.5.0. At the very least the groundwork will be laid at that point. Just wanted to let you know I haven't forgotten about this. and that it is in the works (though maybe in a slightly different way than was originally imagined).

As of 0.5.0, you can set up activities to run macros. These can be used to implement a cost and about a billion other cool things!
If you need help with a macro, feel free to tag me on Discord and I'll help you out. Otherwise there's some simple API docs at the bottom of the readme, and an example of a simple macro here


Usage with gulp-pug and includes

I've spent countless hours trying to set up some sort of an incremental build system with gulp-changed, gulp-jade-inheritance etc., but always scrapped it in the end as it. just. did. not. work. This plugin seems very promising – I've managed to plug it into my workflow and make it work, thanks!
Can you please provide an example on how to use it to compile .pug containing includes/mixins? The classic scenario of compiling a page if you change the linked file.
index.pug
  - mixins/
    - _helper.pug

index.pug containing include mixins/_helper.pug.
I want index.pug to compile to index.html regardless if I edit it directly or change something in _helper.pug. Naturally I don't want _helper.pug to result in _helper.html.

My suggestion is to use src('./**/*.pug') to source all the pug files and pipe them to progeny,
then, use gulp-filter to filter out what you don't want to produce result.
gulp.src('./**/*.pug')
  .pipe(cached('pug'))
  .pipe(progeny(pugConfig))
  .pipe(filter(/^[^_]/)) // not start with underscore _
  .pipe(pug())
  .dest()

Thanks for the quick response.  I looked into progeny docs and can't find clear explanation on what it should contain.
.pipe(progeny({extension: 'pug'})) does not seem to work.
Also, I changed the gulp-filter part to .pipe(filter('**/!(_)*.pug')) as .pipe(filter(/^[^_]/)) returned pattern should be a string, array, or function.
Thanks for your time!

Sorry, I haven't used gulp for long. The above code is just my best memory of the config I wrote two years ago.
I think you can re-read gulp-filter's doc and progeny's documentation. If possible, asking on stack-overflow is also good.

Built-in pug support was added in progeny 0.11.0. This module will need a version bump in package.json to use it.
Semver doesn't automatically apply minor patches on 0.x versions, the bump to 1.0.0 is probably long overdue.

Version bumped. Pug file should be handled without config.


Feature/Migrate EGAP Registry - Projects and Draft Registrations [ENG-892]

⭐ Recommend making this a feature branch - as there are several corresponding EGAP tickets, some which would involve editing base code laid out here
❗ Note: This is obviously not fast enough - need to figure out the best strategy to populate things quickly.  Maybe fill tables over time, maybe populate tables offline and then copy the data into prod tables? Will be optimized here https://openscience.atlassian.net/browse/ENG-1030
Purpose

Creates projects, users, and draft registrations from the EGAP spreadsheet

Changes
Adds a management command that goes through every row of the EGAP spreadsheet and converts rows to projects, draft_registrations, and adds users.
Big picture

For every row in the spreadsheet, creates a private project.  Adds the EGAP user (will need to get official EGAP user) as the creator of the project - so admin perms, bibliographic = True.  Then adds the users in the B2 Authors column as unregistered contributors (follow up work will add these users with emails) with WRITE perms, bibligraphic
EGAP creator then made non-bibliographic.
Bookmark collections and quickfilenodes are created when the user is created
Users are probably subscribed to project
Users probably added to search
Create a draft registration for each project. Most of the columns in the spreadsheet are mapped to different question keys in DraftRegistration.registration_responses

If multiple choice response doesn't match one of the possible options, it is instead logged in the subsequent question and the current question marked as "other"

Final two questions are not in spreadsheet, just marked as "Agree"

QA Notes

Documentation

Side Effects

Ticket
https://openscience.atlassian.net/browse/ENG-892

Closing...work extended in https://github.com/CenterForOpenScience/osf.io/pull/9177


Test-Data missing

As far as I understand there should be some test data within the repository to be able to run all tests.
I could run some tests, but not all, due to missing files. Did I do something wrong or do these files miss? There should be a folder called "libE57Format-test-data" when I'm correct.

Thank you very much, I completely oversaw that.


why add prefix to resource names

What happened:
after deploying app by helm chart through clusternet, all resource names prefixed with subscription name and namespace, and I think it's unnecessary,  it may cause error when svc or deploy name is hard coded.
below is the difference between manually installed by helm and installed by clusternet

What you expected to happen:
keep original name of helm chart resources
Environment:

Clusternet version:

Clusternet-agent version (user clusternet-agent --version=json): v0.8.0
Clusternet-hub version (user clusternet-hub --version=json): v0.8.0

sorry, resource prefix may added by the helm chart itself, my own chart looks normal, but the helm release name still prefixed, and maybe that's unnecessary neither

the helm release name still prefixed, maybe a name override config is better

Yeah, that makes sense.
With #269, the new release name will be the same value as HelmChart name. That means you can declare your desired released name as HelmChart object name.


I need to check if group is hidden.  Layer has a isHidden proeprty, but group does not.

I need to check if group is hidden.
Layer has a hidden attribute, but group does not.
// Layer
  get isHidden(): boolean {
    return this.layerFrame.layerProperties.hidden;
  }
//  I want in Group
  get isHidden(): boolean {
    return this.layerFrame?.layerProperties.hidden ?? true;
  }

Sorry about the delayed response. Right now, our hands (me and @dlehdanakf) are tied up with other work, though I may have some free time to look into this next month.


[Task]  manager/controller/MonitorsControllerTest.java

Description
Help us impl Unit Test For manager/controller/MonitorsControllerTest.java

You can learn and refer to the previous test cases impl.

controller example unit case:  https://github.com/dromara/hertzbeat/blob/master/manager/src/test/java/com/usthe/manager/controller/AccountControllerTest.java
service example unit case:  https://github.com/dromara/hertzbeat/blob/master/manager/src/test/java/com/usthe/manager/service/TagServiceTest.java
jpa sql dao example unit case: https://github.com/dromara/hertzbeat/blob/master/manager/src/test/java/com/usthe/manager/dao/MonitorDaoTest.java

Task List

[ ] Impl Unit Test For manager/controller/MonitorsControllerTest.java

Let me have a try

👍 has published at version v1.2.1


Something weird about Trance Terra's Dual White Magic (219500)

Its effects (and effects_raw) look like a damaging ability for some reason.
"Magic light damage (8.67x, MAG) to all enemies (ignore cover and reflect)"
[[2, 1, 70, [0, 0, 650, 25]]
This is the only "70" skill (magic damage skill) with attack_count: [[0]].
Is there a chance you're pulling the wrong data for the skill?

As far as I can tell, 219500 is only a dummy entry for the 2nd effect of Magical Activation+2 (704470)
Possibly for the ability icon.


iOS: Daring Fireball footnotes aren't recognized when coming from Feedbin

It looks like the DF footnote URL's are getting changed to absolute URL's by Feedbin.  Our pattern matching doesn't take this into consideration and they aren't getting recognized as footnotes.

If we want to match to style in only CSS, we can change a[href^='#fn'] to a[href*='#fn'], but that might introduce issues if the link actually goes to an external site.

It sounds to me like the JS option is the better one.

Agreed.

(For future reference, there's a :local-link pseudoclass in CSS4, but nothing implements it yet.)


MiniXceptionFER fails to load saved optimizer state

Trying to use MiniXceptionFER, but im getting this warning :
"WARNING: tensorflow:Error in loading the saved optimizer state. As a result, your model is starting with a freshly initialized optimizer."
Wanted to know if there's any way to load the hdf5 file manually without editing the repo (on my machine).

Hi @YakirMo sorry for the late reply. Could you provide a code snippet of how you get this error. Thank you.


Expose the presence of tab-level audio indicators to pages

An interesting use case was brought up in my twitter conversation with @mahemoff.  Currently some browsers show an icon in the tab when the page starts to play audio.  Typical media player apps these days add their own ▶ icon to the tab, and knowing whether the browser supports this can help them not add that glyph to the title.
Perhaps we can add a boolean attribute to MediaRemoteControls to expose the existence of these icons?

CC @annevk

Thanks for raising it @ehsan.
ref https://twitter.com/mahemoff/status/627490696837099520
To summarise:

When Chrome first introduced this feature, I switched Player FM to stop showing ▶ state in the title. That was never a good thing, especially when people shared the link, and it becomes redundant with this feature.
This immediately raised the problem that only some Chromes supported it (canary, then dev channel, then etc until it was fully rolled out to all users). So even with a single browser, it's a problem until the feature is fully rolled out to all users. In the case of old IEs, that could be a decade. With each new browser adding support for it, the application code has to be changed.
As a general principle for introducing any new feature, I'd argue browsers should consider it basic hygiene to simultaneously release a detection API alongside that feature. Whether it's experimental or likely to be stable (as is the case here with Firefox introducing this). This is how you encourage developers to feature-detect instead of UA-sniff or invent Modernizr-style detection hacks.

Just brainstorming here but could a browser simply strip any leading ▶ character from any displayed page title if they support that feature natively? The observable title attribute would remain unaffected.
If not, then we should find a way to incorporate detection in to the API. Thanks for filing the issue.

@richtr That's assuming too much tbh.
▶ in title has probably become the predominate pattern (thx YouTube) but sites may use other conventions, including favicons and sometimes pause indicators. It would also affect non-media sites where title happens to start with  ▶.

I don't think the browser should assume specific meaning for the contents of the title.  We should give the application developer the power to do the right thing here.

It seems to me that this would amount to a static boolean on some interface with a very specific meaning, something like Navigator.addsPlayIconToTabWhenPlaying, or is there a less terrible way to express this?

Wouldn't we want to expose the state of the icon too? Or is that assumed to be synchronized with the media session?

If such an API is only available to top-level browsing contexts I think it could be exposed, but I don't think it'd actually always be in sync with "is there an active media session", as the audio indicator is shown for Flash as well in at least Chrome.
It might help to see the context in which such an API would be used. @mahemoff, do you have some code to illustrate this?

iconizeTitle: (isPaused) =>
  return if U.chrome # don't faff with indicator as browser does it for us
  title = document.title.replace(/^► /,'') # extract title, ignoring possible indicator
  prefix = if isPaused then '' else '► ' # prepend indicator if needed
  document.title = "#{prefix}#{title}"

As the code above shows, I'd only want to know the browser's capability (ie a Navigator.addsPlayIconToTabWhenPlaying thing), not the real-time indicator state. (Maybe other devs would want that, not sure.)

There are probably use cases both for detecting the capability and the current state, and exposing one to Web developers should not preclude exposing others.

If such an API is only available to top-level browsing contexts I think it could be exposed, but I don't think it'd actually always be in sync with "is there an active media session", as the audio indicator is shown for Flash as well in at least Chrome.

The same is true for Firefox, but I don't understand why you think this means this should not be in sync with "is there an active media session."  We (Mozilla) would like to have that notion for Flash anyway, and our current implementation of the tab-level audio indicator/muting also works seamlessly with Flash based audio, so there seems to be no reason to not tie the current state with the active media session.

Does that mean that you want to define when Flash activates a media session as well, and to define default media sessions?

I think so. I know @sicking does.

Yes. Most audio on the desktop web today comes from flash. We can't ignore that.
Fortunately, Adobe has added support to their NPAPI plugin which enables the browser to detect when a given plugin is starting to play audio. They also support forcefully muting the plugin. So it shouldn't be that different to play audio with an  than an . Main difference is that we can't support pausing the audio, only muting it.
But assuming that we fire callbacks when an page is getting its audio stopped, the page can always use javascript to call into the plugin to pause appropriately.

Does that API allow give you a chance to deny the plugin to start playing, or is there a risk of a glitch of audio in case the only way is to mute it? I image that would be the case if the plugin is in another process and the API is currently only designed to notify the browser of audio playback, not to ask permission.

We have a problem here, I think. The tab-level audio indicator is based on the actual waveform of the output, becoming visible when some threshold is exceeded and going away when audio becomes (almost?) silent again. A media session, on the other hand, could be active while playing silence or playing nothing at all. How to square this difference?

Does that API allow give you a chance to deny the plugin to start playing, or is there a risk of a glitch of audio in case the only way is to mute it.

I'm not 100% sure (@ehsan might know), but I think the only way is to mute it.

We're not actually considering whether to expose to the top-level-document whether the UA is currently displaying a "tab-level audio indicator", correct?  The request was to expose whether the UA is capable of displaying a "tab-level audio indicator".
If so, there doesn't seem to be any reason to define this behavior here, in the Media Session spec. It's a problem that exists independently of the concept of "media sessions", and presumably authors would want this solved even in browsers which didn't support the Media Session API.
(Whether or not plugins participate in media session activation is an entirely separate issue and deserves its own issue, but is not really germane to this one.)

@ehsan I agree with @jernoble and I don't think it should be resolved in this spec. Are you fine with me closing this issue?


Data fields in Submissions controller are blank

The id field in the nocio_formstore_submitters is "2" and the data_id field value is actually "7" so not sure if the problem is in the controller of the model.
Thanks for your help.

Fixed in f9d5814, thanks!

Perfect. I've tested it, all is in order. Thanks for your support and such a wonderful plugin.


Modal Bottom Sheet disappears when content changes size quickly

I have a modal bottom sheet that shows content that could change. If the content changes and causes the size to change too quickly after showing the bottom sheet (which happens because data comes in asynchronously), the bottom sheet dismisses itself.
Reproduction code
Here's a sample reproducing the issue by just varying the length of a text displayed. Using Compose BOM 2024.08.00 and Composables Core 1.11.1:
@Composable
fun ProblematicBottomSheet() {
    var linesOfText by remember { mutableIntStateOf(10) }

    LaunchedEffect(Unit) {
        delay(500)
        linesOfText = 5
    }

    val state = rememberModalBottomSheetState(initialDetent = SheetDetent.FullyExpanded)
    ModalBottomSheet(
        state = state
    ) {
        Scrim()
        Sheet(
            modifier = Modifier.background(Color.White)
        ) {
            Column(modifier = Modifier.fillMaxWidth()) {
                DragIndication(modifier = Modifier.padding(top = 22.dp))

                Text(
                    buildString {
                        repeat(linesOfText) {
                            appendLine("$linesOfText lines of text")
                        }
                    }
                )
            }
        }
    }
}

Expected result
If I set the delay to 1500ms, the text just shortens and the bottom sheet stays open:

Actual result
but if I set the delay to 500ms, the text shortens quickly and it triggers dismissal of the bottom sheet:

Here's the code above in a runnable project: ComposablesBottomSheetReproduction.zip

Thank you for the detailed report. Will have a look later today

Ah, yeah, I'm glad I mentioned API 35 in the Slack channel, forgot to write it in the bug report here.

Seems like it is not a API issue but a race condition. This is more clear if you change the delay to something as short as delay(250)

That's good news imo, less stressful to fix then dealing with API issues ;-)
Note that I personally am not running this in production yet, so I have no rush with this issue.

Fixed in 1.11.2


Implement retrying of the NodePrepareResource call

Moved call of the NodePrepareResources from admission phase
to the container configuration phase.
This should enable retrying NodePrepareResources if DRA plugin
is not ready or previous call of the NodePrepareResources
was unsuccessful.
As NodePrepareResources is moved out of admission phase, Topology support
is also removed.
P.S. Addressed review comments made in the main PR

Also, I still need to maintain this patch in order for things to work for me:
diff --git a/pkg/kubelet/cm/dra/manager.go b/pkg/kubelet/cm/dra/manager.go
index 2c161c3cb4d..7e38448ebe9 100644
--- a/pkg/kubelet/cm/dra/manager.go
+++ b/pkg/kubelet/cm/dra/manager.go
@@ -208,11 +208,11 @@ func (m *ManagerImpl) UnprepareResources(pod *v1.Pod) error {
        // Delete pod UID from the cache
        resource.deletePodUID(pod.UID)

-       if len(resource.podUIDs) > 0 {
-           // skip calling NodeUnprepareResource if this is not the latest pod
-           // that uses the resource
-           continue
-       }
+//     if len(resource.podUIDs) > 0 {
+//         // skip calling NodeUnprepareResource if this is not the latest pod
+//         // that uses the resource
+//         continue
+//     }

        // Call NodeUnprepareResource only for the latest pod that refers the claim
        client, err := dra.NewDRAPluginClient(resource.driverName)

@klueska > Also, I still need to maintain this patch in order for things to work for me
I can't reproduce it. Will try again. Can you describe in more details what happens if you don't apply your patch?


Duplicate and invalid feed items

Today, my feed contained 3 new items from ddev.com

There are several issues here:

"Working with Vite in DDEV - an introduction" is repeated twice

"Introducing New DDEV Maintainer Stas Zhuk" appeared in my feed 16 days ago, and is a duplicate.

The 2 top feeds (5h) are invalid links (https://ddev.comblog/)

Working with Vite in DDEV - an introduction
Introducing New DDEV Maintainer Stas Zhuk

Update: I'm using https://feedly.com/ as my reader.

Thanks for paying attention! Please take a look at https://ddev.com/blog/rss.xml (assuming that's what you're using) and see what you think.
You might try curl -s https://ddev.com/blog/rss.xml | xq (assuming you have xq installed) to review it.
A quick look didn't make me think there was anything wrong, but we appreciate your sharp eye.

Feedly is subscribed to https://ddev.com/blog/rss.xml (same as you suggested)
Eyeballing the feed, the first item looks strange, the link is incorrect.
<title>Working with Vite in DDEV - an introduction</title>
<link>https://ddev.comblog/working-with-vite-in-ddev</link>
<guid isPermaLink="true">https://ddev.comblog/working-with-vite-in-ddev</guid>

Perhaps feedly saw this as a "new" item and hence the duplicate?
... scanning down the list, all the link seem to be missing the / between .com and blog.

Want to see if you can sort it out? Sure looks wrong. Suggestions @mattstein ? (Matt has looked into this before).
I don't know how the missing slash would break what items you're getting though, and don't know how anything can work with the slash missing.
BTW, I see the same thing you do in feedly:

Whoops! Pretty sure I inadvertently broke the feed URLs upgrading to Astro 3, sorry!
It looks like the feed is still valid though, and the pubDate values are as I’d expect.
I would bet the changing guids didn’t help the duplicate situation, if they weren’t entirely responsible to start with.
Is it normal for Feedly to display an empty thumbnail? We should probably be fixing the relative links inside post content, and I’m not sure what Feedly’s looking for to display images.

Is it normal for Feedly to display an empty thumbnail?

Other feeds have images:

Want to see if you can sort it out?

Didn't even get a chance to setup before @mattstein 's 80476d0c976ebd7af48c88c4d059c56b2f38e522 appeared!

Thanks @tyler36! I’ll dig into this when I get some time and see if I can spruce things up.

The URLs are fixed now, including relative ones within post content.
I’m not sure if there’s anything we can do to convince Feedly that the invalid posts should go away. 😬

Beautiful!


Disable save capture action when no capture is taken

Disable save capture action in the capture tool bar when no capture is
taken. Also gray out disabled buttons on the capture tool bar.
Bug: http://b/161533525.

When capturing:

When no capture is taken:

When capturing:

When no capture is taken:

Nice!! Should we also disable "save capture" after clearing?

Yep! With this change, the save capture action is also disabled after clearing capture.

Nice!! Should we also disable "save capture" after clearing?

Yep! With this change, the save capture action is also disabled after clearing capture.


SPI trait design

The current SPI has all the pin it needs on the same GPIO (PA for SPI). However other SPI's on my board are spread across different GPIO's. So would it make sense to design the trait as below
pub unsafe trait SPI: Deref<Target = spi1::RegisterBlock> {
   fn init(&self);
}

unsafe impl SPI for SPI3 {
  fn init(&self) {
    gpioa.configure(); // has sclk and mosi
    gpiob.configure(); // has miso and ss
  }
}

There may be some syntax issues in the above code.
I was unsure if this was valid as the init function for the SPI currently gets passed the peripheral as below
fn init(p: init::Peripherals) {
    let spi = Spi(p.SPI1);
    spi.init(p.AFIO, p.GPIOA, p.RCC);
}

With the design I have shown, the spi.init would have the following call spi.init(p.AFIO, p.RCC). Would this cause issues with RTFM?

So would it make sense to design the trait as below

The problem with this trait and implementation is missing gpioa and gpiob in the argument of init. Ideally you want to write the trait like this:
pub unsafe trait SPI: Deref<Target = spi1::RegisterBlock> {
    type Peripherals;

    fn init(&self);
}

unsafe impl SPI for SPI3 {
    type Peripherals = (&'a GPIOA, &'a GPIOB);

    fn init(&self, p: (&GPIOA, &GPIOB)) {
        let (gpioa, gpioab) = p;

        gpioa.configure(); // has sclk and mosi
        gpiob.configure(); // has miso and ss
    }
}

but you can't because the 'a in type Peripherals would be unbounded. A possible fix would be Associated Type Constructors (cf rust-lang/rfcs#1598) but the RFC has not been approved. Another fix would be to write type Peripherals = (&'static GPIOA, &'static GPIOB) but that would be limiting because the 'static lifetime constraint is not required. In particular, RTFM doesn't hand out &'static references.

Good news:
The Generic Associated Types RFC has been merged!
This will enable streaming iterators and a lot of other patterns.
rfcs/1598-generic_associated_types.md at a7cd91048eea3d7ae83bec20446e62bad0c45381 · rust-lang/rfcs · GitHub
If you want to learn more, there's a podcast episode about this RFC at Request For Explanation #4 - Literally Haskell

@nikhilkalige Thinking more about this. init doesn't need to be in the Spi trait. The current trend has been to only implement I/O actions as traits (read, write, etc.). And I don't think you'll need more than one GPIO to do I/O with SPI (the only GPIO you would need to drive would be "Slave Select" and some implementations of the SPI peripheral let you drive that pin using a SPI register), and that GPIO could be stored as a filed of the, e.g., Spi1 struct. For multi slave configurations I don't think it makes sense to be generic around all the "Slave Select" I/O lines; those are application specific and should be left up to the application writer -- they can write their own Spi wrappers to add Slave Select functionality.
So, you could implement init individually on each Spi instance: impl Spi1 { .. }, impl Spi2 { .. }, etc.
@getreu But how long will it take to be implemented and become relatively bug free? :P


Reason for doubling length in both LongConv and FlashFFTConv implementations

I noticed that, in flashfftconv_long_convs.py, the LongConv length is doubled during initialization.
self.L = L*2
Similarly, the FlashFFTConv class also has double the actual input length:
self.flashfftconv = FlashFFTConv(2048, dtype=torch.bfloat16)
Does this allow for bi-directional support or does it have something to do with wraparound during the convolution? What's the reason for the doubling?
Thanks!

These are to create a causal convolution.
If you make the kernel length equal to 2L, you get a bidirectional
convolution.
If the kernel is length L, it’s called a circular convolution.
FlashFFTConv can do any of these by setting the kernel length as you’d like.
This blog has more breakdown:
https://hazyresearch.stanford.edu/blog/2023-12-11-conv-tutorial
On Fri, Dec 22, 2023 at 11:12 AM N T Hoffs @.***> wrote:

I noticed that, in flashfftconv_long_convs.py, the LongConv length is
doubled during initialization.
self.L = L*2
Similarly, the FlashFFTConv class also has double the actual input length:
self.flashfftconv = FlashFFTConv(2048, dtype=torch.bfloat16)
Does this allow for bi-directional support or does it have something to do
with wraparound during the convolution? What's the reason for the doubling?
Thanks!
—
Reply to this email directly, view it on GitHub
https://github.com/HazyResearch/flash-fft-conv/issues/12, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABDDIIVPJSESHCBKNN2IZ7TYKXLTRAVCNFSM6AAAAABBAFROSKVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA2TINBSGIYTENA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


[Bug] Set-DbaPowerPlan fails on non-english language Windows installations

Environmental information
Run below command, paste results below:
#### PowerShell version:

Name                           Value
----                           -----
PSVersion                      5.1.17763.1007
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17763.1007
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

#### dbatools Module version:
Name    : dbatools
Path    : C:\Program Files\WindowsPowerShell\Modules\dbatools\1.0.100\dbatools.psd1
Version : 1.0.100

LCID             Name             DisplayName
----             ----             -----------
1031             de-DE            Deutsch (Deutschland)

Report
Running Set-DbaPowerPlan on a fresh Windows 2019 Datacenter VM installed with the German language fails to set, because the 'High Performance' plan could not be found by the command.
This is similar to issues #2769 and #245
Host used

[x] powershell.exe
[ ] ISE
[ ] VS Code
[ ] Other (please specify)

Errors Received
WARNUNG: [10:03:19][Set-DbaPowerPlanInternal] Couldn't find the requested Power Plan 'High Performance' on SQL2019.
Steps to Reproduce
Windows 2019 Datacenter VM in German (presumably any non-english install)
Set-DbaPowerPlan -ComputerName {CompterName}
Expected Behavior
Use the GUID values for the PowerPlan info stored in the registry
Actual Behavior
Fails to load the power plan information from the registry because it is searching for the English language names.

Ah, this is by design because we don't know all the different ways to spell it. Our default is English: [string]$PowerPlan = 'High Performance', but you can specify -PowerPlan 'German Phrase'.

Basically, we chose the convenience for a majority of our users (en) users. We can address by removing the default (not so sure), perhaps translating like Get/Test (up for others to do), or adding an example (easy enough). Ultimately, the command is not wrong, there is indeed no plan named High Performance and setting to "High Performance" is not a requirement, only a default.
I'll fix by adding an example. Please let me know the german phrase for High Performance.

Alternatively, `Test-DbaPowerPlan -ComputerName sql2017 |Set-DbaPowerPlan can likely be used

Oops that was supposed to be a PR. But this has been fixed in https://github.com/sqlcollaborative/dbatools/commit/37ae326e4b07fd73706e7723d4052ade8598ee92 - i found a german word for high performance from the other issue

Ok, I'm fine with that, just thought it would grab the GUID for "High Performance" and default to that, instead of the string, if that makes sense.
I push most installs to be in English anyway, but with that example to clarify I think we are good to go :)

Yeah, we shouldn't depend on the phrase of a setting because that can be redefined as well with newer versions of the OS.
The GUID for this power setting should be 8C5E7FDA-E8BF-4A96-9A85-A6E23A8C635C, documented here: https://docs.microsoft.com/en-us/windows/win32/power/power-setting-guids

(Which I could have sworn we already did this for something.... 🤔 )

@wsmelton will you open a PR for that or should we close this?

Hi Shawn, can you tell me a litte bit about your plans on this issue?

Seems we have code to support 8C5E7FDA-E8BF-4A96-9A85-A6E23A8C635C in Test but not Set.
I believe this can be solved by
if ($PowerPlan -eq "High Performance") { $PowerPlan = "8C5E7FDA-E8BF-4A96-9A85-A6E23A8C635C" }

We already set the powerplan based on the Guid (see #6679 for all the details - I was involved but forgot about it).
I had a look at Get-DbaPowerPlan, Test-DbaPowerPlan and Set-DbaPowerPlan - and I would like to implement some changes to reduce duplicate code. Get-DbaPowerPlan is getting all powerplans from the computer but returning only the active. So Test-DbaPowerPlan needs to get all the plans again because it needs not just the active one but the best practise one as well. So in the first place I would like to add a new output parameter to Get-DbaPowerPlan to also return an array with all other powerplans on the computer. Then we can use this in Test-DbaPowerPlan and Set-DbaPowerPlan without having to most part of Get-DbaPowerPlan again.
What do you think?

Sounds good! -All or -List works for me. List is used by Get-ExecutionPolicy but All works too.


Replaced .iteritems() usage for .items()

Fixed some python 2 leftovers, as discussed in #267.
Also formatted code according to Black, I hope that's not a problem.
This possibly breaks some python 2 compatibility.

As an addendum, I've noticed the usage of six.iteritems() in order to keep both python 2 and 3 compatibility. I wasn't sure if I should've kept using it instead of .items(), but I can't see why we should support Python 2 anyway.

@igormp Thank you for the contribution. But isn't .items() supported in both Python2  and Python 3?

It is indeed, but might be way slower in Python 2 (at least according to this).

but I can't see why we should support Python 2 anyway.

For now we support both python 2 and 3. Perhaps that will be changed in the future. Dropping python 2 is discussed (as you already know) in #194.

Also formatted code according to Black, I hope that's not a problem.

Only format the lines you actually change. Formatting lines written by others messes up the git line history which can come in handy if you want to figure out why things are made in a particular way.

As an addendum, I've noticed the usage of six.iteritems() in order to keep both python 2 and 3 compatibility.

As I see it there are 3 options: .iteritems(), .items(), and six.iteritems(). The does not exist in python 3, so we should not use that. There are still 8 occurances of .iteritems() and they should be replaced in this PR. .items() only works well in python 3, in python 2 it can cause memory issues because it returns a list instead of a generator, so we should not use it. I think six.iteritems() is the best solution because it works in both 2 and 3 and does not have memory issues.
In short: I suggest we replace all occurances of .iteritems() and .items() with six.iteritems().

This is an (active) duplicate of #123.

Ok, redid it. I can squash the commits after someone reviews the new changes.
I also think that it's a good idea to rename the PR since we're going to keep six.

Squashed the commits and changed the title, everything is good to go.


feat: ts rewrite and DPT 22, 28 29, 213, 235, 242, 249, 251, 275, 99, 60001 support

Improvements/Fixes:

Error On dpt2 multiple subtypes 001: 010 011 012
Fix logs on dptlib/index.js (scalar and range not defined)
Varius dpt typos
DPT237 apdu_data[1] and [2] assigned to an array instead of a number
Bumped all deps to latest and fixed all security issues
Bump min nodejs version to 16
Remove unused multi-tape dep
Add linter and prettier for better code style
Improved tests
dptlib is now created statically, this makes bundlers happier (no need to follow dinamic require)
Export of dptlib object. This is useful for applications in order to get informations about datapoints types and subtypes definitions
Connection.js has been renamed to KnxClient
Other typos/bugs/optimizations code wise
Support for DPT: 22, 28 29, 213, 235, 242, 249, 251, 275, 999, 60001.
Fixed DPT 9,10,18,20,21
Ensure dpts and other code classes use correct log instance to respect log level passed in options
Move version print in KnxClient constructor to prevent unwanted logs on console

BREAKING CHANGES

Minimum required nodejs version is now 16+ (that is already EOL btw)
Rename Connection to KnxClient and new operator is now manadatory

please consider:

ensuring change to TypeScript won't break our dependents: https://www.npmjs.com/package/knx?activeTab=dependents
bumping up major version. We're basically porting the library to another language.
keeping a common text header to all files
(I'm sure I'm forgetting something)

Nice to see that someone want to invest time in knx.
I wanted to contribute too since I use it in multiple small and big project. My goal was to add support for knx secure and some features to be able to import the groupAddress for direct DPT mapping, but I didn't have much time recently. Now if the project is going with TS, I will go in my own direction and stay vanilla. I think we need to weigh up whether TS will bring a lot to the table.

Now if the project is going with TS, I will go in my own direction and stay vanilla.

Could I ask you why?

please consider:

ensuring change to TypeScript won't break our dependents: npmjs.com/package/knx?activeTab=dependents
bumping up major version. We're basically porting the library to another language.
keeping a common text header to all files
(I'm sure I'm forgetting something)

@ekarak Sure! I will let you know one I end with this but my idea is to keep it full back compatibile!

Now if the project is going with TS, I will go in my own direction and stay vanilla.

Could I ask you why?

The benefit vs the work necessary to set up, undertand and maintain typescript project will complicate things for me and my colleague. I already don't have much time to do it in the simple way.

The benefit vs the work necessary to set up, undertand and maintain typescript project will complicate things for me and my colleague. I already don't have much time to do it in the simple way.

I can understand but trust me I had your same opinion about TS at start and now I feel so bad when I work with an untyped codebase. Also every time I do a TS refactor I found tons of issues and bugs caused by typos that js simply will never spot.
Could you wait a bit I end with this so I can help you working with the TS codebase? It would be much better and easier to debug...

@ekarak the PR is almost done (I only need to add eslint and prettier) I kindly ask you if you can take a look at it and also run the wired tests on your end (I don't have a way to run them)

@ekarak Why no break on this line?
https://github.com/ekarak/knx/blob/0dbedbe267a8ccb547762b6c819cfe67ee90fac6/src/FSM.ts#L900

Ok I'm done here, please @ekarak make a review when possible :)

Wired test are ok for me. I just did the read storm with 4 as I don't have a bigger actuator.

@ch-zacmo Thanks for your feedback! 🙏🏼 Hope @ekarak tests will end well too

@ekarak I would also rename Connection to KnxClient instead giving that this will be a major, I think that's much more appropriated

please rebase and test so that we can merge this

Just my 5 cent to this PR:

There is a lot happening for a single PR, it's actually hard to understand what changes why, because of all the different topics addressed. I usually suggest to have a PR per topic.

Switching to typescript. I'm using typescript a lot in applications, while I prefer javascript in libraries more. The main reason for it: I'm able to review the code and changes easily. With typescript I have a compiler in between, so the generated code is harder to read, high chance that I'm missing something I don't like (intentional or unintentional, just hard to review)

typescript provides the build-in type generation based on jsdoc. With jsdoc there is a similar level of type checking while developing and it forces to provide some kind of documentation for the library, best of both worlds.

If you want to check it out, I created a commit how this could be done for the connection: https://github.com/TooAngel/knx/commit/a07637a0b942829b95201805ffde12a7d0228966
Some smaller things needs to be done to make the type file really nice, the types.d.ts is autogenerated based on the jsdoc in the Connection.js

I have no more time to invest on this, I'm sorry. It took me more then a week to do all this and when I stop everything was working flowlessy.
I couldn't agree with any statement against Typescript, nowdays ALL major projects are written in TS and there is a reason if so, you can use JS docs or in line types but that's just a masked Typescript that most people do only because they don't want to learn it (or do such big refactors).
Just by switich to it here I found tons of issues in code and bugs, this is not an opinion but a real fact.
About the code that is different in production: there are source maps that can be used for such purpose, never had any problem with all my projects understanding where the issue is because of TS.
Just to give you an example: I converted to TS also the MQTT.js module (almost 5 milions downloads per month on npm) and before that the project was going to die, now it's back to life as people feel much more confident making changes to code thanks to types

Sry, I didn't want to offend someone, just wanted to mention my opinion / give me 5 cent.
In the end it is @ekarak 's decision how to move forward. I just wanted to do a small extension so that I can work better with this library, so I'm fine.

@TooAngel Didn't want to be rude anyway with my comment, just wanted to explain my points as well about TS move that I'm pretty sure would be a super nice addition to this project 😄


Failed to authenticate GDrive: 'access_token'

Bug Report
dvc pull
I am trying to run a dvc pull in a Github action against a Google Drive remote.
I've followed the instructions listed here. Specifically:

I've created a service account and downloaded the JSON file
I've pasted the JSON contents as a Github secret under the name GDRIVE_CREDENTIALS_DATA
I'm passing that secret along in my action definition
I've shared the Google Drive (viewer-only) with my newly-created service user

Upon running the job I get the following error:
2023-02-17 12:21:27,551 ERROR: unexpected error - Failed to authenticate GDrive: 'access_token'
I don't see an access_token in the JSON file that Google Console produced. Should I be using an alternate authentication method?
Full logs:
2023-02-17T12:20:56.4339150Z Requested labels: ubuntu-latest
2023-02-17T12:20:56.4339201Z Job defined at: thekevinscott/UpscalerJS/.github/workflows/tests.yml@refs/heads/ks/dvc
2023-02-17T12:20:56.4339256Z Waiting for a runner to pick up this job...
2023-02-17T12:20:56.8014936Z Job is waiting for a hosted runner to come online.
2023-02-17T12:21:00.1182426Z Job is about to start running on the hosted runner: GitHub Actions 30 (hosted)
2023-02-17T12:21:02.4566213Z Current runner version: '2.301.1'
2023-02-17T12:21:02.4595532Z ##[group]Operating System
2023-02-17T12:21:02.4596292Z Ubuntu
2023-02-17T12:21:02.4596801Z 22.04.1
2023-02-17T12:21:02.4597328Z LTS
2023-02-17T12:21:02.4597856Z ##[endgroup]
2023-02-17T12:21:02.4598375Z ##[group]Runner Image
2023-02-17T12:21:02.4598954Z Image: ubuntu-22.04
2023-02-17T12:21:02.4599482Z Version: 20230206.1
2023-02-17T12:21:02.4600288Z Included Software: https://github.com/actions/runner-images/blob/ubuntu22/20230206.1/images/linux/Ubuntu2204-Readme.md
2023-02-17T12:21:02.4601695Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu22%2F20230206.1
2023-02-17T12:21:02.4602443Z ##[endgroup]
2023-02-17T12:21:02.4603040Z ##[group]Runner Image Provisioner
2023-02-17T12:21:02.4603603Z <IP_ADDRESS>
2023-02-17T12:21:02.4604134Z ##[endgroup]
2023-02-17T12:21:02.4605775Z ##[group]GITHUB_TOKEN Permissions
2023-02-17T12:21:02.4606684Z Actions: write
2023-02-17T12:21:02.4607217Z Checks: write
2023-02-17T12:21:02.4607919Z Contents: write
2023-02-17T12:21:02.4608616Z Deployments: write
2023-02-17T12:21:02.4609162Z Discussions: write
2023-02-17T12:21:02.4609704Z Issues: write
2023-02-17T12:21:02.4610209Z Metadata: read
2023-02-17T12:21:02.4610731Z Packages: write
2023-02-17T12:21:02.4611314Z Pages: write
2023-02-17T12:21:02.4611839Z PullRequests: write
2023-02-17T12:21:02.4612441Z RepositoryProjects: write
2023-02-17T12:21:02.4613013Z SecurityEvents: write
2023-02-17T12:21:02.4613551Z Statuses: write
2023-02-17T12:21:02.4614105Z ##[endgroup]
2023-02-17T12:21:02.4617885Z Secret source: Actions
2023-02-17T12:21:02.4618618Z Prepare workflow directory
2023-02-17T12:21:02.5545660Z Prepare all required actions
2023-02-17T12:21:02.5727448Z Getting action download info
2023-02-17T12:21:02.9068034Z Download action repository 'iterative/setup-dvc@v1' (SHA:bca4f2ee1eee2c894d965d27ef8855ca6821fcb2)
2023-02-17T12:21:03.3771680Z Download action repository 'actions/checkout@v2' (SHA:dc323e67f16fb5f7663d20ff7941f27f5809e9b6)
2023-02-17T12:21:03.7692652Z Download action repository<EMAIL_ADDRESS>(SHA:646cdf48217256a3d0b80361c5a50727664284f2)
2023-02-17T12:21:04.0481158Z Download action repository 'actions/setup-node@v2' (SHA:1f8c6b94b26d0feae1e387ca63ccbdc44d27b561)
2023-02-17T12:21:04.4677749Z Complete job name: Integration / Node / Local / v16 (16)
2023-02-17T12:21:04.5459427Z ##[group]Run iterative/setup-dvc@v1
2023-02-17T12:21:04.5459899Z with:
2023-02-17T12:21:04.5460241Z   version: latest
2023-02-17T12:21:04.5460584Z env:
2023-02-17T12:21:04.5460928Z   TF_CPP_MIN_LOG_LEVEL: 2
2023-02-17T12:21:04.5461293Z ##[endgroup]
2023-02-17T12:21:04.9483349Z Installing DVC from: https://dvc.org/download/linux-deb/dvc-2.45.1
2023-02-17T12:21:23.1429925Z Hit:1 http://azure.archive.ubuntu.com/ubuntu jammy InRelease
2023-02-17T12:21:23.1431652Z Get:2 http://azure.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
2023-02-17T12:21:23.1432595Z Get:3 http://azure.archive.ubuntu.com/ubuntu jammy-backports InRelease [107 kB]
2023-02-17T12:21:23.1433422Z Get:4 http://azure.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
2023-02-17T12:21:23.1434436Z Get:5 https://packages.microsoft.com/ubuntu/22.04/prod jammy InRelease [10.5 kB]
2023-02-17T12:21:23.1435246Z Get:6 http://azure.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [898 kB]
2023-02-17T12:21:23.1436163Z Get:7 http://azure.archive.ubuntu.com/ubuntu jammy-updates/main Translation-en [197 kB]
2023-02-17T12:21:23.1436996Z Get:8 http://azure.archive.ubuntu.com/ubuntu jammy-updates/main amd64 c-n-f Metadata [13.5 kB]
2023-02-17T12:21:23.1437837Z Get:9 http://azure.archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [624 kB]
2023-02-17T12:21:23.1438672Z Get:10 http://azure.archive.ubuntu.com/ubuntu jammy-updates/restricted Translation-en [96.3 kB]
2023-02-17T12:21:23.1439526Z Get:11 http://azure.archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 c-n-f Metadata [580 B]
2023-02-17T12:21:23.1440372Z Get:12 http://azure.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [853 kB]
2023-02-17T12:21:23.1443832Z Get:13 http://azure.archive.ubuntu.com/ubuntu jammy-updates/universe Translation-en [164 kB]
2023-02-17T12:21:23.1444708Z Get:14 http://azure.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 c-n-f Metadata [17.3 kB]
2023-02-17T12:21:23.1445562Z Get:15 http://azure.archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [9696 B]
2023-02-17T12:21:23.1446404Z Get:16 http://azure.archive.ubuntu.com/ubuntu jammy-updates/multiverse Translation-en [3260 B]
2023-02-17T12:21:23.1447249Z Get:17 http://azure.archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 c-n-f Metadata [456 B]
2023-02-17T12:21:23.1448113Z Get:18 http://azure.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages [643 kB]
2023-02-17T12:21:23.1448973Z Get:19 http://azure.archive.ubuntu.com/ubuntu jammy-security/main Translation-en [134 kB]
2023-02-17T12:21:23.1449790Z Get:20 http://azure.archive.ubuntu.com/ubuntu jammy-security/main amd64 c-n-f Metadata [8388 B]
2023-02-17T12:21:23.1450628Z Get:21 http://azure.archive.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [582 kB]
2023-02-17T12:21:23.1453601Z Get:22 http://azure.archive.ubuntu.com/ubuntu jammy-security/restricted Translation-en [90.4 kB]
2023-02-17T12:21:23.1454528Z Get:23 http://azure.archive.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [678 kB]
2023-02-17T12:21:23.1455477Z Get:24 http://azure.archive.ubuntu.com/ubuntu jammy-security/universe Translation-en [105 kB]
2023-02-17T12:21:23.1457560Z Get:25 http://azure.archive.ubuntu.com/ubuntu jammy-security/universe amd64 c-n-f Metadata [13.1 kB]
2023-02-17T12:21:23.1458317Z Hit:26 https://ppa.launchpadcontent.net/ubuntu-toolchain-r/test/ubuntu jammy InRelease
2023-02-17T12:21:23.1458954Z Get:27 https://packages.microsoft.com/ubuntu/22.04/prod jammy/main armhf Packages [13.7 kB]
2023-02-17T12:21:23.1459568Z Get:28 https://packages.microsoft.com/ubuntu/22.04/prod jammy/main amd64 Packages [78.3 kB]
2023-02-17T12:21:23.1460174Z Get:29 https://packages.microsoft.com/ubuntu/22.04/prod jammy/main arm64 Packages [22.4 kB]
2023-02-17T12:21:23.1460673Z Fetched 5592 kB in 1s (5392 kB/s)
2023-02-17T12:21:23.1461054Z Reading package lists...
2023-02-17T12:21:23.1461433Z Building dependency tree...
2023-02-17T12:21:23.1461817Z Reading state information...
2023-02-17T12:21:23.1463038Z 58 packages can be upgraded. Run 'apt list --upgradable' to see them.
2023-02-17T12:21:23.1463504Z Reading package lists...
2023-02-17T12:21:23.1463882Z Building dependency tree...
2023-02-17T12:21:23.1464270Z Reading state information...
2023-02-17T12:21:23.1464854Z git is already the newest version (1:2.39.1-0ppa1~ubuntu22.04.1).
2023-02-17T12:21:23.1465336Z The following NEW packages will be installed:
2023-02-17T12:21:23.1465720Z   dvc
2023-02-17T12:21:23.1466135Z 0 upgraded, 1 newly installed, 0 to remove and 58 not upgraded.
2023-02-17T12:21:23.1466581Z Need to get 0 B/141 MB of archives.
2023-02-17T12:21:23.1467038Z After this operation, 497 MB of additional disk space will be used.
2023-02-17T12:21:23.1467576Z Get:1 /home/runner/work/UpscalerJS/UpscalerJS/dvc.deb dvc amd64 2.45.1 [141 MB]
2023-02-17T12:21:23.1468067Z Selecting previously unselected package dvc.
2023-02-17T12:21:23.1468468Z (Reading database ...
2023-02-17T12:21:23.1468829Z (Reading database ... 5%
2023-02-17T12:21:23.1469193Z (Reading database ... 10%
2023-02-17T12:21:23.1469559Z (Reading database ... 15%
2023-02-17T12:21:23.1469915Z (Reading database ... 20%
2023-02-17T12:21:23.1470273Z (Reading database ... 25%
2023-02-17T12:21:23.1470626Z (Reading database ... 30%
2023-02-17T12:21:23.1470980Z (Reading database ... 35%
2023-02-17T12:21:23.1471328Z (Reading database ... 40%
2023-02-17T12:21:23.1471678Z (Reading database ... 45%
2023-02-17T12:21:23.1472025Z (Reading database ... 50%
2023-02-17T12:21:23.1472372Z (Reading database ... 55%
2023-02-17T12:21:23.1472722Z (Reading database ... 60%
2023-02-17T12:21:23.1473067Z (Reading database ... 65%
2023-02-17T12:21:23.1473418Z (Reading database ... 70%
2023-02-17T12:21:23.1473899Z (Reading database ... 75%
2023-02-17T12:21:23.1474254Z (Reading database ... 80%
2023-02-17T12:21:23.1474613Z (Reading database ... 85%
2023-02-17T12:21:23.1474967Z (Reading database ... 90%
2023-02-17T12:21:23.1475333Z (Reading database ... 95%
2023-02-17T12:21:23.1475882Z (Reading database ... 100%
2023-02-17T12:21:23.1476348Z (Reading database ... 236173 files and directories currently installed.)
2023-02-17T12:21:23.1476867Z Preparing to unpack .../UpscalerJS/UpscalerJS/dvc.deb ...
2023-02-17T12:21:23.1477298Z Unpacking dvc (2.45.1) ...
2023-02-17T12:21:23.1477672Z Setting up dvc (2.45.1) ...
2023-02-17T12:21:23.1479952Z NEEDRESTART-VER: 3.5
2023-02-17T12:21:23.1480407Z NEEDRESTART-KCUR: 5.15.0-1031-azure
2023-02-17T12:21:23.1482821Z NEEDRESTART-KEXP: 5.15.0-1031-azure
2023-02-17T12:21:23.1483369Z NEEDRESTART-KSTA: 1
2023-02-17T12:21:23.1746857Z ##[group]Run actions/checkout@v2
2023-02-17T12:21:23.1747380Z with:
2023-02-17T12:21:23.1747857Z   repository: thekevinscott/UpscalerJS
2023-02-17T12:21:23.1748602Z   token: ***
2023-02-17T12:21:23.1749071Z   ssh-strict: true
2023-02-17T12:21:23.1749577Z   persist-credentials: true
2023-02-17T12:21:23.1750067Z   clean: true
2023-02-17T12:21:23.1750494Z   fetch-depth: 1
2023-02-17T12:21:23.1750962Z   lfs: false
2023-02-17T12:21:23.1751411Z   submodules: false
2023-02-17T12:21:23.1751873Z   set-safe-directory: true
2023-02-17T12:21:23.1752366Z env:
2023-02-17T12:21:23.1752800Z   TF_CPP_MIN_LOG_LEVEL: 2
2023-02-17T12:21:23.1753281Z ##[endgroup]
2023-02-17T12:21:23.4521640Z Syncing repository: thekevinscott/UpscalerJS
2023-02-17T12:21:23.4523874Z ##[group]Getting Git version info
2023-02-17T12:21:23.4524776Z Working directory is '/home/runner/work/UpscalerJS/UpscalerJS'
2023-02-17T12:21:23.4568655Z [command]/usr/bin/git version
2023-02-17T12:21:23.4702645Z git version 2.39.1
2023-02-17T12:21:23.4728632Z ##[endgroup]
2023-02-17T12:21:23.4917330Z Temporarily overriding HOME='/home/runner/work/_temp/62fee7a2-d429-4e3a-9043-4bd45caae7b0' before making global git config changes
2023-02-17T12:21:23.4918005Z Adding repository directory to the temporary git global config as a safe directory
2023-02-17T12:21:23.4918744Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/UpscalerJS/UpscalerJS
2023-02-17T12:21:23.4919402Z Deleting the contents of '/home/runner/work/UpscalerJS/UpscalerJS'
2023-02-17T12:21:23.4920267Z ##[group]Initializing the repository
2023-02-17T12:21:23.4921581Z [command]/usr/bin/git init /home/runner/work/UpscalerJS/UpscalerJS
2023-02-17T12:21:23.4922222Z hint: Using 'master' as the name for the initial branch. This default branch name
2023-02-17T12:21:23.4923014Z hint: is subject to change. To configure the initial branch name to use in all
2023-02-17T12:21:23.4923565Z hint: of your new repositories, which will suppress this warning, call:
2023-02-17T12:21:23.4923988Z hint:
2023-02-17T12:21:23.4924463Z hint: 	git config --global init.defaultBranch <name>
2023-02-17T12:21:23.4924858Z hint:
2023-02-17T12:21:23.4925363Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
2023-02-17T12:21:23.4925988Z hint: 'development'.  Hit us up at https://dvc.org/support, we are always happy to help!
2023-02-17T12:21:27.5953656Z 2023-02-17 12:21:27,595 DEBUG: Analytics is enabled.
2023-02-17T12:21:27.5964884Z 2023-02-17 12:21:27,596 DEBUG: Trying to spawn '['daemon', '-q', 'analytics', '/tmp/tmp9vvfye0u']'
2023-02-17T12:21:27.5995062Z 2023-02-17 12:21:27,598 DEBUG: Spawned '['daemon', '-q', 'analytics', '/tmp/tmp9vvfye0u']'
2023-02-17T12:21:27.8858608Z gh: To use GitHub CLI in a GitHub Actions workflow, set the GH_TOKEN environment variable. Example:
2023-02-17T12:21:27.8859154Z   env:
2023-02-17T12:21:27.8859675Z     GH_TOKEN: $*** github.token ***
2023-02-17T12:21:28.4846401Z ##[error]Process completed with exit code 255.
2023-02-17T12:21:28.4969180Z Post job cleanup.
2023-02-17T12:21:28.6360919Z [command]/usr/bin/git version
2023-02-17T12:21:28.6417348Z git version 2.39.1
2023-02-17T12:21:28.6467397Z Temporarily overriding HOME='/home/runner/work/_temp/60e5a199-4989-4a4b-82d3-1bda086b444d' before making global git config changes
2023-02-17T12:21:28.6470012Z Adding repository directory to the temporary git global config as a safe directory
2023-02-17T12:21:28.6476745Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/UpscalerJS/UpscalerJS
2023-02-17T12:21:28.6526733Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand
2023-02-17T12:21:28.6566965Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2023-02-17T12:21:28.6803058Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader
2023-02-17T12:21:28.6830699Z http.https://github.com/.extraheader
2023-02-17T12:21:28.6859442Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader
2023-02-17T12:21:28.6885862Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :"
2023-02-17T12:21:28.7411189Z Cleaning up orphan processes

@thekevinscott I think you need to enable service account in the remote config. See the second (2.) in this doc:

Configure the remote to use the service account and tell if where to find the key file:

dvc remote modify myremote gdrive_use_service_account true
dvc remote modify myremote --local \
              gdrive_service_account_json_file_path path/to/file.json

could you please give it a try?

Thanks for your response, @shcheklein. Indeed, it now appears to be working - thank you!
Follow up question: is there a way to specify dvc to use a service account in one setting, and a non-service account (URL oath login) in another?
My use case is: I'd like folks to be able to clone the repo, install dvc, and be able to grab all the models. When using the default Google Drive OAuth URL setup (I'm not sure which one that was), dvc shows this message:
Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth...

Authentication successful.

Which is great, and is what I'd like for any user that clones the repo.
However, I also want to use dvc in a Github Action, and I think the only way to enable that is to set up a service account, which thanks to you is now working.
However, from the documentation, it appears that it's an either / or thing.

I tried setting up two different remotes:

gdrive - normal Google Drive flow, default
gdrive-service-account- service account Google Drive flow

And specify the non-default remote in CI. And it appears to be working!
Would love to hear from anyone whether this approach is valid or if there's something I'm missing; assuming it's good, I think we can close this ticket.

Yes, you can specify multiple remotes and use dvc pull -r <remote> on CI. You can modify the existing remote on CI before running any commands dvc remote modify .... Any option is absolutely fine.


New plugin name requirements

Hi @joeyuping
Per our developer policies,
please ensure that your plugin's name does not include the word "Obsidian".
In addition, the plugin name should not include the word "Plugin", as that is unecessary duplication.
We have already modified the name of your plugin to "Quick LaTeX" in our records.
To maintain compliance, take the following actions:

Modify the manifest.json file in your plugin repository.
Generate a new release for your plugin to ensure users download the updated manifest.

If you have a idea for a different plugin name, you may also submit a pull request to the obsidianmd/obsidian-releases repository.
Thank you for your cooperation.
— the Obsidian team

Noted! Will update as required


Working with "affected:" ?

Hi,
I found this by mistake :-) It is exactly what I wanted though.
I was wondering if it supports (and how) using the affected: scripts i.e.
affected:apps
affected:tests
And what about the dependency graph - is this also supported ?
I suppose I am asking if there is anything that doesn't kind of work because we are using GO inside of a javascript/framework (NX)
Thanks in advance

I would also like to know how to use the affected:* commands. Are they even available?

I would also like to know how to use the affected:* commands. Are they even available?

OK, so for anyone else wondering the solution I went with was for defining the dependencies between Go packages was
to add them as implicit dependencies in the nx.json.
nx.json:
  "projects": {
    "child1": {
      "tags": []
    },
    "child2": {
      "tags": []
    },
    "parent": {
      "tags": [],
      "implicitDependencies": ["child1", "child2"]
    }
  }

These are also defined in the workspace.json under projects:
  "projects": {
    "parent": {
      "projectType": "application",
      "root": "services/parent",
      "sourceRoot": "services/parent"
    },
    "child1": {
      "projectType": "application",
      "root": "services/child1",
      "sourceRoot": "services/child1"
    },
    "child2": {
      "projectType": "application",
      "root": "services/child2",
      "sourceRoot": "services/child2"
    }

At this moment the way to go is by using implicitDependencies as suggested by @martonkaufmann
  "projects": {
    "api": {
      "tags": [],
      "implicitDependencies": ["api-db"]
    },
    "api-db": {
      "tags": []
    }
  }

I hope in the future this will work as other projects, but I need to dive in how that works.

@beeman would you like help with this enhancement?

@phillipCouto yes! That would be very welcome 👍
Happy to talk about any issues or questions you might have when working on this - if you happen to be on Discord, I'm beeman#8333. Otherwise happy to slow-chat here

@phillipCouto yes! That would be very welcome +1
Happy to talk about any issues or questions you might have when working on this - if you happen to be on Discord, I'm beeman#8333. Otherwise happy to slow-chat here

So far I have gotten it to work using the sample. There are some things I need to tweak to have it work correctly for all workspaces. Would you like the plugin to be a separate package or included in @nx-go/nx-go ? I need to test the later as I got it to work as a separate package.
I will setup discord tomorrow =)

@beeman check out my branch to see if you are happy with the direction I am going in. If so I will finish it off with unit tests to validate the functionality.
https://github.com/phillipCouto/nx-go/tree/add-package-graph-support
Also I added you to discord I am Speedz#1203.


[4.0] Provide Swift 3 compatible Dict.keys/values

This is a cherry pick of #9462.

Explanation: Provides backwards-compatibility for the keys and values properties of a dictionary, which have new types in Swift 4.
Scope: This adds back the current versions of two properties and marks the new versions as introduced in Swift 4.
Radar/SR: rdar://problem/32014786
Risk: Low
Testing: This adds new validation tests to verify the types in Swift 3 mode; the types were manually tested in Swift 4 mode.

@swift-ci Please test


[Eloquent] [5.3] Incorrect usage of UPDATE and ORDER BY

Laravel Version: 5.3.31
PHP Version: 5.6.15
Database Driver & Version: MySQL 5.6.31

Description:
I have this model
Meeting extends Model
{
    public function invitedTeachers()
    {
        return $this->belongsToMany(Teacher::class, 'meeting_teacher_invitations')
            ->orderBy('as_president', 'DESC')
            ->withPivot(['as_president', 'is_present']);
    }
}

When i do
$meeting->invitedTeachers()->where('teacher_id', 232)->update(['as_president' => true]);

I get this error
'SQLSTATE[HY000]: General error: 1221 Incorrect usage of UPDATE and ORDER BY (SQL: update `teachers` inner join `meeting_teacher_invitations` on `teachers`.`id` = `meeting_teacher_invitations`.`teacher_id` set `as_president` = 1, `updated_at` = 2017-04-14 11:05:53 where `meeting_teacher_invitations`.`meeting_id` = 4 and `teacher_id` = 232 order by `as_president` desc)'

Two things:

Laravel 5.3 is no longer supported.
this doesn't look like a bug. Since the error is coming straight from SQL. Use the forums or the slack channel to resolve it.

Laravel 5.3 is no longer supported.

5.3 still have bug fixes.

this doesn't look like a bug. Since the error is coming straight from SQL. Use the forums or the slack channel to resolve it.

Eloquent builder and database query builder are responsible for putting together the sql that will be executed, this looks like the builder is not taking into consideration when updating the pivot and an order by is defined on the relation.

5.3 still have bug fixes.

Security patches

@m1guelpf From the docs
For general releases, bug fixes are provided for 6 months and security fixes are provided for 1 year.

It's not a framework bug. You can't use your like in your example, see mysql update doc below.
https://dev.mysql.com/doc/refman/5.7/en/update.html
Use orderBy in some another place instead of relation.

@shadoWalker89 @m1guelpf yes.. and if you check your nice colourful calendar you will realise that 5.3 was launched in August 2016. If I can calculate properly, its long past 6 months :)

@Dylan-DPC OMG, i really didn't realize that it's past 6 months, wow :D time flies by
I'm closing this issue for now.

@shadoWalker89 haha sure.. better to upgrade o 5.4 if possible ;)


Feat: Add CombineWorker.newInstance factory

Add initializer parameter to the CombineWorker.initialize method
PR Checklist

[ ] Code is 100% covered.
[x] I updated/added relevant documentation.
[x] All existing and new tests are passing.
[x] Changelog is updated.

[x] Version is pumped

Codecov Report

Merging #6 (660a5a5) into master (77ee942) will decrease coverage by 0.30%.
The diff coverage is 85.71%.

@@             Coverage Diff             @@
##            master       #6      +/-   ##
===========================================
- Coverage   100.00%   99.69%   -0.31%
===========================================
  Files           28       28
  Lines          319      324       +5
===========================================
+ Hits           319      323       +4
- Misses           0        1       +1

Impacted Files
Coverage Δ

lib/src/combine_worker/combine_worker_manager.dart
100.00% <ø> (ø)

lib/src/combine_worker/native_worker_manager.dart
100.00% <ø> (ø)

lib/src/combine_worker/web_worker_manager.dart
80.00% <0.00%> (-20.00%)
:arrow_down:

...ib/src/isolate_factory/native_isolate_factory.dart
100.00% <ø> (ø)

lib/src/combine_worker/combine_task_executor.dart
100.00% <100.00%> (ø)

lib/src/combine_worker/combine_worker_impl.dart
100.00% <100.00%> (ø)

lib/src/combine_worker_singleton.dart
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


artificial lifetime of TimelineGuard bound to the lifetime of TimelineRef

This makes it way harder to hold a TimelineGuard for long.
It adds a little more verbosity but I think it's a clean win.

@SomeoneToIgnore feel free to merge this into your branch

Pushed the fix commit here, then merged the whole branch as https://github.com/neondatabase/neon/pull/3252/commits/0024917f6334ba61f8cd7176190d5a02ad2d7988
Apparently, git --squash ... was a bad idea, since it lost commit authorship, sorry for that.


Update Azure CLI command samples

Replaced = character with spaces.

@techbunny : Thanks for your contribution to the Azure documentation! The author, @neilpeterson, has been notified to review your proposed change.

Thanks Jannelle.
#sign-off


Support ARM server

Now we have supported RPi image, I think we should support a rancheros-armv8.iso for ARM server.

I have an odroid-c2 that I could test on.

We will ship ARM Server support in 1.5.0, but it is experimental and we are unable to do a full test for the time being.
If anyone needs to build related files, just run make on an ARM server.
Currently, I use qemu-aarch64 for testing, booting from kernel can work.

Tested with RancherOS version- v1.5.0-rc2(Kernel Version: 4.14.85-rancher).
This version supports ARM Server, I have verified the run and shutdown system as well as simple commands.


when using findSession check if the session exists in Redis first before creating a new one - a fix for #2019

@mrniko PR is ready for you

@jchobantonov
Big thanks!


Upgrade dependencies go get -u ./... causing errors

getting this error when I upgrade my dependencies - it's not blocking but is there something I am supposed to do to prevent the error?
[Error - 1:33:45 PM] Request workspace/executeCommand failed.
Message: err: exit status 1: stderr: go: -d flag is deprecated. -d=true is a no-op
go: github.com/imdario/mergo@upgrade (v1.0.1) requires<EMAIL_ADDRESS>parsing go.mod:
module declares its path as: dario.cat/mergo
but was required as: github.com/imdario/mergo

When I tried to update the package today, I got the same error. Is the release just broken?

@williamohara Use the new vanity URL dario.cat/mergo for any v1.x version. This change happened more than one year ago (see #240).

For me its a dependency in the Azure SDK for go - I'll just reach out to the azure team and tell them to do it :)


Third-party modules

What's up?

Copy-paste from what @snth wrote on Discord

I think a lot of the kind of analytical query work that PRQL is targeted at happens in environments like Notebooks, DBeaver, DuckDB, dbt, Apache Superset, ... and that's why we've been targeting integrations with tools like that. My impression of the current module system proposal is that it very much assumes a file system structure like when you're compiling a Rust program. I think that might often not be the case when working with PRQL and I feel it would be quite important to still be able to "import" modules in those places.
Take working in DBeaver for example: I might have written a module that has a whole lot of convenience functions that do investment performance calculations or whatever, I want to be able to use those wherever I use PRQL, say even in the prql-playground for example.
So what I had envisioned was something more along the lines of require in JS (I don't really know the javascript ecosystem at all so I don't really know how that works) or install_github(...) in R. The compiler would then fetch the packages over the internet and make them available. There are obviously a couple of practical problems with that which would need to be overcome but that would be the basic idea.
Potential problem:

Slowness - would it be possible to cache things? Could maybe write to ~/.config/prql but probably not possible in all environments.
Security/authenticity - maybe there could be an optional second argument which would be a fingerprint or message digest which gets checked? e.g. something like

module('github.com/snth/utils', '<HMAC_DIGEST_OR_FINGERPRINT>')

from tbl
calc_returns close_price

I think this is an excellent idea!
I think the caching approach would be fine. I'm also not sure how JS does it. We could have a refresh param to the compile function to force a refresh.
I'm a bit less worried about the security with hashes etc — we could have an option for a git repo, with a commit-ish, which could be a hash, if this is important to folks. Otherwise they can clone the files. (No strong view though)
One question — if we don't have use, can this import more than one file — e.g. a tree of files?