mouseover events for clusters

Hi. There does not seem to be a way to attach events other than click to clusters. What I want is to show an infobox or similar listing the places of the markers in the cluster the mouse is currently hovering. I do not want to hijack the click event, that should work as intended. Edit: But it would make sense if the user could see the contents of each cluster without having to click in and then zoom out of each of them. In my case there are quite a few clusters...
But as far as I can tell there is no support for mouseover events for clusters. Stackoverflow threads on the subject seems to be years old and outdated, and suggestions found there and elsewhere does not work for me.
If there is a way, I'd be grateful to know, and if not, maybe this is a sensible addition to the library.
Geir :)

Update: Then upon reading the docs I realised you can in fact replace the default renderer that creates the marker for the cluster. And so I was able to simply concatenate the marker labels into a string with line breaks and assign that as the marker title for the cluster. My problem solved.
Not entirely sure how to proceed on GitHub, this is my first issue. But the enhancement is no longer needed...
Geir :)

Hi. There does not seem to be a way to attach events other than click to clusters. What I want is to show an infobox or similar listing the places of the markers in the cluster the mouse is currently hovering. I do not want to hijack the click event, that should work as intended. Edit: But it would make sense if the user could see the contents of each cluster without having to click in and then zoom out of each of them. In my case there are quite a few clusters...
But as far as I can tell there is no support for mouseover events for clusters. Stackoverflow threads on the subject seems to be years old and outdated, and suggestions found there and elsewhere does not work for me.
If there is a way, I'd be grateful to know, and if not, maybe this is a sensible addition to the library.
Geir :)

I also encountered the same problem. Have you solved it now.

I also encountered the same problem. Have you solved it now.

Hi, that depends on the problem. I wrote in my previous reply I found a way to show the cluster marker title with the places it contains. If your issue is wanting mouseover or other events, then no, there is no way that I have found.
But if it is the first then here is how:
When you create a new markerclusterer you can specify an object in your script file that replaces the standard renderer:
myCluster = new markerClusterer.MarkerClusterer({ map: myMap, renderer: myCustomRenderer });
Now Google has posted the code of the default renderer here: https://googlemaps.github.io/js-markerclusterer/classes/DefaultRenderer.html
Add your custom object (myCustomRenderer above) to your script, with a method with the same name and parameters as the default one:
const myCustomRenderer = {
   render(cluster, stats) { code here }
}

The markers is an array in the first parameter: cluster.markers, so you can simply loop and concatenate them with line breaks into a variable, say named clusterTitle. Use backslash n for line breaks. You want the label property of the marker, so something like this:
let clusterTitle = '';
cluster.markers.forEach(el => (clusterTitle += `${el.label}\n`));

Then add the default code from the link above, with one addition. In the marker definition, add a title property set to clusterTitle:
const marker = new google.maps.Marker({
    position,
    title: clusterTitle,
    icon: ...
})

And then finally at the end of the render method you must return the marker:
return marker;
And that is it. You should now have an object like this:
const myCustomRenderer = {
   render(cluster, stats) {
      let clusterTitle = '';
      cluster.markers.forEach(el => (clusterTitle += `${el.label}\n`));

      // Default code goes here, with added title property

      return marker;
   }
}

Now whatever you put into clusterTitle will show as a popup title when you hower the cluster. Then of course you are free to alter or embellish the default code anyway you like, change the icons or whatever. I have instances where there may be a hundred markers in one cluster when you zoom out, so I have added a max to how many are added to the title.
Hope that helps!
Geir :)

I also encountered the same problem. Have you solved it now.我也遇到了同样的问题，你现在解决了吗。

Hi, that depends on the problem. I wrote in my previous reply I found a way to show the cluster marker title with the places it contains. If your issue is wanting mouseover or other events, then no, there is no way that I have found.
嗨，那要看是什么问题了。我在之前的回复中写道，我找到了一种方法来显示集群标记标题及其包含的位置。如果你的问题是想要鼠标悬停或其他事件，那么不，没有办法，我已经找到。
But if it is the first then here is how: 但如果它是第一个，那么这里是如何: When you create a new markerclusterer you can specify an object in your script file that replaces the standard renderer: 当您创建一个新的 markercluster 时，您可以在脚本文件中指定一个替换标准呈现程序的对象:
myCluster = new markerClusterer.MarkerClusterer({ map: myMap, renderer: myCustomRenderer });
MyCluster = new markerCluster.MarkerClusterer ({ map: myMap，renderer: myCustomRenderer }) ;
Now Google has posted the code of the default renderer here: https://googlemaps.github.io/js-markerclusterer/classes/DefaultRenderer.html
现在谷歌已经在这里发布了默认渲染器的代码: https://googlemaps.github.io/js-markerclusterer/classes/defaultrenderer.html
Add your custom object (myCustomRenderer above) to your script, with a method with the same name and parameters as the default one:
将您的自定义对象(上面的 myCustomRenderer)添加到脚本中，使用与默认方法具有相同名称和参数的方法:
const myCustomRenderer = {
   render(cluster, stats) { code here }
}

The markers is an array in the first parameter: cluster.markers, so you can simply loop and concatenate them with line breaks into a variable, say named clusterTitle. Use backslash n for line breaks. You want the label property of the marker, so something like this:
标记是第一个参数: Cluster.marks 中的一个数组，因此您可以简单地循环它们，并用换行符将它们连接到一个变量中，比如名为 ClusterTitle 的变量。使用反斜杠 n 表示换行符。您需要标记的 label 属性，如下所示:
let clusterTitle = '';
cluster.markers.forEach(el => (clusterTitle += `${el.label}\n`));

Then add the default code from the link above, with one addition. In the marker definition, add a title property set to clusterTitle. Edit: You must also get the position out of the cluster parameter:
然后从上面的链接中添加默认代码，添加一个。在标记定义中，将 title 属性集添加到 ClusterTitle。编辑: 您还必须得到集群参数的位置:
const position = cluster.position;
const marker = new google.maps.Marker({
    position,
    title: clusterTitle,
    icon: ...
})

And then finally at the end of the render method you must return the marker:
最后，渲染方法的结尾必须返回标记:
return marker;
And that is it. You should now have an object like this:
就是这样，你现在应该有一个这样的物体:
const myCustomRenderer = {
   render(cluster, stats) {
      let clusterTitle = '';
      cluster.markers.forEach(el => (clusterTitle += `${el.label}\n`));

      // Default code goes here, with added title property

      return marker;
   }
}

Now whatever you put into clusterTitle will show as a popup title when you hower the cluster. Then of course you are free to alter or embellish the default code anyway you like, change the icons or whatever. I have instances where there may be a hundred markers in one cluster when you zoom out, so I have added a max to how many are added to the title. Edit: You will find the number of markers in cluster.count.
现在，当您对集群进行降温操作时，您放入 ClusterTitle 的任何内容都会显示为一个弹出式标题。然后，当然你可以自由地改变或修饰默认代码，无论你喜欢什么，改变图标或任何东西。我有一些实例，当你缩小时，一个集群中可能有一百个标记，所以我在标题中添加了一个最大值。编辑: 您将找到 Cluster.count 中的标记数。
Hope that helps! 希望能帮上忙
Geir :) 盖尔:)

I solved my problem by adding a custom renderer and adding a mouseover listener to Marker to control the InfoWindow display.
const myCustomRenderer = {
  render: () => {
    const marker = new google.maps.Marker(...)
    marker.addListener('mouseover', () => {
      infoWindow.open(...)
    })
    marker.addListener('mouseout', () => {
      infoWindow.close()
    })
    return marker
  },
}

Thanks for the example, it's great!

You're welcome. And I see that you add a listener in the custom renderer. I never thought of that, so thanks to you too. (My original idea was a info window too, but I skipped that when I realised the title attribute would solve my problem.) Now I know that it can be done, should I ever need it! :)
Geir :)
BTW: You may want to edit your reply and delete the quote. (Unless the translation is for the benefit of someone else.) No need to post the same contents twice...

Thanks @GeirFjaerli and @coderwyd for providing your solutions! =)


istio-proxy is missing some envoy extensions since 1.18.0

Is this the right place to submit this?

[X] This is not a security vulnerability or a crashing bug
[X] This is not a question about how to use Istio

Bug Description
We use the Envoy oauth2 HTTP filter in one of our ingress gateways. The oauth2 configuration is applied using EnvoyFilter. Since 1.18.0, istio-proxy cannot load the listener configuration and logs this error:
2023-08-04T09:48:42.435939Z     warning envoy config external/envoy/source/common/config/grpc_subscription_impl.cc:128  gRPC config for type.googleapis.com/envoy.config.listener.v3.Listener rejected: Error adding/updating listener(s) <IP_ADDRESS>_443: Didn't find a registered config subscription factory implementation for name: 'envoy.config_subscription.filesystem'

Version
client version: 1.18.2
control plane version: 1.18.2
data plane version: 1.18.2 (68 proxies)

Client Version: v1.24.10
Kustomize Version: v4.5.4
Server Version: v1.25.6

Additional Information
I think the cause is that some code was moved to extensions between Envoy 1.25.7 (istio 1.17.3) and 1.26.0 (istio 1.18.0).
https://www.envoyproxy.io/docs/envoy/latest/version_history/v1.26/v1.26.0.html

build: Moved the REST and filesystem config subscripton code into extensions. If you use them for config updates and override extensions_build_config.bzl you will now need to include them explicitly.

There's a new section of extensions in envoy/source/extensions/extensions_build_config.bzl which is not included in proxy/bazel/extension_config/extensions_build_config.bzl. Probably extensions_build_config.bzl needs to be reviewed.
Affected product area

[ ] Ambient
[ ] Docs
[ ] Installation
[ ] Networking
[ ] Performance and Scalability
[X] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
[ ] Upgrade
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Control Plane Revisions

cc @zirain

I should have linked to https://github.com/istio/proxy/blob/1.18.2/bazel/extension_config/extensions_build_config.bzl (the file in the 1.18 branch). It looks like the missing extensions have been added to the master branch.

let me check

Fixed by https://github.com/istio/proxy/pull/4871

Fixed by https://github.com/istio/proxy/pull/4871


viewer shrunk in Chrome on android

The ami.js viewer used to work well on Chrome on android, however since the past few days the viewer does not load properly on chrome on android.
The same works perfectly on Chrome on iPhone.
Load Lesson 3 from your example on chrome on iPhone and chrome on Android.

