Legion_python -m can not find the module

I have a sub-module jupyter under legate module, so the file directory is legate/jupyter/__main__.py.
If I run
legate -m legate.jupyter

then legion_python can not find the module.
If I run
legate -m jupyter

then it works.
I think the issue comes from here, it tries to find the file named legate.jupyter/__main__.py
https://github.com/StanfordLegion/legion/blob/master/bindings/python/legion_top.py#L378-L382

@elliottslaughter Do we need to do something more general then just translate the nested module string into a directory structure? Does Python require that all submodules live in nested directories (I think it does)?

What about Python Eggs? Maybe we don't care—and I'm fine with writing this off—but I'm pretty sure those break these assumptions.
But otherwise yes, that is my understanding.

As far as I understand it, eggs have been replaced by wheels. @bryevdv does that sound right for you? Can you think of any cases where we might need to support eggs for legate/cunumeric?

I can't think of one. Here is a relevant observation in an issue that proposes deprecating egg uploads on warehouse

As of Dec 2021, eggs have accounted for less than 1% of built distribution uploads.

I haven't personally run into an egg in 10+ years, but if there was any group that might land in that 1% tail I guess it wouldn't surprise me to learn it was HPC users somehow.

@eddy16112 Try with this patch and see if it works:
diff --git a/bindings/python/legion_top.py b/bindings/python/legion_top.py
index 6e82a0f8f..128175067 100644
--- a/bindings/python/legion_top.py
+++ b/bindings/python/legion_top.py
@@ -371,7 +371,7 @@ def legion_python_main(raw_args, user_data, proc):
     elif args[start] == '-m':
         if len(args) > (start+1):
             mod_name = args[start+1]
-            filename = mod_name + '.py'
+            filename = os.path.join(*mod_name.split('.')) + '.py'
             found = False
             for path in sys.path:
                 for root,dirs,files in os.walk(path):

@lightsighter No, it does not work for me. Here is my fix, let me know if there is any issue with my fix
diff --git a/bindings/python/legion_top.py b/bindings/python/legion_top.py
index 498219304..4ba5476c3 100644
--- a/bindings/python/legion_top.py
+++ b/bindings/python/legion_top.py
@@ -410,9 +410,16 @@ def legion_python_main(raw_args, user_data, proc):
     elif args[start] == '-m':
         if len(args) > (start+1):
             mod_name = args[start+1]
+            mod_dir = mod_name.split(".")
+            if len(mod_dir) > 1:
+                prefix_path = os.path.join(*mod_dir[0:-1])
+                mod_name = mod_dir[-1]
+            else:
+                prefix_path = ""
             filename = mod_name + '.py'
             found = False
             for path in sys.path:
+                path = os.path.join(path, prefix_path)
                 for root,dirs,files in os.walk(path):
                     if mod_name in dirs:
                         main_py = os.path.join(root, mod_name, '__main__.py')

It looks fine to me. Can you put that in a branch and let it run through CI while we wait for @elliottslaughter to comment?

A couple comments:
Isn't mod_dir[0:-1] the same as mod_dir[:-1]? I think the latter is more idiomatic.
I know it's not technically part of what's being modified here, but the use of os.walk is really odd here. Normally, os.walk recurses down into the directory tree. I don't think that's the behavior we want here? Does sys.path implicitly include all recursively contained subdirectories under those explicitly named? The code structure here makes it hard to tell whether we are doing this recursion or not; I see a break at the bottom of the loop body, but I also see several continues that make it look like somtimes it may keep going.
Beyond that the change looks fine to me and I think we can take it as long as it passes CI.

sys.path contains directories in PYTHONPATH, but not subdirectories, so that's why we need os.walk to walk through all subdirectories recursively.

I'm still confused.
Suppose PYTHONPATH=/asdf and we're told to load module a.b.c. Python parses PYTHONPATH into a sys.path value of ["/asdf"]. We iterate this list, get "/asdf". Now we need to check for two (and only two) possible files: /asdf/a/b/c.py and /asdf/a/b/c/__main__.py. This can be accomplished with os.path.exists or similar, and does not require recursive search (or even listing the directory).
If there happens be be a /asdf/qwer/a/b/c.py, it would not be correct to load this (if I understand the semantics of PYTHONPATH correctly). Recursive search is not implied.
Am I missing something?

I thought /asdf/qwer/a/b/c.py could be loaded correctly. I looked though the history of this file, looks like os.walk was already there when the python binding was implemented. @lightsighter do you think if this os.walk is a bug https://github.com/StanfordLegion/legion/blob/master/bindings/python/legion_top.py#L377 ? If yes, I am going to fix it by taking @elliottslaughter 's solution.

Go ahead and take the new solution as long as it passes all our tests and can still run the cuNumeric test suite. I think I was using os.walk to approximate directory search without looking at the Python path, but it was more than two years ago when I wrote that code so I don't remember exactly. If we have a better solution then we should use it.

Here is the fix, will wait for the CI results.
https://gitlab.com/StanfordLegion/legion/-/commit/6176e8bcdb1b7f8abd5e378f6784311d9472076c

I ran a test to confirm this is Python's expected behavior:
$ mkdir -p asdf/qwer/a/b
$ touch asdf/qwer/a/b/c.py
$ PYTHONPATH=$PWD/asdf python3 -m a.b.c
/Library/Developer/CommandLineTools/usr/bin/python3: Error while finding module specification for 'a.b.c' (ModuleNotFoundError: No module named 'a')
$ PYTHONPATH=$PWD/asdf/qwer python3 -m a.b.c

So yes, this looks like the correct fix to me.

The CI is passed, and I have updated the fixes into the master.

@eddy16112 Did you test with the cuNumeric test suite?

@eddy16112 Did you test with the cuNumeric test suite?

Yes, but I do not think cuNumeric tests -m.

Ok, wasn't sure if we used it for any of the test suite execution. I think some of the test suite might use the -m feature, but I am not sure.

We do not seem to have any Python tests for -m in Legion. Maybe we should add some?

We can test pygion tests as -m examples.hello, but we are missing the coverage for __main__.py.

I have tests for this in the test suite now. I will close once CI passes.

Tests broke, so I pulled the commit back out and put it in a branch until I figure out what's wrong. Hopefully just missing a path or something.

@elliottslaughter I pushed a fix for your tests. https://gitlab.com/StanfordLegion/legion/-/commit/3dd3170e768c968b8fc88299cf88349e5228876a
It should work now.

Nice, thanks!
It passed CI so I merged to master.

CI looks good on master.
I think that's it from my end.


Nested snippet expansion not working

Expanding the $ completion and then trying to use the \frac completions results in the cursor losing any placement rules after tabbing into the second brace pair. Pressing tab again will not bring you to outside the frac braces, rather just insert a tab inside the second pair.

Nested snippets would be up to the snippets provider


[MM-19529] Gracefully handle when plugin bundle reloads at runtime

Summary
When a plugin is disabled then re-enabled, a websocket event is sent to the client saying to fetch the bundle again. This can cause the Jira plugin bundle to malfunction, and makes client-side plugin functionality break.
The webapp side of the plugin should be resilient to this and should allow for loading of the plugin multiple times.
Ticket Link
https://mattermost.atlassian.net/browse/MM-19529

If you're interested please comment here and come join our "Contributors" community channel on our daily build server, where you can discuss questions with community members and the Mattermost core team. For technical advice or questions, please  join our "Plugin: Jira" community channel.
New contributors please see our Developer's Guide and our Plugins Guide.

Closing issues due to inactivity. This issue can be re-opened with more interest from our community.


feat: Introduce support for Live-VOD mode for live streams

The changes included are :

Introduced Live-VOD (Video on Demand) mode similar which is enabled when user moves the seekbar during live stream.
Live stream indicator tag is made clickable and now has the same functionality as that of native app wherein it'll restore the live state.
Seekbar is always visible now and during Live stream, it's progress position value will be that of the video duration.

Great, thanks! expect it available in v8 soon :)

If you'd like to take on other issues just let me know!

@PierfrancescoSoffritti Absolutely.

issue 132
this one is similar to the one you just sent
issue 71
this one is also about implementing features from the YouTube app, but probably a bit more challenging

@PierfrancescoSoffritti What a coincidence ! I was actually going through this https://github.com/PierfrancescoSoffritti/Android-YouTube-Player/issues/132 very same ticket.
Continuing the discussion there.

I've been testing the new live controls, it's really hard to ensure consistency. The available buffer for some live videos appears to be of 2 hours, for other is different. Therefore is basically impossible to map correctly the video's duration on the seekbar.
Almost all the time, when manually seeking to the start or end of the seekbar the behavior is inconsistent.
I have been trying to find a solution to these problems but I haven't been able to. Do you have any ideas? If it's not possible to solve these issues I'm afraid I will have to revert the changes :/

@PierfrancescoSoffritti You're absolutely right. So the seekbar behaviour is directly dependent on how on the total duration of the live session and not precisely when the actual broadcast started. This will definitely create inconsistency.
I think you'll have to go ahead revert the changes :/ Sorry about that !

No worries, it is quite tricky actually. The buffer is behaving like a sliding window, not sure yet how we could implement it.


Use consistent error handling and Add DefaultFaultRule to catch unhandling errors.

In many places, we aren't catching unhandled errors. We can follow these steps: https://community.apigee.com/articles/23724/an-error-handling-pattern-for-apigee-proxies.html

Closing as the project has been refactored and this bug issue no longer applies - please see https://github.com/apigee/openbank#previous-versions


olm,catalog: only validate the resources we label

*: don't duplicate owner references
Signed-off-by: Steve Kuznetsov<EMAIL_ADDRESS>
olm,catalog: only validate the resources we label
Each controller can see (and, therefore, can label) a separate set of
GVRs. When we start up, detecting if any OLM-related resource needs
labelling means that one controller may start, detect a need for
labelling a resource it cannot itself label, detect that it's labelled
everything it can, and restart. If the other operator is stuck for
whatever reason, this leads the first controller to enter
CrashLoopBackOff and break OCP upgrade.
Signed-off-by: Steve Kuznetsov<EMAIL_ADDRESS>

@stevekuznetsov I removed the downstream jira from the title of this upstream PR

LGTM. Probably need to investigate e2e failures to see if they're flakes or due to this PR.
@joelanford PTAL at the PR - thx

Still LGTM. Joe?

 • [FAILED] [73.452 seconds]
