Reloading with PlugManX doesn't work at all

CommandAPI version
9.3.0
Minecraft version
1.20.1
Are you shading the CommandAPI?
Yes
What I did
I setup a 1.20.2 paper server with PlugmanX and my own plugin with the following:
override fun onLoad() {
    instance = this
    CommandAPI.onLoad(CommandAPIBukkitConfig(this)
    .missingExecutorImplementationMessage("You cannot execute this command!")
    .dispatcherFile(File(dataFolder, "command_registration.json")));
}
 override fun onEnable() {
    CommandAPI.onEnable()
    CommandAPICommand("testreregistration")
      .withArguments(StringArgument("testString"))
      .withArguments(LiteralArgument.of("success"))
      .executes(CommandExecutor { executor, args ->
        val testString: String = args.get("testString") as String
        executor.sendMessage(Component.text("The test String was: '" + testString + "'"));
      }).register();
}
override fun onDisable() {
    CommandAPI.unregister("testreregistration", true)
    CommandAPI.onDisable()
}

server starts up normally but using /plugman reload <plugin> causes the issue
What actually happened
When the server starts up normally the command works fine, but once you run /plugman reload <plugin> the plugin reloads and if the command was unregistered in onDisable() the command disappears and never gets registered again.
What should have happened
It should unregister and register the command similar to how /reload confirm does it
Server logs and CommandAPI config
No response
Other
No response

I've been digging around in PlugManX's source and it should be totally their fault. They assume that every command is added by a plugin as far as my quick analysis goes. With added by a plugin, I mean by using the well known method that Bukkit added and not using a command framework. The commands registered by the CommandAPI do not pass a check if they are PluginCommands since we do not use the BukkitPluginCommand class. I believe this issue should also be opened on their GitHub which you linked to make them aware of commands that do not have plugins associated with them.
The main issue seems to be their BukkitCommandWrap class which seems to only load commands that are wrapped with a BukkitCommandWrapper. The CommandAPI, however, uses the VanillaCommandWrapper class and from my quick analysis, PlugManX does not reload these commands. It is possible that I have missed something, but opening this on their GitHub too would certainly not be a bad idea.

Well, as long as my BukkitCommandWrapper doesn't somehow delete the command, there shouldn't be any issues actually registering the command.
Commands using VanillaCommandWrapper should also get properly loaded since I'm also calling CraftServer#syncCommands shortly after.
(Which probably makes the rest of my BukkitCommandWrapper setup useless)

@TheBlackEntity
Whether it's your command wrapper class or not, the plugin causing this issue definitely is your plugin since reloading using the built-in /reload command works without issues (well, if you're not considering it's already flawed nature that is).
I can probably spend some time tomorrow and investigate this issue further and see what causes what. I can also probably try some more scenarios and see if other setups work while others don't.
However, right now I am fairly confident that your plugin causes this issue.

@TheBlackEntity
For what it's worth, I did experiment a little yesterday and could only confirm that it is your plugin that causes the issue.
I've also cloned your repo and put a few debug statements that should be run when reloading a plugin on a Paper server.
This was the log I got:
[19:24:38 INFO]: DerEchtePilz issued server command: /testreregistration test success
[19:24:46 INFO]: DerEchtePilz issued server command: /plugman reload BugTestingCommandAPI
[19:24:46 INFO]: [PlugManX] [STDOUT] Reload started!
[19:24:46 INFO]: [PlugManX] [STDOUT] Using PaperPluginUtil to reload!
[19:24:46 INFO]: [PlugManX] [STDOUT] Unloading plugin. Command wrapper: BukkitCommandWrap
[19:24:46 INFO]: [PlugManX] [STDOUT] Unloading commands...
[19:24:46 INFO]: [PlugManX] [STDOUT] The size of the internal command map: 0
[19:24:46 INFO]: [BugTestingCommandAPI] Disabling BugTestingCommandAPI v0.0.1
[19:24:47 INFO]: [BugTestingCommandAPI] Loading server plugin BugTestingCommandAPI v0.0.1
[19:24:47 INFO]: [CommandAPI] Loaded platform NMS_1_20_R3 > NMS_Common > CommandAPIBukkit
[19:24:47 INFO]: [CommandAPI] Hooked into Spigot successfully for Chat/ChatComponents
[19:24:47 INFO]: [CommandAPI] Hooked into Adventure for AdventureChat/AdventureChatComponents
[19:24:47 INFO]: [CommandAPI] Hooked into Paper for paper-specific API implementations
[19:24:47 INFO]: [BugTestingCommandAPI] Enabling BugTestingCommandAPI v0.0.1
[19:24:47 INFO]: [CommandAPI] Hooked into Paper ServerResourcesReloadedEvent
[19:24:47 INFO]: [CommandAPI] Linked 2 Bukkit permissions to commands
[19:24:47 INFO]: [CommandAPI] Reloading datapacks...
[19:24:47 INFO]: Loaded 1174 recipes
[19:24:47 INFO]: Loaded 1271 advancements
[19:24:48 INFO]: [CommandAPI] Finished reloading datapacks

Now, you will probably have noticed this line:
[19:24:46 INFO]: [PlugManX] [STDOUT] The size of the internal command map: 0

This was put in BukkitPluginUtil#unloadCommands(Plugin plugin) on line 713
I am now really unsure about the actual command reloading process given that this map was empty.
I also did some other tests that shouldn't really fail as the CommandAPI was handling that but I didn't want to miss anything.
I registered this command:
new CommandAPICommand("lookupcommand")
    .withArguments(new StringArgument("commands")
        .replaceSuggestions(ArgumentSuggestions.stringsAsync(info ->
                CompletableFuture.supplyAsync(() -> CommandAPI.getRegisteredCommands().stream().map(RegisteredCommand::commandName).toArray(String[]::new))
            )
        )
    )
    .executesPlayer(info -> {
        Player player = info.sender();
        String command = (String) info.args().get("commands");
        Map<String, Command> knownCommands = Bukkit.getCommandMap().getKnownCommands();
        if (knownCommands.containsKey(command)) {
            player.sendMessage(Component.text("The command '" + command + "' was found in the command map!"));
            player.sendMessage(Component.text("The command is of type: " + knownCommands.get(command).getClass().getSimpleName()));
        }
        CommandNode<?> commandNode = Brigadier.getCommandDispatcher().getRoot().getChild(command);
        if (commandNode != null) {
            player.sendMessage(Component.text("Command is present in the CommandAPI's Brigadier dispatcher"));
            player.sendMessage(Component.text("The CommandNode is of type: " + commandNode.getClass().getSimpleName()));
        }
    })
    .register();

As expected both if-statements pass and these classes are, again as expected, VanillaCommandWrapper and LiteralCommandNode.
However, I noticed something weird today. While testing yesterday, I could reproduce this issue with no problems whatsoever.
Today, I couldn't. I changed nothing and only added one more command (which shouldn't affect anything, really) and /plugman reload TestPlugin worked somewhat.
I say somewhat because suggestions definitely break under some circumstances but that's just normal reload shenanigans.
In the end, I can say that this issue is really weird. Yesterday I could reproduce it, today I can't. I don't know what causes this to suddenly work, especially because it wasn't only me who encountered this issue obviously.