Hmm can't reproduce, which version of Chrome are you using?

Chrome version of Android: 58.0.3029.83.

we were checking out cornerstone webgl render and found that in the mobile view it is getting clipped as well in android chrome, but in the desktop view is rendering properly. I it possible that issue could be coming in from cornerstone in AMI?

Hmm if same happens in cornerstone it is either related to your app or chrome...
What do you mean by clipped?

the renderer is created only at the bottom left corner instead of the entire screen as we are asking it to using setsize. initially nothing is visible but when we try to zoom the view then the image appears in the bottom part.
please see the image below for reference. the image is visible only at the bottom corner and i try to move it, the image moves out of view.
it looks like as if the renderer is only coming in that part.
I am not sure if it is the app problem as the page is responsive and it is working properly in desktop chrome but this problem comes when same page is rendered in chrome android.

The issue was because of the buffer memory in webgl for mobile devices, the line
var renderer = new THREE.WebGLRenderer({
antialias: true,
});
was the one causing the problem
For mobile devices which cant handle the antialias, just use
var renderer = new THREE.WebGLRenderer();
This will solve the problem

wow good catch @svabhishek29 !


Update belarusian language v2.0 data.json

Inaccuracies of the Belarusian language have been corrected

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 29.435%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1318

Relevant Lines:
5476

💛  - Coveralls


remove xml-js dep in core-frontend

xml-js has a dep on sax which uses node's stream apis.
with webpack 5 nodejs core polyfills were removed, also newer modern bundlers like vite dont polyfill node apis by default.

we only use xml-js in WmtsCapability; I havent investigated any further, but since this is a client side library, we could probably be able to just use window.DOMParser and remove the dep

@aruniverse Started looking into this, but looks like the frontend tests wont start from VS code, any idea?

I've never ran the core-frontend tests from vscode before so dont know why its broken now

Have you tried changing the type ?

Need to run npm run webpack:test


Expose TypeChecker.getTypeOnlyAliasDeclaration or similar API to detect if a symbol is a "value" or a "type"

🔍 Search Terms
"type checker", "getTypeOnlyAliasDeclaration", "detecting value vs type on a symbol"
✅ Viability Checklist

[X] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[X] This wouldn't change the runtime behavior of existing JavaScript code
[X] This could be implemented without emitting different JS based on the types of the expressions
[X] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[X] This isn't a request to add a new utility type: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
[X] This feature would agree with the rest of our Design Goals: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals

⭐ Suggestion
It would be nice if the compiler would expose TypeChecker.getTypeOnlyAliasDeclaration or similar function that would help to detect if a given symbol is a type or a value (e.g. a class is a type if it was imported/exported via import-type/export-type syntax.
📃 Motivating Example
I'm maintaining https://github.com/timocov/dts-bundle-generator and have the following issue https://github.com/timocov/dts-bundle-generator/issues/290. My problem is that I need to somehow detect if a module export symbol is a type or a value so I can detect whether the type of a symbol changes since its original declaration and its actual export so I can generate type export instead of exporting a value. I asked in the community discord and @jakebailey pointed that the type checker has function getTypeOnlyAliasDeclaration that might help. I've checked with my test cases and it seems it works like a charm. I understand that this function itself might not be what you actually want to expose from the API so I'm happy with either solution.
Also I'm happy to contribute for this feature.
💻 Use Cases

What do you want to use this for? Use it in the tool dts-bundle-generator to address mentioned issue
What shortcomings exist with current approaches? Nothing seems exist
What workarounds are you using in the meantime? I can use the internal (not exposed) API for a while and hope it won't change in the future

FWIW import type only prevents using the symbol in emitting positions; both type and value meanings are still imported if both exist.  So e.g. you can import type a class and still write typeof Class (which pulls on the value meaning but is ok because it doesn’t get emitted).
I don’t know if the above affects the feature request here but I thought it was worth pointing out.

FWIW import type only prevents using the symbol in emitting positions

Thanks for bringing this, but this is exactly what I need to differentiate. I'm building a bundler of dts files and the result of dts file should represent exactly what you can find in the js file. If a developer added exporting the type of a class instead of the class itself in their ts file, the dts bundle (the same as generated dts file by the compiler has) should have exporting the type, not exporting the class. At the moment I don't see how it is possible to tell whether a symbol that represents a module export is "type only" or "value".

I am not mega familiar with this API; @andrewbranch do you know if this is something that is reasonable to export? It does "do the job", but its API is a little funky for knowing if a particular alias is type only. But, I suppose getting the declaration may be useful in general. It was added back in #45998.
(At some level, simply exposing it would be nice given it's been there since the beginning of type imports and therefore may be useful with older TS versions, kinda like isAssignableTo, but...)

I am really afraid of exposing that API, but we need to have some solution for declaration bundlers and transformers. @timocov does it work to instead do something like
while (aliasSymbol?.flags! & ts.SymbolFlags.Alias) {
  const typeOnly = aliasSymbol.declarations.find(ts.isTypeOnlyImportOrExportDeclaration);
  if (typeOnly) return typeOnly;
  aliasSymbol = checker.getImmediateAliasedSymbol(aliasSymbol);
}

?

I am really afraid of exposing that API

For be frank I don't need this API directly, if it would be something that would return a boolean when a symbol is "type" or "value" it would be more than enough (at least for my use-case). I tried to use symbol.flags & ts.SymbolFlags.Value before but it didn't work as I suppose the compile "calculates" this flag based on its usage (i.e. even if a class is imported via "valued" import if it is used as "type" then it is marked as "type" as the compiler worked before import-type not to generate imports/exports in js files but this is just my assumption).

ensure you have a test with export type * from "./foo", as that’s represented differently internally (there’s no alias symbol for that re-export, so I’m guessing getImmediateAliasedSymbol will skip it and you’ll miss the type-only declaration 😕)

Thanks @andrewbranch, that's good to know. I recently tried to address export * usage problems and I noticed that something is somewhat different with "re-export everything" statement (at least I learned that explicit export overrides any implicit-export-star export with the same name even if export * is after explicit export) 😄
I didn't have such test before, but apparently your approach above isn't working for it (I just added it and there is a diff with getTypeOnlyAliasDeclaration solution). For other test-cases that I added it seems working fine (but it is possible that I'm missing something here as well).

I'm ready to use any "workaround" or approach the compiler team suggests, but it feels like that this information cannot be easily extracted from AST (or mostly relying on AST but use symbols as a helper) without handling lots of edge-cases, but also it feels like this information "belongs" to type checker (or a symbol).
If my assumption about symbol.flags & ts.SymbolFlags.Value nature is correct, then probably the API can be something like "whether a symbol is a value or a type, if it is a type, then the reasoning of it (the symbol is for a type, the code explicitly imports/exports it as type, the compiler figured out that it is a type but was targets a possible value)". Not sure if makes any sense for you tho, just trying to brainstorm in case it might help to make a better decision (but please ignore it as your opinion is much more valuable in here) 😄

Do you happen to have a piece of code where getTypeOnlyAliasDeclaration works, such that I can test to see what other options function the same way?

The one thing I'm seeing is that in checkAndReportErrorForUsingTypeAsValue, we don't use getTypeOnlyAliasDeclaration directly, instead we just resolve the symbol (which is public), then just use getSymbolFlags (not public, but calls getTypeOnlyAliasDeclaration) which gives us the "actual" (?) flags where flags & SymbolFlag.Value does actually seem to report if there's a value component that's usable. Of course, I'm moderately confused from the PoV that there's a symbol flags getter when there's also symbol.flags of the same type 🙃
But, it does make me think that maybe some element of that is the export? Not sure...

Do you happen to have a piece of code where getTypeOnlyAliasDeclaration works, such that I can test to see what other options function the same way?

@jakebailey that's exactly export type * you've mentioned above:
index.ts:
import { AnotherFoobar } from './re-export-type';
export {
	AnotherFoobar,
};

re-export-type.ts:
export type * from './another-class';

another-class.ts:
export class AnotherFoobar {}

I can push a branch with a test case I use and instructions how to run/debug it (it not complicated I promise 😂) if that helps.

then just use getSymbolFlags (not public, but calls getTypeOnlyAliasDeclaration) which gives us the "actual" (?) flags where flags & SymbolFlag.Value does actually seem to report if there's a value component that's usable. Of course, I'm moderately confused from the PoV that there's a symbol flags getter when there's also symbol.flags of the same type

Oh it looks like I followed the correct path initially 😄

A branch would be helpful; mainly I was looking for the test cases and things in your repo that I could plug various different ideas into. But, if it's just the above, I can try just that.

It should be just it, but in case if it would be helpful:

Checkout https://github.com/timocov/dts-bundle-generator/tree/debug-ts57032 branch
npm install
npm run test to run all tests

To run a specific test case npm run test -- --grep TEST_CASE_NAME where TEST_CASE_NAME is a test case title
If you use vscode and want to debug the code, you can run Run e2e test configuration and provide a test case title
If you want to use chrome devtools to debug, you run run a test like node --inspect-brk ./node_modules/mocha/bin/_mocha tests/e2e/test-cases/TEST_CASE_NAME/index.spec.js where TEST_CASE_NAME is the title of the test case and then attach to the debugger
Available test cases - a name of a folder in https://github.com/timocov/dts-bundle-generator/tree/debug-ts57032/tests/e2e/test-cases
If you're using the debugger, it will stop (I added debugger keyword) at the moment when there is a different of the result between type checker and the one that you suggested above versions (see https://github.com/timocov/dts-bundle-generator/blob/090524166507f3c64411771f652c15dd7c23e7be/src/bundle-generator.ts#L1062-L1064).
This code that is related to this particular check is located here

For this particular issue I added 2 test cases export-class-as-type and export-class-as-type-from-import. The issue above can be reproduced in export-class-as-type.

without a better understanding of your approach.

@andrewbranch Sure, let me elaborate then. The tool traverses all source files from the compilation and for each node detects 1) whether it should be included to the bundle (unrelated to this problem) 2) if so, whether it should be exported and 3) if it should be exported, what names and how it should be done.
As I mentioned, the first detection is not related to this question lets skip it. The second and third ones are related tho. Skipping unrelated details, statements/nodes that can generate anything in the JS file (class, function, variable, enums, namespaces) should be exported only if they are exported explicitly from the entry point. For this purpose what I'm doing is getting entry point exports, and try to find the node symbol in that table - if it is not there then it shouldn't be exported. But if it is there then it is exported and should either have export keyword or re-exported via export {} statement. This is pretty much how it works right now.
Now the issue is that the fact that a node's symbol is in the exports table doesn't necessary mean that in the JS file this node is exported too. It can be exported as a type via any variation of export type/import type syntax.
My idea was that I can do the following:

whether a node should be exported or not still can be detected by the exports table lookup
but whether it is exported as a type or not can be detected based on whether its "meaning" has changed - it originally it is declared as a "value" (class, function, etc) but its exported symbol represents a "type" (so the transition happened somewhere and it doesn't matter where and how exactly) then it should be exported via any export type syntax
if the "meaning" is the same, then we can just export it without export type syntax

Let me know if it is still unclear what I'm trying to do.

Thanks for that explanation; I think I’m up to speed now.

whether it is exported as a type or not can be detected based on whether its "meaning" has changed - it originally it is declared as a "value" (class, function, etc) but its exported symbol represents a "type"

Yeah, like I said in my last message, this isn’t accurate. The meaning doesn’t change with type-only imports/exports. You really do need getTypeOnlyAliasDeclaration for this, or something like it. But there is an additional subtlety we need to consider.
Suppose we expose an API like aliasSymbolResolvesToTypeOnlyDeclaration(sym: Symbol): boolean. You might think that if that returns true, you should write export type; otherwise just export. But here’s a case where that would fail:
// @filename: types.ts
interface Foo {}
export type { Foo };

// @filename: entrypoint.ts
import { Foo } from "./types";
const Foo = 2;
export { Foo };

When you read the symbol Foo from entrypoint.ts, aliasSymbolResolvesToTypeOnlyDeclaration will return true because it resolves through export type { Foo } in types.ts. But that doesn’t mean that the same symbol doesn’t also have a reified value meaning. Via symbol merging, it has one in entrypoint.ts, so the final bundled export must be written as export { Foo }.
So knowing whether a symbol has a type-only declaration somewhere in its alias resolution chain isn’t enough. Really, the question is this:

Given an alias symbol with a value meaning, is there a type-only declaration between that symbol and the source of the value meaning?

Asking that question of the example above, we can see that the answer should be “no.” The symbol does have a type-only declaration in its resolution chain, but the source of the value meaning never crosses that type-only boundary, so to speak. In other words, resolving only value meanings starting from export { Foo } never hits a type-only declaration; it stops at the local const Foo = 2.
So, something that answers that question directly is probably the API we need to make. (This is a big reason why I don’t want to expose getTypeOnlyAliasDeclaration directly—it’s too easy to use it and assume a positive answer means a symbol can’t be referenced in a value position, and quite hard to explain why that’s not true.)

Oh dear, I completely forgot about declaration/symbol merging... Thanks for reminding about this wild beast 😂

Given an alias symbol with a value meaning

To clarify, when you say "symbol with a value meaning" you mean symbol.flags & ts.SymbolFlags.Value thing or "a symbol that represents a value" (i.e. one of its declarations is a class, function, namespace, variable, enum)? I assume its the latter, but wanted to check to be on the same page. If my assumption is correct, then I'm 100% with you on everything you said above.

So, something that answers that question directly is probably the API we need to make. (This is a big reason why I don’t want to expose getTypeOnlyAliasDeclaration directly—it’s too easy to use it and assume a positive answer means a symbol can’t be referenced in a value position, and quite hard to explain why that’s not true.)

Maybe its still a bit off (pls forgive me, you know the context much better than me), what do you think about having this information connected to a module export instead? I know you mentioned that type-only imports/exports aren't quite related to this, but I thought that it is possible that this knowledge could be useful for module exports. What I mean is that the type checker right now can provide a list of symbols that are exported from a module (TypeChecker.getExportsOfModule or somewhat similar symbol.exports), but it doesn't say how exactly this particular symbol is exported and it can be used i.e. as a type-only, or type-and-value. If this information would be available, then I assume that theoretically this may be helpful for the compiler as well (e.g. in the error detection whether particular symbol can be used like a value; I doubt it tho) (I know it is not available right now and I don't think you'll ever have plans to implement it, but theoretically the case could be "stricter" imports when you must specify type or "not type" when you import anything. I know its a silly feature, but its looks like somewhat an extension of import-type feature 😂).

is there a type-only declaration between that symbol and the source of the value meaning?

@andrewbranch I think I found an example where this logic might not work. From my understanding, based on modules exports logic, any "specific" export (export { foo } from 'foobar';) should have higher priority over any export-star statements (export * from 'foobar';), so you can do something like:
export * from 'foobar'; // it exports Foo
export class Foo {} // overrides export *, no compilation error

Considering this, we should first check "named" exports, and only then any export * from statements. But export-type statements might have different order from regular non-type ones:
export * from 'foobar';
export type { Foo } from 'foobar';

In this case, export * from adds values to the export thus stays in JS code, while export type { foo } from 'foobar'; is omitted despite "it should have a higher priority". So at the JS level only export * from statement exists, so Foo from the module above is re-exported as "a value", while from AST/types perspective it has "type-only" declaration and we can't rely on just this.
I can't get rid of a thought that "exports table" should contain this information. I really don't want to ended up writing my own modules resolution mechanism to detect if an export/import can be used as a value or type, considering how complex exports systems are and that the compiler already knows all of this. Can you help me understand why this isn't a solution we're looking for please? Thanks!

What you just described is a bug. You should be able to access Foo in emitting positions in your example.

You should be able to access Foo in emitting positions in your example.

So "valued" export should always have higher priority over any "type" export with the same name (for the same symbol?)? In my example, even if I have export type { Foo } from 'foobar'; it doesn't change "the nature" of an export to "type only", because there is a higher priority export (one that exists at js level, not just types).

Yeah. My intention is to have zero false positives for the “you can’t use this import because it’s type-only” error. The only relevant question to showing that error is “will it work at runtime”

Agreed. Then it feels like your proposed question "Given an alias symbol with a value meaning, is there a type-only declaration between that symbol and the source of the value meaning?" should be corrected? E.g. in the example above there is a type-only declaration, but it doesn't really affect anything. Unless the compile will remove that "useless type-only export that doesn't affect output".


Why can not the code inference with multi-gpu?

I can infer with single gpu but fail while CUDA_VISIBLE_DEVICES=0,1
I have 8*A800 and try to run lava-onevision-qwen2-72b-ov model, here is a bug:
'''
LLaVA-NeXT/llava/model/llava_arch.py", line 363, in prepare_inputs_labels_for_multimodal
image_feature = torch.cat((image_feature, self.model.image_newline[None]), dim=0)
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:7 and cuda:0! (when checking argument for argument tensors in method wrapper_CUDA_cat)
'''

I just faced the same problem as you and solved it by adding device_map=accelerator.device instead of the default value auto while loading the model:
lm_tokenizer, lm_model, lm_image_processor, lm_max_length = load_pretrained_model("lmms-lab/llava-onevision-qwen2-0.5b-si", None, "llava_qwen", device_map=accelerator.device)

Yes, I had fixed it by replaying the line with "image_feature = torch.cat((image_feature, self.model.image_newline[None].to(image_feature.device), dim=0)"

.to(image_feature.device)

Hello, how do you initialize the variable accelerator?


new SimObject fails to send a response packet due to crossbar problem

Discussed in https://github.com/orgs/gem5/discussions/1352

Originally posted by iliasslasri July 16, 2024
Hello gem5 community,
I created a new SimObject that does just like the memory, the object has a Response port when it recieves a read command it sends a ReadResponse, but when it arrives to the xbar, the xbar fails to route it, and the assersion in line 454 in coherent_xbar.cc  _assert(route_lookup != routeTo.end()); fails, however While debugging I made sure to have to send a Response packet and I just modify the data like this :  pkt->setData(&value); pkt->makeResponse(); port.sendTimingResp(pkt);
More details : I just write a C code reading from the address I assigned to the module and the Request packet arrives to the new object and the REsponse packet succesufly leaves the new object and get to the xbar. the problem is just with the routing in the xbar, knowimg that I don't modify pkt->req, used by the xbar to remember the reauest came from where.
So I don't really know where the problem can come from, thank you all for your help.

This question has been answered at https://harmonylists.io/empathy/thread/R37EGMVOBCNV5CZC74F3EPIQMNWNFM6E.


⚠ HawkeUno has degraded performance

In b3b78bf, HawkeUno ($UNO) experienced degraded performance:

HTTP code: 403
Response time: 10555 ms

Resolved: HawkeUno performance has improved in 74dc4ae after 1 hour, 12 minutes.


Firebase support -  internal dependencies

Hello. As you know google will be deprecated GCM in April 11th, so this module is working pretty good with GCM, and the latest version of titanium 7.5.0.GA, but does anybody know whether this module will have support for firebase? I mean to update all the internal dependencies of the module to firebase
Thanks.

Hi,
we are in the process of deprecating this module and transitioning to Titanium Firebase. I will update the README with a deprecation notice and a guide on how to move Ti.Goosh projects to TiFirebase.

Would this module stop registering for push after April 11th?

@caioiglesias yes, that's correct. As stated by Google:

As of April 10, 2018, Google has deprecated GCM. The GCM server and client APIs are deprecated and will be removed as soon as April 11, 2019. Migrate GCM apps to Firebase Cloud Messaging (FCM), which inherits the reliable and scalable GCM infrastructure, plus many new features.

I researched a bit more and found this info:

What happens to my users who don't update their apps?
As long as users have GCM logic in their apps, they will still receive messages. FCM is backwards compatible with GCM, so even if you don't update your server endpoint now, you can still update your app's logic, and vice versa.

https://android-developers.googleblog.com/2018/04/time-to-upgrade-from-gcm-to-fcm.html

Also this:

How long do I have to migrate to FCM?
We will turn off most GCM services in April 2019, so you should plan to have most of your services migrated by then.
Note that client SDKs and GCM tokens will continue to work indefinitely. However, you won't be able to target the latest version of Google Play Services in your Android app unless you migrate to FCM.

https://developers.google.com/cloud-messaging/faq

I didn't know that the GCM library would work even after the transition to Firebase. Thank you for the info. I thought that only the server APIs where compatible.

hello, will be this module maintained for Titanium SDK 8.X, also, is it compatible with FCM? thanks!

Hi,
as stated here, this module is not maintained anymore. We cannot guarantee that it will work properly with Firebase notifications.


Listening to an error Future in an error zone that cannot receive the error causes an unhandleable error in the source zone

import 'dart:async';

void main() {
  var completer = Completer();
  completer.future.onError((e, st) {
    print('Future error handler: $e');
  });

  runZonedGuarded(() {
    completer.future.then((_) {}); // Causes error in parent zone
    completer.completeError('sad');
  }, (e, st) {
    print('Zone error handler: $e');
  });
}

The Completer is created in the outer zone, so an error from the completer cannot enter into the runZonedGuarded zone. We would expect that the .then callback would never run.
In the zone where the Future does complete as an error, there is an error handler which does receive the error. Following the handled error, there is an Unhandled exception which cannot be caught.
cc @lrhn

It does not work to change completer.future.then((_) {}) to completer.future.onError((e, st) {}), but it does work to change it to completer.future.ignore().

That's working as implemented. I'm not going to claim any intent.
Errors are reported as unhandled in the error zone of a if:

A future is completed with the error, and has no listeners.
A listener is in another error zone than the error future.

If you have two listeners in other error zones, the error will be reported twice.
In both cases, it's technically an error for a future which wasn't handled, it's just that the future also doesn't complete.
Again, not claiming any grand design here.

Do you know what explains why both the inner future error handler and the zone error handler gets called for this case?
import 'dart:async';

void main() {
  var completer = Completer();
  completer.future.onError((e, st) {
    // Never called
    print('Future error handler: $e');
  });

  runZonedGuarded(() {
    completer.future.catchError((e) {
      // Called
      print('Zoned future error handler: $e');
    });
    completer.complete(Future.error('sad'));
  }, (e, st) {
    // Also called
    print('Zone error handler: $e');
  });
}

It seems that calling complete on a foreign zone completer, with an error Future from the guarded zone, causes that error to surface in the zone error handler.


Adding option to set global toggles.

This small change adds option to set some simple toggles in the global portion of haproxy configuration. This is needed for some smaller, one-of-a-kind fixes, like this one: https://github.com/FireBurn/haproxy/commit/f1e82e94edd96ce325e79ea8e92b6eae125ab37d where creating and maintaining a list would be very burdensome.
This could be achieved by misusing global tunes (just create a tune with empty value), but that approach looks like a really ugly hack.

Thanks @akowalik-transporeon :+1:


Refactor Tests

The goal of this issue is to improve the readability and rigor of the tests in our test suite.
This means :

Put input and assertion values in variables for increased readability
Make sure test is not redundant and correct
Ensure you are declaring the least variables possible (try to reuse input values for previous tests where possible)
Check test name (simplify where possible)

Files to cleanup :

[x] ArgsTests.hs -> @nLatt
[x] AstTests.hs -> @mindoodoo
[x] CptTests.hs -> @mindoodoo
[x] TokenTests.hs -> @virgile-crtl
[x] ExecTests.hs -> @virgile-crtl
[x] ParsingTests.hs -> @audetuczapski
[x] TestMain.hs -> @bilou931

Please make sure to drop a message on discord and assign yourself if you take up this issue. Also make sure develop has been updated with all latest tests before creating development branch.

refacto test down


flashing: Identify correct RAM region for writing flash algorithm.

PR #1744 testing failed, because of two related issues:

target-gen: The memory regions for newly generated targets was incorrectly sorted by "largest" first.
flashing: When no load_address is specified, the flash algorithm is written to the first memory region in the memory map. Because of 1 above, it wrote to an incorrect RAM region, and the subsequent verify failed.

This PR effects two changes:

[x] target-gen: For newly generated targets:

[x] Do NOT merge adjacent memory regions into a single region. This appears to be a strategy that was left over from before #1259, when only a single memory region was generated. Since #1259 we generate all available memory regions, and with this new PR, we will keep the regions distinct, as specified in the .pdsc file.
[x] Before generating the target yaml, sort the memory regions so that they appear in order of ascending starting address.

[x]  target-gen: When generating the flash algorithm entry in the target yaml, if the source in the .pdsc file has a RAMstart entry, then use this entry to calculate the load_address in the target definition.

For the reviewer:

I tested this with STM32U5, STM32H7 (dual core example) and nRF_52_Series.
For the dual core devices on STM32H7, it now generates two versions of each applicable flash algorithm, because cores have different load_address for the algorithm (based on which cores have access to specific memory regions).


Expose detailed exit code as an output

Is your feature request related to a problem
It would be useful to be able to check the detailed exit code as a condition for running subsequent jobs
Describe the solution you'd like
detailed exit code to be added as an output

I reckon you're right — it'd be useful to have, and surprised it's not come up earlier!
Outta curiosity, do you use either setup-opentofu or setup-terraform in your workflow already? That might make it a tad easier to test the new exitcode output.

Hi, I do, I use the OpenTofu action.

Excellent, then the latest v11.4.0 release will support this implementation for both options.
By default, the new exitcode output parameter will output 0 (succeeded) or 1 (failed).
By passing in arg_detailed_exitcode: true, then exitcode will return one of the documented exit codes:

0 = Succeeded with empty diff (no changes)
1 = Error
2 = Succeeded with non-empty diff (changes present)

This has been validated by my public test run associated with this workflow.


不能实现热更新吗

Expected behavior (预期行为)
Actual behavior (实际行为)
Steps to reproduce the behavior (重现步骤)
NexT Informations
Add the  ✔  sign before an item which is affected by this behavior.
NexT Version:

Master
Latest Release
Old version -

NexT Scheme:

All schemes
Muse
Mist
Pisces

Other Informations (Like Browser, System, Screenshots)

考慮到 Github 上存的是靜態頁面，最接近的解決方案應該是 Travis-CI 吧。不然樓主想要怎樣的熱更新？

@JackZong don't understand u, write in English if not solved. If solved, close it please. Thank's!


[Bug]: list_of_documents does not fetch all collection entries

Is there an existing issue for this?

[X] I have searched the existing issues

Environment
-   OS: Win11
-   Python: 3.9.16

What happened?
When using the command list_of_documents() to get all entries from a collection, it seems that only a subset of the whole collection is returned.
This is further confirmed when having a look at collection.py in the google_cloud_firestore library in method list_documents(). The function list_documents takes as argument an optional "page_size", which determines how many documents will be displayed/returned. This is set per default by the API, but it is not certain that this command returns all available documents in the collection (e.g. if you have several hundred documents.)
I currently do not know how to work around this issue. Any ideas?
Code Snippet
# I used the following command to fetch all documents of a large collection:

active_ids = fsdb.collection("active_files").list_of_documents(self.user["idToken"])
#Returns only a subset of all documents in "active_files", accessible through the firestore console.

Relevant log output
No response
Anything else?
No response

@flashsturz
Does the issue take place if when you're using service account credentials? Because for service account it uses google_cloud_firebase library, meanwhile for user based, it used an API endpoint. The code snippet provided uses the API endpoint, while in description, it's mentioning the official library.

I use a user-based account and can confirm that it uses the API endpoint to get the documents. Sorry about the confusion.
Is there a parameter that we can pass with the request header in list_of_documents() to specify that we want to fetch all available documents from req_ref?

@flashsturz
The method is supposed to return all the documents, the API endpoint wasn't set properly, which will be fixed in the next version.

This is set per default by the API, but it is not certain that this command returns all available documents in the collection (e.g. if you have several hundred documents.)

Were you able to find out this default value use in the official library? I wonder if it's a constant number, or it changes based on something, which an AI might determine.

Unfortunately, I do not know how the default value is chosen, since the documentation of the firestore library is not exactly stating how it is set:

page_size (Optional[int]]): The maximum number of documents
in each page of results from this request. Non-positive values
are ignored. Defaults to a sensible value set by the API.