Operator Condition [It] OperatorCondition Upgradeable type and overrides
/home/runner/work/operator-lifecycle-manager/operator-lifecycle-manager/test/e2e/operator_condition_e2e_test.go:35

  Captured StdOut/StdErr Output >>
  waiting 104.190706ms for catalog pod operator-conditions-e2e-2j9rz/catalog-2ktfc to be available (for sync) - NO_CONNECTION
  waiting 1.009379511s for catalog pod operator-conditions-e2e-2j9rz/catalog-2ktfc to be available (for sync) - IDLE
  waiting 396.888151ms for catalog pod operator-conditions-e2e-2j9rz/catalog-2ktfc to be available (for sync) - CONNECTING
  waiting 19.600061548s for catalog pod operator-conditions-e2e-2j9rz/catalog-2ktfc to be available (for sync) - TRANSIENT_FAILURE
  waiting 22.600388182s for catalog pod operator-conditions-e2e-2j9rz/catalog-2ktfc to be available (for sync) - READY
  probing catalog catalog-2ktfc pod with address catalog-2ktfc.operator-conditions-e2e-2j9rz.svc:50051
  skipping health check
  waiting 189.477209ms for catalog pod operator-conditions-e2e-2j9rz/catalog-2ktfc to be available (for sync) - READY
  probing catalog catalog-2ktfc pod with address catalog-2ktfc.operator-conditions-e2e-2j9rz.svc:50051
  skipping health check
  waited 188.344521ms for catalog pod catalog-2ktfc to be available (after catalog update) - READY
  waited 1.600263746s for catalog pod catalog-2ktfc to be available (after catalog update) - IDLE
  waited 1.200102082s for catalog pod catalog-2ktfc to be available (after catalog update) - TRANSIENT_FAILURE
  catalog updated
  waiting 199.550634ms for catalog pod operator-conditions-e2e-2j9rz/catalog-2ktfc to be available (for sync) - READY
  probing catalog catalog-2ktfc pod with address catalog-2ktfc.operator-conditions-e2e-2j9rz.svc:50051
  skipping health check
  Using the kubectl kubectl binary
  Using the artifacts/operator-conditions-e2e-2j9rz output directory
  Storing the test artifact output in the artifacts/operator-conditions-e2e-2j9rz directory
  Collecting get catalogsources -o yaml output...
  Collecting get subscriptions -o yaml output...
  Collecting get operatorgroups -o yaml output...
  Collecting get clusterserviceversions -o yaml output...
  Collecting get installplans -o yaml output...
  Collecting get pods -o wide output...
  Collecting get events --sort-by .lastTimestamp output...
  << Captured StdOut/StdErr Output

  Timeline >>
  created the operator-conditions-e2e-2j9rz testing namespace
  created the operator-conditions-e2e-2j9rz/operator-conditions-e2e-2j9rz-operatorgroup operator group
  STEP: This test proves that an operator can upgrade successfully when Upgrade condition type is set in OperatorCondition spec. Plus, an operator chooses not to use OperatorCondition, the upgrade process will proceed as expected. The overrides spec in OperatorCondition can be used to override the conditions spec. The overrides spec will remain in place until they are unset. @ 01/31/24 16:28:03.84
  STEP: Create a catalog for csvA, csvB, and csvD @ 01/31/24 16:28:03.84
  STEP: Create an nginx details deployment @ 01/31/24 16:28:03.84
  STEP: Create an nginx details deployment @ 01/31/24 16:28:03.84
  STEP: Create an nginx details deployment @ 01/31/24 16:28:03.84
  STEP: set a simple default strategy if none given @ 01/31/24 16:28:03.84
  STEP: Populate owned and required @ 01/31/24 16:28:03.84
  STEP: set a simple default strategy if none given @ 01/31/24 16:28:03.84
  STEP: Populate owned and required @ 01/31/24 16:28:03.84
  STEP: set a simple default strategy if none given @ 01/31/24 16:28:03.84
  STEP: Populate owned and required @ 01/31/24 16:28:03.84
  STEP: Create the initial catalogsources @ 01/31/24 16:28:03.84
  Creating catalog source catalog-2ktfc in namespace operator-conditions-e2e-2j9rz...
  Catalog source catalog-2ktfc created
  STEP: Await csvA's success @ 01/31/24 16:28:47.779
  waiting for CSV operator-conditions-e2e-2j9rz/a-rhlbb-stable to reach condition
  error getting csv operator-conditions-e2e-2j9rz/a-rhlbb-stable: clusterserviceversions.operators.coreos.com "a-rhlbb-stable" not found
  waited 2.998616915s for csv operator-conditions-e2e-2j9rz/a-rhlbb-stable - Installing (InstallWaiting): installing: waiting for deployment a-rhlbb-stable to become ready: deployment "a-rhlbb-stable" not available: Deployment does not have minimum availability.
  waited 3m33.783553067s for CSV operator-conditions-e2e-2j9rz/a-rhlbb-stable: to be in phases [Succeeded], in phase Installing (InstallWaiting): installing: waiting for deployment a-rhlbb-stable to become ready: deployment "a-rhlbb-stable" not available: Deployment does not have minimum availability.
  waited 1.600759552s for csv operator-conditions-e2e-2j9rz/a-rhlbb-stable - Succeeded (InstallSucceeded): install strategy completed with no errors
  waited 1.600762296s for CSV operator-conditions-e2e-2j9rz/a-rhlbb-stable: to be in phases [Succeeded], in phase Succeeded (InstallSucceeded): install strategy completed with no errors
  STEP: Get the OperatorCondition for csvA and report that it is not upgradeable @ 01/31/24 16:28:52.378
  STEP: Update the catalogsources @ 01/31/24 16:28:52.388
  STEP: Attempt to get the catalog source before creating install plan(s) @ 01/31/24 16:29:08.378
  STEP: csvB will be in Pending phase due to csvA reports Upgradeable=False condition @ 01/31/24 16:29:08.577
  waiting for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable to reach condition
  waited 201.341252ms for csv operator-conditions-e2e-2j9rz/b-nzcpj-stable - Pending (RequirementsUnknown): requirements not yet checked
  waited 201.349377ms for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable: to have reasons [OperatorConditionNotUpgradeable], in phase Pending (RequirementsUnknown): requirements not yet checked
  waited 408.946205ms for csv operator-conditions-e2e-2j9rz/b-nzcpj-stable - Pending (OperatorConditionNotUpgradeable): operator is not upgradeable: the operator is not upgradeable: test
  waited 408.950893ms for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable: to have reasons [OperatorConditionNotUpgradeable], in phase Pending (OperatorConditionNotUpgradeable): operator is not upgradeable: the operator is not upgradeable: test
  STEP: Get the OperatorCondition for csvA and report that it is upgradeable, unblocking csvB @ 01/31/24 16:29:09.188
  STEP: Await csvB's success @ 01/31/24 16:29:09.2
  waiting for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable to reach condition
  waited 178.484551ms for csv operator-conditions-e2e-2j9rz/b-nzcpj-stable - Pending (OperatorConditionNotUpgradeable): operator is not upgradeable: the operator is not upgradeable: test
  waited 17.00064196s for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable: to be in phases [Succeeded], in phase Pending (OperatorConditionNotUpgradeable): operator is not upgradeable: the operator is not upgradeable: test
  waited 435.567688ms for csv operator-conditions-e2e-2j9rz/b-nzcpj-stable - InstallReady (AllRequirementsMet): all requirements found, attempting install
  waited 435.572839ms for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable: to be in phases [Succeeded], in phase InstallReady (AllRequirementsMet): all requirements found, attempting install
  waited 563.877107ms for csv operator-conditions-e2e-2j9rz/b-nzcpj-stable - Installing (InstallSucceeded): waiting for install components to report healthy
  waited 563.87914ms for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable: to be in phases [Succeeded], in phase Installing (InstallSucceeded): waiting for install components to report healthy
  waited 400.920194ms for csv operator-conditions-e2e-2j9rz/b-nzcpj-stable - Installing (InstallWaiting): installing: waiting for deployment b-nzcpj-stable to become ready: deployment "b-nzcpj-stable" not available: Deployment does not have minimum availability.
  waited 400.922819ms for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable: to be in phases [Succeeded], in phase Installing (InstallWaiting): installing: waiting for deployment b-nzcpj-stable to become ready: deployment "b-nzcpj-stable" not available: Deployment does not have minimum availability.
  waited 1.600221574s for csv operator-conditions-e2e-2j9rz/b-nzcpj-stable - Succeeded (InstallSucceeded): install strategy completed with no errors
  waited 1.600224088s for CSV operator-conditions-e2e-2j9rz/b-nzcpj-stable: to be in phases [Succeeded], in phase Succeeded (InstallSucceeded): install strategy completed with no errors
  STEP: Get the OperatorCondition for csvB and purposedly change ObservedGeneration @ 01/31/24 16:29:12.38
  STEP: to cause mismatch generation situation @ 01/31/24 16:29:12.38
  Cleaning catalog source catalog-2ktfc
  Deleting config map catalog-2ktfc-configmap...
  Deleting catalog source catalog-2ktfc...
  waiting for the catalog source catalog-2ktfc-bjvvk pod to be deleted...
  Done cleaning catalog source catalog-2ktfc
  [FAILED] in [It] - /home/runner/work/operator-lifecycle-manager/operator-lifecycle-manager/test/e2e/operator_condition_e2e_test.go:164 @ 01/31/24 16:29:13.79
  collecting the operator-conditions-e2e-2j9rz namespace artifacts as the 'OperatorCondition Upgradeable type and overrides' test case failed
  collecting logs in the ./artifacts/ artifacts directory
  tearing down the operator-conditions-e2e-2j9rz namespace
  resetting e2e kube client
  deleting operator-conditions-e2e-2j9rz/operator-conditions-e2e-2j9rz-operatorgroup
  deleting <global>/operator-conditions-e2e-2j9rz
  deleting package-manifest-e2epjzjc/package-manifest-e2epjzjc-operatorgroup
  deleting <global>/package-manifest-e2epjzjc
  deleting package-manifest-e2eq5fzh/package-manifest-e2eq5fzh-operatorgroup
  deleting <global>/package-manifest-e2eq5fzh
  deleting package-manifest-e2elldcm/package-manifest-e2elldcm-operatorgroup
  deleting <global>/package-manifest-e2elldcm
  deleting package-manifest-e2esf77w/package-manifest-e2esf77w-operatorgroup
  deleting <global>/package-manifest-e2esf77w
  deleting package-manifest-e2e88vf4/package-manifest-e2e88vf4-operatorgroup
  deleting <global>/package-manifest-e2e88vf4
  garbage collecting CRDs
  deleting crd a-rhlbbx7ntt.cluster.com
  << Timeline

  [FAILED] Timed out after 0.101s.
  Expected success, but got an error:
      <*errors.StatusError | 0xc0010e5a40>:
      Operation cannot be fulfilled on operatorconditions.operators.coreos.com "b-nzcpj-stable": the object has been modified; please apply your changes to the latest version and try again
      {
          ErrStatus: {
              TypeMeta: {Kind: "", APIVersion: ""},
              ListMeta: {
                  SelfLink: "",
                  ResourceVersion: "",
                  Continue: "",
                  RemainingItemCount: nil,
              },
              Status: "Failure",
              Message: "Operation cannot be fulfilled on operatorconditions.operators.coreos.com \"b-nzcpj-stable\": the object has been modified; please apply your changes to the latest version and try again",
              Reason: "Conflict",
              Details: {
                  Name: "b-nzcpj-stable",
                  Group: "operators.coreos.com",
                  Kind: "operatorconditions",
                  UID: "",
                  Causes: nil,
                  RetryAfterSeconds: 0,
              },
              Code: 409,
          },
      }
  In [It] at: /home/runner/work/operator-lifecycle-manager/operator-lifecycle-manager/test/e2e/operator_condition_e2e_test.go:164 @ 01/31/24 16:29:13.79