@TheBlackEntity
For what it's worth, I did experiment a little yesterday and could only confirm that it is your plugin that causes the issue.
I've also cloned your repo and put a few debug statements that should be run when reloading a plugin on a Paper server.
This was the log I got:
[19:24:38 INFO]: DerEchtePilz issued server command: /testreregistration test success
[19:24:46 INFO]: DerEchtePilz issued server command: /plugman reload BugTestingCommandAPI
[19:24:46 INFO]: [PlugManX] [STDOUT] Reload started!
[19:24:46 INFO]: [PlugManX] [STDOUT] Using PaperPluginUtil to reload!
[19:24:46 INFO]: [PlugManX] [STDOUT] Unloading plugin. Command wrapper: BukkitCommandWrap
[19:24:46 INFO]: [PlugManX] [STDOUT] Unloading commands...
[19:24:46 INFO]: [PlugManX] [STDOUT] The size of the internal command map: 0
[19:24:46 INFO]: [BugTestingCommandAPI] Disabling BugTestingCommandAPI v0.0.1
[19:24:47 INFO]: [BugTestingCommandAPI] Loading server plugin BugTestingCommandAPI v0.0.1
[19:24:47 INFO]: [CommandAPI] Loaded platform NMS_1_20_R3 > NMS_Common > CommandAPIBukkit
[19:24:47 INFO]: [CommandAPI] Hooked into Spigot successfully for Chat/ChatComponents
[19:24:47 INFO]: [CommandAPI] Hooked into Adventure for AdventureChat/AdventureChatComponents
[19:24:47 INFO]: [CommandAPI] Hooked into Paper for paper-specific API implementations
[19:24:47 INFO]: [BugTestingCommandAPI] Enabling BugTestingCommandAPI v0.0.1
[19:24:47 INFO]: [CommandAPI] Hooked into Paper ServerResourcesReloadedEvent
[19:24:47 INFO]: [CommandAPI] Linked 2 Bukkit permissions to commands
[19:24:47 INFO]: [CommandAPI] Reloading datapacks...
[19:24:47 INFO]: Loaded 1174 recipes
[19:24:47 INFO]: Loaded 1271 advancements
[19:24:48 INFO]: [CommandAPI] Finished reloading datapacks

Now, you will probably have noticed this line:
[19:24:46 INFO]: [PlugManX] [STDOUT] The size of the internal command map: 0

This was put in BukkitPluginUtil#unloadCommands(Plugin plugin) on line 713
I am now really unsure about the actual command reloading process given that this map was empty.
I also did some other tests that shouldn't really fail as the CommandAPI was handling that but I didn't want to miss anything.
I registered this command:
new CommandAPICommand("lookupcommand")
    .withArguments(new StringArgument("commands")
        .replaceSuggestions(ArgumentSuggestions.stringsAsync(info ->
                CompletableFuture.supplyAsync(() -> CommandAPI.getRegisteredCommands().stream().map(RegisteredCommand::commandName).toArray(String[]::new))
            )
        )
    )
    .executesPlayer(info -> {
        Player player = info.sender();
        String command = (String) info.args().get("commands");
        Map<String, Command> knownCommands = Bukkit.getCommandMap().getKnownCommands();
        if (knownCommands.containsKey(command)) {
            player.sendMessage(Component.text("The command '" + command + "' was found in the command map!"));
            player.sendMessage(Component.text("The command is of type: " + knownCommands.get(command).getClass().getSimpleName()));
        }
        CommandNode<?> commandNode = Brigadier.getCommandDispatcher().getRoot().getChild(command);
        if (commandNode != null) {
            player.sendMessage(Component.text("Command is present in the CommandAPI's Brigadier dispatcher"));
            player.sendMessage(Component.text("The CommandNode is of type: " + commandNode.getClass().getSimpleName()));
        }
    })
    .register();

As expected both if-statements pass and these classes are, again as expected, VanillaCommandWrapper and LiteralCommandNode.
However, I noticed something weird today. While testing yesterday, I could reproduce this issue with no problems whatsoever.
Today, I couldn't. I changed nothing and only added one more command (which shouldn't affect anything, really) and /plugman reload TestPlugin worked somewhat.
I say somewhat because suggestions definitely break under some circumstances but that's just normal reload shenanigans.
In the end, I can say that this issue is really weird. Yesterday I could reproduce it, today I can't. I don't know what causes this to suddenly work, especially because it wasn't only me who encountered this issue obviously.

Thank you for taking some time to test this.
A weird issue indeed.
I'll see what I can do to add support for CommandAPI

I'm also unsure what's going on with the command map in unloadCommands...

Just so you know, I was talking about the commands field.

I think I am gonna close this issue as this is nothing caused by the CommandAPI but rather is caused by the already flawed concept of reloading plugins at runtime.


Fix instantiation of Z3Sorts

Before this commit, LibZ3>>get_sort_kind:c:t would crash, for example
when Z3_mk_datatypes() tries to instantiate the 'out' array of Z3Sorts,
because t is expected to be a Z3Sort, not an ExternalAddress, but on
entry to Z3Sort>>fromExternalAddress:inContext: all we have is an
ExternalAddress (the whole point of calling get_sort_kind() being to
figure out which concrete subclass of Z3Sort to instantiate).
We can't really change get_sort_kind::'s expectations, because it's
autogenerated by apigen.py; therefore, we create a temporary dummy sort
object, pass that to get_sort_kind::, and then instantiate the correct
subclass.

I'm proposing an alternative fix to the problem - see #36. I'd think it's more consistent with existing code.

Closing in favor of #36.


Non-code: call hospitals and input donation info for geos not yet covered

Volunteers could call hospitals in states and major cities not yet covered, and input info through the form.

or email! @yauwong wrote a temple and can post here.

I've worked in sales for the past six years, prospecting and making up to 40 cold calls a day. Happy to help.

@liamrosen Louisiana is hit bad and we only have 20 hospitals right now. Here's a list of hospitals in the state:
https://www.ahd.com/states/hospital_LA.html
https://www.officialusa.com/stateguides/health/hospitals/louisiana.html

@r-pop  should we close this?

There's no AI here for a dev to close on, so I'm going to close this but I should note this is a good idea esp in countries/regions with low coverage. @linderr - you might want to consider adding a section in "Join Us" to cover this kind of work.

@saikatbhadra yup we do this in Outreach teams --- I think it's b/c we're also using GH as a product management notebook/place holder --- so not all Issues are AI/dev stuff, sorry!

^ But I will put it in my playbook for sure for new #i18n groups who are coming on board now :) thanks!

I think it's fine to have non technical tasks as long as they are specific up to be closeable. So for example, "call up 10 hospitals in x area to see if they need to be on the map" would be something.


get_status.py now gets plugin repos

[Current coverage][cc-pull] is 92.77% (diff: 100%)