(From list_documents in collection.py in the library firestore_v1 library)

Sorry to get back at it this late, but from what I checked, The REST API for firestore doesn't return all documents at once, it returns a next page token, using which further ones need to be retrieved. Now it would mean the library will have to make multiple requests before providing a result of all documents. And in case of large number of documents, it might take a long time. I could enable passing of page_size argument, so for cases where the no of docs is supposed to be large, the dev can a larger page size. I'll set the default page size to 20, as tradition.
Does it seem fine? @flashsturz

Sorry for the delayed response from my side. Yes, I think it might be good to give the user the ability to set the page_size argument.
Do you know how large the page_size can be chosen, e.g. if there is an upper limit? Or is it possible to specify a very large number in order to ensure that all documents fit on one page?


mmSpoof changes

This request has two changes

updated mmSpoof.ms file as per latest reference
added two supporting images (PNG)

Check rendering - approved (Rohith)


Server crash on startup (sometimes) Minecraft 1.18 EasyAuth 2.0.5

Versions

Minecraft 1.18
EasyAuth 2.0.5
Fabric API 0.43.1

Describe the bug
Sometimes the server doesn't start. (Doesn't happen everytime)
To Reproduce
Steps to reproduce the behavior:

Start Server
See error

Expected behavior
The server should start always without errors
Additional context
Happens with the lastest artifact for 1.18 version 2.0.5 and with the alpha version on curseforge 2.0.4
latest.log

May be something with the Fabric installer version lower than 0.10.0.

I'm trying to recreate it with installer 0.9.0 and loader 0.12.5, but unsuccessfully.
Mod shouldn't interfere with datafixers, this is very strange.
Do you use world from older version?

No, newly generated world. Seems to happen from time to time, I really don't know why, that's why I said it could be a fabric problem, because I saw a similar problem on other mod's github.

I've been trying to reproduce the bug again but seems to be gone with the change on the fabric installer.


fix(packages/core): Settings API added and updated documentation

BREAKING CHANGE: this is a large breaking change to the core settings. You must now
import { Settings } from '@kui-shell/core'

... Settings.uiThemes ...

instead of what you may previously have written:
import { uiThemes } from '@kui-shell/core'

...uiThemes...

This is to help facilitate automatic generation of documentation, and to generally improve the sanity of the api.

Description of what you did:
Created a Settings API which contain most of the settings throughout plugins/plugin-client-common, plugins/pluging-core-support, plugins/plugin-s3/src and other directories. Also updated the documentation for these APIs using typedoc and removed source file links to specific branched that do not exist in master branch.

My PR is a:

[x] 💥 Breaking change
[x] 🐛 Bug fix
[x] 💅 Enhancement
[ ] 🚀 New feature

Please confirm that your PR fulfills these requirements