Can't grok how that could be our fault

/retest


How do we signal data being loaded?

We need to establish a site-wide standard for signaling that data is being loaded into the page. This applies to page-load data loading (like populating the gene search selectors) as well as search results. No reason to have different behavior, data loading is data loading.
From @alancleary :

I still need clarification on the behavior of the "Loading form data"/"Form data loaded element", i.e. do we want it to
be an alert or will just a spinner do. If we go for the alert, do we want it to close automatically? And if so, should
that happen immediately after the form data is loaded or should there be a pause so users will see that the load was
successful. Currently you can close it using the close "X" button on the right.

So here's a list of options, chime in @alancleary @adf-ncgr @cann0010 @ctcncgr  @jd-campbell and myself:

loading spinner, vanishes after data loaded [Sam, Andrew]
alert (text box with words) that closes automatically after data loaded
alert (text box with words) that closes after a standard delay after data loaded [Alan]
alert (text box with words) that persists until user closes it using an X button

Abstention: Steven

I vote for a standard spinner that vanishes after data load. I'll be happy to find a list of spinners from which to choose the official one.

I think alerts are the way to go because we can add contextual information, such as what type of data is being loaded or what happened if there aren't any results, i.e. no results were found or something went wrong. Since we want this to be consistent it might make sense to use formatted strings for the messages so they can be context specific. For example, `Loading ${dataType}` and `Successfully loaded ${dataType}`.
I like the idea of the alerts automatically closing after a successful load, perhaps after a brief pause to show a success message just so if the user is watching the loading alert doesn't just disappear without any indication of "exit status". This means the success message probably shouldn't contain any new information, like how much data was loaded.
Regarding the spinner, in general I think we should use whatever we can from UIkit for stylistic consistency, so here it would be UIkit's Spinner element which draws the spinner as an SVG that can be scaled to arbitrary size.

Regarding the spinner, in general I think we should use whatever we can from UIkit for stylistic consistency, so here it would be UIkit's Spinner element which draws the spinner as an SVG that can be scaled to arbitrary size.

Thumbs up on that if we choose to use a spinner.

I'd vote for a spinner while waiting for query response to be returned and an alert if no data is returned (either because a query produces no results or else an error condition). I don't think a successful query response with data needs further commentary.

I trust you guys. Low-information voter here with respect to "alert options."

I'd vote for a spinner while waiting for query response to be returned and an alert if no data is returned (either because a query produces no results or else an error condition). I don't think a successful query response with data needs further commentary.

The no-data-returned is handled by a "0 results found" text box, not a temporary alert. I think that's what you want. So I'll say you vote for the loading spinner while data is being requested. But the no-data-returned response is, I suppose, something we should standardize as well. I don't think that's very controversial.

OK, thanks- any reason not to just use the same text box for error messages?

It sounds like we're leaning towards a spinner with no alert when loading data and only showing an alert with a message when no data is loaded. Any opinions on where this spinner should go in the UI, its size, etc? Having it in place of the alert above the element it corresponds to would be easiest to implement. Covering the part of the page where the content will go once it's loaded with a semiopaque color and a spinner in the middle is an approach I've noticed on websites in general.

OK, I've implemented a loading component that provides a spinner overlay when loading data and shows alerts when no results are loaded. The code is in the loading-element-prototype branch of the web-components repo. Here's a screenshot showing an example of a spinner being overlaid on the gene search form while the data for its selectors is loading. Similarly,  a spinner is being overlaid on the search results as if the user had triggered a new search or clicked the next/previous page button.

If a spinner's load event fails or no data is loaded, then an alert will be shown, like what the components are already doing, but I've the loading component uses generic messages. Here's an example where the gene search form's data failed to load and no results were found for a search:

Let me know what you think.

works for me, thanks

Last call for input on the loading component I prototyped. If it's not shot down by tomorrow then it's getting merged.

This has been implemented for a while, and a draft spec has finally been added: issue #17. Please continue the conversation there if necessary. Closing


sort stack

automatically sort by layer.route.length to avoid ordering issues (with an AppOption to disable)
Alternative: sort(app) | app.sort()

Could I suggest also passing in an option { priority: number } - as typically you want the longest route handler first but the shortest middleware first...

More thinking, sorting is the job of a router, and supporting it breaks the middleware ordering concept.


feat: Enhance debug_traceTransaction to work with Opcode Logger

Description:
With the implemenation of /api/v1/contracts/results/{transactionIdOrHash}/opcodes in the web3 module of hedera-mirror-node, we can now utilise it by extending our support for debugging transactions.
This PR:

makes the neccessery changes to the debug_traceTransaction endpoint
adds acceptance tests for calling debug_traceTransaction with TracerType.OpcodeLogger.

Related issue(s):
Fixes #2431
Notes for reviewer:

Checklist

[ ] Documented (Code comments, README, etc.)
[ ] Tested (unit, integration, etc.)

LGTM, one small nit


Sortable list duplicating elements

Stack:

gravity-ui/uikit 5.20.0
nextjs 12.1.6
react 18.2.0