Merging [#126][cc-pull] into [master][cc-base-branch] will increase coverage by 0.04%

@@             master       #126   diff @@
==========================================
  Files            26         26
  Lines          2819       2837    +18
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           2614       2632    +18
  Misses          205        205
  Partials          0          0

Powered by Codecov. Last update [4751651...7c7c3f8][cc-compare]
[cc-base-branch]: https://codecov.io/gh/CyberReboot/vent/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/CyberReboot/vent/compare/4751651af52014794ba8497d48a212b3cfc5f88a...7c7c3f8f28e19d30a80e97e0b21166de3254b12d?src=pr
[cc-pull]: https://codecov.io/gh/CyberReboot/vent/pull/126?src=pr


Next

Closes #1385
Summary
Update our semantic release version to latest (17.2.1) and create our next branch. This will allow us to now publish after each pr to this next branch and move our main channel to timed releases.
Change List (commits, features, bugs, etc)

Update semantic release
change travis.yml to run semantic release on master and next branch

Acceptance Test (how to verify the PR)

Merge into master
merge PRs into next and see it publish.

:tada: This PR is included in version 2.139.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


WIP: Nicer landing page

Issue: https://github.com/datopian/portaljs/issues/754
Changes

Navbar updated

It's now similar to flowershow

New sections on the homepage

Hero

Still thinking about what to put on the right side, or leave it as it's

Features

Free icons found at https://www.reshot.com/
Icons are not definitive, will look for better icons later

Dark mode enabled
Tailwind 2 upgraded to Tailwind 3

Mainly so that copying code over would be easier

@demenech how come the build fails?


DateTrunc miss some Signature

Describe the bug
Current DateTrunc Signature is
     BuiltinScalarFunction::DateTrunc => Signature::exact(
            vec![
                DataType::Utf8,
                DataType::Timestamp(TimeUnit::Nanosecond, None),
            ],
            fun. Volatility(),
        ),

TimeUnit should also can be Second | millsecond ...
Because return type is determined by Signature, so it will cause wrong expect type.
explain verbose select arrow_typeof(date_trunc('minute', to_timestamp_seconds(61)));
+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
| plan_type                                                  | plan                                                                                |
+------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------+
| initial_logical_plan                                       | Projection: arrow_typeof(date_trunc(Utf8("minute"), to_timestamp_seconds(Int64(61))))                                          |
|                                                            |   EmptyRelation                                                                                |
| logical_plan after inline_table_scan                       | SAME TEXT AS ABOVE                                                                                |
| logical_plan after type_coercion                           | Projection: arrow_typeof(date_trunc(Utf8("minute"), CAST(to_timestamp_seconds(Int64(61)) AS Timestamp(Nanosecond, None))))     |
|                                                            |   EmptyRelation                                                                                |

To Reproduce
No response
Expected behavior
No response
Additional context
No response

I will take a shot at working on this


Fixed #31357 -- Fixed get_for_models() crash for stale content types when model with the same name exists in another app.

in ContentType.get_for_models
Discard stale content types in ContentType.get_for_models, as they
can be retrieved when searching for other models and cause an
AttributeError exception.
Added regression test (test_missing_model_with_existing_model_name).

@bielfrontera Thanks for this patch :+1: What do you think about an alternative solution proposed by Simon? For example:
diff --git a/django/contrib/contenttypes/models.py b/django/contrib/contenttypes/models.py
index ef4f30556f..51a4ebef89 100644
--- a/django/contrib/contenttypes/models.py
+++ b/django/contrib/contenttypes/models.py
@@ -1,4 +1,6 @@
+import operator
 from collections import defaultdict
+from functools import reduce

 from django.apps import apps
 from django.db import models
@@ -64,9 +66,8 @@ class ContentTypeManager(models.Manager):
         Given *models, return a dictionary mapping {model: content_type}.
         """
         results = {}
-        # Models that aren't already in the cache.
-        needed_app_labels = set()
-        needed_models = set()
+        # Models that aren't already in the cache group by app labels.
+        needed_models = defaultdict(set)
         # Mapping of opts to the list of models requiring it.
         needed_opts = defaultdict(list)
         for model in models:
@@ -74,14 +75,20 @@ class ContentTypeManager(models.Manager):
             try:
                 ct = self._get_from_cache(opts)
             except KeyError:
-                needed_app_labels.add(opts.app_label)
-                needed_models.add(opts.model_name)
+                needed_models[opts.app_label].add(opts.model_name)
                 needed_opts[opts].append(model)
             else:
                 results[model] = ct
         if needed_opts:
             # Lookup required content types from the DB.
-            cts = self.filter(app_label__in=needed_app_labels, model__in=needed_models)
+            condition = reduce(
+                operator.or_,
+                (
+                    models.Q(app_label=app_label, model__in=models)
+                    for app_label, models in needed_models.items()
+                ),
+            )
+            cts = self.filter(condition)
             for ct in cts:
                 opts_models = needed_opts.pop(ct.model_class()._meta, [])
                 for model in opts_models:

Hi @felixxm,
I'm aware that the database lookup is incorrect, as it can return unwanted content types. But I think that the code it's much simpler than the Q+reduce version.
The stale content types can be discarded with the new check introduced in this PR. And other unwanted content types that are retrieved are being discarded because their options are not found within needed_opts dictionary.
But there is a strong point about having a correct database lookup. So If you prefer it that way, I can modify the PR, as your patch also fixes the issue (after adding from django.db.models import Q and changing models.Q by Q)

I'm aware that the database lookup is incorrect, as it can return unwanted content types. But I think that the code it's much simpler than the Q+reduce version.

We can pass a _connector to avoid using reduce (see 9662193aea2ee982bc8e553c62499aca5e606755), e.g.:
diff --git a/django/contrib/contenttypes/models.py b/django/contrib/contenttypes/models.py
index a3a7d53627..b83c9afcae 100644
--- a/django/contrib/contenttypes/models.py
+++ b/django/contrib/contenttypes/models.py
@@ -2,6 +2,7 @@ from collections import defaultdict

 from django.apps import apps
 from django.db import models
+from django.db.models import Q
 from django.utils.translation import gettext_lazy as _

@@ -64,9 +65,8 @@ class ContentTypeManager(models.Manager):
         Given *models, return a dictionary mapping {model: content_type}.
         """
         results = {}
-        # Models that aren't already in the cache.
-        needed_app_labels = set()
-        needed_models = set()
+        # Models that aren't already in the cache grouped by app labels.
+        needed_models = defaultdict(set)
         # Mapping of opts to the list of models requiring it.
         needed_opts = defaultdict(list)
         for model in models:
@@ -74,18 +74,21 @@ class ContentTypeManager(models.Manager):
             try:
                 ct = self._get_from_cache(opts)
             except KeyError:
-                needed_app_labels.add(opts.app_label)
-                needed_models.add(opts.model_name)
+                needed_models[opts.app_label].add(opts.model_name)
                 needed_opts[opts].append(model)
             else:
                 results[model] = ct
         if needed_opts:
             # Lookup required content types from the DB.
-            cts = self.filter(app_label__in=needed_app_labels, model__in=needed_models)
+            condition = Q(
+                *(
+                    Q(("app_label", app_label), ("model__in", models), _connector=Q.AND)
+                    for app_label, models in needed_models.items()
+                ),
+                _connector=Q.OR,
+            )
+            cts = self.filter(condition)

But there is a strong point about having a correct database lookup. So If you prefer it that way, I can modify the PR, as your patch also fixes the issue ...

I'd prefer to filter out stale content types in advance. This should remove an overhead of fetching unnecessary data.

... (after adding from django.db.models import Q and changing models.Q by Q

Ahh, django.db.models is masked by get_for_models()'s models argument, that's unfortunate.

Ok! I've changed the code and amended the commit in order to have a clean PR.

@bielfrontera Thanks for updates :+1: Can you allow edits from maintainers? I wanted to push cosmetic edits:
diff --git a/tests/contenttypes_tests/test_models.py b/tests/contenttypes_tests/test_models.py
index 7f88a89e5c..a96e12e69f 100644
--- a/tests/contenttypes_tests/test_models.py
+++ b/tests/contenttypes_tests/test_models.py
@@ -252,16 +252,13 @@ class ContentTypesTests(TestCase):
         """
         Displaying content types in admin (or anywhere) doesn't break on
         leftover content type records in the DB for which no model is defined
-        anymore, nevertheless it exists a model with the same name in a
-        different app.
+        anymore, even if a model with the same name exists in another app.
         """
-        # Create a stale ContentType that matches the name of an existing model
-        ContentType.objects.create(
-            app_label="contenttypes",
-            model="author",
-        )
+        # Create a stale ContentType that matches the name of an existing
+        # model.
+        ContentType.objects.create(app_label="contenttypes", model="author")
         ContentType.objects.clear_cache()
-        # get_for_models should work as expected for existing models
+        # get_for_models() should work as expected for existing models.
         cts = ContentType.objects.get_for_models(ContentType, Author)
         self.assertEqual(
             cts,

@bielfrontera Thanks for updates +1 Can you allow edits from maintainers? I wanted to push cosmetic edits:

added your user as maintainer on the forked repo. I didn't find how to allow edits to django maintainers!


chore(utils): About tool functions

If feel unnecessary, please close this!

Awesome, thanks for the improvement! I left a few comments. Let me know what do you think.


How can I slurp from code?

I want to replicate
jq -s 'group_by(.["product"]) | map({cid: .[]["product"]......

and
jq -s '.' | jq -S 'sort_by(."publisher-id",....

from code, i.e using gojq as a library. How can I go about this? I can see that gojq knows what slurping is from here https://github.com/itchyny/gojq/blob/main/_gojq
however I am not sure how I can call this option from code rather than using gojq as a client?
I don't think that gojq can do
--sort-keys / -S:
Output the fields of each object with the keys in sorted order.

(from jq docs)
right?
How would I go about replicating the sort here in code?
Thanks

Where do you read the input values from? Collect them into a slice (an array) and use the value as the argument of gojq.Query.Run function. About the sorting key option, it depends on how you output maps. You can normally use gojq.Marshal, or if you want to implement yourself, collect the map keys and sort them.

hey @itchyny thanks for responding.
I am reading a file that each line is a (string) JSON input. I am passing each line one by one to

hey @itchyny thanks for responding.
I am reading a file that each line is a (string) JSON input. I am passing each line one by one to gojq like so
func ParseLine(rule, content string) (string, error){
	query, err := gojq.Parse(rule)
	if err != nil {
		log.Fatalln("error passing rule ", err)
	}
	var input interface{}
	json.Unmarshal([]byte(content), &input)
	inputX, _ := json.Marshal(input)
	fmt.Println(string(inputX))
	iter := query.Run(input) // or query.RunWithContext
	v, ok := iter.Next()
	fmt.Println("v: ", v)
	if !ok {
		return "", errors.New("end of file")
	}
	if err, ok := v.(error); ok {
		log.Fatalln("v is an error ", err)
		return "", err
	}
	b, err := json.Marshal(v)
	return string(b), err
}

where rule is group_by(.["client-id"]) | map({cid: .[]["client-id"], sum: map(.["pred-req"]) | add}) | unique
an example input line could be:
{"unix-ns":1666173821005104000,"cluster-id":"dev-client","deployment-group":"","client-id":"four","supplier-id":"supplier","publisher-id":"publisher","media-type":"media-type","device-type":"device-type","product":"MKT","hostname":"HOST","vm-id":"dev-vm","pred-req":1,"comp-bot":0,"comp-not-":1,"comp-revoke":0,"iab-":0,"iab-revoke":0,"prescan":0,"prescan":0,"prescan-revoke":0,"overtime":0,"latency-slo-violations":0,"version":"3.8.0-15-dirty","model":{"version":"test1","active":["default-model","one-model","two-model"]},"taxonomy":{}}

I get a failure with jq if not using slurp -s as well so I am pretty convinced that I need to be able to enable slurping in gojq here.
Sorting I can get to afterwards as I think I understand what you are saying about that, but can't progress until I can emulate the -s option in jq, in code

Create a JSON decoder from content and decode all the JSONs, collect them to a slice.
package main

import (
	"encoding/json"
	"fmt"
	"io"
	"log"
	"strings"
)

func main() {
	// content contains the entire input, not a line
	content := `{"x":1}
{"x":2}
{"x":3}
`
	dec := json.NewDecoder(strings.NewReader(content))
	var inputs []interface{}
	for {
		var input interface{}
		if err := dec.Decode(&input); err != nil {
			if err == io.EOF {
				break
			}
			log.Fatalln(err)
		}
		inputs = append(inputs, input)
	}
	fmt.Println(inputs)
	// query.Run(inputs)
}

thank you very much for this. I haven't quite understood how to order the output of the jq as you said with gojq.marshal but I ended up doing it with hash keys and maps. I think it works....


feature: support preserving focus with on_result_diagnostics_quickfix

Using on_result_diagnostics_quickfix with open set to true causes the quickfix list to open and take focus, which can be distracting. I'd like to be able to configure Overseer to keep (or specifically, restore) the focus to the previous window once the quickfix list is opened. I don't see a way to do this currently, but digging around the source it looks like the desired behavior is obtainable simply by appending " | wincmd p" to the command used to open the list.
Plumbing this through properly (with an option such a keep_focus that defaults to false to preserve existing behavior) doesn't seem that involved, so if this is a feature that seems acceptable I'd be happy to send a PR for it. If on the other hand there's a way to do this already that I've missed, please let me know.

Adding another parameter to control this sounds reasonable. It may be more complicated than just adding wincmd p because if the quickfix is already open prior to that command, we don't want to switch back to the previous window. Might make more sense to just store current window and restore it via lua API

#237 was merged and addresses this. Thank you!


Improve building with fake

I did recently some build stuff and use FAKE again. I'm not fully satisfied though, because I have FAKE only installed inside of the projects and not globally for all.
I have to have a deeper look at how to use FAKE with solutions.

The last time I looked into this, FAKE required Paket and Paket had a Mono dependency.
As far as I understood it this dependency was removed a few months ago but my tests didn't really work.

Building works with FAKE now.
.NET Core 3.0 and dotnet tools rock! ^.^
Done in #25


Member resignation

Hello friends! I just wanted to open an issue to get this started. I've been thinking about this a lot, and it's probably better if I resign from the CommComm for now. This isn't the last you'll see of me, but I also have this huge imposter syndrome around remaining a voting member when my own activity is mostly limited to taking meeting notes. My job requirements recently have made showing up to some of these morning (PST) meetings more difficult as well, so I haven't always even been doing that.

Members who do not participate consistently at the level of a majority of the other members are expected to resign.

I would love to stick around and show up to some meetings sometimes as an observer still. There are tons of opportunities to participate, I just don't think I've personally made enough time for node lately to meet the high standard that all of y'all set. I wanted to be honest about where I'm at. Thank you for understanding. ❤

I just want state my respect for the level of self-awareness about your personal bandwidth @JemBijoux. Your work and time, as with members of this project, is valuable and appreciated! And past this point, that effort will continue to be as valuable as it ever was. 💛

@JemBijoux thanks for your work to date!  Whatever level you can participate at is appreciated and since we are all volunteers, its understood that it will change based on our other demands.

@JemBijoux you are, and always will be, an immensely valued member of the project! Please do come as an observer when you can – we’ll miss you.


External component has thrown an exception (Windows Server 2019)

It can run on Windows 10, but throw an exception on the windows server IIS. The error log is shown as below.
ErrorLog
2023-11-13 09:20:11,821 [ERROR] [(null)] [8] [IISHttpServer] [?] Connection ID "17582052951160001624", Request ID "8000145b-0001-f400-b63f-84710c7967bb": An unhandled exception was thrown by the application.
System.Runtime.InteropServices.SEHException (0x80004005): External component has thrown an exception.
   at Sdcb.PaddleInference.Native.PaddleNative.PD_PredictorRun(IntPtr pd_predictor)
   at Sdcb.PaddleInference.PaddlePredictor.Run()
   at Sdcb.PaddleOCR.PaddleOcrDetector.RunRaw(Mat src, Size& resizedSize)
   at Sdcb.PaddleOCR.PaddleOcrDetector.Run(Mat src)
   at Sdcb.PaddleOCR.PaddleOcrAll.Run(Mat src, Int32 recognizeBatchSize)
   at Sdcb.PaddleOCR.QueuedPaddleOcrAll.ProcessQueue()

I turned stdoutLogEnabled on, and the error log is shown as below.
fail: Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer[2]
      Connection ID "17870283331606688933", Request ID "800034a6-0002-f800-b63f-84710c7967bb": An unhandled exception was thrown by the application.
      System.Runtime.InteropServices.SEHException (0x80004005): External component has thrown an exception.
         at Sdcb.PaddleInference.Native.PaddleNative.PD_PredictorRun(IntPtr pd_predictor)
         at Sdcb.PaddleInference.PaddlePredictor.Run()
         at Sdcb.PaddleOCR.PaddleOcrDetector.RunRaw(Mat src, Size& resizedSize)
         at Sdcb.PaddleOCR.PaddleOcrDetector.Run(Mat src)
         at Sdcb.PaddleOCR.PaddleOcrAll.Run(Mat src, Int32 recognizeBatchSize)
         at Sdcb.PaddleOCR.QueuedPaddleOcrAll.ProcessQueue()

Environment
Windows Server 2019 Standard
IIS 10.0.17763.1
.NET 6 Web API
PackageReference Include="Sdcb.PaddleInference" Version="<IP_ADDRESS>"
PackageReference Include="Sdcb.PaddleInference.runtime.win64.mkl" Version="2.5.1"
PackageReference Include="Sdcb.PaddleOCR" Version="2.7.0"
PackageReference Include="Sdcb.PaddleOCR.Models.Local" Version="2.7.0"

Can you try my another project OpenVINO.NET: https://github.com/sdcb/OpenVINO.NET
Also provided PaddleOCR inference but it's better.


Multicall Beta Test

Discord or Telegram handle
Telegram: @sonatruc
Testnet DAO address
Testnet DAO address(es) used during the test: sancho-learnnear-dao.sputnikv2.testnet
what did you like the most?

Best tool serves DAOs.
UX (Create proposals with multicall) very good and modern (drag & drop).

What did you like least?

Very difficult to distinguish if there are many columns

Very hard for know card select and edit. Should make high light card selected

Should have alert confirm when user delete card or column. Because icon delete and clone very near.

Didn't have notification status when search and create proposals.

Didn't have page for user. Very confused when click user name for sign out

What was the most difficult?

Must read document for get value some fields input when create proposals.
Very hard for non developer or crypto understand unit of gas and deposit. Should add tooltip explain its.

What did you find easy?

Have cards template in tab build.

On a scale from 1 to 5 (1 = not good, 5 = really good)

The instructions on DAO setup were easy to follow: 5
The instructions on multicalls usage were easy to follow: 5

finally, do you have some other thoughts you'd like to share?

I created bug validate Function arguments when have multiple card on form https://airtable.com/. But may be i give wrong telegram account by discord. Here is correct infor: Telegram: @sonatruc

Thank you for the feedback, we will further discuss it here:

[duplicate] #88
[duplicate] #78
[duplicate] #81
[duplicate] #73
#95


Apiss 16 - Remaining updates for the Design Guidelines 4.0

The remaining updates for the Design Guidelines 4.0 including adding new sections and removing some sections.  Can you let me know if I should remove table 5 from the Query Operators section?  I was unsure since that is now the only operator if it was still needed.

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

@stephenfuqua I am ready for a re-review, I believe I took care of all of your requests here


Remove un-needed python dependencies

Reviewing #5100 I realized that we have dependencies like defusedxml but there are no from/import defusedxml in our entire code base. So, we should remove them and rely on the proper package installation to install the proper version of it (to keep the compatibility they want).
Probably the same happens with lxml and httplib2 and more. Please, consider finding out other cases here.

NOTE: if they are required for some reason that it's not explicit in the code (because it's an optional package for another package but make it works faster/better/whatever we need to add a comment above the requirement explaining it.

@humitos  Can I work on this issue?

@Mike-Dai Yes. Go ahead.


Update harvest to latest

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} left no offenses.
[x] The commit message includes the cask’s name and version.

The appcast still works fine. It’s missing a single version, which isn’t uncommon. Developers sometimes do that to provide the upgrade in phases.
https://github.com/caskroom/homebrew-cask/pull/43579


coping files to/from host takes too long.

What happened? What did you expect to happen?
Hey,
I'm using the following code to sync a large (~800MB) tar file between a container and the host.
    ctr.WithMountedFile(tarFile, d.Host().File(hostFile)) // import
    ....
    create new tar
    ....
    ctr.File(tarFile).Export(ctx, exportDir); // export

On GitHub actions, using dagger v0.7.1,
It takes almost 90 seconds to import the file and 4 minutes to export it.
Any way to export a file faster?

Any thoughts?

@itaischwartz, did you manage to reproduce with @kpenfound's examples ? Interested to have a repro from your side to dig into that 🙏

Alright, we need a repro, I'm pretty sure it comes from buildkit and not directly Dagger, I might be able to repro the same issue with a simple Dockerfile if we could have an actual repro case

@TomChv let's try to generate 10k small files and see how the latest version - v0.8.4 handles it. Remember that there was a big change in v0.8 which should have addressed this:

https://github.com/dagger/dagger/pull/5415

I do not see any issue with 10K files, it's really fast!
My repro code:
	ctx := context.Background()
	c, err := dagger.Connect(ctx)
	if err != nil {
		log.Fatalln(err)
	}
	defer c.Close()

	ctr := c.Host().Directory("files-5285")

	_, err = ctr.Export(ctx, "cpy-files-5285")
	if err != nil {
		log.Fatalln(err)
	}

And the following shell script to generate 10K random files
#! /bin/bash
for n in {1..10000}; do
    dd if=/dev/urandom of=file$( printf %03d "$n" ).bin bs=1 count=$(( RANDOM + 1024 ))
done

Here's the output using dagger run
▽ │ host.directory files-5285
█ │ [3.85s] upload files-5285
┣ │ [3.74s] transferring eyJvd25lcl9jbGllbnRfaWQiOiJ1Yjk1b2Fqemhpc2VwYWpsNDMybGRhdnd6IiwicGF0aCI6ImZpbGVzLTUyODUiLCJpbmNsdWRlX3BhdHRlcm5zIjpudWxsLCJleGNsdWRlX3BhdHRlcm5zIjpudWxsLCJmb2xsb3dfcGF0aHMiOm51bGwsInJlYWRfc2luZ2xlX2ZpbGVfb25seSI6ZmFsc2UsIm1heF9maWxlX3NpemUiOjB9:
█ │ [0.66s] copy files-5285
┻ │
  █ [2.26s] export directory to host cpy-files-5285

@gerhard Should we close this issue until we can have a repro case?

Maybe I'm missing context here but this operation became much faster with the v0.8.0 release when the API server moved from the CLI to the engine container. I see the issue was created 3 months ago so that can be why you can't repro it now.

We were thinking the same with @gerhard

Thank you @TomChv for confirming that with 10k files this takes ~3s to upload & ~2s to download. I used your repro.

Note
My Engine is remote, I connect via WiFi (sync-inc at 175Mbps - lastTxRate):

In my case it took 13s to upload & 10s to download 10k files with random sizes, 185MB in total:

I am seeing a similar throughput with Go SDK v0.7.1 (Engine v0.6.1), same versions that @itaischwartz was using - the difference is WiFi signal fluctuation:

I went a step further and ran the same directly on the host that runs Dagger, so that there is no network involved:

Go SDK v0.8.4 - 1s to upload & 0.5s to copy 10k files
Go SDK v0.7.1 - 1s to upload & 0.5s to copy 10k files

I don't see any improvement for 10k files between Go SDK v0.7.1 & v0.8.4.
After both repros - thank you @TomChv & @kpenfound - this one is OK to close.


MVT Clone Issues (Ongoing and need further help)

If the featureLookup queries returns nothing, the whole layer is drawn. In this PR i've got it so it removes the style drawer and then disables the tickboxes.
You should be able to use the layer style, rather than defining the style in the infoj entry too. In this PR, i've got it so that it takes the layer style, but please can we amend this so it takes the entry style if provided, otherwise uses the layer style (to remove duplicated code).
The data isn't drawn to the layer even though information is returned from the featureLookup query. In my PR, i've got it console logging this to test.

I also just committed back to this repository to fix any issue i noticed whereby is the featureLookup query returns null, the checkbox is rightly disabled. But then, if you zoom out beyond the zoom extent and back in, the checkbox becomes enabled but doesn't do anything - as no data. So i added a check for featureLookup in the chkZoom function and return when it's null to prevent this.


SYNTAX ERROR might not be the best error message for syntax that mimics but is inconsistent with javascript.

E.g. [...xs, x] causes SYNTAX ERROR on the comma, and if you're a bit dense more familiar with javascript it can take a while to see problems like this.
The only supported list spread syntax is [x, ...xs] because it will be desugared into ocaml x :: xs before optionally being transpiled to javascript. Which isn't quite as obvious for those who use reason more as a syntax flavor of javascript, and therefore don't care as much about the middle ocaml step and the limitations that imposes.

Merging into the list concat issue!
I think we should at least warn about this, cc @SanderSpies

Reopening this to track the warning. The other issue can track the actual syntax change, if we decide so.


feat(cli): Add format --check

Adds a --check option to format which will error if there are files which do not match prisma format. Useful in CI and pre commit hooks. Closes #4267

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

Let me know if there is anything I need to change/update to get this in. Happy to help here.

@Druue Thanks for the tips, I implemented your suggestions and rebased. Let me know if there is anything else I can help with!

Awesome stuff, thank you so much!


can't create VM as GPG isn't executing

It seems to be stuck in getting a IP-address.
before that it complains about gpg missing a library
$ ./gpg
dyld: Library not loaded: /usr/local/lib/libintl.8.dylib

@kryton I include homebrew gpg binary which I see needs that library file, need to look for other options, if not will recommend user to install it by himself.

took gpg binary away, it now will successfully download ISO files without it


Update GitHub namespace and Go module package

The Nixery main Git repo has moved from github.com/google/nixery to github.com/tazjin/nixery.
So change

respective URL targets in the README
respective URL targets on the https://nixery.dev/ website
the package path of the Nixery Go module

I'm not quite sure how to test the latter, so I hope CI would catch any breakage this might cause.

I'm not quite sure how to test the latter, so I hope CI would catch any breakage this might cause.

Huh, line 1: test: too many arguments isn't quite what I expected when I wrote that. I guess that means

the output of gofmt -l . was more than one word, when no output at all (i.e., a string of length zero) was expected
that output should probably be quoted before being passed to test -z, so that it counts as a single argument

I have on my todo-list to integrate Nixery into the TVL depot and serve the current repo as a josh export from code.tvl.fyi. This would again completely change the URLs, so I'm not sure if updating this here is really worth it :thinking:
Don't worry about fixing the CI setup here, the TVL repo has a treefmt setup which will cover this without any extra config :)


Patners social media connection

Description
Social Media Connect for Partners
Fixes #213
Type of change

[x] Bug fix (non-breaking change which fixes an issue)

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation

I only added links for unesco. Let me go ahead and add the rest.


[hi] Add content/hi/docs/contribute/analytics.md

Hello!
This PR is a part of ongoing hi localization effort
Hindi localization of page: content/en/docs/contribute/analytics.md
/language hi
@anubha-v-ardhan Can you please review

The commits here are coming from different merge requests and it seems you wanted to work on Hindi localization but bought in all the localization labels and the large number commits.

Can you please guide me . Should I select "main" as base branch first while creating pull request

The commits here are coming from different merge requests and it seems you wanted to work on Hindi localization but bought in all the localization labels and the large number commits.

Can you please guide me . Should I select "main" as base branch first while creating pull request

The commits here are coming from different merge requests and it seems you wanted to work on Hindi localization but bought in all the localization labels and the large number commits.

Can you please guide me . Should I select "main" as base branch first while creating pull request

Refer to this branch and create a PR for the mentioned directory
Link: https://github.com/kubernetes/website/tree/dev-1.22-hi.1/content/hi
One thing you can do is create a new PR for this, as this has become quite cumbersome and a lot of other PRs and labels to remove. But I would request to @anubha-v-ardhan to view this and approve.

@Shubh28698 I was also facing the same issue. In your case your branch is not correct. Try to make a PR from dev-1.22-hi.1. Your PR should look something like this. Ping me if it's still unsolved. I agree with @Polokghosh53 that you should create another fresh PR.

Thanks @Polokghosh53 @kranurag7 @Shubh28698
The general rule is to make branches from the branch to which the PR will be eventually merged.
For eg: In this case you will need make branches from dev-1.22-hi.1 (not main) on your forked repo and work on that.
Since dev-1.22-hi.1 is far behind main, making a PR from a branch (or directly main) that was made from main will carry all those commits with them as happened here.
Also note that while we welcome and value your effort to contribute to HIndi localization, we will need a lot of time to accept it as our first priority is to launch the localization on k8s.io. Once thats done, our reviewers will be available to review this PR.
As of fixing this PR, you can do either of these solutions

Doing a rebase and dropping the unwanted commits
Starting a new branch off dev-1.22-hi.1 and git cherry-pick each commit you want to include and make a new PR.
Easiest make a whole new branch from dev-1.22-hi.1 and copy paste the changes from here and make a new PR.

Feel free to ask if you have any confusions

/remove-area blog release-eng
/remove-language de en es fr id it ja ko pl pt ru uk vi zh
/remove-sig release


Feature request: Variables inside the flowchart

Hi.
I would like to be able to use variables inside the flowchart.
I have a rather big multidatacenter infrastructure diagram in both production and staging environments. In Grafana i have an "environment" variable and it would make sense if url-names, servernames etc could change when I switch the environment variable.
Thank you.

Hi scaarup,
Thx for your feedback, what is your version ?
Yes, you could. granafa team is very long to publish a new version (>1month).
In version 0.4.0, variables is implemented, try it
https://algenty.github.io/flowcharting-repository/CHANGELOG.html
https://algenty.github.io/flowcharting-repository/ARCHIVES.html

Hi algenty.
Thanks for a quick reply. I am on an old version 0.2.5. But it is actually the latest one referred to by Grafana here: https://grafana.com/plugins/agenty-flowcharting-panel.
But awesome to see its already there, I will try the 0.4.0 :).

I am 0.4.0 now. It is not clear to me how to accomplish what I want. In draw.io I have a simple text-box. I have tried with the variable syntax ${}, but that is not translated.

ok,
Many possibility,
you can pass current var by link with "Add params to link".
You can add variable in xml definition like value="${myvar}"
You can add variable value by text mapping in type string
Example, Open it in large screen

BG,
Arnaud

Since 0.3.0, you can rename id of your shapes/arrows for more maintenance,
see
https://algenty.github.io/flowcharting-repository/STARTED.html

If I update the value="" directly in the XML it seems to work. However it doesn't switch when I switch the variable.
Also if I edit the diagram in draw.io and save it, the variables are not resolved at all. The text is just saying ${env}.

draw.io transform ${} with http code

its good for you ?
I can upgrade it with your suggestion

Verify xml if value have ${}
I close ticket
Dont forget to star project if u like it.
BG
Arnaud


Provide Means to Re-Map Fields that are 'In Use'

We have some scenarios where if we remove a field from the visual dataset (or rename it), we 'lose' the ability to access it. In the case of the name change, because we want to use the display name of the field, this isn't visible when the dataset is re-evaluated.
What we need to try and deliver is a way of tracking which dataset columns might be used in field encodings and expressions, attempt to detect if these are no longer in the metadata, and provide a simple dialog (almost like the new template dialog) where we can re-assign missing fields.
This could also be an option to "safely" re-assign fields to encodings through a UI.

This is delivered in ad552b1 - we'll treat anything new as bugs or enhancements.


Upgrade to play 2.6

Refactor ServerProxy to individual handers

UrlFormEncodedHandler converts url form encoded and delegates to ApplicationJsonHandler
ApplicationJsonHandler upcasts json based on apibuilder spec and delegates to GenericHandler
GenericHandler proxies call to underlying services and streams response back

[info] Run completed in 21 seconds, 149 milliseconds.
[info] Total number of tests run: 39
[info] Suites: completed 10, aborted 0
[info] Tests: succeeded 39, failed 0, canceled 0, ignored 0, pending 0
[info] All tests passed.
[info] Passed: Total 39, Failed 0, Errors 0, Passed 39
[success] Total time: 22 s, completed Feb 2, 2018 11:56:43 AM```

thanks - removed in https://github.com/flowvault/proxy/pull/225
On Fri, Feb 2, 2018 at 12:56 PM, Jean Logeart<EMAIL_ADDRESS>wrote:

@jlogeart commented on this pull request.
In app/controllers/ReverseProxy.scala
https://github.com/flowvault/proxy/pull/224#discussion_r165713946:

@@ -95,19 +96,19 @@ class ReverseProxy @Inject () (
}

   case Authorization.Unrecognized => Future.successful(

   request.responseError(401, "Authorization header value must start with one of: " + Authorization.Prefixes.all.mkString(", "))

   request.responseUnauthorized( "Authorization header value must start with one of: " + Authorization.Prefixes.all.mkString(", "))

Extra space in responseUnauthorized( "...
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/flowvault/proxy/pull/224#pullrequestreview-93702249,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADC08LE4kqaaY52i3XICntgm0_j5MhCks5tQ0xGgaJpZM4R3Nla
.

--
*MICHAEL BRYZEK - *Founder / CTO
m.917.494.1197 <917.693.6074>  |  www.flow.io
Global Ecommerce now has Flow


Create wildcard_string_matching.cpp

Added wildcard string matching problem, solved using dynamic programming
Checklist

[x] Added description of change
[x] Added file name matches File name guidelines
[x] Added tests and example, test must pass
[x] Added documentation so that the program is self-explanatory and educational - Doxygen guidelines
[x] Relevant documentation/comments is changed or added
[x] PR title follows semantic commit guidelines
[x] Search previous suggestions before making a new one, as yours may be a duplicate.
[x] I acknowledge that all my contributions will be made under the project's license.

Notes:

@kvedala I have done all the changes please review it now.


"menuSelect" is not working in IE

Hi! I have a documentation issue on InstantSearch.js. I could not find what I was looking for on the page "[menuSelect](https://community.algolia.com/instantsearch.js/v2/widgets/menuSelect.html

menuSelect is expected to work in IE, could you share a bug reproduction?
Note that the code snippets use the ES6 syntax, which might break on that browser. In this case, you may want to replace consts with vars.

Thank you for your reply.
Please check follwoing sandbox.
https://codesandbox.io/s/v81oyyw657
I can't show menuselect widget on IE with url https://v81oyyw657.codesandbox.io/

I know CodeSandBox is not IE-compatible.
You can only check my code with CodeSandBox in Chrome.
And if you run my code on IE, it is not working.
Here is my code for menuselect.
const searchDiscover = instantsearch({
indexName: 'demo_ecommerce',
searchClient: algoliasearch('B1G2GM9NG0', 'aadef574be1f9252bb48d4ea09b5cfe5'),
});
const widget = instantsearch.widgets.menuSelect({
container: '#brand-list',
attribute: 'brand',
limit: 10,
templates: {
defaultOption: 'See All Brands',
},
});
searchDiscover.addWidget(widget);
searchDiscover.start();
Why my code is not runing on IE?
Please kindly check my code and give me your advice.
Thank you.

As I said in my first answer, you need to replace the consts to vars. You might also need to remove any trailing coma if you want to support old versions of IE.

Thanks a million Francoi!
I have tried as you tought, but still not working.
please check my following file and let me know what is wrong.

<link rel="manifest" href="./manifest.webmanifest" />
<link rel="shortcut icon" href="./favicon.png" />

<link
  rel="stylesheet"
<EMAIL_ADDRESS>/>
<link rel="stylesheet" href="./src/index.css" />
<link rel="stylesheet" href="./src/app.css" />

<title>ais-ecommerce-demo-app</title>

InstantSearch.js e-commerce demo

Brands

I wrote above code in one file "index.html" and run it with Chrome and IE.
In Chrome, it works well, but in IE it didn't work.
Please kindly check my code and give me your advice.
Thank you.

Which version of IE are you using? What error is thrown?

IE is version 11.523.17134.0
And menuselect is not displayed on IE.
Thank you.

After checking the implementation, we use Array.prototype.find, which is not supported by IE by default.
For the widget to work in IE, you can add polyfills to your page:

We'll make sure to document that on the new documentation website.


BayerLuetticke "DCT-Copula-Illustration" requires seaborn, which is not installed

The DCT-Copula-Illustration notebook in BayerLuetticke requires the seaborn dependency, which is not in the requirements.

This is another example of our need to determine how to handle requirements.  At the moment BayerLuetticke is in HARK so the relevant requirements would be those of Econ-ARK.  But there is also a /binder file at the root level of HARK, which has a requirements.txt file that includes seaborn.  So if you launch it as a mybinder notebook, the seaborn requirement is satisfied.
Could you make a PR to update the econ-ark "master" requirements to include seaborn?  It is so widely used that it should be available to users even if it is not invoked in any of the core code of HARK.

I made a different case here before reading your comment:
https://github.com/econ-ark/HARK/pull/442#issuecomment-564114071
By the "econ-ark "master" requirements" I guess you mean the requirements of the installed econ-ark package, which are defined at the top level of the HARK repository?
This is in itself a bit confusing, since Econ-ARK refers to a larger project, if I'm not mistaken.

By the "econ-ark "master" requirements" I guess you mean the requirements of the installed econ-ark package, which are defined at the top level of the HARK repository?

I meant literally the requirements that are installed when you do a pip or conda install of econ-ark.  At the moment, I believe those come from HARK, if you're not sure where they come from, I'm sure Shauna knows.

Yeah pip install Econ-ark will install requirements from HARK, so we need to add Seaborn to requirements and setup.py for HARK.

@MridulS, why don't you go ahead and do that.  I've asked Shauna to make a new release and we might as well get this in it.

Done https://github.com/econ-ark/HARK/pull/454
@llorracc do we have a standard release cycle document somewhere? which ideally contains our standard procedure and a future schedule?
something like https://github.com/networkx/networkx/blob/master/RELEASE.rst
https://github.com/sympy/sympy/tree/master/release#release

We don't have a standard release cycle; partly that's because the pace at
which releases that are "worth it" (in terms of having meaningful
improvements) comes very unevenly.
I could be persuaded that we should have a regular schedule, if that is
something that is viewed as good practice ...
On Tue, Dec 10, 2019 at 5:43 PM Mridul Seth<EMAIL_ADDRESS>wrote:

Done #454 https://github.com/econ-ark/HARK/pull/454
@llorracc https://github.com/llorracc do we have a standard release
cycle document somewhere? which ideally contains our standard procedure and
a future schedule?
something like
https://github.com/networkx/networkx/blob/master/RELEASE.rst
https://github.com/sympy/sympy/tree/master/release#release
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/econ-ark/HARK/issues/451?email_source=notifications&email_token=AAKCK75AQMJYLMZKFSWWSBTQYALSPA5CNFSM4JZABB5KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGRHACA#issuecomment-564293640,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKCK7YESI2UZ5IA3EGBCU3QYALSPANCNFSM4JZABB5A
.

--

Chris Carroll

Fixed with #454

@MridulS - release documentation is on the wiki:
https://github.com/econ-ark/OverARK/wiki/Release-Management
https://github.com/econ-ark/OverARK/wiki/Release-History
No future schedule though - we haven't been updating with enough frequency for that.


setBase is working?

Hi,
I try to use "setBase" and nothing happens, actually i don't understand the functionality of it.
what did I try:
<app>
    <router>
        Slash Home
        Hash Home

        <route path="/home">

Slash Home

        </route>
        <route path="/#/home">

Hash Home

        </route>
    </router>

</app>

And using setBase(`#`) or setBase(`/') or <router base="#"> or <router base="kajshdf"> does the same
EDIT:
After some debug, i was able to use it with <router base={"#"} > instead of <router base="#" >
But this broke my first request, because "replaceBase" function at "rawth.replaceBase" can't remove base from the default initialRoute. Once my normalized base is = "http://localhost:3000#" and the current initial route is "http://localhost:3000/", the replace doesn’t match.
So i'm passing as attribute an initialRoute too, like:  <router base={"/#"} initialRoute={window.location.hash.replace('#', '') || '/'}> this way my routes are http://localhost:300/#/home

@01oseluiz thank you for your feedback this issue has been fixed in v7.1.0 please use <router base="#">.


Enable flake8 rule W292 No newline at end of file

https://www.flake8rules.com/rules/W292.html
Description
This PR adds checking for flake8 rule W292.  A blank line has been added where needed.

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[X] Cleanup (Code refactoring and cleanup, that may add test cases)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[ ] Major
[X] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[ ] Minor
[X] Trivial

Screenshots (if appropriate):
How Has This Been Tested?

Looks like lint checks are passing, merged based on that.


update readme grammer and picture

please remove all files named .DS_Store

Codecov Report

Merging #293 (85a8561) into main (72149ec) will not change coverage.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@           Coverage Diff           @@
##             main     #293   +/-   ##
=======================================
  Coverage   55.47%   55.47%
=======================================
  Files          49       49
  Lines        4389     4389
=======================================
  Hits         2435     2435
  Misses       1954     1954

Flag
Coverage Δ

rust
55.47% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Evaluate migration management packages

These show up with a quick google
https://github.com/kunklejr/node-db-migrate
https://github.com/theoephraim/node-pg-migrate

node-pg-migrate uses env variables which i like, but it's postgres specific