[x] Multiple commits are squashed into one commit.
[x] The commit message follows Conventional Commits, which allows us to autogenerate release notes; e.g. fix(plugins/plugin-k8s): fixed annoying bugs
[x] All npm dependencies are pinned.

/assign @starpit

/approve
/lgtm


Python not available warnings when installing Protractor 2.0.0

This is what I am getting when I am trying to install protractor from npm

Do we need to follow node-gyp's installation steps now to install protractor?
https://github.com/TooTallNate/node-gyp

This is a similar issue https://code.google.com/p/selenium/issues/detail?id=8566. Is it really save to ignore these errors?

I believe it is safe to ignore the errors, but I agree that it's alarming that they occur. I wonder if we can work with WebDriverJS to make sure they don't appear? Maybe removing ws as a dep is an option.

Consolidating these issues under https://github.com/angular/protractor/issues/2035


Bug：Vscode is automatically uninstalled

Vscode is automatically uninstalled, leaving only one shortcut

/needsMoreInfo

Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!

Vscode is automatically uninstalled, leaving only one shortcut

After starting up this morning, there was only one desktop shortcut for vscode, and the icon was abnormal. It had been normal before. Check the installation directory, and only the uninstall000 file was left

Vscode is automatically uninstalled, leaving only one shortcut

After starting up this morning, there was only one desktop shortcut for vscode, and the icon was abnormal. It had been normal before. Check the installation directory, and only the uninstall000 file was left
OS:windows 10

#52855


Chmod after upload file

Is it possible to grant permission to files while saving on the server? I would like the CHMOD command to be run and certain rights to be granted when saving files with a given extension. Is it possible to do this in SFTP?

Wait, was the answer, @kucharzyk84  ?


Installing Instamatic on an FEI Titan G2

I'm following config.md to set up instamatic to talk to our Titan. I did the following to set up my Anaconda environment on the offline Titan computer:
Setup

Installed Anaconda on an online PC.
Created a new environment, py3 and installed all the dependencies needed for instamatic through conda/pip*, but not instamatic itself. (I originally did install instamatic but on the Titan I got a path error from the instamatic script due to different user names on the Windows user)
Installed Anaconda on the offline PC
Copied over the environment folder at $HOME\Anaconda3\envs\py3 from the online PC to the Titan PC.
Called pip install -e . on a unzipped copy of instamatic-master on the Titan PC. This way I can modify instamatic from a more accessible folder.

Launching Instamatic

I notice that I need to launch instamatic (from cmd) twice the first time its used - the first time it creates a certain file but then raises an error. On the second time it runs smoothly and opens a simulated environment GUI with a high fps screen.
I ran instamatic.autoconfig.exe but end up with the following error.txt.
I fixed the script error by modifying the python file, but I now observe that only the Orius camera is supported. (see attached error2.txt)

We have two Ultrascan cameras on our system (models US1000XP and US1000FTXP). They are identical cameras with different shutters. Is there any hope of adding support for those?
We do have an Orius camera on our JEOL2100F, but that's of slightly less interest to me.

I should mention - I did try to choose the Orius camera. Then there's a blank Windows popup dialogue that appears followed by the error in error2.txt.

Okay, so I've realised that I should probably just skip the autoconfig, since I now see that templates for things like the fei microscope are actually named fei_themisz.
[1 min later]:
Hehe, I think I just got it to work, will report some errors in separate issue.

Current issue: The fei_microscope doesn't have a getCurrentDensity method. I can create a dummy pass method for now and see if that works, but I suspect there'll be a few more of the same sort. Could you take a look? I need to pass on the microscope to the next user now, but I'll be back on tomorrow morning. (CET timezone here)

Could you take a look?

Yeah, I will do so tomorrow.
The error you are getting is because are probably missing the DM plugin. I'm using the one from RED, you can get it from here: https://zenodo.org/record/2545322#.XEW5sC0o8uU (REDc.rar -> CCD_plugins -> REDCCDPlugin.dll). It should go in the DM plugins directory (C:\ProgramData\Gatan\Plugins). Hope that works!

Yep, that did the trick. I created a dummy getCurrentDensity method for the fei_microscope, and now the instamatic GUI opens.
I just tried doing a cRED acquisition, but I do get an error here as well once it attempts to read from the gatan camera. I tried with and without live view on in GMS, with both our cameras (This raises the question: How does instamatic know which camera to acquire from?)

Btw, I've got full control of the beam aspects. Really enjoying making the beam do my bidding by spinning in spirals :)

I got super quick help from the SerialEM community, and installed it this afternoon. I was shortly able to both successfully run the gatansocket3.py "hello world" printing in GMS3, as well as acquire images from the ctrl.getRawImage() function! I'm not sure if getRawImage depends on SerialEM? In any case, this is very exciting, and I'm looking forward to seeing what I can get out of this, particularly with respect to EELS!

I got super quick help from the SerialEM community, and installed it this afternoon. I was shortly able to both successfully run the gatansocket3.py "hello world" printing in GMS3, as well as acquire images from the ctrl.getRawImage() function! I'm not sure if getRawImage depends on SerialEM? In any case, this is very exciting, and I'm looking forward to seeing what I can get out of this, particularly with respect to EELS!

That's nice to hear! The getRawImage uses the RED plugin for DM I linked before. It was developed in Stockholm and therefore easy to get started with.
The gatansocket3.py uses the SerialEM plugin for DM and is much more flexible and better maintained. I came across it a while ago and I was curious whether it could be used to do continuous acquisition through Python in DM. I find it particularly exciting that you can send execute DM scripts, something I wish I had a couple of years ago. I intend to make getRawImage/getImage depend on that, as well as continuous acquisition, but I have not gotten to it yet.


Design: within listings for a large city, it's hard to scan and see the different hospitals

SF, Seattle have this issue so far

I’m not technically inclined so don’t know how hard this would be, but what about adding a map to the site? If there are lots of hospitals in a city, I imagine it’d be hard for someone to pick a hospital.

I think a map is the way to go. Trying to loop sash in.

Addresses added to the Washington sheet in support of a map. Sash is working on a map.

I'm going to change the html. Set the states, cities, and hospitals to headings. That should make it more semantic and readable.


Tooltip component

Refer to docs here - https://github.com/w3c/aria-practices/issues/127
some good practices on how to develop an accessible tooltip


Switch from pickle to jsonpickle

Addresses #594. As the reporter mentions the PickleSerializer is not recommended. The flow object can't be encoded with json.dumps, we could add a custom serializer but this jsonpickle library seems to work and is super simple so figured I would try that.
/cc @huwshimi

LGTM. I'll let someone else have a pass first before merging

@jonparrott hey, i just met you, and this is crazy, but LGTM, so merge me maybe?

:D I never get to use any Carly Rae Jepsen gifs.


Refactor and Improve Documentation

Pretty large overhaul of the repository to change it from an esoteric one-off package to something that other people can use.

Since I'm basically solo-developing this I don't really have anyone to review these changes so I'm squashing and merging without approval. When this repo is transferred to the lab's GitHub this shouldn't need to happen since I'll have more collaborators.


Import all activation functions from linen.activations in linen.init

I was trying to import the selu activation function from flax.linen, but found that it was not in the namespace. After inspection, it looks like flax.linen.__init__ imports most, but not all, activation functions from flax.linen.activations (where they are in turn imported from jax.nn).
Is there a reason for why not all activation functions are imported? It seems odd to me that, when importing flax.linen as nn, I can get some like nn.relu but for others I have to use jax.nn.selu, especially as almost all of these activation functions are just imported from jax.nn.
If this is not intentional, I would be happy to do a quick pull request where all activation functions from flax.linen.activations are imported into the flax.linen namespace. If it is intentional, I would be interested in the reasoning of re-importing activation functions at all, and not just sticking with jax.nn.relu, for example.