In a production build of my application (easier to reproduce with 6x slowdown in devtools), sortable list component starts to duplicate active elements. I think it has something to do with the fact that gravity-ui uses outdated library which is no longer supported (https://github.com/clauderic/react-sortable-hoc).
https://github.com/gravity-ui/uikit/assets/63800083/5f7fd23b-a5de-4474-a230-f7f5df53b474
There is an issue about migration (https://github.com/gravity-ui/uikit/issues/1108) with zero activity(

In another project with webpack dev server it is reproduced consistently in dev also


feat(server): flash neoX

Looking forward to trying this out!

We ve been using it in prod since friday it works great!
Also, it's simplifies the batching logic a LOT!


Added graphing snippets

Fixed Issue : #47
advanced_graphing is a module  created by integrating :

matplotlib
seaborn
scipy
plotly

Key points

it is very easy it use as functions have suitable default values , and made using multiple libraries
Complex graphs can be made easily
adding feaures such as background , legends etc implicitly

Darsh Agrawal , GSSoC 24 extd Contributor

@DarshAgrawal14 add the test cases too

graphing_example.py is a testing file itself , it shows working of every function using a example test case

@UTSAVS26, please let me know if any further changes are needed. Otherwise, I would appreciate it if you could merge the PR.

@DarshAgrawal14 create proper test cases file in test folder.

@UTSAVS26 Done ! added a test case file in test folder


Java logo isn't showing up when badge is embedded in markdown

Are you experiencing an issue with...
shields.io
🐞 Description
The Java logo is missing here:

🔗 Link to the badge
https://github.com/eureka-cpu/eureka-cpu
💡 Possible Solution
No response

Is this because it's missing from SimpleIcons? Here at line 992 there is not slug for Java.

Thanks for reaching out but going to close.
SimpleIcons had to remove that icon from their set, see https://github.com/simple-icons/simple-icons/pull/7378 and #8066


Bridgman 2nd order

A couple of second order derivatives are calculated already, additionally it would be good to calculate the derivatives used by Bridgman for his 2nd order derivatives transformation table. These are:

(∂²v/∂p²)T
(∂²v/∂p∂T)
(∂²v/∂T²)p
(∂cp/∂T)p = (∂²h/∂T²)p

Other base sets would be possible (and easier to calculate from an Helmholtz EoS), but these are the ones suggested by Bridgman.
http://dx.doi.org/10.1103/PhysRev.3.273

Closing this issue, as all derivatives can be calculated from the given table A.2.


semver validate exit codes

Hi community,
I'm raising an issue to see if anyone else would be interested in having exit codes returned when using the 'validate' command.
Since this tool is built with CI in mind, it would be useful if a pipeline, pre-commit hook, etc. could be failed due to a non-zero exit code on version validation, rather than just echoing valid/invalid.
What does everyone else think? Is there some gotcha that I didn't consider? Maybe it could be controlled with a flag to start with, e.g. --exit-code, so as to not break pipelines currently using this tool.
Thanks for your consideration

(I'm sure that I, somewhere, wrote a comment about this sort of change; but, for the life of me, I can't find it.  So, here it goes again)
As of today, the semver-tool communicates results on stdout. stderr gets error messages and the return status is only used for errors (e.g. unknown options, malformed arguments, ..).  It is relatively easy to write shell scripts that "convert" stdout text to return codes using test. However, outside of script contexts (i.e. execs from other tools, can't write shell functions to wrap validate, ..), a return code might be useful.
if [ $(semver validate 0.0.0) == 'valid' ]
then
. . .

One advantage of this scheme is that non-zero return codes mean there is an error and exceptional processing can be triggered.  For CI pipelines, this might be aborting the build: the pipe itself is broken. And (for those who don't write CI pipeline tests!), coding errors don't get "swallowed".  E.g. misspell "validate" and suddenly all versions are "invalid". Also, the code above makes the logic explicit.
Now, there are other points of view.  See, for example, the man page for cmp.  Also, see the @fsaintjacques comment to issue #61.  While the comment suggests using the return value, this was not implemented and the subsequent PR #62 was accepted :-).
So, I see (for now), a few questions to discuss and resolve:

Advantage of consistency and backward compatibility (use stdout exclusively) vs. open the door to simpler and sometimes more flexible return codes?
What breaks?  I think a lot breaks if non-zero codes start being used.  A command line option seems clunky and about as verbose as the test syntax.  An environment variable (hidden global variable that breaks stuff!)?
If return codes are introduced, we need to define different codes for different situations: real errors vs results. Do we use negative values?  For errors?  For the results of compare? (e.g. -1,0,1)?  Find and follow models from existing commands?
If return codes are not introduced, maybe publish example wrappers?

One advantage of this scheme is that non-zero return codes mean there is an error and exceptional processing can be triggered. For CI pipelines, this might be aborting the build:

If the version isn't valid, I do indeed want to break the build.  I can of course script this in my pipeline (or Bazel, or Make) but then I might as well just use the regex you provide and I don't need semver at all.  I'd love to move away from the NPM provided semver (for about 100 reasons) but why not make this tool more like other *nix tools?

If the version isn't valid, I do indeed want to break the build. I can of course script this in my pipeline (or Bazel, or Make) but then I might as well just use the regex you provide and I don't need semver at all. I'd love to move away from the NPM provided semver (for about 100 reasons) but why not make this tool more like other *nix tools?

Yes, it could be that an invalid version string indicates a fatal error/bug in the build system.  It could also mean, for example, that some versions (some libraries, legacy, ..) of software are not using semantic versioning and need to be handled differently.
As for being more *nix-like.  Well, it's not clear.  Searching around, I found a fair amount of information about standardized exit code values (e.g. https://tldp.org/LDP/abs/html/exitcodes.html).  The common usage is for errors, not results; but there are exceptions (e.g. "cmp").  When errors and results are mixed, it pretty much becomes necessary to have some sort of explicit test to distinguish between an error (e.g. for "file not found", cmp returns "2") and a result (cmp returns "1" if file contents differ).  For me, it's hard to see how things become shorter or simpler.
I still think that the questions posed above make sense and anyone motivated to provide a PR should address them.

@ranger6 - Agreed and I certainly didn't mean to imply that my use-case was THE use- case :)  I also wasn't recommending this behavior for the other functions this program provides and was rather suggesting that failing a version check is indeed an error.  I'm only using this to make sure that when our developers try to tag a release/pre-release, they've followed semantic versioning and while it kills me a little on the inside, I can keep validating using the NPM package.

No, I'm sure that you were not claiming your use case as "the way".  And, adding an error exit code to "validate" does not necessarily imply adding it to other sub-commands: as I mentioned, it "opens the door".  If the model for validate is to drive logic from exit values rather than stdout values, then why not also (for example) for "compare"?
But as I understand your (reasonable) point of view: "failing a version check is indeed an error".  In your use case (someone not using semantic versioning as required), it is an error .. at the level of your build system logic.
For my example use case (support for legacy code), it's not an error.  I would use the result (stdout or exit code) for branching logic.  I would not want or expect the command to raise an exception that I'd catch to abort the build.  In fact, if a real error condition was present (e.g. command not found because the PATH not set correctly), I would like a (fatal) error raised (and maybe caught/handled in an exceptional manner).  As a practical matter, in Bash, the real error conditions get swallowed when they occur in "if", "while", "test" structures.  So, it is hard to distinguish errors from non-semantic versions .. in Bash.
The good news and argument for going forward with the exit code proposal is that I believe there may not be so many situations where the logic would be broken (in Bash scripts).  Mostly because the use of the "validate" sub-command as it operates today will mostly be in conditional expressions such as:
if [ $(semver validate $version) == 'valid' ]
then
    (handle valid semver)
else
    (handle invalid semver)
fi

Above, if "validate" is mis-spelled, or semver is not on the path; the else section will be executed (no exception raised!). So, if you add a non-zero exit code to "validate", the code still works.
Now the bad news:
validity=$(semver validate $version)

If one adds a non-zero exit code to "validate", an error will be raised.  If I'm catching errors (e.g. trap ... ERR), I'll be getting a new fatal error.
To finish up: semver does consider a non-semantic version string to be an error when the sub-command expects a valid semantic version string.  E.g. semver get major x.0 will return a non-zero exit code.  It's just that the "validate" sub-command expects either valid or invalid strings.  To abort a CI pipeline due to an invalid string is only slightly ugly:
semver get major $version > /dev/null
P.S. Thanks for the engagement!


Correct spelling

sdl-events-events.ads:

Change spelling from "Constroller" to "Controller"

Thanks, corrected in the current source. Not going to pull as my source is quite different now.


Allow job history entries with no end date

I currently work at Microsoft - when I add this to my job history with a blank end date, it is pre-populated with the current date. I'd prefer no end date, or a 'current' option.

Made end date field optional. Leaving blank indicates job is current.
harrischristiansen/MembersPortal/master 12e37c04


Stop polyfilling Promise in Jest tests

Summary:
We've used this Promise polyfill in Jest setup since at least 2015 (3ff3987), when native Promise implementations were either non-existent or new and unstable. We no longer need it.
It causes issues with "modern" timers in Jest, as documented in:

https://github.com/facebook/react-native/issues/29303
https://github.com/facebook/jest/issues/10221

It can also obscure real issues due to its default silent handling of uncaught rejections, eg: D39418412.
Changelog:
[General][Changed] - Don't polyfill Promise in Jest setup
Differential Revision: D39417597

This is a breaking change, any hint how we should handle it now?

This is causing my tests that were passing with "jest": "^26.6.3" to error out with error.
ReferenceError: You are trying to `import` a file after the Jest environment has been torn down.
TypeError: _reactNative.Alert.alert is not a function

Please is there a fix for this


JwtSecurityTokenHandler mapping properties 'ShortClaimType' and 'json_type' should be smaller

Currently this property default is: "http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/ShortTypeName"
it should be:
shortTypeName or shortName.
Same with: 'json_type'
is: "http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/json_type"
it should be:
json_type

Doesn't meet bar.

Hey @brentschmaltz - probably you will shed some light on my issue? I'm adding custom property to "role" claim. It's added. But later when I access Properties of "role" claim in the request, it contains only this (default?) http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/ShortTypeName key with value "role". Nothing more. I have absolutely no idea, who and how might have erased the added property...

@alexandis can you share the code you use?

Sorry, been a while... I was already explained, that JWT token does not preserve Properties. So instead of this, I just created a new claim.


test: Add basic postgres database image test using pgTAP

Signed-off-by: Lakshmipathi<EMAIL_ADDRESS>

tested locally and introduced errors. Build fails with error like:


Fixes #367 (alignment error in item list)

The problem is that, internally, newsbeuter encloses the unread items with <unread>…</> tags (presumably for highlighting/colouring – they disappear at a later stage, though I do not know when) before calling the do_format function, which therefore works with a string of the wrong length and gets the alignment wrong.
My fix is to call do_format first, then (if needed) enclose the string with tags.
It works for me, but I don't understand the context too well, so please check & test.

Thank you for the pull request! I'll have to reacquaint myself with that part of the code before merging this, so the review will have to wait till the weekend.

Sorry, I dropped the ball on this one. Looks like it'll have to wait for a weekend again. This time I set myself a reminder though!

There were a few problems with your submission, and since it's so small, I just fixed it all myself. I mentioned you in the commit message, and you'll be credited in the changelog because you did the hard part—you figured out what exactly caused the bug.
Thank you!

Great! Thanks for taking the time to fix it properly.


[*] Run graph_reader err

When I run graph_reader, I got that:
python graph_reader.py

============
processing the graph: output/graph_testing_preprocessed_logs_M1-CVE-2015-5122_windows_h1.dot
"connection_fe80::fd1b:d78f:dab1:8114_ff02::1:2" -> "c:/windows/system32/svchost.exe_836"  [capacity="1.0", dip=ff02::1:2, dport=547, key=0, label=connect_26519780, sip=fe80::fd1b:d78f:dab1:8114, sport=546, timestamp=26519780, type=connect];
                                                                                ^
Expected "}", found '['  (at char 513267), (line:3595, col:92)
Traceback (most recent call last):
  File "graph_reader.py", line 29, in <module>
    G = read_dot(path)
  File "D:\Anaconda\lib\site-packages\networkx\utils\decorators.py", line 795, in func
    return argmap._lazy_compile(__wrapper)(*args, **kwargs)
  File "<class 'networkx.utils.decorators.argmap'> compilation 5", line 5, in argmap_read_dot_1
  File "D:\Anaconda\lib\site-packages\networkx\drawing\nx_pydot.py", line 78, in read_dot
    return from_pydot(P_list[0])
TypeError: 'NoneType' object is not subscriptable

by the way, I also found that, in file "graph_testing_preprocessed_logs_M1-CVE-2015-5122_windows_h1.dot" line 2535,
"dt.adsafeprotected.com/dt?adventityid=151939&asid=e516bb60-b043-4777-aae3-ed30f4d357c0&tv={c" [timestamp=30731585, type=web_object];

this URL ends with '{c', but I found it in "testing_preprocessed_logs_M1-CVE-2015-5122_windows_h1", the full URI been requested looks like this:
30731585,,,,,,,,,,request,dt.adsafeprotected.com/dt?adventityid=151939&asid=e516bb60-b043-4777-aae3-ed30f4d357c0&tv={c:xrw4abpingtime:-2time:160type:aim:{prf:{bea:10833bez:10835mfa:10838cma:10840ina:10840inz:10851pra:10851prz:10898si:10915poa:10918poz:10931cmz:10931mfz:10931loa:10979loz:10985lta:10991ltz:10991}}sca:{dfp:{df:4sz:728.90dom:body}}env:{gca:1sf:0gcd:{appl:0cnst:0glbl:namtdt:bozjzy6ozjzy6ahabbaab6aaaaaaaa}pom:1}clog:[{piv:0vs:or:lw:728h:90t:77},,,,,,,,-LB-

Are there any problems while preprocessing data? Or did I miss some steps while I replay this experiment?
:D

I believe this issue has to do with Networkx, if you start from raw logs and generated the graphs, ATLAS for that uses Networkx's nx.nx_pydot.write_dot(), unfortunately write_dot() in my experience, always mis-parse the generated .dot output file, so you have to do manual efforts on the generated graph file to fix these issues, you can do this be using the graph_reader.py file, which uses Networkx's read_dot(), and whenever there is a parsing problem you can fix it manually, you could see from the error message you posted that NetworkX pinpoint the error position in the graph file, so you just need to fix these issues manually one by one.

Sorry for ignoring your answer two days XD. I will try for fixing them anyway. If there are problems I will go back here. Thanks for answer :D.

Normally, the error message giveaway what you would need to change in your input file. Sometime it is a quote or double quotes, and sometime it is some kind of brackets, or maybe it complains about a specific characters, just change whatever line+column character in your input file (ATLAS graph file), in your example it says (Expected "}", found '['  (at char 513267), (line:3595, col:92)) that's the character you need to change.


Clarify help diag

Some of the help descriptions can be clean up, for example:
Pad the output with leading 0s [default: 0] should be changed to Pad the output with a number of leading 0s [default: 0]

Update the readme with the new printout too.


Cleanup BSP examples for nRFs

Use official pin names for microbit edge connector
Use board names for pins on feather

bors r+


Adding example of save and load results

This PR shows how a simulation can be stored in a file and how it can be loaded and rendered afterward. #33

Codecov Report
Patch and project coverage have no change.

Comparison is base (e9b8004) 69.74% compared to head (a6e1cd4) 69.74%.

:exclamation: Current head a6e1cd4 differs from pull request most recent head 93e0572. Consider uploading reports for the commit 93e0572 to get more accurate results

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #42   +/-   ##
=======================================
  Coverage   69.74%   69.74%
=======================================
  Files          27       27
  Lines        2036     2036
=======================================
  Hits         1420     1420
  Misses        616      616

see 1 file with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Add new file service

converting string

This change is

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


getInfo fct should be able to return all infos

What is the expected behavior?
I should be able to retrieve all the curl info when i use the getInfo method with no parameter.
What is the actual behavior?
Currently the opt parameter is required. It's painful if you want all infos.
Thanks.

Thanks for the suggestion!

Thanks !


Getting errors when trying to execute unit tests with special characters in the names via the test explorer

Describe the bug
I have a test project which uses Expecto and is using testTheory to create tests.
The generated test cases use the 'theory' data in the name, which resulted in some test cases whose name contains a =.
The test explorer is displaying these test cases ok:

If I use the test explorer to run the whole test set, or just run the 'CLASSIFICATION' test on its own then the tests run ok.
However, if I try to run any of the tests whose name contains an = then I get this error in the test output
An exception occurred while invoking executor 'executor://yolodev/expecto': Incorrect format for TestCaseFilter Error: Invalid Condition 'FullyQualifiedName=TitusMetadataParser Tests.parse a user metadata string with no value.CLASSIFICATION='. Specify the correct format and try again. Note that the incorrect format can lead to no test getting executed.

I then tried running the xUnit based tests from Avalonia.FuncUI and found that there are similar issues with test cases that have '(' or ')' in the name, for example running
https://github.com/fsprojects/Avalonia.FuncUI/blob/ffc04eb5f1f4865f48b1d0bac3c9cd9bb4bed33a/src/Avalonia.FuncUI.UnitTests/VirtualDom/VirtualDom.ModuleTests.fs#L151C19-L151C19

got me this error
[xUnit.net 00:00:00.47] Avalonia.FuncUI.UnitTests: Exception filtering tests: Incorrect format for TestCaseFilter Missing Operator '|' or '&'. Specify the correct format and try again. Note that the incorrect format can lead to no test getting executed.

No test matches the given testcase filter `(FullyQualifiedName=Avalonia.FuncUI.UnitTests.VirtualDom.ModuleTests.integration test 'VirtualDom.updateRoot' (from null to Button to TextBlock))` in s:\GitHubForks\MyFuncUI\src\Avalonia.FuncUI.UnitTests\bin\Debug\net6.0\Avalonia.FuncUI.UnitTests.dll

Fwiw, the text explorer in Visual Studio will run both of these cases.
Steps to reproduce
Try to use the test explorer to execute a single test whose name contains an = or (/)
Link to sample reproduction
The tests in the set at https://github.com/fsprojects/Avalonia.FuncUI/blob/ffc04eb5f1f4865f48b1d0bac3c9cd9bb4bed33a/src/Avalonia.FuncUI.UnitTests/VirtualDom/VirtualDom.ModuleTests.fs#L151C19-L151C19 can reproduce the issue.
Expected behaviour
The selected tests should pass.
Machine info

Operating system: Windows 10
Arch: x64
VSCode: 1.81.1
UI Kind: Desktop
Ionide: 7.10.0
Runtime: netcore
Dotnet version: 7.0.400

cc @farlee2121

I looked into escaping some when investigating the errors with NUnit and test names containing spaces.
There is a little documentation about escaping in filter expressions.

I had a go with a local debug build of Ionide using the change at https://github.com/Numpsy/ionide-vscode-fsharp/commit/272db3c607b491e11780e319586272901eae140b (using the same approach as the vstest escaping code at https://github.com/microsoft/vstest/blob/main/src/Microsoft.TestPlatform.ObjectModel/Utilities/FilterHelper.cs) and that did seem to fix the two errors I was getting (I haven't tried it on anything besides those).
Would that be the right sort of approach to be taking?

If it works for vstest, then it'll probably work for us too.
I don't see any apparent issues. It covers all the documented special characters, escapes the test name only (not chars intended as expression operators), and looks like it'd scale for long strings (i.e. a bunch of individually selected tests to run).

My issue looks fixed in 7.12.2, so I'll close this now.


[Question] Is this still maintained?

Hi, is this project still supported/maintained by Microsoft?

@hmrc87 this project was an experimental project which inspired the office Pipeline Caching tasks for Azure Pipelines. If possible, you should use the official tasks as they are officially maintained by Azure DevOps.

Thanks, however unfortunately not available for Azure DevOps Server :(


[2.5] Joining node to cluster fails on windows with docker 19.03.13

forward port for https://github.com/rancher/rancher/issues/30148

Verified on 2.5-head commit id: db350a63 and master-head - commit id: 1cb480f9

Deployed windows cluster - 1 node all roles - linux and 2 windows worker node - 1903 version and docker 19.03.13 installed
deployed workloads and ingress (work as expected)
windows with 19.03.12 also work


chore: sync release branch 0.11.x

What type of PR is this?
/kind feature
Any specific area of the project related to this PR?
/area libsinsp
Does this PR require a change in the driver versions?
What this PR does / why we need it:
This PR syncs the release branch with these PRs:

[x] https://github.com/falcosecurity/libs/pull/1095
[x] https://github.com/falcosecurity/libs/pull/1098
[x] https://github.com/falcosecurity/libs/pull/1100
[x] https://github.com/falcosecurity/libs/pull/1102
[x] https://github.com/falcosecurity/libs/pull/1103

Which issue(s) this PR fixes:
Special notes for your reviewer:
Does this PR introduce a user-facing change?:
NONE

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Please check that commits are right but I just rebased on master so we should be fine :)

/hold

we need to cheery pick also this https://github.com/falcosecurity/libs/pull/1105

done :) we should be fine!

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, LucaGuerra
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97,LucaGuerra]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: 6ee86dbb046ed0dec5a5a181c16e79fed0562138


feat: save vitest state in global variable

fix: #663
save vitest state in global variable for the nice error message.

may be can break the change, only cache the process in the global variable and reset it in every test file exec

I don't think 1538626 is needed. Users can still break it by re-assigning properties on process. So better error message is enough

ok!
but I don't know how re-assigning properties on process can break it. after run the test file always reset the process, and the test file are no preemption of process 🤔


Keybase chat won't run on Windows

I encountered a problem when using the Keybase chat on Windows. Some time ago, the application installed correctly and worked and now it's not running any more. The Shell is working, but not the Application Chat. It does appear in the Icon Menu, and when I click on it, it seems to appear in the taskbar, but when I click on that taskbar icon, nothing happens. I don't know if this is due to Windows, I've done some updates lately and I also had some Windows errors.

I've just seen it now, my issue is similar to #9150 . I also have Windows 7, but Professional Service Pack 1, 64-bit.

So, @IrinaNicolae , you can see the tray icon and menu, and even the task icon, but not the actual app window?

To test whether it might be drawn off the edge of the visible screen by mistake, could you click the task icon and hit Alt-Space, then "M", then wiggle your mouse around? Does anything appear?

Thank you @zanderz ! Yes, I can see the tray icon and the task menu icon, but not the tray menu and the actual app. But now, with the Move command it appears. Exactly, it freezes my screen for few seconds and then tray menu appears and I have to click the chat icon for the app to appear (if I click again the Task Menu Icon, the tray menu disappears again). And the tray menu appears in one out of 5 tries. You were right, I had the 'extended display option on'. Now I've switched to 'computer only', but still have the same issue. Maybe I should restart comp ('cause ). I'm glad that at least works with 'Move' and that it's there :).

One other question: are you using a non-default/non-Aero theme? That seems to cause problems for Electron apps: https://github.com/electron/electron/issues/1821#issuecomment-314049688

No, that's not my case, thanks.

unfortunately, I still have the issue, even tough I switch to computer display only. thanks for asking.

I am on WIndows 10.  I opened keybase to chat using the GUI just fine until recently.  Now nothing happens when I click on the icon.  I haven't upgraded recently.

@beakface can you do a keybase log send? Thanks.

@IrinaNicolae are you still having trouble seeing the app? What do you see if you quit from the tray icon and do %localappdata%\Keybase\Gui\Keybase.exe?

@beakface can you do a keybase log send? Thanks.

I tried doing so, and received the message "INFO ignoring UI logs: GUI main process wasn't found."


Fix sc.pp.filter_genes implementation for h5py.SparseDataset

Right now sc.pp.filter_genes(adata.X, min_counts=10) works correctly for dense file-backed anndata since np.sum(adata.X) here is supported by h5py.Dataset (see https://github.com/h5py/h5py/blob/master/h5py/_hl/dataset.py#L762).
However the same call on a SparseDataset fails with the following error:
~/.anaconda3/lib/python3.7/site-packages/scanpy/preprocessing/_simple.py in filter_genes(data, min_counts, min_cells, max_counts, max_cells, inplace, copy)
    230         number_per_gene = number_per_gene.A1
    231     if min_number is not None:
--> 232         gene_subset = number_per_gene >= min_number
    233     if max_number is not None:
    234         gene_subset = number_per_gene <= max_number

TypeError: '>=' not supported between instances of 'SparseDataset' and 'int'

because np.sum(adata.X) weirdly returns a SparseDataset without reducing any dimensions:

I can think of two solutions:

Set the __array_ufunc__  method of SparseDatset (https://docs.scipy.org/doc/numpy/reference/arrays.classes.html#numpy.class.array_ufunc) to None which would state explicitly that numpy operations are not supported. Next, we can print a proper error in filter_cells/filter_genes which states such operations are not supported.

Implement a sum  function (which loads the data into memory) which would enable us to perform gene/cell filtering options. We can print a warning here and inform the user that data is loaded to the memory. Something like following works:

def sum(self, *args, **kwargs):
    return self.value.sum(*args, **kwargs)

That sum behavior is real weird. I'm pretty surprised numpy doesn't throw an error about that one. I'd go as far as to rename this issue to be about that, since I know filtering sparse backed datasets probably won't work due to how subsetting is defined (it has a call to .copy(), which should throw an error for any backed dataset).
Did calling sum work before we had the big scipy update?

See also theislab/scanpy650

This operation is poorly defined for our current backed mode.
What would the expected result be? Does it return a view in backed mode? Do we need to write a new copy of the object somewhere?

For the time being, we should at least raise a better error message than the technical one people get now. Maybe just raise NotImplementedError('filter_genes does not yet(?) work in backed mode')

Maybe with your warning you can give the doubt ion mentioned here: https://github.com/theislab/scanpy/issues/650#issuecomment-499492569


[Umbrella] Improve KubeZoo's support for public clouds

What would you like to be added?
This is an umbrella tracking the items that improve KubeZoo's support for public clouds:

[ ] https://github.com/kubewharf/kubezoo/issues/34
[ ] https://github.com/kubewharf/kubezoo/issues/35
[ ] https://github.com/kubewharf/kubezoo/pull/29
[ ] https://github.com/kubewharf/kubezoo/issues/36

Why is this needed?
Public clouds typically provide managed K8s services (such as Volcano Engine VKE, AWS EKS, GCP GKE) and serverless container services (such as Volcano Engine VCI, AWS Fargate, Azure ACI).
Based on KubeZoo, Virtual Kubelet, and these cloud services, users can easily build a lightweight and powerful multi-tenant K8s platform on the public cloud, and further build their own SaaS services based on this platform. This is an example of building a serverless database service on public clouds.
Therefore, we need to improve KubeZoo's support for public clouds.

这个事项有进展吗？


Seems that RxJava will be required dependency :(

Unfortunately, with features #74 and #75 it will be easier to include RxJava as required dependency than creating wrappers for hiding access to RxJava classes if user don't use it.
But, I think it's okay for BambooStorage v2.0.0

Are there any capabilities to remove it in future?

Yes! Just extra work for us
пт, 6 марта 2015, 20:45, Dmitrii Nikitin<EMAIL_ADDRESS>
Are there any capabilities to remove it in future?
—
Reply to this email directly or view it on GitHub
https://github.com/pushtorefresh/bamboo-storage/issues/76#issuecomment-77602207
.


Harmonize javascript 6

What does this PR do?
This PR intend to harmonize the SDK JS 6 documentation.

Function signature with space function (arg1, arg2)
Example of returned value for code examples
Usage of async/await
Standard type names in lowercase/ Instantiable type names start with uppercase
<pre> syntax for types
Avoid the required column
Add API link
Add chevron when talking about method <argument> in description
Avoid sentences when describing arguments/properties in tables

 Snippets tests reports   SDK Version Tests overview      v6        v5                                   :heavy_minus_sign:                    v1        v1        v1


Add require section inside exports

Partially Fix: #177

Closing this out as we instead merged https://github.com/js-temporal/temporal-polyfill/pull/184.


Version bump to pick up the new node-pre-gyp

@ofrobots can you approve this PR?

I am not an admin on this repo, so I cannot approve.

Published v1.2.0


Testing: caches created in home-dir

While bumping wasmtime on Nixpkgs and doing my testing locally, some tests fail, seemingly due to the inability to create caches in the restricted home directory. Is there a quick patch that could create the caches in some TMP area?

   Compiling wasmtime-interface-types v0.12.0 (/private/tmp/nix-build-wasmtime-v0.12.0.drv-0/source/crates/interface-types)
    Finished test [unoptimized + debuginfo] target(s) in 2m 33s
     Running target/debug/deps/wasmtime_cli-157e2357c6012aef

running 0 tests

test result: ok(B. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/wasm2obj-7db3927f88b599cf

running 0 tests

test result: ok(B. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/wasmtime-3af992b7395f4cba

running 0 tests

test result: ok(B. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/wast-016e94f24192ecde

running 0 tests

test result: ok(B. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target/debug/deps/cli_tests-fb5f2814fa388a88

running 3 tests
Error: failed to create cache directory: /homeless-shelter/Library/Caches/BytecodeAlliance.wasmtime

Caused by:
    Permission denied (os error 13)
test run_wasmtime_simple_wat ... FAILED(B
Error: failed to create cache directory: /homeless-shelter/Library/Caches/BytecodeAlliance.wasmtime

Caused by:
    Permission denied (os error 13)
test run_wasmtime_simple ... FAILED(B
Error: failed to create cache directory: /homeless-shelter/Library/Caches/BytecodeAlliance.wasmtime

Caused by:
    Permission denied (os error 13)
test run_wasmtime_simple_fail_no_args ... ok(B

failures:

---- run_wasmtime_simple_wat stdout ----
Error: Failed to execute wasmtime with: ["run", "/private/tmp/nix-build-wasmtime-v0.12.0.drv-0/.tmpgoQY6x", "--invoke", "simple", "4"]
thread 'run_wasmtime_simple_wat' panicked at 'assertion failed: `(left == right)`
  left: `1`,
 right: `0`: the test returned a termination value with a non-zero status code (1) which indicates a failure', src/libtest/lib.rs:197:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

---- run_wasmtime_simple stdout ----
Error: Failed to execute wasmtime with: ["run", "/private/tmp/nix-build-wasmtime-v0.12.0.drv-0/.tmpgVejaV", "--invoke", "simple", "4"]
thread 'run_wasmtime_simple' panicked at 'assertion failed: `(left == right)`
  left: `1`,
 right: `0`: the test returned a termination value with a non-zero status code (1) which indicates a failure', src/libtest/lib.rs:197:5

failures:
    run_wasmtime_simple
    run_wasmtime_simple_wat

test result: FAILED(B. 1 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out

error: test failed, to rerun pass '--test cli_tests'
note: keeping build directory '/private/tmp/nix-build-wasmtime-v0.12.0.drv-0'
builder for '/nix/store/lqpkwdwx1jq1mxb7xjg5vs27gmxasjmh-wasmtime-v0.12.0.drv' failed with exit code 101
error: build of '/nix/store/lqpkwdwx1jq1mxb7xjg5vs27gmxasjmh-wasmtime-v0.12.0.drv' failed

I believe you can use wasmtime config new <file> to create a new config file, change the cache dir in it and then use wasmtime run --config <file>.

Wasmtime uses the Rust directories crate to obtain the default cache directory. Is that something that could be made to support Nix?


Main

Not sure what you are trying to do with this PR, but without an explanation and with so many changes, there is little chance of it being accepted.


added is_subset_opt

This is a modestly optimized is_subset method. In my benchmarks, it gets:
test is_subset       ... bench:       1,170 ns/iter (+/- 1)
test is_subset_2     ... bench:       1,585 ns/iter (+/- 25)
test is_subset_3     ... bench:       4,863 ns/iter (+/- 8)
test is_subset_4     ... bench:          35 ns/iter (+/- 0)
test is_subset_opt   ... bench:       1,168 ns/iter (+/- 2)
test is_subset_opt_2 ... bench:       1,558 ns/iter (+/- 3)
test is_subset_opt_3 ... bench:       4,824 ns/iter (+/- 7)
test is_subset_opt_4 ... bench:           0 ns/iter (+/- 0)

So the wins are fairly small (depending on size), but I think it opens up possible future optimizations. Perhaps you want to replace is_subset completely? If so, leave a comment on this PR, and I can push another commit.
(Apart from that, fixed a few warnings)

Cool, I'll have to think about where to put the limit between reduced code and optimised implementations before replacing it.
I've just added an http://editorconfig.org settings file, once you've updated tabs -> spaces I'll merge this.

Reviewed 1 of 4 files at r1.
Review status: 1 of 4 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful.

benches/lib.rs, line 88 [r1] (raw file):
Could you please update tabs to spaces in these methods.

src/imp.rs, line 117 [r1] (raw file):
Could you please update tabs to spaces in this method.

src/lib.rs, line 253 [r1] (raw file):
Could you please update these tabs to spaces.

Comments from the review on Reviewable.io

:disappointed: I was expecting reviewable to put those comments on the files.

No big deal, I'll just convert tabs to spaces on all files; expect a commit in about two hours (I'm on the road in the meantime).

Done. Next up, I'd like to benchmark if using iterators could be faster than indices (like you did in store.rs' is_subset(…)). Perhaps we can shave off another few ns.

Cool :) I really should get round to adding the overall benchmarks comparing to the Java implementation.

I have an iterator-based solution, but it currently performs slightly worse for 	two of the four benchmarks, and equal on the others. I'll stash it somewhere in case Rust's iterator fusion gets better.

Just for the record, here is the iterator-based code:
pub fn is_subset_opt<Size: ExtInt + Halveable>(this: &RB<Size>, other: &RB<Size>) -> bool {
    let (t, o) = (&this.containers, &other.containers);
    if t.len() > o.len() { return false; }
    let (mut ti, mut oi) = (t.iter(), o.iter());
    let (mut tv, mut ov) = (ti.next(), oi.next());
    loop {
        match (tv, ov) {
            (None, _) => { return true; }
            (_, None) => { return false; }
            (Some(ref tc), Some(ref oc)) => {
                if tc.key() < oc.key() { return false; }
                if tc.key() == oc.key() {
                    if !tc.is_subset(oc) { return false; }
                    tv = ti.next();
                }
                ov = oi.next();
            }
        }
    }
}

@Nemo157
"overall benchmarks comparing to the Java implementation."
On the Java side, we have done quite a lot of work organizing tests around realistic data sets. Feel free to reuse this work (see jmh directory). We would love to see how well roaring-rs fares compare to the Java version!


No module named 'Kivy'

Versions

Python: 3.6.4
OS: archlinux
Kivy: python-kivy-1.10.0-1
Kivy installation method: pacman -S python-kivy

Description
Hello, I installed python-kivy-1.10.0-1, buildozer, and when I try to run a file with kivy I get an error:
[user@revenge buildozer]$ python main.py
Traceback (most recent call last):
File "main.py", line 1, in
from kivy.app import App
ModuleNotFoundError: No module named 'kivy'
Also tried to install Kivy in different ways
[user@revenge Kivy-1.10.0]$ python3 setup.py build_ext
Using distutils
Detected Cython version 0.25
Using this graphics system: OpenGL
GStreamer found via pkg-config
SDL2 found via pkg-config
SDL2: found SDL header at /usr/include/SDL2/SDL.h
SDL2: found SDL_mixer header at /usr/include/SDL2/SDL_mixer.h
SDL2: found SDL_ttf header at /usr/include/SDL2/SDL_ttf.h
SDL2: found SDL_image header at /usr/include/SDL2/SDL_image.h
fatal: not a git repository (or any of the parent directories): .git
/home/user/anaconda3/lib/python3.6/distutils/dist.py:261: UserWarning: Unknown distribution option: 'dependency_links'
warnings.warn(msg)
/home/user/anaconda3/lib/python3.6/distutils/dist.py:261: UserWarning: Unknown distribution option: 'install_requires'
warnings.warn(msg)
/home/user/anaconda3/lib/python3.6/distutils/dist.py:261: UserWarning: Unknown distribution option: 'setup_requires'
warnings.warn(msg)
running build_ext
Traceback (most recent call last):
File "setup.py", line 1060, in
] if not skip_cython else [])
File "/home/user/anaconda3/lib/python3.6/distutils/core.py", line 148, in setup
dist.run_commands()
File "/home/user/anaconda3/lib/python3.6/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/home/user/anaconda3/lib/python3.6/distutils/dist.py", line 973, in run_command
cmd_obj.ensure_finalized()
File "/home/user/anaconda3/lib/python3.6/distutils/cmd.py", line 107, in ensure_finalized
self.finalize_options()
File "setup.py", line 251, in finalize_options
retval = build_ext.finalize_options(self)
File "/home/user/anaconda3/lib/python3.6/site-packages/Cython/Distutils/build_ext.py", line 19, in finalize_options
self.distribution.ext_modules)
File "/home/user/anaconda3/lib/python3.6/site-packages/Cython/Build/Dependencies.py", line 809, in cythonize
aliases=aliases)
File "/home/user/anaconda3/lib/python3.6/site-packages/Cython/Build/Dependencies.py", line 752, in create_extension_list
**kwds))
File "setup.py", line 511, in init
self.sources = args[1]
IndexError: tuple index out of range

BUT, when the command python2 main.py everything starts working .. how do I connect Kivy and python3?
[user@revenge buildozer]$ python2 main.py
[INFO   ] [Logger      ] Record log in /home/user/.kivy/logs/kivy_18-05-04_1.txt
[INFO   ] [Kivy        ] v1.10.0
[INFO   ] [Python      ] v2.7.14 (default, Apr 16 2018, 20:08:15)
[GCC 7.3.1 20180406]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[INFO   ] [OSC         ] using  for socket
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] Backend used
[INFO   ] [GL          ] OpenGL version <3.0 Mesa 18.0.2>
[INFO   ] [GL          ] OpenGL vendor
[INFO   ] [GL          ] OpenGL renderer <Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) >
[INFO   ] [GL          ] OpenGL parsed version: 3, 0
[INFO   ] [GL          ] Shading version <1.30>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event8
[INFO   ] [MTD         ] Read event from </dev/input/event8>
[INFO   ] [Base        ] Start application main loop
[WARNING] [MTD         ] Unable to open device "/dev/input/event8". Please ensure you have the appropriate permissions.
[INFO   ] [Base        ] Leaving application in progress...

Hello. Try to do a update of all things : buildozer, cython, etc ...
2018-05-03 18:46 GMT+01:00 welcome[bot]<EMAIL_ADDRESS>
👋 Thanks for opening your first issue here! Be sure to follow the issue
template!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/kivy/kivy/issues/5726#issuecomment-386379218, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AderOU4mHbpet_zJQVT6AR_CtZxtxsgqks5tu0KPgaJpZM4TxgoH
.

Dear pkemarco, it did not help .. (

I reinstall archlinux .. then I installed python-kivy, it all worked, after that I installed anaconda and kivy stopped working, started again to issue an error about the absence of the kivy module

maybe there are ideas how to make kivy, anaconda and python work together?

@cTas0099 honestly, I'd be surprised if you could make that work with Anaconda right now. Use the normal distribution for now.

@dolang
I found how to install kivy in anaconda, but I have conflicts..
[user@revenge ~]$ conda install --channel https://conda.anaconda.org/wgarcia kivy
Solving environment: failed

UnsatisfiableError: The following specifications were found to be in conflict:
  - kivy
  - pyyaml
Use "conda info <package>" to see the dependencies for each package.

In case it wasn't clear: I suggest you don't try it with Anaconda, even if you can install it. I don't think it's possible to make it work right now.
But you're of course free to try, and I'd be interested in the result if you somehow manage to run it.

@dolang
I understand you, but I really want it to start working))

I think should be taken up with anaconda. Kivy supports standard python. Any compatible implementation should thus work. If it does not, it is nor fully compatible and the implementation providers should address the issue?
@cTas0099. Can you confirm you can get working in your standard python/python3?

@Zen-CODE yes, my programs run smoothly, before I installed the anaconda, and I wrote in support of the anaconda, and I was answered by a man who advised me to do so:
conda create -n kivyenv
source activate kivyenv
conda install -c moritzimend kivy=1.9.0

the installation was successful, but now at startup it produces the following error:
(kivyenv) [user@revenge ~]$ python main.py
[INFO   ] [Logger      ] Record log in /home/user/.kivy/logs/kivy_18-05-05_3.txt
[INFO   ] [Kivy        ] v1.9.1-dev
[INFO   ] [Python      ] v2.7.15 |Anaconda, Inc.| (default, May  1 2018, 23:32:55)
[GCC 7.2.0]
[INFO   ] [Factory     ] 179 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_gif (img_sdl2, img_pil, img_ffpyplayer ignored)
[CRITICAL] [Window      ] Unable to find any valuable Window provider at all!
egl_rpi - ImportError: cannot import name bcm
  File "/home/user/anaconda3/envs/kivyenv/lib/python2.7/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)
  File "/home/user/anaconda3/envs/kivyenv/lib/python2.7/site-packages/kivy/core/window/window_egl_rpi.py", line 12, in <module>
    from kivy.lib.vidcore_lite import bcm, egl

sdl2 - ImportError: libSDL2_ttf-2.0.so.0: cannot open shared object file: No such file or directory
  File "/home/user/anaconda3/envs/kivyenv/lib/python2.7/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)
  File "/home/user/anaconda3/envs/kivyenv/lib/python2.7/site-packages/kivy/core/window/window_sdl2.py", line 26, in <module>
    from kivy.core.window._window_sdl2 import _WindowSDL2Storage

x11 - ImportError: No module named window_x11
  File "/home/user/anaconda3/envs/kivyenv/lib/python2.7/site-packages/kivy/core/__init__.py", line 59, in core_select_lib
    fromlist=[modulename], level=0)

