Configure max blocks per-host in IPAMConfig

Description

Allows setting a global option for max blocks per-host. This is a nifty
tunable that, in conjunction with strict affinity, can help mitigate scenarios where one or more hosts end up
attempting to allocate more blocks than they should.
Todos

[ ] Tests
[ ] Documentation
[ ] Release note

Release Note

None required

I noticed that AssignIP doesn't currently have a check against the max blocks per host param.
@song-jiang is this intentional? I think AssignIP is used to assign specific IP addresses in some scenarios.

I don't think it is intentional. I think it should add max blocks per host check similar to AutoAssign. Will you add this on your PR?

@song-jiang yep, will do!


feat(DropdownMenu): ✨ New component

Resolves #1067

I kinda feel this component should be called Menu or DropdownMenu. What do you guys think? I know its called Dropdown to stay in sync with Aksel, but I feel its confusing, I keep thinking its a Select 😅
DropdownMenu would work fine, since it is an actual menu 👍🏼

Is it still correct to use the roles menu and menuitem now that its tabbable? I see its done very differently in other designsystems. Danske's Overflow menu does not have them, and their component looks the most similar to what we are trying to achieve. Lets not forget that no aria is better than "bad" aria.
I think so, we want the screen reader to read out that it is a menu, and how many menuitems it has

Looks pretty dandy! 👍
I think we should also have focus on first element when navigation is done by keyboard and open using the "Space" or "Enter" key, as per aria best practice.
What do you guys think? @mrosvik @Febakke @Thuneer

I think it should focus the first element. What about focus trap?

Great job!


Feat/my apps page

We're conditionally rendering the nav buttons. Now we see them if your wallet is connected.
My applications page now shows the applications created by the wallet connected.
Worked on My applications page UI
Application's detail page UI improved

Looking Good!


Display User Role in UI (QOL)

Describe the issue
Currently there is no way for a user to know what role they currently have assigned to them. Without doing some experimentation/tests to deduce what role they have, they would have to use the inspect element tool to look at the session and read the code directly.
Rational/Why
We want to have a user friendly action to display to the user what role they currently have. As it leads to easier communication regarding roles.
Definition of done/Acceptance Criteria

[x] Add a drop down menu option where the user profile currently exists to view "Profile"
[x] Display in a dialog box information about the user: Name, Email, Role

Works as expected:
Note: maybe we should show that public-admin can Create Private Cloud products and private-admin can Create Public Clout products.


Tuttorial links

SORRY i have to do this, but you closed the last one so fast i dint get a chance to reply! I m just seeking the tutorials you spoke of, where are they? i cant find them D:

You can still reply to the original one, its just not an actual issue so I closed it.

Sorry for this trouble. Im just NOT used to this site. Deepest apologies..


Add tryCatchAsync function to Either

🚀 Feature request
Add tryCatchAsync function to Either.
Current Behavior

trycatch function does not await an async function.
Desired Behavior
fp-ts provides function that constructs a new Either from an async function that might return Promise which will be rejected.
Suggested Solution
Add below function to src/Either.ts:
export function tryCatchAsync<E, A>(f: Lazy<Promise<A>>, onError: (e: unknown) => E): Promise<Either<E, A>> {
  try {
    const r = await f()
    return right(r)
  } catch (e) {
    return left(onError(e))
  }
}

Example
import { Either, left, right, tryCatchAsync } from 'fp-ts/lib/Either'

const unsafeHead = <A>(as: Array<A>): Promise<A> => {
  if (as.length > 0) {
    return Promise.resolve(as[0])
  } else {
    return Promise.reject(new Error('empty array'))
  }
}

const head = <A>(as: Array<A>): Promise<Either<Error, A>> => {
  return tryCatchAsync(
    async () => await unsafeHead(as),
    (e) => (e instanceof Error ? e : new Error('unknown error'))
  )
}

const head1 = await head([])
assert.deepStrictEqual(head1, left(new Error('empty array')))
const head2 = await head([1, 2, 3])
assert.deepStrictEqual(head2, right(1))

More specific example
valid.json:
{
  "foo": "bar"
}

invalid.json:
{

import { Either, left, right, tryCatchAsync } from 'fp-ts/lib/Either'
import { readFile } from 'fs/promises'

const readJsonFile = (path: Parameters<typeof readFile>[0]): Promise<Either<Error,unknown>> => {
  return tryCatchAsync(
    async () => await readFile(as).then(d => JSON.parse(d)),
    (e) => new Error('failed to read JSON file')
  )
}

const invalid = await readJsonFile('./invalid.json')
assert.deepStrictEqual(invalid, left(new Error('failed to read JSON file')))
const valid = await readJsonFile('./valid.json')
assert.deepStrictEqual(valid, right({ foo: 'bar' }))

Who does this impact? Who is this for?
People using Either
Describe alternatives you've considered
It could not be realized with tryCatch function.
Additional context
none
Your environment

Software
Version(s)

fp-ts
2.6.7

TypeScript
3.9.4

See tryCatch in the TaskEither module

@gcanti thanks :smile:


Do we have Dual axis plots?

A clear and concise description of what you want to happen.
Dual axis plots are useful in many places to compare two measures such as sales and profit trend across months
https://help.tableau.com/current/pro/desktop/en-us/multiple_measures.htm
A clear and concise description of any alternative solutions or features you've considered.
why don't we have it in pygwalker?

Related issue: https://github.com/Kanaries/pygwalker/issues/154


Remove Python 3.7 support

It is no longer supported https://endoflife.date/python

Wow, the time's running so fast 😲

Foundation started to be a lot more strict after having Python 2.7 alive for so long ;) But I'm still not fully switched to Python 3.8 and and we have 3.11 for 10 months already.. .


Jadeite: Can't get a rich inspector on basic object types

For most objects, Jade provides a fully featured inspector:

If you inspect a basic class such as Integer or String, you get a very basic inspector

It would be helpful to have the fully featured inspector available to classes such as String so that it's easier to debug their contents.

String inspectors were added a whiles back before 3.0.74.  There's not much to say about an integer but it does provide the oop


[Question] Docker image has not been updated for 3 months

Hi,
I just found out that the dokcer image stuck at v0.7.4 for 3 months https://hub.docker.com/r/metagpt/metagpt/tags. Is metagpt still support docker running? The intallation page still mentions docker though. https://docs.deepwisdom.ai/main/en/DataInterpreter/
Would you like to update the docker image to v0.8.1 https://github.com/geekan/MetaGPT/releases/tag/v0.8.1?
Thanks!

Thanks for your reminder. The docker version has been updated.

Thanks!


(Oscar3.2pre-release3) Console refresh after changing SHA for project ... changes don't show up until moused over

You can see in this screenshot that Rowan and STON have updated (after I moused over them), but Cypress and FileSystemGs have yet to refresh:

It doesn't update until I click on the project (or a class in the project). However, I'm not sure what realistically can be done; should discuss with @dalehenrich for preferred tradeoff with constantly checking disk.  I'm fine with close/deferring per Dale's needs.

I think the request is that when the Refresh button is pressed, the gui is refreshed instantly rather than lazily. Should be fixed as of 3.2.13.


Don't use random in sku generator

Fixes #799

One small improvement: can we have the enumerate start at something like "1001" so it reflects real data more closely? It's quite unusual to assign SKUs such as "1-0" and at some point in time they may become visible across the UI.

@patrys done

Current coverage is 58.89% (diff: 100%)

Merging #800 into master will increase coverage by 0.03%

@@             master       #800   diff @@
==========================================
  Files           110        110
  Lines          5844       5846     +2
  Methods           0          0
  Messages          0          0
  Branches        713        713
==========================================
+ Hits           3440       3443     +3
  Misses         2266       2266
+ Partials        138        137     -1

Powered by Codecov. Last update b4ef179...9b7a307


Add xposed back

Please consider adding Xposed part back. It was very much used and works perfectly. I've been using it like that for a very long time now. It eliminates the need for a background service and a permanent notification. Hooking directly into an app's crash handler is a much more elegant approach than constantly monitoring logcat.

Came here to say the same.
Using xposed also catches some crashes that aren't logged to logcat

Well, ok, sure. Only the GitHub-flavored releases will support it though.
JCenter is deprecated, but it's where the Xposed API libraries are maintained. JCenter will eventually shut down, so I have to add them locally so they don't suddenly disappear on me. However, F-Droid does not support building apps with precompiled binaries for security reasons. Thus, I can only support Xposed through GitHub releases.
Just remember to use the GitHub releases if you want to use Scoop with Xposed. Also, remember to check for updates every now and again, as people using my GitHub releases won't be able to update the app through F-Droid due to different key signatures. There's a source code link in the app's about section so it should be pretty easy to check if there's a new release.
Thanks!

Thank you!