The reason why we re-import these functions (and others) from JAX rather than importing them directly is so we can potentially change the implementation if we want to, while remaining backward compatible. Moreover, we can also add our own custom functions in the same place (e.g., PreLU).
As for the shortcut in __init__, we do this for quite a number of functions actually. For instance, for initializers we do allow the shortcut nn.ones, but we don't allow it for nn.initializers.kaiming_uniform.
I agree it can be a bit confusing, but on the other hand, it does make sense that we do not always re-export everything in __init__ to avoid poluting the namespace.
@levskaya @jheek please chime in if you think I missed anything (I wasn't around when this was implemented).

Oh I see, I had only been thinking about the activation functions and thought "if it's good enough for the jax.nn namespace, why not also flax.linen", but yeah if it also imports intializers and other functions, it might indeed get too crowded.
By the way, here is the list of functions imported into jax.nn. It's mostly just a few more activation functions. I still think it might not be a bad idea to import these functions too, such that a user can simply "forget" about jax.nn (especially as it is encouraged to import flax.linen as nn), but this is a design decision with no obvious right answer.


Reserve/Jepson page_size

Doesn't look like the reserve and jepson regions APIs are honoring the page_size parameter:
https://ecoengine.berkeley.edu/api/layers/reserves/features/?page_size=100
Gives back 10 results @bkg

Thanks for letting me know, should be working now.

Thanks! All reserves/regions showing up in Explore now.


Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'

It looks like since Deno 1.5, there was a breaking change which is causing an issue. I'm running Deno 1.17.2 and seeing this error:
error: TS1205 [ERROR]: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'.
export { Doc } from "./util.ts";
         ~~~
    at https://denopkg.com/chiefbiiko/dynamodb@v1.0.0/mod.ts:5:10

TS1205 [ERROR]: Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'.
export { HeadersConfig, createHeaders } from "./create_headers.ts";
         ~~~~~~~~~~~~~
    at https://denopkg.com/chiefbiiko/dynamodb@v1.0.0/client/mod.ts:4:10

Found 2 errors.

I found some solutions saying to create a tsconfig.json like this:
{
  "compilerOptions": {
    "isolatedModules": false,
  }
}

... but it did not solve the issue.
A bit more research turned up this saying that isolatedModules cannot be disabled: https://github.com/denoland/deno/issues/12599

@chiefbiiko I've created a tiny PR to address this issue. Would be great if you can take a look.


feat: add block info to python ef test runner

Feature Request
Describe the Feature Request
The ef test runner in test_kakarot.py doesn't use the block info to patch the Syscall Handler currently.
What
Use the block info to patch, see also the main ef-test runner.

Hi @ClementWalter, i would like to work in this issue, could you give me a little bit of more contex please, and if you assign it to me how can i communicate with you for updates?

hey @juandiegocv27 the idea is just to use the native unittest.mock.patch to patch the SyscallHandler attributes, something like
tx = block["transactions"][0]
with (
    patch(SyscallHandler, "caller_address", tx["origin"]),
    SyscallHandler.patch_state(parse_state(test_case["pre"]))
):
    evm, state, gas_used, required_gas = cairo_run(

but with all the info

hi @ClementWalter, reading the code and the documentation, with my actual skills in testing with python, I concluded that I can´t do it for the moment

@juandiegocv27 if you want to give it a try, please do

sure I´ll try. For feedback, where should i contact you?

just here

Hi @ClementWalter, Im doing the issue, can you assign it to me please?

We don’t assign issues to first time contrib because too many people have just passed by and block issues without actively working on them. But no worries please do push your PR when you’re done and I’ll review it


adding nfsTolerationSeconds  to storageclass , nfsTolerationSeconds i…

…s applicable only with nfs volume i.e nfsResources is "true"

Thank you for the contribution. HPE will need you to perform the DCO sign-off for us to test and merge this feature.


Some extra documentation for the bootstrapper

I updated some of docu for the bootstrapper to provide better info about the internal proceedings of that.

awesome


[Core] Support CSV import

And implement a shim for older 2.x versions of Neo4j that do not support it.
That way, we could also use Liquigraph to import initial dumps :)

I think I get you want to load complete db dumps from CSV.
I'm already using LOAD CSV... command in LiquiGraph and it works.
One limitation currently is that queries in a changeset are executed in a transaction which prevents the use of USING PERIODIC COMMIT.
It would be a nice addition while working on importing from CSV data to be able to mark a changeset as transaction-free (with an attribute).


feat(*): Update nginx to 1.10.1

http://nginx.org/en/CHANGES-1.10
Intentionally not going for the unstable branch, until features from there are needed

The router has so many options that covering them all with e2e has not been a realistic possibility. I think this justifies adding the manual testing label to this.

This needs to update the SHA for the nginx tarball download:
$ shasum -a 256 nginx-1.10.1.tar.gz
1fd35846566485e03c0e318989561c135c598323ff349c503a6c14826487a801  nginx-1.10.1.tar.gz

Thanks, we should probably move away from sha's if nginx isn't providing them

pgp would be better.

agreed - lets do it as a separate issue tho

I've been running this on my local cluster for a while, and put it through my other boom and e2e tests. Seems to work. 👍


⚠ Bofrost.es has degraded performance

In b13561b, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1589 ms

Resolved: Bofrost.es performance has improved in 337aa35 after 18 minutes.


Investigate CLV model composition

with pm.Model() as m:
  hyper_priors = ...
  prior1, prior2 = distribution(hyper_priors)
  cohort1 = clv.ShiftedBetaGeo(data_cohort1, prior1)
  cohort2 = clv.ShiftedBetaGeo(data_cohort2, prior2)

clv.ComposeModel(...)

Is this for hierarchical priors, or something more general?

Looking back on this, I can confirm BetaGeoModel benefits from hyperpriors. The a and b parameters of the Beta dropout distribution seem to benefit from a hierarchical pooling approach:
https://mc-stan.org/users/documentation/case-studies/pool-binary-trials.html
Back when I was still maintaining the btyd library, this was the only way I could get the posterior mean values to mach the MLE estimates from lifetimes:
# Beta parameters.
a = pm.Deterministic("a", uniform_prior * pareto_prior)
b = pm.Deterministic("b", (1.0 - uniform_prior) * pareto_prior)


Delete NULL bytes from command.script_parts[0]

The byte sequence in command.script_parts[0] can contain one or more
'\x00' which will cause os.stat(path) to throw this error:
    TypeError: must be encoded string without NULL bytes, not str

The code isn't working, rule and tests fails with:
 TypeError: translate() takes exactly one argument (2 given)

ug http://stackoverflow.com/questions/23175809/typeerror-translate-takes-one-argument-2-given-python


[CARBONDATA-1322] Insert overwrite support and force clean up files and clean up in progress files support added

The following features are added in this PR.

Added support for LOAD OVERWRITE and INSERT OVERWRITE in carbon load. So after user issues overwrite command all old data will be overwritten with new data.
Example :

LOAD DATA INPATH '" data.csv' overwrite INTO table carbontable

insert overwrite table carbontable select * from othertable

When overwrite is in progress no other load will be allowed . And if any other load is already in progress also will be overwritten

Added support for force clean table to remove the table with force from disk. It is useful in case of inconsistency with hive metastore. This support is only internal purpose and not exposed to user, so it is supported through scala API not through SQL.

Cleanup the inprogress files while driver is initializing. In case of driver is down while any load is in progress then it must be cleaned while coming up of driver. This is only controlled through parameter spark.carbon.table.loader.driver , so it must be set true in driver properties to cleanup the inprogress files.

Build Failed with Spark 1.6, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/558/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/3151/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/3153/

Build Failed with Spark 1.6, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/560/

Build Failed  with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/3154/

Build Failed with Spark 1.6, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/561/


parallel consumer not scaling as expected

Hello Team, @astubbs
I would first explain existing design, with regular consumer being used now:
Design#1:
No. of topics: 10 with 6 partitions each
Consumers: regular kafka consumers, 2 consumer threads per topic per pod. So total 20 consumers across 10 topic per pod
Consumer group: 3 pods in the consumer group, so total 60 consumer threads across 10 topics across 3 pods
Design #2:
I recently converted this to confluent parallel consumer. I used single parallel consumer consuming from 10 topics i.e. total 60 partitions and used maxConcurrency 25 per pod. So it will account to max concurrency 75 across 3 pods which is greater than 60 consumer threads in design #1. I was expecting that this would scale better than design #1 however as per testing carried out, this failed to support traffic that design #1 supported successfully i.e. it reported increasing consumer lag at the same traffic that design #1 did not report any lag on.
Can someone provide guidance if any configuration is missing, or how to enable logging or troubleshoot issues with the parallel consumer?
OR should I try another configuration of 1 parallel consumer per subscription topic with lesser maxConcurrency e.g. 5 per parallel consumer? Is this more efficient configuration?
Here is pasting the configuration of parallel consumer:
   @Bean
   public ParallelReceiverMode measureProcessorParallelReceiverMode() {
       final Map<String, Object> consumerProperties = kafkaProperties.buildConsumerProperties();
       consumerProperties.put(JsonDeserializer.VALUE_DEFAULT_TYPE, MeasureInputEvent.class);
       LOG.debug("ApplicationConfig.measureProcessorConsumerFactory() : SessionTimeOut is [{}]", kafkaTuningConfig.getSessionTimeoutMs());
       LOG.debug("ApplicationConfig.measureProcessorConsumerFactory() : FetchMinBytes is [{}]", kafkaTuningConfig.getFetchMinBytes());
       LOG.debug("ApplicationConfig.measureProcessorConsumerFactory() : FetchMinBytes is [{}]", kafkaTuningConfig.getFetchMaxBytes());
       LOG.debug("ApplicationConfig.measureProcessorConsumerFactory() : MaxPartitionFetchBytes is [{}]", kafkaTuningConfig.getMaxPartitionFetchBytes());
       LOG.debug("ApplicationConfig.measureProcessorConsumerFactory() : FetchMaxWaitMs is [{}]", kafkaTuningConfig.getFetchMaxWaitMs());

       consumerProperties.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, String.valueOf(kafkaTuningConfig.getSessionTimeoutMs()));
       consumerProperties.put(ConsumerConfig.FETCH_MIN_BYTES_CONFIG, String.valueOf(kafkaTuningConfig.getFetchMinBytes()));
       consumerProperties.put(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, String.valueOf(kafkaTuningConfig.getFetchMaxBytes()));
       consumerProperties.put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG, String.valueOf(kafkaTuningConfig.getMaxPartitionFetchBytes()));
       consumerProperties.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG, String.valueOf(kafkaTuningConfig.getFetchMaxWaitMs()));
       consumerProperties.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);

       setSSLProperties(consumerProperties);

       ParallelConsumerOptions<String, MeasureInputEvent> options = ParallelConsumerOptions.<String, MeasureInputEvent>builder()
           .ordering(KEY)
           .maxConcurrency(kafkaTuningConfig.getParallelConsumerMaxConcurrency())
           .consumer(new KafkaConsumer<>(consumerProperties))
           .retryDelayProvider(workContainer -> Duration.ofSeconds((long)(10 + Math.pow(Math.E, workContainer.getNumberOfFailedAttempts()))))
           .build();

       ParallelStreamProcessor<String, MeasureInputEvent> eosStreamProcessor = ParallelStreamProcessor.createEosStreamProcessor(options);
       return new ParallelReceiverMode(
           eosStreamProcessor,
           new MeasureProcessorEventsReceiverListener(measureProcessorEventHandler())
           //meterRegistry
       );
   }

Parallel consumer subscription to inputs topics:
   public void createAndSubscribeInputTopics() {
      // Create and subscribe to input topics
      if (!"".equals(dimensions)) {
         List<String> topicList = new ArrayList<>();
         AnalyticsProperties.TopicConfiguration inputTopicConfig = analyticsProperties.getInputTopic();
         for (String dimension : dimensions.trim().split(",")) {
            String inputTopic = TopicNamesHelper.getInputTopicName(dimension);
            topicList.add(inputTopic);
         }
         if (!topicList.isEmpty() && !topicManager()
            .createTopics(topicList, inputTopicConfig.getNumPartitions(), inputTopicConfig.getReplicationFactor(),
               false, inputTopicConfig.getRetention(), inputTopicConfig.getSegment())) {
            LOG.error("ApplicationConfig.createAndSubscribeInputTopics(): Cannot create input topics [{}]", topicList);
         }
      }

      if (kafkaTuningConfig.isParallelConsumer()) {
    	  LOG.info("parallelConsumer is enabled for measure processor events, hence going with parallel consumer instead of regular kafka consumer");
    	  measureProcessorParallelReceiverMode().subscribe(
    		subscriptionManager().getSubscriptionTopics(analyticsProperties.getInputTopic().getName(), MEASURE_CONSUMER_CLIENT_ID));
    	  measureProcessorParallelReceiverMode().execute();
      } else {
    	  subscriptionManager().subscribe(analyticsProperties.getInputTopic().getName(), MEASURE_CONSUMER_CLIENT_ID,
    	      measureProcessorEventListener());
      }

   }