[CRITICAL] [App         ] Unable to get a Window, abort.

It Have you tried installing all the SDL dependencies into your conda environment?

@Zen-CODE
I'm just dealing with this)

try with this command
conda install -c conda-forge kivy

Yes, we recently added kivy to conda forge. But only 3.5+.
On Tue, Jul 17, 2018, 7:18 AM Divyateja Pasupuleti<EMAIL_ADDRESS>wrote:

try with this command
conda install -c conda-forge kivy
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/kivy/kivy/issues/5726#issuecomment-405547553, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABkW_kosCwoK5vFQ516ynQdmFJlUxkUmks5uHcgNgaJpZM4TxgoH
.


resultData200 should be read from _responseText.result in Typescript client with axios Template

I created Typescript Client with Axios Template, but due to wrong mapping i am not getting the data from my backend.
The problem is in the process method.

resultData200 should read from _responseText.result in order to get the required data.
I am also adding the console.log in the above code to show, what i mean:

Same issue, I was able to get axios template to work with 'typeStyle' set to 'Interface' because it does a JSON.parse(). But, using 'Class' breaks because fromJS() is looking for an object not a string.

Looks like the response is describe as a text response but you expect JSON?

That is correct.
I ended up just overriding template, Client.ProcessResponse.HandleStatusCode.liquid, like this:
{%         if Framework.IsAxios -%}