An idea to circumvent jcenter:
Can't we add the xposed-api-repo as git submodule/subrepo or something similar?
And I just found out:
rovo89 tries to host a maven repo on the github pages:
[https://github.com/rovo89/XposedBridge/commit/79f70cf567fdb42f83313f6cad97a6ffc878f3ac](see this commit)

@binarynoise Ah I didn't notice he had set up a thing like that.
Just our luck though, F-Droid also maintains their own list of repositories they allow, so that wouldn't be possible either :(
I did think about adding it as a submodule. However, that's one more thing that F-Droid would have to go through and verify every time, and it makes the Scoop repository more cluttered as well. I figure it wouldn't really be worth it.

jitpack.io is allowed, so it should be possible to use that to get the xposed api. Alternatively we  could create an issue to encourage the xposed maintainer to move to one of the accepted platforms

Dang, I actually completely forgot about Jitpack there.
...the builds still fail https://jitpack.io/#rovo89/XposedBridge :(
Only option now is to open an issue and see if he responds.

Decided to just add back Xposed using Jcenter for the time being. If this isn't resolved by the time Jcenter officially shuts down, then I'll have to remove Xposed support for F-Droid.


Compose Multiplatform support

Migrating Modifier.zoomable() to multiplatform should be easy, but SubSamplingImage() will need to be decoupled from Android's BitmapRegionDecoder for lazy loading of bitmap tiles.
Target platforms
JVM

javax.imageio.ImageIO + ImageReadParam#setSourceRegion can be used. Example usage.
Pointer events from trackpads aren't supported yet.

Apple

Someone please correct me if this is wrong, but my limited research points me to CGImageCreateWithImageInRect + kCGImageSourceSubsampleFactor.

For loading of images, @colinrtwhite plans to migrate Coil to multiplatform in v3.

Thanks to @DSteve595, Modifier.zoomable() will be available as a multiplatform library in the next release 🎉

Hi @saket! From what I can gather multiplatform in this context means Android and Desktop right?  I can only see the Android and Desktop versions of the zoomable library published.
I do see you have a reference to Apple in the original description of the issue, is this part still outstanding?

I do see you have a reference to Apple in the original description of the issue, is this part still outstanding?

Yep! Wanna help out by sending a PR? 😊

For folks following this issue, Coil has started publishing experimental builds with multiplatform support. I'm going to wait a bit for its APIs and maven coordinates to settle before integrating it with telephoto.

Hi, does it mean telephoto will support wasm target soon as well?

@LOOHP I don't have any plans for the web yet. Are you actually displaying large images on the web that require subsampling?

I'm working on displaying a large railway system map with each station being clickable to perform some action. So it needs to stay HD when it is zoomed in.
If telephoto supports wasm as well, it would be fantastic as I will be able to use it for Android, IOS, JVM & Web all in the same Compose Multiplatform code.

I'm working on displaying a large railway system map with each station being clickable to perform some action. So it needs to stay HD when it is zoomed in. If telephoto supports wasm as well, it would be fantastic as I will be able to use it for Android, IOS, JVM & Web all in the same Compose Multiplatform code.

You can try another Compose Multiplatform image zoom library ZoomImage, which already supports wasmJs, js, iOS, desktop and Android. Coil v3 is also integrated. https://github.com/panpf/zoomimage

@saket
First, user @LOOHP needs wasm support, but you don't have any support plans. My library supports wasm, but you don't allow me to recommend my library to @LOOHP. Do you want to lock users into your library and not want them to use other libraries even if you can't provide support?
Secondly, I only recommended my library in issues where you couldn't provide functional support. I didn't recommend my library in other unrelated issues of yours regardless of the situation. I didn't pollute your issues. I was restrained.

If the zoomable modifier already is KMP compatible, could a KMP compatible release be made for just the modifier? I am unable to use this in a KMP project as-is, but I only need the modifier

Modifier.zoomable() is already available for the JVM and Android. What other platforms are you targeting? We can add the rest here, if you want to send a PR:
https://github.com/saket/telephoto/blob/16bc5f9abb392753bc78a4133bdf791ded6d1124/gradle/build-logic/convention/src/main/kotlin/KotlinMultiplatformConventionPlugin.kt#L25-L27

@saket I am looking to target Android and iOS primarily

I've created a PR https://github.com/saket/telephoto/pull/102 but I'm not sure if this makes sense. Is there a way to make iOS targets for just the Modifier library?

Another reason why this decoupling might be useful is to work with image sources different rather than image file format decoders. For instance, I'm creating a PDF viewer. It supports partial rendering with given zoom, but there's no Bitmap factory involved – instead, the renderer acts as the factory itself. If you decide to decoulple, can you please design the replacement in a such way that any partial rendering image source can be used?


Add configuration to send requests with user ID to a Focal Meter endpoint (close #745)

Issue #745
Implements integration with the FocalMeter system by Kantar. It is configured using the FocalMeterConfiguration class which has a single property – the Kantar endpoint to send the requests to.
The implementation uses a state machine (FocalMeterStateMachine) that checks the user ID in the client session context entity in events in the entities(event, state) function. Whenever that changes from the last seen value, it makes a request to the Kantar endpoint. It doesn't persist the information whether a request was already made, so after restarting the app (or creating a new tracker), it will make the request again.
Using the entities(event, state) function in state machine is not the ideal place for this check. It would be better if we had a dedicated API in the state machines to make these kinds of checks on tracked events. We plan to implement this in the v5 of the trackers, so we can refactor the implementation at that point.
Documentation: Sending session user identifier to Kantar FocalMeter
The tracker has the ability to send the user identifier (userId present in the session context) to a Kantar FocalMeter endpoint. This integration enables measuring the audience of content through the FocalMeter router meter.
To enable this feature, you can pass the FocalMeterConfiguration configuration with the URL of the Kantar endpoint. For example:
let focalMeterConfig = FocalMeterConfiguration(kantarEndpoint: "https://thekantarendpoint.com")
let tracker = Snowplow.createTracker(namespace: namespace, network: networkConfig, configurations: [focalMeterConfig])

We will go forward with the v5 implementation in #754


support WSL

resolve #47

@purocean Thank you for the contribution. I'll take a look at this PR these days.

Looks like there are several places which contains the logic like wsl.useWsl() ? wsl.toWslPath(workFolder) : workFolder.
I think it could be better to have a pathUtils that wrap this kind of logic there. @purocean what do you think?

@purocean Merged, thank you.


[rt10000] Update to babel v7

Hi there,
Do you see any issue in upgrading from babel 6 to babel 7? The storybook already works w/ babel 7 and I didn't notice any issues.
The motivation is this issue. Having 2 '.babelrc' files makes cumbersome the work w/ storybook.

We have added PR https://github.com/React9k/react-timeline-9000/pull/272 for this issue.

Thanks for merging. Closing the issue.


Boolean assignment should be tolerant of string values

should use ActiveRecord::ConnectionAdapters::Column.value_to_boolean so that we can do
resource.assign_attributes params[:resource_name]
where params[:resource_name] = {revocable: "false"} (submitted from client webpage form)

Resolved by https://github.com/AngelList/protip/pull/13


Complete #5177

About the PR
#5177 only added the DumpCanister behavior for plasma canisters. This PR reduces repetition in the YAML files by handling the spawning of the specific broken canister in the system and moves the DumpCanister behavior to the base gas canister instead.
Resolves #4832, #12877
Screenshots

Changelog

:cl:

fix: All gas canisters now dump their contents when destroyed.

I don't see a reason to move destructible onto entities when it will be more subject to bugs and code quality issues over time.

The Destructible component was already on all of these entities. Is there some better way to handle this behavior of dumping the gas canister's contents and spawning a broken variant than using the Destructible component?

If you want to reduce repetition in yaml then update the datafields to specify inheritance.

Can you show me what you mean by using the datafields to specify inheritance, such as an example of this being done elsewhere?
The Destructible component was removed from every descendant of GasCanister in order to have a unified specification on the parent, GasCanister, with a field on the GasCanister component itself specifying which broken variant to spawn, instead of having that information needing to be put onto Destructible components on every child with the necessarily duplicated destructible thresholds and et cetera.

Can you show me what you mean by using the datafields to specify inheritance, such as an example of this being done elsewhere?

https://github.com/space-wizards/RobustToolbox/blob/master/Robust.Shared/Prototypes/IPrototype.cs#L44

Is there some better way to handle this behavior of dumping the gas canister's contents and spawning a broken variant than using the Destructible component?

No, so destructible should handle it.

Issue was solved by another PR.

Which PR? If it has been merged, I am still able to break open nitrous oxide canisters and be unaffected.

@Ygg01 this was not resolved in another pr

if the issue was that only the plasma canister had the DumpCanister effect, why not just add it to all of the canisters? I get that it's going to be some yaml bloat, but it's only a few lines and could probably be generalized to all atmos containers, if needed.

if the issue was that only the plasma canister had the DumpCanister effect, why not just add it to all of the canisters? I get that it's going to be some yaml bloat, but it's only a few lines and could probably be generalized to all atmos containers, if needed.

I wasn't aware at the time of writing this PR that this would be the preferred way to solve this problem, so I can change it to that instead. My original submission did generalize the end-result behavior but did not use Destructible.


Rejects does not behave as expected - poor uncaught error handling

Describe the bug
I have a wrapper around the React.lazy function that in the final case throws an error.
I'm trying to assert that use case, however, the proposed way of handling it with rejects does not work:
await expect(render(<Component />)).rejects.toThrowError('Cannot load the remote component');

It warns about an event event not being wrapped in act(...).
Adding the act:
await act(async () => await expect(render(<Component />)).rejects.toThrowError('Cannot load the remote component'));

Reports the following and does not execute the code properly, no error is being triggered:
TypeError: You must provide a Promise to expect() when using .rejects, not 'object'.

Then, wrapping it in waitFor instead of act executes the code correctly, but with a different error message
await waitFor(
      async () => await expect(render(<Component />)).rejects.toThrowError('Cannot load the remote component')
    );

>> Error: Uncaught { message: 'Cannot load the component' }
The above error occurred in one of your React components:

    at Lazy

Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.

Cannot load the component

And, here is my full test:
it('User has encountered the missing resource, and now he re-encounters it', async () => {
    localStorage.setItem(COMPONENT_LOADED_KEY, 'true');

    const Component = lazy<typeof Test>(() => {
      return new Promise((resolve, reject) => reject({ message: 'Cannot load the remote component' }));
    });

    await waitFor(
      async () => await expect(render(<Component />)).rejects.toThrowError('Cannot load the remote component')
    );
  });

Reproduction
import { ComponentType, lazy as originalLazy } from 'react';

// eslint-disable-next-line  @typescript-eslint/no-explicit-any
type ComponentTypeAny = ComponentType<any>;

export const COMPONENT_LOADED_KEY = 'page-has-been-force-refreshed';

/**
 * Use cases
 * # User loads the resource correctly
 * 1. "page-has-been-force-refreshed" === FALSE
 * 2. TRY occurs and the component gets resolved and correctly returned
 *
 * # User encounters a missing chunk because he was in the application during a deployment and is requesting a resource with a different (wrong) reference
 * 1. "page-has-been-force-refreshed" === FALSE
 * 2. CATCH occurs and the screen gets reloaded
 * 3. "page-has-been-force-refreshed" gets set to TRUE
 * 4. the component with the right reference gets loaded, and the "page-has-been-force-refreshed" gets reset to FALSE
 *
 * # User has encountered the missing resource, and now he re-encounters it
 * 1. "page-has-been-force-refreshed" === TRUE
 * 2. CATCH occurs and the function THROWS ERROR. That means that the component/application will catch gracefully it in the ErrorBoundary and report it
 *
 * # User has encountered the missing resource, but the resources are correct now, and so he proceeds
 * 1. "page-has-been-force-refreshed" === TRUE
 * 2. TRY occurs and the components gets properly resolved and returned
 * 3. "page-has-been-force-refreshed" gets set to FALSE
 * @param importStatementThatLoadsAComponent
 */
export function lazy<T extends ComponentTypeAny>(importStatementThatLoadsAComponent: () => Promise<{ default: T }>) {
  return originalLazy(async () => {
    const isPageHasBeenForceRefreshed = JSON.parse(localStorage.getItem('page-has-been-force-refreshed') || 'false');

    try {
      const resolvedComponent = await importStatementThatLoadsAComponent();
      localStorage.setItem(COMPONENT_LOADED_KEY, 'false');

      return resolvedComponent;
    } catch (error) {
      // Check if the window reload is needed. If so, the whole application, together with this function will be destroyed and recreated, therefore the THROW below will not occur
      if (!isPageHasBeenForceRefreshed) {
        localStorage.setItem(COMPONENT_LOADED_KEY, 'true');
        console.log('reload');

        window.location.reload();
      }

      // The page has already been reloaded
      // Assuming that user is already using the latest version of the application and still cannot access the required resource.
      // Let's let the application crash and raise the error.
      throw error || { message: 'Cannot load the component' };
    }
  });
}

System Info
System:
    OS: Linux 6.2 Ubuntu 22.04.3 LTS 22.04.3 LTS (Jammy Jellyfish)
    CPU: (20) x64 12th Gen Intel(R) Core(TM) i7-12800H
    Memory: 14.85 GB / 31.03 GB
    Container: Yes
    Shell: 5.1.16 - /bin/bash
  Binaries:
    Node: 18.15.0 - ~/.volta/tools/image/node/18.15.0/bin/node
    Yarn: 3.6.3 - ~/.volta/tools/image/yarn/3.6.1/bin/yarn
    npm: 9.5.0 - ~/.volta/tools/image/node/18.15.0/bin/npm
  Browsers:
    Brave Browser: <IP_ADDRESS>
    Chrome: 117.0.5938.88

Used Package Manager
yarn
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

What is "render"? When you assert rejects with toThrow you need to pass down a function that rejects (https://vitest.dev/api/expect.html#tothrowerror):
await expect(async () => throw new Error('error')).rejects.toThrow()

You can also pass down a promise that is rejected:
await expect(Promise.reject(new Error('error')).rejects.toThrow()


Add Exists to IConfigurationSection

Right now, when you get a configuration section using GetSection() there is no simple way to figure out whether that section actually exists. The only thing you could do is check if the value is non-null or if the count of GetChildren() is larger than zero:
IConfigurationSection section = config.GetSection("Some:Section");
bool exists = section.Value != null || section.GetChildren().Count() > 0;

And this doesn’t even work if the section was actually set with a value of null on purpose.
I would like to see some Exists method/property that tells me whether the queried section exists in the configuration. Otherwise, it’s difficult to detect optional configuration parts.

As an example, I want a configuration section Credentials where credentials can be specified. If they are not specified, then that’s fine too. So the configuration may look like this:
"Credentials": {
  "UserName": "username",
  "Password": "password"
}

Or the section may be completely missing. So I get the configuration section using GetSection and now, I want to detect whether that section exists in the configuration or not.

Thanks @poke. What would the application do differently if the value of a specific key had been intentionally set to null as opposed to not set at all?
It is perfectly fine for the application to model required configuration settings on top of Configuration (e.g. by throwing exceptions if section.Value == null), however there isn't much of a meaningful difference between something that is not set and something that has intentionally been set to null in our system.
In fact, our configuration sources are not required to be able to represent a null value (in practice, very few can), so an empty string is generally a better representation of a value intentionally left "blank".
Also, I think .Value on specific settings is probably the best way to handle required configuration settings. You can of course look into section.GetChildren() to find out about a group of settings under a specific key, but it is hard for me to imagine the scenario in which you want to do both as enough of a common occurrence to justify adding a new API.

Thanks for the quick reply!

What would the application do differently if the value of a specific key had been intentionally set to null as opposed to not set at all?

That’s a very good question; I guess the answer is that there should be no difference.
The reason I am asking for this is mostly because I want to short-cut logic when a whole configuration tree (/section) does not exist. In my example, I wanted to make the “Credentials” section support different kinds of credentials. So I could first check whether the section exists at all (if not, skip the whole logic), otherwise check whether specific combinations of values exist. And if the section is misconfigured, then I could throw an error that the configuration is wrong; it was specified but is wrong, so the application shouldn’t default to “no credentials”.
So while there is no difference between non-existent and setting it to null, there is a difference between specified with children, and not specified or null.
So maybe, I’m not asking for an Exists but rather a HasChildren that determines if there are entries below the current level.
After all, when I set a value for a section, there are two cases: Setting a value directly (which impacts the Value property), or adding children. Having children invalidates the Value property immediately, because a section cannot have both; since the children collection is the actual value. So I think I should be able to figure out that case without having to peek at GetChildren().

I don't think this statement is true: "Having children invalidates the Value property immediately, because a section cannot have both; since the children collection is the actual value."

@haok Yes, that is correct: A section can have a value and children at the same time.
Anyway, I can see how having an Exists() method could help. It could either be sugar over section.Value != null || section.GetChildren().Any() or as something slightly less expensive (but that would imply changes to the provider contract).
I will move this to the backlog and track user feedback. We can add it if enough customers want it or if we get a good PR.

bc96e60de589f4c0cabced33105c5acdcbc68da3

I definitely don't like this approach with section.Value != null || section.GetChildren().Any()
It will not work if section exists but is empty.
Example: I have configuration section. And I leave it empty because the corresponding class has default values that I like.
{
  "Authentication": {
    "Development": {
    }
  }
}

public class DevelopmentAuthenticationOptions
{
  public string[] Roles { get; set; }
  public DevelopmentAuthenticationOptions()
  {
    Roles = new[] { "Administrator" };
  }
}

Later, I use
If (Configuration.GetSection("Authentication:Development").Exists())
{
 // Read the section and make required configuration, register services and so on ...
}

With suggested solution this will not work.


Tests for issue #1247

Actual fix already by @mietcls implemented on other branch feature/fix-dropdown-issue and merged in PR #1256

@verheyenkoen this can't be right, the pr is based on dev but against main

@verheyenkoen Oops. Can't fix that I guess so create a new one?

@nics Corrected.


Refs #33476 -- Applied Black's 2023 stable style.

Black 23.1.0 is released which, as the first release of the year, introduces the 2023 stable style. This incorporates most of last year's preview style.
https://github.com/psf/black/releases/tag/23.1.0

@smithdc1 Thanks :+1:


bump release workflow sha

the current workflow uses a short hash which apparently isn't supported

Have you tested this in a fork? We should be testing this in a fork instead of against the main repo so we aren't clogging up the history


FastAPI and Pydantic - Relationships Not Working

First Check

[X] I added a very descriptive title to this issue.
[X] I used the GitHub search to find a similar issue and didn't find it.
[X] I searched the SQLModel documentation, with the integrated search.
[X] I already searched in Google "How to X in SQLModel" and didn't find any information.
[X] I already read and followed all the tutorial in the docs and didn't find an answer.
[X] I already checked if it is not related to SQLModel but to Pydantic.
[X] I already checked if it is not related to SQLModel but to SQLAlchemy.

Commit to Help

[X] I commit to help with one of those options 👆

Example Code
from typing import List, Optional

from fastapi import Depends, FastAPI, HTTPException, Query
from sqlmodel import Field, Relationship, Session, SQLModel, create_engine, select

class TeamBase(SQLModel):
    name: str
    headquarters: str

class Team(TeamBase, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)

    heroes: List["Hero"] = Relationship(back_populates="team")

class TeamCreate(TeamBase):
    pass

class TeamRead(TeamBase):
    id: int

class TeamUpdate(SQLModel):
    id: Optional[int] = None
    name: Optional[str] = None
    headquarters: Optional[str] = None

class HeroBase(SQLModel):
    name: str
    secret_name: str
    age: Optional[int] = None

    team_id: Optional[int] = Field(default=None, foreign_key="team.id")

class Hero(HeroBase, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)

    team: Optional[Team] = Relationship(back_populates="heroes")

class HeroRead(HeroBase):
    id: int

class HeroCreate(HeroBase):
    pass

class HeroUpdate(SQLModel):
    name: Optional[str] = None
    secret_name: Optional[str] = None
    age: Optional[int] = None
    team_id: Optional[int] = None

class HeroReadWithTeam(HeroRead):
    team: Optional[TeamRead] = None

class TeamReadWithHeroes(TeamRead):
    heroes: List[HeroRead] = []

sqlite_file_name = "database.db"
sqlite_url = f"sqlite:///{sqlite_file_name}"

connect_args = {"check_same_thread": False}
engine = create_engine(sqlite_url, echo=True, connect_args=connect_args)

def create_db_and_tables():
    SQLModel.metadata.create_all(engine)

def get_session():
    with Session(engine) as session:
        yield session

app = FastAPI()

@app.on_event("startup")
def on_startup():
    create_db_and_tables()

@app.post("/heroes/", response_model=HeroRead)
def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate):
    db_hero = Hero.from_orm(hero)
    session.add(db_hero)
    session.commit()
    session.refresh(db_hero)
    return db_hero

@app.get("/heroes/", response_model=List[HeroRead])
def read_heroes(
    *,
    session: Session = Depends(get_session),
    offset: int = 0,
    limit: int = Query(default=100, lte=100),
):
    heroes = session.exec(select(Hero).offset(offset).limit(limit)).all()
    return heroes

@app.get("/heroes/{hero_id}", response_model=HeroReadWithTeam)
def read_hero(*, session: Session = Depends(get_session), hero_id: int):
    hero = session.get(Hero, hero_id)
    if not hero:
        raise HTTPException(status_code=404, detail="Hero not found")
    return hero

@app.patch("/heroes/{hero_id}", response_model=HeroRead)
def update_hero(
    *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate
):
    db_hero = session.get(Hero, hero_id)
    if not db_hero:
        raise HTTPException(status_code=404, detail="Hero not found")
    hero_data = hero.dict(exclude_unset=True)
    for key, value in hero_data.items():
        setattr(db_hero, key, value)
    session.add(db_hero)
    session.commit()
    session.refresh(db_hero)
    return db_hero

@app.delete("/heroes/{hero_id}")
def delete_hero(*, session: Session = Depends(get_session), hero_id: int):

    hero = session.get(Hero, hero_id)
    if not hero:
        raise HTTPException(status_code=404, detail="Hero not found")
    session.delete(hero)
    session.commit()
    return {"ok": True}

@app.post("/teams/", response_model=TeamRead)
def create_team(*, session: Session = Depends(get_session), team: TeamCreate):
    db_team = Team.from_orm(team)
    session.add(db_team)
    session.commit()
    session.refresh(db_team)
    return db_team

@app.get("/teams/", response_model=List[TeamRead])
def read_teams(
    *,
    session: Session = Depends(get_session),
    offset: int = 0,
    limit: int = Query(default=100, lte=100),
):
    teams = session.exec(select(Team).offset(offset).limit(limit)).all()
    return teams

@app.get("/teams/{team_id}", response_model=TeamReadWithHeroes)
def read_team(*, team_id: int, session: Session = Depends(get_session)):
    team = session.get(Team, team_id)
    if not team:
        raise HTTPException(status_code=404, detail="Team not found")
    return team

@app.patch("/teams/{team_id}", response_model=TeamRead)
def update_team(
    *,
    session: Session = Depends(get_session),
    team_id: int,
    team: TeamUpdate,
):
    db_team = session.get(Team, team_id)
    if not db_team:
        raise HTTPException(status_code=404, detail="Team not found")
    team_data = team.dict(exclude_unset=True)
    for key, value in team_data.items():
        setattr(db_team, key, value)
    session.add(db_team)
    session.commit()
    session.refresh(db_team)
    return db_team

@app.delete("/teams/{team_id}")
def delete_team(*, session: Session = Depends(get_session), team_id: int):
    team = session.get(Team, team_id)
    if not team:
        raise HTTPException(status_code=404, detail="Team not found")
    session.delete(team)
    session.commit()
    return {"ok": True}

Description
Is realationships working for anyone?
I either get null or an empty list.
OK, so, I've copied the last full file preview at the - https://sqlmodel.tiangolo.com/tutorial/fastapi/relationships/
Run it and it creates the Db and the foreign key
Then I've insert the data into the Db.
Checking the docs UI everything looks great

But when I do a request for a hero, team is null

Really not sure what going on, especially when all I have just is copied the code example with no changes?
Operating System
Linux
Operating System Details
No response
SQLModel Version
0.0.4
Python Version
3.8.2
Additional Context
No response

OK, worked out what it was.
I was using fastapi==0.68.0
There's a newer version fastapi==0.68.1 that added support for read_with_orm_mode - https://github.com/tiangolo/fastapi/releases/tag/0.68.1
@alucarddelta update fastapi pip install fastapi -U and it should resolve the issue

This worked @Chunkford, I have submitted a pull request to change the pip requirement for the project to be 0.68.1 as it was set to 0.68.0.

🤦♂ I lost so many hours on this -- thank you for the version update recommendation and MR!

Still having the same issue, here is my case:
fastapi==0.70.0
sqlmodel==0.0.4

class Professional(Base, table=True):
    permissions: ProfessionalPermissions = Field(ProfessionalPermissions.NONE, nullable=False,
                                                 sa_column_kwargs={'server_default': text('0')})
    store_id: UUID = Field(foreign_key="store.id", primary_key=True)
    store: List['Store'] = Relationship(back_populates="professionals")

class Store(Base, table=True):
    id: UUID = UUIDField(primary_key=True)
    # ORM Relationships
    professionals: List['Professional'] = Relationship(back_populates="store")

@router.get("", response_model=List[Store])
def list_stores(
        limit: int = 100,
        offset: int = 0,
        crud: CRUDController = Depends(get_crud),
        _: User = Depends(get_current_user),
):
    r = crud.store.list(limit, offset)
    print(r[0].professionals)
    return r

What I get in the request response
[
  {
    "created_at": "2021-12-10T15:45:05.382071",
    "id": "7847365b-bae3-467e-9efa-e6b6f09c5e80",
    "phone_number": "+351210000001",
    "email"<EMAIL_ADDRESS>    "updated_at": "2021-12-10T15:45:05.382071",
    "name": "Store 1"
  },
  ...
]

What I get in the terminal with the print(r[0].professionals)
[Professional(permissions=65535, store_id=UUID('7847365b-bae3-467e-9efa-e6b6f09c5e80'), created_at=datetime.datetime(2021, 12, 10, 15, 45, 5, 382000), updated_at=datetime.datetime(2021, 12, 10, 15, 45, 5, 382000), user_id=UUID('b4883904-6d7b-4ce
d-93e9-c6d1a3c5cdb4'))]

I had the same problem but using an async engine. I solve it using selectinload as suggested here https://github.com/tiangolo/sqlmodel/issues/74
response = await db_session.exec(select(self.model).where(self.model.id == id).options(selectinload('*')))

My issue with this was that my Pydantic models for my endpoints (response models) weren't lining up with my SQLAlchemy models.  There's really good info here.

This issue exists in 0.78.0 version for me. Anyone else facing the same in the latest version? Please help.

This issue exists in 0.78.0 version for me. Anyone else facing the same in the latest version? Please help.

Have a look at: #315
Pinning SQLAlchemy = ">=1.4.17,<=1.4.35" helped me!

I had the same error using sqlmodel with SQLAlchemy 1.4.40... user: "User" = Relationship(back_populates="person") \\  person: Person = Relationship(back_populates="user")
During the creation process, if User need to reference person_id = int = Field(foreign_key="person.id")  it will fail. Even if I commit the changes and refresh the instance, the callback will be always null.
How to reproduce: Use sqlmodel=0.0.6 with SQLAlchemy=1.4.40
Using SQLAlchemy 1.4.35 works flawlessly

Thanks for the discussion everyone! Yep, for the original problem, you should use the latest FastAPI, at least 0.68.1.
For the other issues, it was indeed reported in https://github.com/tiangolo/sqlmodel/issues/315, it was solved in https://github.com/tiangolo/sqlmodel/pull/322, and it will be available in the next version, released in the next hours, SQLModel 0.0.7. :rocket:

We are still seeing this error, very similarly to rickerp. We have a model with a one to many relationship (e.g. Team to Heroes). In our route, we can print the Team object, and it has Heroes populated. However, when we get the response from the router, it is totally missing. We are on FastAPI version 0.85.1 and SQLModel version 0.0.8.
e.g.
@router.get("/{team_id}/", response_model=Team)
async def get_team(
    team_id: uuid.UUID,
    authed_user: AuthedUser = Depends(get_authed_user),
    db: Session = Depends(get_db),
) -> sql.Project:
    team = TeamOperator(db).get_team(team_id)
    print("TEAM:", team)
    print("HEROES:", team.heroes)
    return team

The prints have all the data populated. But in receiving this response, the data for heroes is totally missing. Our team model looks like this:
class Team(SQLModel, table=True):
    __tablename__ = 'team'

    id: uuid.UUID = Field(sa_column=Column(
        UUID(as_uuid=True),
        primary_key=True,
        server_default=text("gen_random_uuid()"),
        nullable=False,
        unique=True,
    ))
    name: str = Field(sa_column=Column(String, nullable=False))
    heroes: List["Hero"] = Relationship(back_populates="team", sa_relationship_kwargs={
        "cascade": "all, delete-orphan"
    })

It seems that at the root if the issue is the fact that in FastAPI's encoder call, it's calling .dict() on the object, which does not include the heroes attribute.  https://github.com/tiangolo/fastapi/blob/0.85.1/fastapi/encoders.py#L56

@nick-catalist, did you have a solution to this? I am also struggling with this. Even when using .options(subqueryload(...)) my relationship objects are not being returned from the FastAPI endpoint.

There is no need to do subqueryload, if you properly define "out models" and configure response_model in your routes.
It is well explained on site.
The encoder does not know how to render a Relationship field, but it knows how to render a list.
So if you have a 1 to many Relationship, in the response_model you have to define a new model with the very same field but defined of type list.

@JBorrow @tonjo .. right, thank you tonjo for jogging my memory on this as well.
All you need to do is define a separate response model and redefine the relationship field as a list instead. E.G. you'd want a set up like this:
class TeamBase(SQLModel):
    name: str = Field(sa_column=Column(String, nullable=False))

class Team(TeamBase, table=True):
    __tablename__ = 'team'

    id: uuid.UUID = Field(sa_column=Column(
        UUID(as_uuid=True),
        primary_key=True,
        server_default=text("gen_random_uuid()"),
        nullable=False,
        unique=True,
    ))
    heroes: list["Hero"] = Relationship(back_populates="team", sa_relationship_kwargs={
        "cascade": "all, delete-orphan"
    })

class TeamResponse(TeamBase, table=True):
    heroes: list["Hero"]

Like tonjo said, Pydantic doesn't know how to render a relationship, but it does know how to render a plain list. Additionally, it will coerce your returned value into whatever you have defined as your response_model (you can also just make it the output of the router function via -> TeamResponse rather than explicitly passing in response_model to the router decorator). So if you return a Team object as a TeamResponse object, it will properly populate the heroes field.
See more info at https://sqlmodel.tiangolo.com/tutorial/fastapi/relationships/#models-with-relationships

Ah fantastic, thank you both for your quick reply! This makes sense, though it does feel like a bit of an antipattern (heroes is declared to SQLModel as being of type list[Hero]) all along.

Also, @nick-catalist, I presume you want table=False for TeamResponse

Yes, that was a typo, fixed :)

instead of creating a new response_model, i tried messing with pydantic 's model_serializer aand came up with this
class Team(SQLModel, table=True):
	id: str = Field(default_factory=uuid, primary_key=True)
	heroes: list['Hero'] | None = Relationship(back_populates='team')

	@model_serializer
	def model_serializer(self):
		data = {
			'heroes': self.heroes,
		}
		for key in self.model_fields.keys():
			data[key] = getattr(self, key)
		return data


Increase caching and reduce layers in Dockerfile

UPDATE: pack is now included in Cloud Shell. No need to download.
Now, whenever I modify any file in the repo (the most frequent changes), the Docker has to re-download the pack when building. Since these are far less frequently updated, I'd like to move up the layers. Fixes #93.
Also, I tried to reduce the number of layers in the final image.

Nice!  This is great.  I'll wait for someone to give a thumbs up who better understands docker than I do.  But I really appreciate this contribution!

There’s an even better approach: create a build stage for pack and copy it to the final stage from there :)
But this really shouldn't matter because ~nobody builds this image manually. The Dockerfile isnt really for developers; it’s to release a custom cloudshell image.

The Dockerfile isnt really for developers; it’s to release a custom cloudshell image.

The CONTRIBUTING guide says to use this Dockerfile for local development, so I'm using it. Is there another way for me to build and test changes?

🤔 we should probably consider updating that.
Building the dockerfile locally will take quite long due to the base image size.
Small changes can be tested by just compiling the program and running it directly like Cloud Shell invokes it (can be seen when the button is used). At least thats how I developed this repo. 🙃 It works also because gcloud is already authenticated.

Well, in any case, I think this is an improvement. And I don't really think using a separate build stage is necessarily a better idea, since you'll create another intermediate image in your local Docker. And if you use a different image than golang:1.12-alpine, you'll have to download that too. And if you use golang:1.12-alpine, then I think there's no advantage really to have a separate stage just for this tiny thing.

I also don't really know how to do much with Go, so have been using the Docker method.  I added #92 to track adding docs on local dev.
As far as this PR goes, I really don't know enough about docker to help much.  Except to point out that any changes to our docker image will affect the Cloud Shell launch process and could potentially speed it up or slow it down.

Updated to stop installing pack. Fixes #93. Closes #87.

Does this mean it's in our base image now?

Ah, just saw: https://github.com/GoogleCloudPlatform/cloud-run-button/issues/93#issuecomment-538569692


Selecting a kernel makes the document dirty

Testing #13768

Change kernel for Jupyter notebook
:bug: notebook becomes dirty

This is by design,as we want to update the notebook with the kernel info


Pumpkin Stem does not have any texture

The melon stem textures has extra details and noise to provide detail to it. The pumpkin stem, which is set up to be very similar to the melon stem, is missing those details and extra noise.

Texture updated


Modpack crash connected to mandatory jei version

Modpack creator here. I'm using a mod that relies on the latest jei version. I cannot launch the game as is. Is there a reason why the version has to be lower than the latest?
latest.log
crash-2023-02-23_17.47.20-fml.txt

Update, it's actually working for the Beta. Cluster crash on Release is not so funny.
Either way, see here for more info: https://github.com/immortius/chunkbychunk/issues/59

Sorry about that, it was not very clear there were 2 separate versions one for JEI 9 and one for JEI 10.
I've just released a new version for 1.18.2 which support both JEI 9 and 10. It will be available once approved by Curseforge.


Ignore any warnings LiteLLM might emit on import

Still pydantic warnings arises https://github.com/OpenDevin/OpenDevin/issues/1682#issuecomment-2103914521
Workaround from https://github.com/plasma-umass/ChatDBG/pull/38/commits

Codecov Report
Attention: Patch coverage is 50.00000% with 4 lines in your changes are missing coverage. Please review.

:exclamation: No coverage uploaded for pull request base (main@0cf94a2). Click here to learn what that means.

Files
Patch %
Lines

opendevin/server/listen.py
0.00%
4 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1687   +/-   ##
=======================================
  Coverage        ?   55.26%
=======================================
  Files           ?       96
  Lines           ?     3845
  Branches        ?        0
=======================================
  Hits            ?     2125
  Misses          ?     1720
  Partials        ?        0

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[MWPW-127372] Manually Authored Template List on Sheet Powered RR

Please always provide the JIRA issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix MWPW-127372
Task description:
Small hotfix for the issue where the ckgID doesn't get passed in payload properly on search pages.
To test: author another fragment following the existing example in the RR fragment folder and pass it in the RR sheet in column O for a test page. You can use any of the existing draft pages, or you can create on of your own. Just need to follow the same page template as one of the rows in the RR sheet. If anything else is unclear, feel free to chat with @qiyundai or @williambsm on how this RR sheet is being leveraged in create pages rendering.
Test URLs:
Before: https://main--express-website--adobe.hlx.page/drafts/qiyundai/mwpw-127372/letter?lighthouse=on
After: https://mwpw-127372--express-website--webistry-development.hlx.page/drafts/qiyundai/mwpw-127372/letter?lighthouse=on
Plans Comparison Fix on the side: https://mwpw-127372--express-website--webistry-development.hlx.page/express/create/banner?lighthouse=on

I feel a bit bad for asking mate, but I can't seem to get it working for me. Shouldn't the templates be loaded from your fragment? For me it's not loading at all.


DynamicSectionManager: simplified service

#4138

This pull request introduces 2 alerts when merging d42830cb81aacbe3984391a8895a74f9fd559c8a into 1a0458b88b7eeaebd3785be165fbf45ffc5a40ce - view on LGTM.com
new alerts:

1 for Implicit operand conversion
1 for Unused variable, import, function or class

This project has automated code review enabled, but doesn't use the LGTM GitHub App. Migrate over by installing the app. Read about the benefits of migrating to GitHub Apps in the blog.

Comment posted by LGTM.com


Stop allowing anonymous tags

Also if they are already at 50, stop the tag from being added instead of waiting for it to be displayed

Nice. One lil other tweak I had in mind. Thanks!

Ended up being a few other tweaks that I thought of.
I'd like to provide a way to either include the attributions or not, may not be necessary to always show every single one if someone just wants to quickly review their tags at a glance. They can always do the full attribution afterwards to get the further details of who tagged what.
Also snuck in a change apers requested to allow people to lock badges via the ✅ reacts in #badgeys-badges if they already have them present in their inventory, rather than simply adding them to the wishlist.


iOS React headers need to be manually added from Pods

Background
Hybrid iOS / React Native app with CocoaPods. Here's the project structure:
root
├── index.ios.js
├── ios
├── jsconfig.json
├── node_modules
├── package.json
├── src
└── yarn.lock
3 directories, 4 files
./ios
├── Archived Code
├── Simulator
├── App-Info.plist
├── App.entitlements
├── App.xcodeproj
├── App.xcworkspace
├── AppDev\ Tests
├── AppDev-Info.plist
├── Dev.entitlements
├── Libraries
├── Podfile
├── Podfile.lock
├── Pods
├── README.md
├── Uncrustify
└── iOS-Components
9 directories, 7 files
Problem
Every time I reinstall my node module it makes the header search paths reset.
The project is linked but it fails to build with error:

Lexical or Preprocessor Issue ⬇
➡ 'React/UIView+React.h' file not found

Solution
Providing a path inside the react-native/React node module doesn't work.
The fix is to add header search path for the the Pods directory.

^^^^^^^^^^^^^^^^^^^^^^^ ⚠ change it to recursive ⚠ ^^^^^^^^^^^^^^^^^^^^^^^

Path text - $(SRCROOT)/../../../ios/Pods

Same here!

@itchingpixels you can check my fork for example - https://github.com/ferologics/react-native-svg

@ferologics managed to solve this by using Cocoapods itself to include the native dependencies of RNSVG -  try adding this to your Podfile:
pod 'RNSVG', :path => 'src/node_modules/react-native-svg' (this may be not where you have it)

🎳 @itchingpixels , thank you 👍

doc says to do
 react-native link react-native-svg

is it the same as
pod 'RNSVG', :path => 'src/node_modules/react-native-svg'

?


user_group_popovers: Add display message when group is empty.

Previously no message was being shown in the group popover, when group had no members, this commit intends to fix this by displaying an approriate message when group is empty.
Fixes #30830.

Fixes:

Screenshots and screen captures:

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[x] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[x] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

after review changes
added Translations {{t 'This group has no members.'}}

The text color looks off to me in the screenshot above.

Please be sure to include screenshots for both light and dark theme.

sorry totally missed that

added same color as in class="popover-group-menu-member-name"

After review changes
changed class name to popover-group-menu-placeholder

The screenshots look good to me.
@Vector73 does this look good to you, both code-wise and in manual testing? Please go ahead and replace the "maintainer review" label with "integration review" whenever it looks good from your perspective.

LGTM.

@zulipbot remove "maintainer review"

@zulipbot add "integration review"

Merged, thanks @codewithnick and @Vector73!


[Bug]

Expected behavior
run hexagon sim on x86
pytest -v tests/python/contrib/test_hexagon/test_maxpool2d_blocked.py::TestMaxPooling
Actual behavior
/usr/bin/pytest:7: TargetDeprecatedDeprecationWarning: [logilab.common.pytest] [logilab-common 1.3] logilab-pytest is deprecated, use another test runner
run()
going into /xxx/project/work_space/dmlc/tvm/tests
Traceback (most recent call last):
File "/xxx/.local/lib/python3.8/site-packages/logilab/common/pytest.py", line 744, in run
cmd(*args)
File "/xxx/.local/lib/python3.8/site-packages/logilab/common/pytest.py", line 359, in testall
if not self.testonedir(dirname, exitfirst):
File "/xxx/.local/lib/python3.8/site-packages/logilab/common/pytest.py", line 397, in testonedir
remove_local_modules_from_sys(testdir)
File "/xxx/.local/lib/python3.8/site-packages/logilab/common/pytest.py", line 315, in remove_local_modules_from_sys
if not osp.isabs(modfile) or modfile.startswith(testdir):
File "/usr/local/python3/lib/python3.8/posixpath.py", line 62, in isabs
s = os.fspath(s)
TypeError: expected str, bytes or os.PathLike object, not NoneType

Environment
ubuntu16.04、python3.8、tvm main
Steps to reproduce
Preferably a minimal script to cause the issue to occur.

running this test in the hexagon docker image seems to work: python tests/scripts/ci.py hexagon --tests tests/python/contrib/test_hexagon/test_maxpool2d_blocked.py::TestMaxPooling, so closing this issue. please feel free to re-open it if you're still seeing this failure on the latest commit from main


Device reconnect error

Please check all of the platforms you are having the issue on (if platform is not listed, it is not supported)

[x] iOS
[] Android
[] UWP
[] tvOS
[] macOS
[x] PCL

Version of OS(s) listed above with issue
iPhone 5c - 10.3.1
Version of Library
2.0.3
Expected Behaviour
Device connects and retrieves services / characteristics
Device disconnects
Device re-connects and retrieves services / characteristics
Actual Behavior
If applicable, please include entire exception - type, message, stacktrace
Device connects and retrieves services / characteristics
Device disconnects
Device re-connects and throws error at:
https://github.com/aritchie/bluetoothle/blob/master/Plugin.BluetoothLE.Apple.Shared/GattService.cs#L31
foreach (var nch in this.native.Characteristics) this.native.Characteristics is null
Stack trace
at Plugin.BluetoothLE.GattService+<>c__DisplayClass3_0.b__1 (System.Object sender, CoreBluetooth.CBServiceEventArgs args) [0x00089] in C:\Users\me\Downloads\bluetoothle-master\Plugin.BluetoothLE.Apple.Shared\GattService.cs:31
at (wrapper delegate-invoke) System.EventHandler`1[CoreBluetooth.CBServiceEventArgs]:invoke_void_object_TEventArgs (object,CoreBluetooth.CBServiceEventArgs)
at CoreBluetooth.CBPeripheral+_CBPeripheralDelegate.DiscoveredCharacteristic (CoreBluetooth.CBPeripheral peripheral, CoreBluetooth.CBService service, Foundation.NSError error) [0x00015] in /Users/builder/data/lanes/4466/a04678c2/source/xamarin-macios/src/build/ios/native/CoreBluetooth/CBPeripheral.g.cs:402
Code of Conduct

No Library Update Requests
No Timeline Requests
Please read through the documentation and FAQs
Please be respectful of my time. I put a lot of effort into my libraries.  I try to support the issue requests within a day.  I'm not psychic, so please take the time to fill out the above form as complete as possible
Contact GitHub

Possibly a duplicate of #36, close this if it is.

This is indeed a duplicate that appears to be fixed in v3-beta3 which is on nuget


Add implementations of GetHashCode to classes that override Equals

The following classes are affected:

TypeCoercion
QuantifierExpr
BasicType
CtorType

@bkragl is this ready to merge?

I think so, but please double-check.
For QuantifierExpr and CtorType the behavior should be the same as before, just explicitly calling  base.GetHashCode(). For TypeCoercion and BasicType this is actually a fix that establishes the property that equal objects (according to method Equals) must have the same hash code.
Mainly, this eliminates compiler warnings :)

lgtm


Modify the create collection endpoint to add DOI constraints

Issue moved to chanzuckerberg/single-cell-data-portal #1802 via ZenHub


Pre-rendered Peaks Don't Work for Bars Rendering on 6.0.0

Wavesurfer.js version(s): 6.0.0
Browser and operating system version(s): Chrome latest on macOS
Code needed to reproduce the issue:
The following below works on Wavesurfer.js version 5.2.0 but not on 6.0.0,
let wavesurfer = WaveSurfer.create({
  container: '#wavesurfer,
  backend: 'MediaElement',
  barWidth: 5 // Works when this is omitted, so applies only to bar rendering
})

wavesurfer.load('https://example.com/audio.mp3', arrayOfPeaks)

Use behaviour needed to reproduce the issue:
Observe peaks aren't pre-rendering, and bar rendering is empty/flat/silent. If i omit the barWidth: 5 option, it works as usual with normal a waveform rendering.
Thanks,
David

I'm facing an issue with wavesurfer.js 5.2. Whenever I try to load and play the song the internet download manager starts it downloading and the song doesn't load.  What could be the issue?
here is the code:
<!DOCTYPE html>

	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Player</title>
	<link<EMAIL_ADDRESS>rel="stylesheet">
	<link rel="stylesheet" href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css"/>

I'm facing an issue with wavesurfer.js 5.2. Whenever I try to load and play the song the internet download manager starts it downloading and the song doesn't load. What could be the issue?

Please open a new ticket and don't hijack unrelated tickets.

@dtcooper this is likely related to the change made by @lorenzos in #2428

I'll look into it.

I'll look into it.

Cheers and thanks

@dtcooper I tried your code with bars on both 5.2.0 and 6.0.0, without peaks, with peaks, and with positive-only peaks, and it always worked. Could it be something related to your specific arrayOfPeaks?
Let me know if you can provide an actual example, with the actual array of peaks. Thanks.

Okay, thanks for taking a look. I'll come up with a very specific steps to repro tomorrow and post it.

Hi @lorenzos, below is a repro hosted on CodePen! Thanks.
Here is a repro with WaveSurfer v6.0.0: CodePen bGYWpOO is not working
Here is the same code working with WaveSurfer v5.2.0: CodePen ZEaKWZG is working on older version
Note each CodePen has the FULL html that you can copy to test as a local file, it's not broken up into JS/HTML/CSS.

@dtcooper I fixed it in #2446. As you can read there, your issue was caused by a regression introduced by me, which occurs only when the given array of peaks alternates negative/positive values (as yours), instead of alternating positive/negative values (as the ones normally produced by wavesurfer itself).
You can test it using my build from here: https://github.com/lorenzos/wavesurfer.js/releases/download/6.0.0-fix-2439/wavesurfer.js

Excellent! Thank you for looking into this, @lorenzos... however, with the fix, the waveform looks really off (very max'd out, with very high peaks).
Using the above fix version, check it out: CodePen yLPbZbG with v6.0.0 + fix vs CodePen ZEaKWZG with v5.2.0 has much more varied bars.

@dtcooper I know, the way the bars render has changed in 6.0.0, and your very long audio file really takes that change to extremes. But the fact is, the old rendering method was producing, IMHO, a very arbitrarily shape.
You can find details about that change and examples on #2428.
In fact, if you think about that, there was absolutely no good reason for your file to render the way it did before: an irregular waveform shape, with peaks and valleys that didn't reflect actual changes in the amplitude of the signal. Think about it that way: your file is very long, and each single bar represents a very long speech segment, in which the average audio amplitude stays constant.
As for the "max'd out" looks, yeah, the new rendering method uses the maximum peak value for every audio segment that each bar represent. The avarage value could be used, but it won't change much: in your cause you'll get shorter bars, but their height will be as much "constant" as it is now.

@dtcooper I don't know audiowaveform, I use wavesurfer own exportPCM to generate the peaks array, so, I can't say... That fact is, a "more varied" and "visually appealing" waveform is a bad representation of what your audio file is...
I don't know what's the maintainers opinion on that, if we should roll back or provide an option to get the old rendering method back (I could make a PR if so), that's their decision.

Okay. I'll make do and experiment with arguments to audiowaveform and see if I come up with anything! Regardless, I appreciate the fix. 😸

Can you add some screenshots here of that difference?

Really gnarly looking waveforms with the update and fix (6.0.1), but for posterity here's the difference @thijstriemstra (CC: @lorenzos)
Before (version 5.2.0):

After (version 6.0.1):

@dtcooper Adding an option for the old method is a decision that is not up to me. If mainteiners are ok with it, I can implement that. In the meantime, you can use one of the following builds, I compiled them on top of latest version (6.0.2) but with my change reverted to pre-6.0.0:
https://github.com/lorenzos/wavesurfer.js/releases/download/6.0.2-revert-2428/wavesurfer.js
https://github.com/lorenzos/wavesurfer.js/releases/download/6.0.2-revert-2428/wavesurfer.min.js

Adding an option for the old method

Or adding an option for the new method?

@thijstriemstra As you and @katspaugh prefer, really. When submitting the PR, I proposed the new method as a fix, and honestly didn't though of having it as an option, since the old one is in fact a random visualization (as I thoroughly explained). Now I understand that the change can be quite radical in some cases, so yes, whatever you like.

I proposed the new method as a fix, and honestly didn't though of having it as an option, since the old one is in fact a random visualization (as I thoroughly explained).

Agreed. @dtcooper can you also add a screenshot of the waveform without bars option, preferably for old and new wavesurfer.js versions?


Add calculated values column to docs

Show the calculated values in the documentation. I don't know if it should reference this trick https://filamentphp.com/tricks/calculated-value-in-column

Thanks

Can you make this column searchable? I think it will throw an error unless you provide a calculated DB column, which makes this approach useless (for the searchable case).

In my opinion this column should not be searchable or sortable.

If you know what real DB columns to search / sort by, you can use sortable(['one', 'two']) or searchable(['one', 'two']), which will use those columns for the DB query instead of your non-existant one.


Ensuring that all possible negative edges are considered

I have been working with a custom dataset and took inspiration from the link_pred.py example in the repository. I have had the model working after some issues and am getting good results. However, in order to make my results comparable to previous work, I need to ensure that when testing, all possible edges in a graph, both positive and negative, are considered.
From what I understand, the example considers all positive edges but downsamples to a much smaller size of the negative sample set, as done in the GAE paper as well. I have tried to work around this by training and testing on the probability adjacency matrix output from the model, but the results seem to be very poor. Is there a way to ensure that all possible edges are considered and predicted on in a graph when working with the link prediction model?

Training and testing is usually only performed on a subset of negative examples due to memory limitations. Furthermore, testing against all possible negative edges is quite challenging, due to the larger amount of negative samples.
I think what you are doing is already correct for evaluation (if you have doubts please feel free to post a code snippet). As the decoder in the link_pred example is quite dumb, you might also see more success when using more sophisticated decoders (such as running an MLP on the concatenated feature values of source and target nodes).

I represented the dataset I am working with as a list of graphs, and each graph tends to be small (I believe the biggest graphs I have are around 10-15 nodes), so memory limitations should not be an issue. The previous work that I am trying to compare application of GNN too are SVM/LSTM with attention based, so it is important that all edges are considered for GNN as well, in order to make the results comparable. Is there any GNN implementation you have in mind that does so?
Additionally, could you post a short snippet with regard to your MLP decoder suggestion? That could be helpful.

I see. In this case, I think you are save to simply use all non-positive edges as negative edges, e.g., by storing them in data.neg_train_edge_index in a pre-processing step.
For a decoder based on MLP, I have something like this in mind:
def decode(self, z, edge_index):
    z = torch.cat([z[edge_index[0]], z[edge_index[1]]], dim=-1)
    return self.MLP(z)

where self.MLP is a MLP mapping from 2 * hidden_channels to 1.

Thank you for the help, will experiment with this!


Add basic tests for the test caching functionality

Also some minor tidy up.
Note that there is some odd behaviour with main (& this branch) atm.
If you run ./example.sh multiple times it is repeating tests incrementally down to 0. Possibly timestamp related, but I'll take a look post-dinner (or tomorrow)
I'll also look at expanding the cache test functionality i.e. changing a test should trigger a re-test, etc.

Codecov Report

Merging #20 (59573b5) into main (69e9e5b) will increase coverage by 5.15%.
The diff coverage is 6.06%.

:exclamation: Current head 59573b5 differs from pull request most recent head bc49af4. Consider uploading reports for the commit bc49af4 to get more accurate results

@@            Coverage Diff            @@
##            main      #20      +/-   ##
=========================================
+ Coverage   6.98%   12.13%   +5.15%
=========================================
  Files          4        4
  Lines        859      865       +6
=========================================
+ Hits          60      105      +45
+ Misses       792      741      -51
- Partials       7       19      +12

Impacted Files
Coverage Δ

pkg/dazzle/combiner.go
0.00% <0.00%> (ø)

pkg/dazzle/build.go
4.52% <4.00%> (+4.52%)
:arrow_up:

pkg/dazzle/registry.go
5.35% <14.28%> (+5.35%)
:arrow_up:

pkg/dazzle/project.go
40.79% <0.00%> (+10.94%)
:arrow_up:

Continue to review full report at Codecov.

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


fix: support parallel script execution in pipelines

Fixes #1303
Support parallel .multi script execution by delaying the assignment of the load confirmation.
btw. regarding the project setup: the package-lock.json links to http://artprod.dev.bloomberg.com/artifactory/api/npm/npm-repos/ as npm registry, which isn't publicly available. Therefore npm install and npm ci fails locally. By replacing all the urls with the npm registry, the npm install works again.

Awesome! Thanks for the contributions!

We could also change the behavior by assigning a promise and then reuse that in other requests.
Also doable in another PR if desired.

Functionality-wise that sounds good to me. Not sure if it worth the effort (ex considering the maintainability) though as it anyway only affects cases without cache. However, PR will be welcome if you see it as appropriate. Thanks again!


Add test for DataFrame.droplevel in pandas < 0.24

DataFrame.droplevel has not been testing in pandas < 0.24.
Added expected result manually to cover the case.

Thanks! merging.


common: add tests for index file

After this, I'm going to do a release unless there's anything else you want to squeeze into<EMAIL_ADDRESS>

@stephenplusplus SGTM

Coverage remained the same at 99.966% when pulling 7e92d2f3807e04f0846a64ea24d34233b7f6842e on stephenplusplus:spp--util-tests into 77c83a15cbd79933776820b06039815b43561336 on GoogleCloudPlatform:master.

Coverage remained the same at 99.966% when pulling 7e92d2f3807e04f0846a64ea24d34233b7f6842e on stephenplusplus:spp--util-tests into 77c83a15cbd79933776820b06039815b43561336 on GoogleCloudPlatform:master.

99.966%

😱

I'll fix that in this PR.

Haha, ok. Looks like some custom type checking went untested. My bad :(

Added tests.

Coverage increased (+0.03%) to 100.0% when pulling 17f08d04d32b9ca6e54a7fcb47ca6af8d3055bf9 on stephenplusplus:spp--util-tests into 77c83a15cbd79933776820b06039815b43561336 on GoogleCloudPlatform:master.


Skip test_killing_app

It is failing for days, until we fix it it should be muted to let us have visibility on the other tests.
https://jira.mesosphere.com/browse/DCOS-51820

@mesosphere-ci run linux integration tests


[Bug]: Node rendering regression after smask changes

Attach (recommended) or Link to PDF file
a.pdf
Web browser and its version
Node v18.17.0
Operating system and its version
MacOS 14.5 (23F79)
PDF.js version
4.4.168
Is the bug present in the latest PDF.js version?
Yes
Is a browser extension
No
Steps to reproduce the problem
Render the file using pdf2png.
What is the expected behavior?

What went wrong?

Link to a viewer
No response
Additional context
Regression appeared in 82989e6790421917880ebd4b3e3281a39c5ed543. It seems the new genericComposeSMask leaves the context in the wrong state, and when the fill command runs, it fills the outside instead of the inside of the path.
It only happens on node, browser renders it ok.
Thanks!

This is unfortunately the expected result of PR #18029, please note https://github.com/mozilla/pdf.js/pull/18029#pullrequestreview-2033188305 and https://github.com/mozilla/pdf.js/pull/18029#issuecomment-2088456533.


Inadequate responsiveness and image quality

Description
The WhyProjestSection component on the website lacks responsiveness and the image quality is poor on smaller devices. This negatively impacts the user experience and the overall visual appeal of the page.
Steps to reproduce

Visit the website on a smaller device or resize the browser window to a smaller viewport.
Navigate to the page containing the WhyProjestSection component.

Expected behavior

The WhyProjestSection component should adapt its layout and image quality to different screen sizes, providing a consistent and visually appealing experience across devices.

Actual behavior

On smaller devices, the images appear stretched and pixelated, indicating a loss in quality.
The page layout does not adjust properly to smaller screen sizes, resulting in a suboptimal user experience.

Tasks

[ ] Optimize the images used in the component for web display, ensuring they maintain their quality on smaller devices.
[ ] Implement responsive design techniques to make the page layout adjust appropriately on different screen sizes.
[ ] Update the component's CSS classes and styles to ensure a consistent and visually pleasing experience across devices.

Screenshots

Additional information
No response

Yeah that's the desired behavior. Thanks 🎉


Repo binlogs are not always captured in failing CI builds

The build issue causing https://github.com/dotnet/source-build/issues/4701 is somehow preventing the SBRP binlog from being captured as a build artifact.  The build failure is happening early on in the Arcade SB targets.  This makes it difficult to diagnose without repro'ing locally.
The logic to capture the binlogs was recently refactored in https://github.com/dotnet/sdk/pull/42984 which may be the source of the issue.

@Winniexu01, could you please investigate?

This was fixed by https://github.com/dotnet/sdk/pull/44480


Commercial Licensing for Document Image Transformer

I am considering using the Document Image Transformer (DiT) for a commercial project and wanted to clarify the licensing terms. I noticed that the Readme.md file does not specify a license. Could you please provide details on whether the DiT is available for commercial use?

up

Would love to get some info/confirmation on this matter!

are there any updates to this?


[Bug] Test for uniqueness passes when duplicates are present in BigQuery column

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
When running the out-of-the-box 'unique' test the test will pass even when there are duplicates in the column if:

The test is running against a BigQuery table
The column being tested has exactly the same name as the table

Expected Behavior
The test should fail if the there are duplicates in the column being tested
Steps To Reproduce
Create table called my-project.my-dataset.orders with a single column named 'orders'. Insert duplicate values into the 'orders' column. Run the DBT 'unique' test against this column. The test passes.
Relevant log output
No response
Environment
- OS:Mac OSX Sequoia
- Python: 3.11.2
- dbt: 1.8.3
- Database: BigQuery

Which database adapter are you using with dbt?
bigquery
Additional Context
Looking at the generated code (shown below) for the test the issue occurs because the table in the first CTE is not aliased, therefore the subsequent GROUP BY in the main SELECT is grouping by the whole table.
A similar issue was previously logged here, however it looks like it was closed and the issue I am experiencing still remains.
with dbt_test__target as (

  select orders as unique_field
  from `my-project`.`my-dataset`.`orders` -- Add an alias for this table here
  where orders is not null

)

select
    unique_field,
    count(*) as n_records

from dbt_test__target
group by unique_field
having count(*) > 1

Thanks for reaching out @steffan-roughsedge !
I haven't been able to reproduce this myself. Could you provide project files similar to below to help us reproduce the issue you are seeing?
The original issue (https://github.com/dbt-labs/dbt-core/issues/2061) and draft PR (https://github.com/dbt-labs/dbt-core/pull/2075) got closed as stale, but we'd review a new pull request if anyone is interested in solving this for dbt-bigquery for both unique and not_null. We'd just need to give care to make sure it doesn't break anyone, especially given how rare the bug scenario is.
The relevant default adapter code for each of the current implementations is located here:

https://github.com/dbt-labs/dbt-adapters/blob/6c41bedf27063eda64375845db6ce5f7535ef6aa/dbt/include/global_project/macros/generic_test_sql/unique.sql
https://github.com/dbt-labs/dbt-adapters/blob/6c41bedf27063eda64375845db6ce5f7535ef6aa/dbt/include/global_project/macros/generic_test_sql/not_null.sql

Depending on the details of the solution, we'd either choose to adopt it as the new default for all adapters or just provided targeted solution for dbt-bigquery.
Either way, any implementation should include relevant tests that include the scenario described above with the model name and column sharing the same name.
Project files
Create these files:
models/orders.sql
select struct(1 as id) as orders

models/_models.yml
models:
  - name: orders
    columns:
      - name: orders
        tests:
          - unique
          - not_null

Run these commands:
dbt build --full-refresh

Get this output:
$ dbt build --full-refresh

04:18:40  Running with dbt=1.8.8
04:19:05  Registered adapter: bigquery=1.8.3
04:19:06  Found 1 model, 2 data tests, 473 macros
04:19:06
04:19:40  Concurrency: 10 threads (target='blue')
04:19:40
04:19:40  1 of 3 START sql view model dbt_dbeatty.orders ................................. [RUN]
04:19:42  1 of 3 OK created sql view model dbt_dbeatty.orders ............................ [CREATE VIEW (0 processed) in 1.57s]
04:19:42  2 of 3 START test not_null_orders_orders ....................................... [RUN]
04:19:42  3 of 3 START test unique_orders_orders ......................................... [RUN]
04:19:46  3 of 3 PASS unique_orders_orders ............................................... [PASS in 3.50s]
04:19:46  2 of 3 PASS not_null_orders_orders ............................................. [PASS in 4.08s]
04:19:46
04:19:46  Finished running 1 view model, 2 data tests in 0 hours 0 minutes and 39.89 seconds (39.89s).
04:19:46
04:19:46  Completed successfully
04:19:46
04:19:46  Done. PASS=3 WARN=0 ERROR=0 SKIP=0 TOTAL=3

The same underlying behavior in BigQuery might be the underlying root cause of all of the following reports:

https://github.com/dbt-labs/dbt-utils/issues/173
https://github.com/dbt-labs/dbt-core/issues/2061
https://github.com/dbt-labs/dbt-core/issues/4824
https://github.com/dbt-labs/dbt-core/issues/11067


HTTPS Example fails on site "speechgen.io" since ESP-IDF v.5.x (IDFGH-13390)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report
Using Arduino IDE, latest espressif/arduino-esp32 Release v3.0.4 (based on ESP-IDF v5.1.4+).
Since update to IDF 5.x the connect to https server "speechgen.io" fails (TextToSpeech API service). Using older IDF v.4 the same code still connecting successfully to server. I am also connecting to other https server with same code snippet (e.g. "api.openai.com" ), they work also on IDF v5.x. So it seems an dedicate issue on "speechgen.io" ?
The orginal post is posted in https://github.com/espressif/arduino-esp32/issues/10071, the Admin folks recommended to post it here (IDF Https library), as we assume an IDF issue: The server is asking for a cipher renegotiation, and that is failing. It works fine if TLS 1.3 is enabled in IDF 5.1, but I have no idea why it succeeds in IDF 4.4. This issue comes from upstream, so you can open an issue at https://github.com/espressif/esp-idf/issues and tell them you have a problem with the https_request example when you change to the URL/server you want.
// Https Connect to Speechgen server "speechgen.io" port 443
// -> always fails with Arduino-esp32 ESP 3.x,/IDF v.5.x (same code result success with earlier Arduino-esp32 v. 2.x/IDF v.4.x )
// -> other server (e.g. "api.openai.com" are working (also with latest IDF)

#include <WiFi.h>
#include <WiFiClientSecure.h>
/* .. */
WiFiClientSecure client;
client.setInsecure();
/* .. */
if ( client.connect("speechgen.io", 443) )   // <- it FAILS here always (with ESP 3.x,/IDF v.5.x, only working with 2.x/v.4.x)
{  Serial.println("> Succesfully connected to speeschgen.io port 443");
}
...

So even i am using Arduino IDE only .. hoping you find root cause why the Https example fails on "speechgen.io" ?
Thank you !

Hi @kaloprojects Thanks for the issue.
This is due to the fact that the MBEDTLS_HARDWARE_AES is turned on and the required cipher is not supported by the hardware.
This bug has already been fixed with https://github.com/espressif/esp-idf/commit/2c85399da0eb16dc7edc3afcf8be250a7b6bcc44
This has been kept disabled by default on older branches to avoid silently increasing the flash footprint for users.
Please enable the fix using Component Config -> mbedTLS -> Enable support for non-AES ciphers in GCM operation
After that the handshake should succeed.

Awesome, thank you for this great feedback, this helps ! . I personally do not know how to customize (as i am using arduino-esp32 library, but pretty sure the Admin folks there (https://github.com/espressif/arduino-esp32/issues/10071,) can fix it with your answer) :)
thank you @AdityaHPatwardhan ! (i will follow up if they need any details more)

Hi @kaloprojects I will go ahead and close this issue,
Please feel free to re-open if required.
Thanks,
Aditya

This has been kept disabled by default on older branches to avoid silently increasing the flash footprint for users. Please

I'm wondering if this should be enabled by default.
Otherwise, people may not aware of this bug until got user report. (And the solution is to enable it.)

@AxelLin I understand, so we thought it as a tradeoff with probably of issue occurrence and increasing the binary size.
We decided to keep it disabled based on following considerations

Based on the feedback that we received, this cipher is rarely used.
The increased code size is considerable for the application (roughly 3KB)


RV KMIR Grant

applications/rv-kmir: closer to original template
applications/rv-kmir: copy application template
applications/rv-kmir: first draft
applications/rv-kmir: corrections to application
Project Abstract

Please replace these instructions with a brief description of your project summarising key points (1-2 paragraphs).
If your application is a follow-up to a previous grant, please mention which one in the first line of the abstract and include a link to previous pull requests if applicable.

Grant level

[ ] Level 1:  Up to $10,000, 2 approvals
[ ] Level 2:  Up to $30,000, 3 approvals
[x] Level 3:  Unlimited, 5 approvals (for >$100k: Web3 Foundation Council approval)

Application Checklist

[x] The application template has been copied and aptly renamed (project_name.md).
[x] I have read the application guidelines.
[x] A BTC, Ethereum (USDC/DAI) or Polkadot/Kusama (aUSD/USDT) address for the payment of the milestones is provided in the application.
[x] The software delivered for this grant will be released under an open-source license specified in the application.
[x] The initial PR contains only one commit (squash and force-push if needed).
[x] The grant will only be announced once the first milestone has been accepted (see the announcement guidelines).
[ ] I prefer the discussion of this application to take place in a private Element/Matrix channel. My username is: @_______:matrix.org (change the homeserver if you use a different one)

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

Wooow! Excited to get started! :smile:

Thanks a lot for the application and we are excited to work with RV on this grant.
I had a few comments on the proposal:

It might be worthwhile to check out other attempts at formalising MIR semantics: https://github.com/nikomatsakis/a-mir-formality. It has formal models of MIR syntax, and layers for type-checking and declarations. Another attempt at defining the operational semantics is https://github.com/RalfJung/minirust for subset of Rust, which might be a good starting point.

Could you please provide more details on the strategy to prioritise MIR features in deliverables 2 &3? For instance, if verifying ink! smart contracts is the objective, then the conformance test-suite would have to include procedural macros feature.

a-mir-formality should definitely be a useful reference for us, it looks to attempt an operational semantics in PLT Redex.
MiniRust may be useful for reference, though maybe less directly useful than a-mir-formality.

Hi @ehildenb how is milestone 3 coming along?


egressgw: add support for excludedCIDRs

Add support to the egress gateway manager for the new excludedCIDRs
policy property.
The implementation is based on the idea of adding, for each excluded
CIDR, "zero" entries to the egress policy map (i.e. entries with the
gateway IP set to <IP_ADDRESS>). When traffic is then matched against these
entries in the datapath, it will skip altogether all the egress gateway
logic.
Fixes: https://github.com/cilium/cilium/issues/23002

/test-only --focus="K8sDatapathEgressGatewayTest.*" --k8s_version=1.26 --kernel_version=net-next

/test-only --focus="K8sDatapathEgressGatewayTest.*" --k8s_version=1.26 --kernel_version=net-next

/test-only --focus="K8sDatapathEgressGatewayTest.*" --k8s_version=1.26 --kernel_version=net-next

/test

/test-1.16-4.9

/test-1.24-5.4

/test-1.26-net-next

Really excited to see this, @jibi! 🎉

Couple of TODO items:

add BPF unit tests. As for these I need first a generic test for redirection (we only test the SNAT path for now) based on how long it takes for this PR to get reviewed I may add them directly to this PR or open a new one
backport https://github.com/cilium/cilium/pull/23448/commits/7b2a750edf28cb18e3dbddce7046f122ac9d310f to ensure we don't try to forward traffic to <IP_ADDRESS> gateways in case the agent is downgraded to an older version

/test-only --focus="K8sDatapathEgressGatewayTest.*" --k8s_version=1.26 --kernel_version=net-next

/test-only --focus="K8sDatapathEgressGatewayTest.*" --k8s_version=1.26 --kernel_version=net-next

/test-only --focus="K8sDatapathEgressGatewayTest.*" --k8s_version=1.26 --kernel_version=net-next

/test-only --focus="K8sDatapathEgressGatewayTest.*" --k8s_version=1.26 --kernel_version=net-next

/test-only --focus="K8sDatapathEgressGatewayTest.*" --k8s_version=1.26 --kernel_version=net-next

/test

Updates since the first iteration:

added some more BPF and manager unit tests
refactored the e2e tests as suggested
fixed the IP rules/routes logic (see https://github.com/cilium/cilium/pull/23448/commits/42698e17614e0e2742626993f12c36decf001381 for more context)

/test

/test

/test

/test-1.16-4.19

/test-1.16-4.19


[ADR] Server token rotation

Proposed Changes
ADR for Server Token Rotation

Linked Issues
https://github.com/rancher/rke2/issues/2141

User-Facing Change

Further Comments

@Oats87 @jakefhyde Heads up for potential future v2 prov work. This doesn't change any existing CLI, its only additive


Polish devtestlabs to resolve apiview comments

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.ResourceManager.DevTestLabs


Add ros param to enable fisheye image

Closing this PR since Tango needs the fisheye camera to localize.


Add support for --complete-platform.

This allows specifying a foreign platform completely such that any
resolve requirement strings can be parsed and the only limitation in a
foreign platform resolve is the availablility of pre-built wheels for
that platform.
Fixes #1597

N.B.: The 1st commit (21edb24) is up for review in #1608.


Implement printouts for network calls

Since in #698 it was deemed that a dry run mode may not be feasible, it was determined that printing these network calls during runtime maybe a good alternative.
I'm not quite sure if this is still desired, but I believe this would add more transparency as to what the runtime of OSV-Scanner is doing without the need to look at the code or docs. While implementing this, the following guided my thought process:

What endpoints should be printed?
Where in the codebase should we add these printouts?
How should we printout these network calls?
How can we avoid creating expensive messages when users don't wish to print messages at the VerboseLevel?

For point 3, I wasn't too sure how to display the data, so I decided to marshall it into JSON and took a page out of curl's book and prefixed these messages with > and < to represent an HTTP request and response respectfully. I also prefixed the JSON result for better readability. As a side note I have been using the osv.dev API docs as a reference.
For point 4, I went with doing lazy evaluation. I implemented a CanPrintLevel() method in the Reporter interface and used it to determine if I should create these expensive messages. I also used this method across the Warnf, Errorf, and other methods to try and keep things DRY. Another approach I thought of was to have a PrintFunc(lvl VerbosityLevel, func() string) where callers would need to build these expensive messages in the callback (and we check lvl to see if we even should build it), but the CanPrintLevel() approach seems simpler.
If there is interest, I'll go ahead and try to tackle the following endpoints as well:

[ ]  The determine version HTTP GET endpoint
[ ] The license checking gRPC endpoint
[ ] The local database-related HTTP endpoints (i.e. the HEAD and GET endpoints)

Codecov Report
Attention: 46 lines in your changes are missing coverage. Please review.

Comparison is base (c75d056) 79.08% compared to head (6ad567e) 77.99%.
Report is 2 commits behind head on main.

Files
Patch %
Lines

pkg/osvscanner/osvscanner.go
12.00%
42 Missing and 2 partials :warning:

pkg/reporter/void_reporter.go
0.00%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #746      +/-   ##
==========================================
- Coverage   79.08%   77.99%   -1.10%
==========================================
  Files          86       86
  Lines        6121     6181      +60
==========================================
- Hits         4841     4821      -20
- Misses       1075     1151      +76
- Partials      205      209       +4

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Here's a truncated example of how it currently prints out:
Scanning dir .


Move index.js to web_src and use webpack to pack them

Fix #8430 and this will also reduce gitea package size since we moved frontend source files from public directory.
Will replace #8440
Before
public/js/index.js 118210
Gitea macOS binary size  67556852
After
public/js/index.js 54269
Gitea macOS binary size  67519908

Codecov Report

Merging #8598 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #8598      +/-   ##
==========================================
- Coverage   41.69%   41.69%   -0.01%
==========================================
  Files         528      528
  Lines       68507    68507
==========================================
- Hits        28566    28562       -4
- Misses      36293    36296       +3
- Partials     3648     3649       +1

Impacted Files
Coverage Δ

models/unit.go
62.16% <0%> (-5.41%)
:arrow_down:

modules/log/event.go
64.61% <0%> (-1.03%)
:arrow_down:

routers/repo/view.go
40% <0%> (-0.96%)
:arrow_down:

modules/indexer/indexer.go
55.26% <0%> (+10.52%)
:arrow_up:

Continue to review full report at Codecov.

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

I forgot:

Because when webpack packaging, it renamed the function name. I will fix it.

Because when webpack packaging, it renamed the function name. I will fix it.

I think you need to disable mangle, e.g. terserOptions: {mangle: false}.
Ideally we should not need this, but given that our JS does not have a single entry point (e.g. there are many snippets in HTML which webpack does not know about), I guess it's justified. We should eventually move all those snippets to index.js or files imported from there.

@guillep2k @silverwind done. And I moved less changes to #8908

Should semantic.dropdown.custom.js be packed as well, now that we have our own unpacked copy?

I think all javascripts should be packed especially on /vendor/. I think this is a beginning of the changes.

semantic.dropdown.custom.js is not in vendor anymore, and it's not being minified:

(etc.)

Mmm.... it seems that index.js is not minified either.... It is ~25K in gitea.com and ~118K in my test site.

Also, are we going to go with vendoring all Javascript dependencies as well? It would be nice to pull from npm instead. Maybe we could have a webpack compiled version in the repo to still allow building without an internet connection?

How did you compile gitea? And could you force refresh the page?

@gary-kim I have that plan, but not in this pull request. I would like all javascript libraries are managed by npm.

Sorry, they are both in fact close to ~120K, only gitea.com sends with gzip but my test site doesn't. 😅

@silverwind Done. And I also changed some exported functions definitions.

Good finds. I hope we didn't miss any more similar calls. Certainly something to watch out for in upcoming bug reports :)