Parallel consumer started:
public class ParallelReceiverMode implements ReceiverMode {
    private final ParallelStreamProcessor<String, MeasureInputEvent> parallelConsumer;
    private final ReceiveListener receiveListener;
    //private final MeterRegistry registry;

    @Override
    public void execute() {
        parallelConsumer.poll(message -> {
            if (possibleDeserializationError(message)) {
                //logPossibleDeserializationError(message);
                return;
            }
            try {
                getReceiveListener().onReceive(message);
            }
            catch (RuntimeException e) {
                //logMessageFailure(message, e);
            }
        });
    }

Hi! Welcome to the project!
At first glance it seems fine. Can you write it as an integration test, extending 'BrokerIntegrationTest'?
I'm working on a big PR atm - but after I get that merged, I'll take a look.
And yes it should handle what you describe absolutely no problem.

Thanks @astubbs I was expecting maxConcurrency set to same value as number of consumers in initial design to provide same results however now i am also trying with another configuration of 1 parallel consumer per subscription topic, and would then adjust maxConcurrency to a lower value. e.g. 10 parallel consumer for 10 inputs topics with maxConcurrency of 4 each and see how that works.

Your instincts are correct. Your results do sound odd. I will def look into this by writing a test that scales in that nature, which you'll be able to run yourself to see.

Don't forget it also is important how fast the underlaying consumer can download messages from the brokers. Were they maxed out? PC can't process messages if the consumer underneath is starving it...

You're also talking about max concurrency like it's per partition, but you're using KEY ordering. You'd only need max_concurrency to match num partitions if you were using PARTITION ordering - i.e. one partition per thread. But you're using KEY - so saw you have 1000 unique keys - you'd need MAX_CONCURRENCY set to 1000 to get max possible processing at once.
However, I wouldn't expect PC to be slower with such a config. (aside from the above comment about being starved)

I am not sure why would underlying consumer max out with starving.
Here are some more details:
out of 10 input topics, 7 topics are having heavy traffic. over half a million events an hour being produced onto topics while 3 topics are not that high traffic, sometimes even idle
Out of 7 heavily loaded topics:
3 topics: 4000-5000 unique keys
2 topics: 20 unique keys
2 topics: 600 unique keys
What configuration do you suggest would be best for this kind of traffic?
Secondly, settting max_concurrency to a high number like 1000, wouldn't it cause those many background processor threads to be spawned in the JVM, causing it to halt?

Secondly, settting max_concurrency to a high number like 1000, wouldn't it cause those many background processor threads to be spawned in the JVM, causing it to halt?

All depends how much memory you're giving the JVM. I got around 1200 before I got an OOM crash, with default JVM settings, on my laptop with the brokers running in docker in the background with pretty good performance. If you want to go high concurrency without using memory - you can look at using the vert.x or reactor modules - they don't use threads to scale up concurrency.
I still intend to make an integration test with your scenario, once I get this PR merged.

Finally, I could get the parallel consumer to scale, with some trial and error with different permutations and combinations.
For 10 input topics, I divided it into heavy duty (6) and low duty (4) topics.
Created a separate parallel consumer for heavy duty and combined other low duty topic under a single parallel consumer.
Then tuned the maxConcurrency for each parallel consumer as per requirements, so some parallel consumers might be allocated more concurrency than others. With this configuration, I am able to keep the consumer lag to a minimal.
I have one more question:
since the auto.commit is disabled for parallel consumer and it handles offset commit on each record processed, will it impact performance?
Or if offsets are committed in batches, then what will be side effect in case the pod (hosting consumer) restarts before offset batch is committed?
Does it give rise to duplicates when partitions are rebalanced to other consumer pod?

since the auto.commit is disabled for parallel consumer and it handles offset commit on each record processed, will it impact performance?

No. It doesn't commit every time a message is processed, it only commits every #timeBetweenCommits. Even though it tracks the ack for every message, it only actually performs a commit at whatever frequency you choose - default as per Kafka is 5s.
This version of the setting is in the NEXT version. Current version, you set it on the PC object.
https://github.com/confluentinc/parallel-consumer/blob/b2be8dac7b5576135bdb0173c7296bd76e1b7837/parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/ParallelConsumerOptions.java#L222

What will be side effect in case the pod (hosting consumer) restarts before offset batch is committed?

Upon clean shutdown, offsets are committed. The PC that gets assigned the partitions to take over, will continue exactly where the shutdown one stopped.

Does it give rise to duplicates when partitions are rebalanced to other consumer pod?

In the happy path, no. Upon crash - depends how many records were processed between your #timeBetweenCommits. So you can reduce the #timeBetweenCommits, or use the transactional commit mode which ensures no dupes even on crash (but as per Kafka, side effects will be replayed - i.e. "effectively once" processing).

Talking about clean shutdown, what do i need to do from application? do i need to call close or any other similar method on the PC that will cause a clean shutdown?
Secondly, what about partition rebalance in case a new pod (consumer) is created, so existing partitions from old consumer will go to new one... in this scenario, is there a way to make sure that existing events being processed by existing consumer are processed and offsets are committed before partition gets rebalanced to newly added consumer pod?

do i need to call close

yes, call close :)

what about partition rebalance in case a new pod (consumer) is created, so existing partitions from old consumer will go to new one...

See here:
https://github.com/confluentinc/parallel-consumer/blob/7630c96dcf05a60355a394450c08b807085babb6/parallel-consumer-core/src/main/java/io/confluent/parallelconsumer/internal/AbstractParallelEoSStreamProcessor.java#L335-L361

@astubbs I am using <IP_ADDRESS> version of library and I presume there are no KEY ordering issues with this version, or please advise if I should upgrade to latest version. The reason I am asking is because I replaced regular consumer with parallel consumer and ours is an analytics application so it is supposed to compute 'measures' from incoming events and with early testing we did with the parallel consumer, the measures were bit skewed from expected. I am yet to run the same test with regular consumer and compare the results yet but just wanted to confirm that I am not using stale version of library.

You should def upgrade to the newest version. 4 is very old now. Generally always stay on at least highest point release. But in this case I suggest you go straight to the newest.

the measures were bit skewed from expected
Can you elaborate?

the measures were bit skewed from expected
Can you elaborate?
--> So to answer your question, we are building analytics application for
call/contact center, so the agents in call center, for example, are routed
calls from customer, they answer those calls and complete those interaction
with customers. These are the measures like offered calls, answered calls,
completed calls.
So I see a bit more discrepancy between these measures with PC, while the
results with regular consumer are more accurate.
I am planning to move to <IP_ADDRESS> from 0.4.x version, and i see many API
changes, major one around PollContext.
Is there additional docs around usage of PollContext?
Should I just use PollContext.getSingleConsumerRecord to get the
ConsumerRecord out of it and pass on to my user function listener?
public interface ReceiveListener {
void onReceive(ConsumerRecord<String, MeasureInputEvent>
consumerRecord);
}
On Wed, Sep 21, 2022 at 6:39 PM Antony Stubbs @.***>
wrote:

You should def upgrade to the newest version. 4 is very old now. Generally
always stay on at least highest point release. But in this case I suggest
you go straight to the newest.
the measures were bit skewed from expected
Can you elaborate?
—
Reply to this email directly, view it on GitHub
https://github.com/confluentinc/parallel-consumer/issues/397#issuecomment-1253688446,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AU4J3Z2GXWH63SCYKMCFISDV7MCKJANCNFSM57N3MDBA
.
You are receiving this because you authored the thread.Message ID:
@.***>

@astubbs I would like to hear from you if there are any plans to include this library as official parallel consumer in Apache kafka and whether there will be official support provided for this. If this library is providing such a good scaling capabilities to kafka based applications then why this is not being included in Apache kafka

closing since got the expected results with different configuration

@astubbs I would like to hear from you if there are any plans to include this library as official parallel consumer in Apache Kafka

No, there are no plans to do that

and whether there will be official support provided for this

Yes, that is coming

If this library is providing such a good scaling capabilities to kafka based applications then why this is not being included in Apache kafka

There is some discussion around this, but it's quite, involved...


Rewrite the front-end, with testing and modularity as a main concern

For example, the site should be testable, and dependencies like search engines/proxies should be abstracted so they can be swappable

So what's the plan?
IF you want to go the framework route:
I'm a big fan of Vue, but I'd vote React simply because it would be more of a learning experience for me. Can't go wrong with React I guess.
Could use something like react-snap to build it as a static site, or gatsbyjs - but gatsby seems overkill for this, since there is very little static content.

I think this has been largely taken care of, need to get the testing going now

Going to go ahead and close this, the app has been rewritten and there is 1 test :)


SAK-47432 Add the Forum ID to the site archive export

Useful for resolving references in Lessons archive XML

The build failure above is from elasticsearch which is unrelated to this change.


[NETBEANS-1622] Sort editor tabs when a document opens

https://issues.apache.org/jira/browse/NETBEANS-1622
Sort tabs

By file name
By File name with parent directory name
By full file path

NOTE: only when a document opens

Pretty cool. :-)

I have two further comments:

the package org.netbeans.core.windows.options is exported. While friend-only this makes it API, which should be documented. https://github.com/matthiasblaesing/incubator-netbeans/commit/cc3d7d0e4df3f10b0094c6467069d9a253f14d2c
the preference you added only affects the editor tabs (which is good), this should IMHO be reflected in the option name. https://github.com/matthiasblaesing/incubator-netbeans/commit/3cdd340b8ba13be03b111d417c6f79fd588e906b

Done.

No objection, thanks, cool feature!


fix: keep order of network interface for baremetal

这个 PR 实现什么功能/修复什么问题:
改进：baremetal parepare不再调整网卡的顺序，在创建裸金属时，网卡index使用baremetal netinterface的index
是否需要 backport 到之前的 release 分支:

release/2.9.0
release/2.8.0
release/2.7.0
release/2.6.0

/area baremetal
/area region
/cc @Zexi @yousong

Codecov Report

Merging #659 into master will increase coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##           master    #659      +/-   ##
=========================================
+ Coverage    7.41%   7.41%   +<.01%
=========================================
  Files         346     346
  Lines       54863   54861       -2
=========================================
  Hits         4070    4070
+ Misses      50413   50411       -2
  Partials      380     380

Flag
Coverage Δ

#aFlag
7.41% <0%> (ø)
:arrow_up:

Impacted Files
Coverage Δ