{%             if response.UseDtoClass -%}  // I added this conditional so that when you use dto classes with axios it will parse the text.
let resultData{{ response.StatusCode }}  = JSON.parse(_responseText);
{%             else -%}
let resultData{{ response.StatusCode }}  = _responseText;
{% endif %}
{%             if response.UseDtoClass -%}
{{ response.DataConversionCode }}
{%             else -%}

Results
const _responseText = response.data;
let result200 = null;
let resultData200 = JSON.parse(_responseText);
result200 = V2CustomerTestimonialDto.fromJS(resultData200);
return result200;

I thought about creating pull request, but I just started using the project and I don't know enough about the template system to know if this is the proper way to fix the issue or whether it accounts for all the edge cases.


fix align buttons

@xavijam could you take a look?

Fix the align buttons in add layer and add widget modal.

:+1:


[next] Fix typo in markdown generator script

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

"no documented" -> "not documented"

Any idea what's up with the tests?

Yes, hold on, I'm driving.

That should be fixed with https://github.com/callemall/material-ui/pull/5656. We had a flaky test. Try rebasing with the next branch.

No luck.

Hum, I'm wondering what's going on with this fail 🙈 .

Thanks.


Some game levels

Build several levels (maps) to make game playable. This includes both map drawing and gameplay implementation.

Maybe we should do a random map generator -- or, even better, multiple map generators, biased toward different level structures (Foundation base floor, caves and catagombs, weird pocket dimension, etc)

Please note that rot.js already have some generators. Probably that's a good idea to use them at first.


feat(span): Deserializing span from headers

Because OpenTracing libraries provide a facility for extracting
trace information propagated from upstream systems, the Buffet
middleware should make use of it when determining if the span
should be a root or child.

Quick favor @bketelsen : would you be able to tag this in a new release please?  So that I can include this change via dependency management for my app.

v0.1.5 released.  Thanks!
On Wed, 2018-05-23 at 08:23 -0700, Rahman Syed wrote:

Quick favor @bketelsen : would you be able to tag this in a new
release please?  So that I can include this change via dependency
management for my app.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
{"@context":"http://schema.org","@type":"EmailMessage","potentialActi
on":{"@type":"ViewAction","target":"https://github.com/bketelsen/buff
et/pull/2#issuecomment-
391388351","url":"https://github.com/bketelsen/buffet/pull/2#issuecom
ment-391388351","name":"View Pull Request"},"description":"View this
Pull Request on
GitHub","publisher":{"@type":"Organization","name":"GitHub","url":"ht
tps://github.com"}}
{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c5
5493e4bb","name":"GitHub"},"entity":{"external_key":"github/bketelsen
/buffet","title":"bketelsen/buffet","subtitle":"GitHub
repository","main_image_url":"https://cloud.githubusercontent.com/ass
ets/143418/17495839/a5054eac-5d88-11e6-95fc-
7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent
.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-
b52498112777.png","action":{"name":"Open in GitHub","url":"https://gi
thub.com/bketelsen/buffet"}},"updates":{"snippets":[{"icon":"PERSON",
"message":"@rahmansyed in #2: Quick favor @bketelsen : would you be
able to tag this in a new release please?  So that I can include this
change via dependency management for my
app."}],"action":{"name":"View Pull Request","url":"https://github.co
m/bketelsen/buffet/pull/2#issuecomment-391388351"}}}
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"hideOriginalBody": "false",
"originator": "37567f93-e2a7-4e2a-ad37-a9160fc62647",
"title": "Re: [bketelsen/buffet] feat(span): Deserializing span from
headers (#2)",
"sections": [
{
"text": "",
"activityTitle": "Rahman Syed",
"activityImage": "https://avatars1.githubusercontent.com/u/2953605?s=
160\u0026v=4",
"activitySubtitle": "@rahmansyed",
"facts": [
]
}
],
"potentialAction": [
{
"name": "Add a comment",
"@type": "ActionCard",
"inputs": [
{
"isMultiLine": true,
"@type": "TextInput",
"id": "IssueComment",
"isRequired": false
}
],
"actions": [
{
"name": "Comment",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName":
"IssueComment",\n"repositoryFullName":
"bketelsen/buffet",\n"issueId": 2,\n"IssueComment":
"{{IssueComment.value}}"\n}"
}
]
},
{
"targets": [
{
"os": "default",
"uri": "https://github.com/bketelsen/buffet/pull/2#issuecomment-39138
8351"
}
],
"@type": "OpenUri",
"name": "View on GitHub"
},
{
"name": "Unsubscribe",
"@type": "HttpPOST",
"target": "https://api.github.com",
"body": "{\n"commandName": "MuteNotification",\n"threadId":
334545389\n}"
}
],
"themeColor": "26292E"
}