pkg/baremetal/tasks/baseprepare.go
0% <ø> (ø)
:arrow_up:

pkg/compute/models/netinterfaces.go
6.1% <0%> (-0.15%)
:arrow_down:

pkg/hostman/guestfs/fsdriver/linux.go
0% <0%> (ø)
: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 c6681e6...0f34483. Read the comment docs.

/cherrypick release/2.9.0

/cherrypick release/2.8.0

/cherrypick release/2.7.0

/cherrypick release/2.6.0

/lgtm

/approve


Update stable version in repo from 0.3.9 to 0.4.0

Think about update stable version to 0.4.0
Version: stable=0.3.9 (286 days old) => latest=0.4.0 (18 days old)
Installs: stable=1639 (79.91%), latest=182 (8.87%), total=2051
Click to edit

done!


Access file hash within templates

It would be great if the file hash, that is used for fontSrc within css templates, would be accessible by all template types.
Use case:
Generate a HTML file with preload for the font, to be included within server-side rendering.

really very nice!!!

Or maybe make the hash an optional parameter.
Use case:
The hash is controlled by another process (eg. CI/CD) and it's present in the file path:
https://my.cdn.com/hash/icons.css
https://my.cdn.com/hash/index.html

This way the HTML can preload the CSS safely with relative paths.
Thoughts?


FIX: Type declaration for with-tqdm

Hi, sorry for my english, so I'll be brief...

Problem:
The fixnum type declaration of total-size don't work for symbols

For example:
(let ((size 5))
  (cl-tqdm:with-tqdm progress size ""
    (loop repeat 5
          do (cl-tqdm:update progress))))

P. S. IMHO, (unsigned-byte 64) more exactly describes the type of the argument

oh I didn't noticed that; type declaration could be unnecessary as for macro expansions. thank you for your PR


Legacy keys missing from OpenTofu's Registry

Confirmation

[X] This is a bug with an existing resource and is not a feature request or enhancement. Feature requests should be submitted with Cloudflare Support or your account team.
[X] I have searched the issue tracker and my issue isn't already found.
[X] I have replicated my issue using the latest version of the provider and it is still present.

Terraform and Cloudflare provider version
OpenTofu v1.6.2 - cloudflare 2.10.0 through 3.9.1
Affected resource(s)
All
Terraform configuration files
terraform {
  required_providers {
    cloudflare = {
      version = "~> 2.21"
      source = "cloudflare/cloudflare"
    }
  }
}

Link to debug output
N/A
Panic output
No response
Expected output
Successful init
Actual output

Installing cloudflare/cloudflare v2.27.0...
╷
│ Error: Failed to install provider
│
│ Error while installing cloudflare/cloudflare v2.27.0: the provider is not signed with a valid signing key; please contact the provider author (authentication signature from unknown issuer)
╵

Steps to reproduce
Download OpenTofu
Create config pointing at version with legacy provider key
tofu init
Additional factoids
No response
References
https://github.com/opentofu/registry/issues/680

👋 thanks for raising this one. unfortunately, these legacy keys were created and not stored for longer term use since they were only used in the Hashicorp ecosystem and we never actually had to exercise them on our side outside of the automated pipeline.
they remain usable on the Terraform registry since we cannot delete them but aside from that, i don't think we have them. i'll have a dig around and if i manage to find them, open a PR for opentofu otherwise, it's not something we can backfill. sorry!

good news! i found an old email where we provided this to Hashicorp so i was able to submit it for addition to the registry via opentofu/registry#684

Thanks @jacobbednarz!


Linking Object attributes don't exist when not in realm

Upgraded to Realm 2.0.1 from 1.X and been having some crashes when adding new objects.
It looks like an object with linking properties crashes if i try to access its linking objects before it's added to realm. I think in 1.X the behavior was to return an empty list.
Did this behavior change? What's expected here:?

I verified the behavior changed from 1.0.2 to 2.0.2.
Accessing an unmanaged RLMObject's linking object properties in 1.0.2 results in an empty RLMResults, but in 2.0.2 you get this exception:
#0	0x0000000103b6e3ad in -[RLMFastEnumerator countByEnumeratingWithState:count:] at /Users/realm/workspace/create_github_release_cocoa/realm-cocoa/Realm/RLMCollection.mm:95
#1	0x0000000103b6eeae in RLMDescriptionWithMaxDepth(NSString*, id<RLMCollection>, unsigned long) at /Users/realm/workspace/create_github_release_cocoa/realm-cocoa/Realm/RLMCollection.mm:190
#2	0x0000000104ad43d9 in _NSDescriptionWithLocaleFunc ()

As a workaround, using "count" appears to still work (returns 0 if not in a realm already). I will be wrapping all my iterators in this unless this is fixed...

The EXC_BAD_ACCESS appears to occurs in RLMCollection.m:95:
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
                                    count:(NSUInteger)len {
    [_realm verifyThread];
    if (!_tableView.is_attached() && !_collection) {
        @throw RLMException(@"Collection is no longer valid");
    }
    // The fast enumeration buffer size is currently a hardcoded number in the
    // compiler so this can't actually happen, but just in case it changes in
    // the future...
    if (len > RLMEnumerationBufferSize) {
        len = RLMEnumerationBufferSize;
    }

    NSUInteger batchCount = 0, count = state->extra[1];

    Class accessorClass = _info->rlmObjectSchema.accessorClass; //EXC_BAD_ACCESS here

Thanks for the detailed bug report. I was able to reproduce this by adding a new test case in Realm:
PersonObject *don = [[PersonObject alloc] initWithValue:@[ @"Don", @60 ]];
XCTAssertEqualObjects(asArray(don.parents), (@[ ]));
for (PersonObject *parent in don.parents) {
    (void)parent;
    XCTFail();
}

Hey I still appear to be having this issue. Using version 2.4.4.
class User: Object, Resource {

    dynamic var id: String? = nil
    dynamic var email: String? = nil
    dynamic var firstName: String? = nil
    dynamic var lastName: String? = nil
    dynamic var phone: String? = nil
    dynamic var company: String? = nil

    var organisations = List<Organisation>()

    let sessions = LinkingObjects(fromType: Session.self, property: "user")

My linking objects is empty outputting my sessions to output log:
override var description: String {
    print("self.sessions: \(self.sessions)")

Until I add all the 'sessions' which should fulfil the linkage to a Realm, then the debug output works fine.

On further investigation it appears LinkingObjects doesn't return any results for unmanaged objects, can I get confirmation?

Correct, LinkingObjects always returns an empty collection for unmanaged objects.
In the future, please file a new issue rather than tacking your question onto an issue that's been closed for many months.

@bdash so be it. I thought you'd prefer to keep issues to a minimum!


Rename to alteryx-open-src-update-checker

Change the package name so it is more generic and applicable to all our open source packages

We will also need to change FEATURETOOLS_UPDATE_CHECKER to ALTERYX_OPEN_SRC_UPDATE_CHECKER


Make a generic "wait_for_ajax" method

Add a generic “wait_for_ajax” method, a la what’s discussed here:
http://agilesoftwaretesting.com/?p=111
and here:
http://tanin.nanakorn.com/watir/wait_for_ajax
Sometimes customized wait statements aren't possible, or become overly-complicated and thus brittle.

I'm going to try to get this in the next release.

Excellent! Thanks!

I wouldn't presume to be able to advise you on awesome methods, but I figured I'd share the current status of my method with you:
def wait_for_ajax(timeout=5)
      end_time = Time.now + timeout
      while self.execute_script("return jQuery.active") > 0
        sleep 0.2
        break if Time.now > end_time
      end
      self.wait(timeout + 10)
    end

Apart from this, jQuery isn't the only JS library in use.
I remember that in gem for Selenium, it was possible to specify JS framework in use and #wait_for_ajax used corresponding JS statement.
Just for share, I use more simple method for waiting. Its minus is that it uses Watir exception class.
#
# Executes `jQuery.active` Javascript snippet each second until timeout.
# Snippet returns either 0 (no Ajax running) or 1 (Ajax running).
#
# If timeout is exceeded, raises Watir::Wait::TimeoutError exception.
#
def wait_for_ajax(timeout = 10)
  timeout.times do
    return true if browser.execute_script('return jQuery.active').to_i == 0
    sleep(1)
  end

  raise Watir::Wait::TimeoutError, "Timeout of #{timeout} seconds exceeded on waiting for Ajax."
end

It can be done just like in selenium-client gem.
There :javascript_framework is passed as argument to #initialize (see http://code.google.com/p/selenium/source/browse/trunk/rb/lib/selenium/client/base.rb). It however supports only jQuery and Prototype (see http://code.google.com/p/selenium/source/browse/#svn%2Ftrunk%2Frb%2Flib%2Fselenium%2Fclient%2Fjavascript_frameworks)

My plans are to make this my primary focus on 0.6.2.

Excellent!

I'm about to begin work on this.  Initially I will support jQuery and Prototype.  I will also build a plugin architecture so others can extend to other frameworks.

This was in the release I just made.

Just tried to use this and couldnt get it to work, didnt see it on your wiki in the ajax section either did I miss it? Would be nice to have an example around of how to call it, is there one I missed? Thanks!


Add test for #296

Awesome, thanks!

Out of curiosity, why did the test fail?

I see:
punctuation that I forgot to move after sorting, e69f1c0b87a5f4b50711d85df1fffa694a37e53c
+ timestamp 46340f26b2fee0de6fa6cce0236c41126ab2564e
+ filename also 780c9f3e0df1d00a06e2766940e11de75ab06f92 ?

It failed because of the sorting and the timestamp, yes; the filename issue simply made it not match any tests, which counts as a failure on my Travis setup. I've added a little text to https://zotplus.github.io/support.html to outline this. Far from complete, most likely.

ok!You get this if you export your whole library, and your whole library just happens to consist only of your test references.With JabRef, right? It could be precised (fwiw I only use Zotero).

Nope, with Zotero. I don't use JabRef at all.

ah, ok. That's because I'm directly exporting from My Library…

It's a chore, which is why I usually add it by hand.


Installation for OSX needs update

Description
On the website Installation on OSX documentation page, Using the Kivy App:
https://kivy.org/docs/installation/installation-osx.html#using-the-kivy-app
The first instruction fails, as the download file is not available:
Navigate to the latest Kivy release at https://kivy.org/downloads/ and download Kivy--osx-python.7z.
Either the doc should be modified to provide a new procedure, or an updated download file should be provided.

Being addressed in #5211