new terms of service

Closes #3390.

The terms are in a markdown file, so we have some alternative layouts for easier reading:
https://github.com/gratipay/gratipay.com/blob/new-terms/www/about/policies/terms-of-service.md
https://gitprint.com/gratipay/gratipay.com/blob/new-terms/www/about/policies/terms-of-service.md
@copiesofcopies isn't allowed to comment publicly here because of attorney-client privilege, but he's aware of this PR as well as #3390, and I'll be proxying the conversation back and forth between here and our private legal repo.
I printed out a copy and made a first pass through. In general I think they're great! I love that we're use terms like Participant and Team and Open Work. That really makes it feel to me like this is Gratipay's document and not just boilerplate (though there's plenty of that, too; why do lawyers always end up shouting towards the end?).
Tomorrow I'll take another pass through with a pencil, at which point I'll post specific revisions.

cc: @colindean

Planning to take a look later today.

I think the terms are great and I'll have no problem to accept them.

@fenryxo Woo-hoo! Awesome! :D :memo:
@colindean Cool, thanks. :-)

I skimmed the terms really quickly, and didn't see anything that stood out in a negative way. I'm also looking at this from the perspective of people I'd reach out to for support:
"If I ask a supporter to make a Gratipay account to support one of my projects, would this pull them in or push them away?"
The terms look professional and complete, and I feel they'd tend to give confidence to new supporters in making a Gratipay account.

Thanks @ehmatthes, good thought re: the impression these create for new users and especially new supporters for Gratipay Teams.

I made another pass through with a :pencil2: and I've made a few commits to standardize the markdown.
Additional points from @copiesofcopies:

To take advantage of the DMCA safe harbor for infringing user content, you must file a form with the Copyright Office designating a person to serve as Gratipay's agent to receive infringement notifications. The form is here and the fee is $105. This is an important protection, and you should do this without delay.
I think that you should offer clearer guidance about what Open Work is and what Teams need to include in their profiles to qualify. E.g., what is a "clear path" to doing work and receiving money for it? Does that mean specific, actionable tasks must be published somewhere? How much detail do Teams need to go into about how people will be paid? What kind of exceptions can they make? This extra detail doesn't necessarily have to go directly into the terms, it can be in a policy document somewhere, but the terms should link to it.
We still need to include language giving Teams the right not to pay Participants for their work until some threshold established by the Team is met. Do you have an idea of what kind of latitude you want to give Teams on this point?

To take advantage of the DMCA safe harbor for infringing user content, you must file a form

Reticketed as https://github.com/gratipay/inside.gratipay.com/issues/202.
The new terms also call for<EMAIL_ADDRESS>so I reticketed setting that up as https://github.com/gratipay/inside.gratipay.com/issues/203.

Me:

Are you aware that comments such as https://github.com/gratipay/gratipay.com/commit/61be9bca62bb9ab3f48cc69d0a4017f30eb21360#commitcomment-11183396 are public?

Aaron:

Ah, I had forgotten that these commits were on the public repository. Thanks for the reminder! That one can stay :white_check_mark:

I’ll try to skim the new ToS later today and will be happy to share my view. If you don’t hear from me in a few hours, assume either a) I didn’t have time to do it; or b) I don’t have any issues with it. In both cases, do carry on.

Awesome, thanks @silverhook! P.S. I've posted an explanation why we can't use bitcoin anymore at https://github.com/gratipay/inside.gratipay.com/issues/201#issuecomment-102010517, and I'll follow up via email with specifics for your case.

Terms are done! Last thing here is to clean up the formatting ...

Huzzah! :dancer:
!m @copiesofcopies

OK, I managed to skim quickly through the ToS (excluding the PP and other referenced terms).
First of all, I find it very laudable that the ToS are easily readable and take only ~ 8 pages :clap:
Regarding the content itself, I think it is fine, however there are some points I would like to have clarified (preferebly in the ToS itself) or I have comments about:

In §2.1 you already mention “Teams” without defining them before. Later the ToS lay out how to estabilish a team, but do not explicitly define a Team. While it may be implicitly understood what it is, having an explicit definition would be good. If I understand §2.2 correctly, even one member is enough to constitute a Team. Also, it would be useful to explicitly define what the relationship between “You” and “Team” is.
Is the primary aim of §5.3 to idemnify Gratipay or to hold Team Owners liable? The first part of the paragraph reads as if it is about idemnification of Gratipay, but the last sentence seems quite strongly to push the liability onto the Team Owner.
Personally, I find using CC0 for Gratipay.com in §6.1 as a really nice touch and a fresh approach. I take it you do understand the implications of this, though.
Staying on the topic of copyright, in §7.1 the copyright license that Participant grants to Gratipay is relatively broad to what Gratipay actiually needs at the time. While §7.2 clarifies what this license permits Gratipay to do, I would welcome a provision where it explicitly stated for which purposes Gratipay may use it.
If I understand §4.3 correctly in connection with §8.1(2), it is not allowed to fund something like LOIC through Gratipay. (I’m just checking, not complaning.)
The wording of §10.1 “subject to certain state laws” seems to be ambiguous whether an NPO (e.g. KDE e.V. or GNOME Foundation) would need to comply with laws concerning charitable solicitations in their own jurisdiction or State of Pennsylvania.
Regarding the “without notice to you” provisions in §11.4 and §12.1, I would very much like to be informed of it, just as under §17.2.
On that topic, it would be really nice if you could add a possibility for community involvement in the process of changing the ToS & PP, similar to the one in §4.5 (when a Team is being estabilshed).

Other than that, regarding content I have nothing to complain about. It looks pretty good to me :smile_cat:
As for the form, I very warmly recommend to read (and apply) the suggestions in this short blog post on how to make HTML legal documents (such as the MPL) look nice. I especially agree with the “no all caps” rule – no-one reads all caps paragraphs, so they are not emphesised, but hidden by it. :stuck_out_tongue_closed_eyes:
Well, I hope this does not sound too grave. Non of there seem to me as deal-breakers, but it would still be nice to work on it, if possible.

Thanks @silverhook! We're going to run with the terms as deployed for purposes of #3399 and #3415. I'm happy to process your input with @copiesofcopies once things settle down.

@silverhook Reticketed as https://github.com/gratipay/inside.gratipay.com/issues/204 so we don't forget. :-)

@whit537 I’m cool with that :)


Support generating non-abi3 pythonXY.dll?

In theory we can also generate a pythonXY.dll from a .def file as long as we can obtain it somehow. Unlike stable API that has a stable_api.toml file, the obvious way to obtain a .def file for pythonXY.dll is using dumpbin.exe, for example dumpbin /exports python310.dll.
Unfortunately, there seems no easy way to differentiate between function and data in the output of dumpbin /exports, it treats them all as function.

gendef can do this in one step.
Whether we should do this for all of python37.dll, python38.dll, python39.dll, python310.dll and python311.dll is another question.

gendef looks nice, thanks for the pointer!

Whether we should do this for all of python37.dll, python38.dll, python39.dll, python310.dll and python311.dll is another question.

Right, I wonder whether we can just generate a single pythonXY.dll for all of them, but it will cause problems if later python versions removed some APIs. The .def text file isn't very big(python310.def is about 34K uncompressed), bundling all of them isn't a big issue.

Some API are being deprecated and removed between versions, like Py_UNICODE.
I also wonder if people should build new non-abi3 binary wheels in this day and age. Most projects continue to do so mainly because of inertia and "it's always been done this way". But if they ever stop publishing new wheels they are locking their users into an ancient Python version with no obvious upgrade path.
Maybe easy cross-compilation can become one of the reasons for people to enable abi3 in the first place.

non-abi3 binary might have access to more performant APIs I think?

This is definitely true, but not everyone is building the next NumPy.

My goal here is to make creating Windows wheels using maturin as plain less as possible, just like the current Unix experience (See https://github.com/PyO3/maturin/pull/896). With this we can collect python sysconfigs from Windows and make maturin build -i pythonX.Y --target x86_64-pc-windows-gnu works out of the box.

Right, I wonder whether we can just generate a single pythonXY.dll for all of them, but it will cause problems if later python versions removed some APIs. The .def text file isn't very big(python311.def is about 34K uncompressed), bundling all of them isn't a big issue.

I've been thinking about this once again, and I think a single python311.def file would suffice, since as far as PyO3 is concerned,
all its Py_3x cfgs are strictly additive, so there is no way to remove extern symbols for Python 3.11 without also removing them for Python 3.7. We can safely generate python37.dll.a from python311.def and everything should just work (tm).

all its Py_3x cfgs are strictly additive, so there is no way to remove extern symbols for Python 3.11 without also removing them for Python 3.7

I don't think the above statement is correct - you can have e.g. #[cfg(all(Py_3_8, not(Py_3_10)))] to define a symbol that only exists on Python 3.8 and 3.9.

I don't think the above statement is correct - you can have e.g. #[cfg(all(Py_3_8, not(Py_3_10)))] to define a symbol that only exists on Python 3.8 and 3.9.

Oh, indeed. Trying to unify the exported symbol definitions probably not worth it, then.

Do you plan to use in pyo3-build-config directly or will this be a maturin-only feature?

I plan to use in pyo3-build-config directly, maybe adding a new generate-import-lib feature to replace generate-abi3-import-lib.


CRIMAPP-506 capital check your answers for all capital questions

Description of change
Add "Check your answers" page
Link to relevant ticket
https://dsdmoj.atlassian.net/browse/CRIMAPP-506
Notes for reviewer
Screenshots of changes (if applicable)
Before changes:

After changes:

How to manually test the feature
http://localhost:3000/applications/:id/steps/capital/check_your_answers_capital

Description updated


Add documentation about using Google VoiceKit hardware

This process has been documented by chunkking_mann on the community forums: https://community.rhasspy.org/t/on-google-aiy-v1-kit-as-satellite/487

Thanks for your PR!


Return error if operation is attempted on a closed session

A session is still usable even after closing it explicitly:
session := driver.NewSession(ctx, sessionConfig)
session.Close()
// These all still work
session.Run(...)
session.BeginTransaction(...)
session.ExecuteRead(...)
session.ExecuteWrite(...)

We now return a new UsageError when an operation is attempted on a closed session.
Fixes issue: https://github.com/neo4j/neo4j-go-driver/issues/569 raised by @oleriajm

 Session is still usable even after explicitly closing it