Extent of a Feature

DotSpatial version: 2.0
So I am writing a function that requires the Extent of a FeatureSet as well as each individual Feature.
For FeatureSet it was easy. I just use FeatureSet.Extent
For Feature I have a question: I started out by using the logical choice...Feature.Geometry.Envelope. But this doesn't seem to have the MinX, MinY, etc parameters. After looking at the documenantion I see that there are two choices in the GeoAPI

One returns an IGeometry and the other returns an Envelope. What is the difference here? Isn't an Envelope by its nature a geometry? The wording of "Internal" is a mystery to me. What does it mean?

@sindizzy If you check you'll see that Envelope is not a geometry.
The Envelope returning an IGeometry can return a point, a line or a polygon depending on the underlying geometry. The EnvelopeInternal will definitely return an Envelope in any case.
Why it's called internal you could ask the people at NetTopologySuite but I think they might send you over to JTS where the original code comes from.


Add benchmark for task_future

Signed-off-by: WenTao Ou<EMAIL_ADDRESS>

Codecov Report

Merging #33 (c9345da) into v2 (5218901) will decrease coverage by 0.07%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##               v2      #33      +/-   ##
==========================================
- Coverage   87.36%   87.29%   -0.08%
==========================================
  Files          26       26
  Lines        1417     1417
==========================================
- Hits         1238     1237       -1
- Misses        179      180       +1

Impacted Files
Coverage Δ

src/libcopp/coroutine/coroutine_context.cpp
82.66% <0.00%> (-0.67%)
:arrow_down:

Continue to review full report at Codecov.

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


AnimatePresence ? :exit ?

How can we use AnimatePresence? in vue motion?
https://www.framer.com/docs/animate-presence/

just use v-if and v-else


MSID: 91438 Version: 1 DOI: 10.1101/2<IP_ADDRESS>7833

MSID: 91438
Version: 1
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>7833
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=91438
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>7833

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/91438v1
Update ticket with any problems (add blocked label)
Add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>7833
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/91438/v1/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Detailed instructions: https://github.com/elifesciences/enhanced-preprints-data#add-a-pdf
Step 6: Add PDF url to manuscripts.json
Pull request created to enhanced-preprint-client

Instructions to add PDF url to manuscripts.json

Visit: https://github.com/elifesciences/enhanced-preprints-client/actions/workflows/add-pdf-url-to-manuscript.yaml
Click: Run workflow
Complete the form and click "Run workflow"
A successful run should result in a new pull request at https://github.com/elifesciences/enhanced-preprints-client/pulls
Open the pull request and click the "Ready for review" button to trigger tests
Once the tests pass and you are happy with the changes the PR can be merged

Example pull request: https://github.com/elifesciences/enhanced-preprints-client/pull/397/files
Once the pull request is merged in it should be available a few minutes later.

Step 9: Done!

[ ] Kettle is on!

Reviews not present yet.
elocations missing from references.

Reviews are up now so I'll go ahead and publish this one.


Ledger Blue

Explain that Ledger Blue is not supported but the python package is still needed.

Thanks for the contribution. It looks like these changes have been addressed in master, and this PR is no longer necessary. Feel free to reopen if that is not the case!


botTargetGraph Name Issue

Is there any specific way to input a name for botTargetGraph? Messages have stopped syncing after I have switched from using an active graph. I have tried Name, Folder/Name, graph/Name. I have restarted the plugin and reloaded the app. Switching back to active graph successfully loads messages.

Maybe you didn't wait for the polling period? Try restarting the plugin with the console open, and you will see the changes immediately.


I get a lot of error pages in the test instance

I think I have something weird going on with the cache in Firefox, because I get a lot of Error messages when I try to click on a recipe in the test instance.
However, when I tried this in Chrome I got the empty page, so I suspect Firefox have cached old recipes for some reason. Shift+reload doesn't quite do the trick, so there must be something else going on.

@martinpitt

This is not a browser cache issue, but the problem is rooted in the usage of redux-persist. This writes the entire state, including recipes and pending changes, into the Browser's sessionstore, so it survives page reloads, restarts, etc. Once the backend state changes (because some other person edits it), the local redux store and the "real" state from the backend get out of sync, but apparently the redux store always wins.
You can also see this by stopping the api container/process, then most of the UI will still happily work.
I'm not sure what the solution is, though. @jkozol, any idea?

BTW, the only way how to clean this up that I found is this:
$ sqlite3 ~/.mozilla/firefox/*default*/webappsstore.sqlite
sqlite> delete from webappsstore2 where key == 'reduxPersist:recipes';

@jkozol, @atodorov, @jgiardino : Can one of you please rename this to "local state mismatches API state due to too aggressive redux.persist caching" or something such? Right now the issue title is not very useful. I'm not a project member, so I can't change it. (BTW, maybe I can become one?)

Looks like this will be closed with #245


fix: replace Promise.all with PutParametersCommand

I still need to fully test this in our project, but we get this error every time we try to remove a deployed stage:
2023-10-05T22:55:37.070Z	1c259060-9941-4cac-b547-7ee89d263211	INFO	[provider-framework] ThrottlingException: Rate exceeded
    at throwDefaultError (file:///var/task/index.mjs:9300:24)
    at file:///var/task/index.mjs:9310:39
    at de_DeleteParameterCommandError (file:///var/task/index.mjs:27053:18)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async file:///var/task/index.mjs:6243:24
    at async file:///var/task/index.mjs:3885:22
    at async file:///var/task/index.mjs:7495:42
    at async file:///var/task/index.mjs:1344:26
    at async Promise.all (index 0)
    at async AuthKeys (file:///var/task/index.mjs:179509:7) {
  '$fault': 'client',
  '$metadata': {
    httpStatusCode: 400,
    requestId: 'd6af2f3a-296d-4b45-a7b9-a0ecd5243616',
    extendedRequestId: undefined,
    cfId: undefined,
    attempts: 3,
    totalRetryDelay: 359
  },
  __type: 'ThrottlingException'
}

Hoping this fixes it.

Thanks @michaelgmcd! Lemme know if continues to happen.


chore(deps): upgrade configuration

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-configuration-k8s-24-main" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 2190

Questions ?
Please refer to the Backport tool documentation


[Windows] Neovim can't find 'lspupdate' module after being installed

Hi there, This might be a noob question; But why does this happen on my machine after running
:LspUpdate

I am running :
Windows 10
Neovim is 0.5.0 (Not Nightly)
nvim-lspconfig is installed.
I use neovim's Packer, Not Plug.
I have the package managers installed. (npm, pip)
--Edit: I did notice that the package itself that it's looking for exists under %LOCALAPPDATA%/nvim-data/site/pack/packer/start/nvim-lspupdate/
Although the content looks like it is in Fennel (as in not similair to other packages I have installed), Which I have never interacted with before :/
Sorry for the nuissance.
Hope you have a good day :)

Hello,
If you check out the README, there is a note there about some recent changes to the project, as well as the proposed solutions: either install an additional plugin (Hotpot) or run make lua (but you will need Lua on your system).
With packer, provided that Lua is available, should be as easy as:
use {'alexaandru/nvim-lspupdate', run = 'make lua'}

Hope this helps &
you too have a good day :)
Cheers!

Thanks for the swift response.
I did understand the options you provided, however I opt to not install Fennel (sadly, I barely know lua so...)
When I ran with use {'alexaandru/nvim-lspupdate', run = 'make lua'} It just keeps getting stuck at make lua part. and I think I understand why, since windows doesn't have Make, I replaced the command make lua with mingw32-make lua however that also didn't work. So I decided to go the package folder and run the command manually.
But it results with this :

And I think this is because the make script was made with linux in mind. (Reminder: I do have lua installed, and it's in my path as seen in the image)
Thanks in advance.

Hmm, looks like env cannot find lua for some reason.
I just pushed a change (https://github.com/alexaandru/nvim-lspupdate/commit/0a4d3f3f9125955bab3245009973a179b8ba5538) could you please update the plugin and try again? This should get you past that error, as it gets env out of the equation.

So yeah, I managed to fix it. However only after certain complications. Because even after the change you performed, There was still linux considerations in the Makefile, "Like mkdir -p, gunzip...chmod..." However luckily I did have Git Bash, Which simulates a linux-terminal like environment on Windows. So I ran the mingw32-make luamanually throught Git and it compiled. Now:LspUpdate` works.
Thanks for your time and consideration :D

Don't mention it. Glad you got it working, but sorry you had to go through all that trouble. I'll have to reconsider the recent changes, make it simpler to run again.
Have a great day!

I added the Lua code back in main branch, so you should not need to do any of that, next time you update. No more make lua or anything like that is needed, the README was updated (reverted) to exclude those. Hope this helps!


Selector by class name fails if the classes are separated by tabs

Fixes #329

Just started reviewing :):rocket:


New cv

Codecov Report

Merging #8 into gatsby will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           gatsby       #8   +/-   ##
=======================================
  Coverage   95.71%   95.71%
=======================================
  Files          28       28
  Lines         140      140
  Branches        8        8
=======================================
  Hits          134      134
  Misses          6        6

Continue to review full report at Codecov.

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


[DESIGN] Add Items bag to TagHelperContext.

Added an extra parameter to the TagHelperScopeManager so when it creates the TagHelperExecutionContext it can retrieve the parent execution context in order to create the Items bag that eventually exists on the TagHelperContext.
Add a an Item properties on TagHelperExecutionContext to propagate to the TagHelperContext.
Updated code generation to pass the parent TagHelperExecutionContext into the TagHelperScopeManager.

#238

/cc @yishaigalatzer @dougbu So as you can see in this PR i've copied the basis of MVC's CopyOnWriteDictionary into the Razor project to be used as the wrapper to the TagHelperContext.Items bag.
MVC version: https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNet.Mvc.Common/CopyOnWriteDictionary.cs
I'm not sure there's a better way around this since MVC's version is located in Microsoft.AspNet.Mvc.Common and is required by Microsoft.AspNet.Mvc.Core, both of which have no concept of Razor; therefore we can't move the lib into the Razor repo. If you guys have a better alternative I'm all ears :smile:

:watch:

We can discuss sharing stuff from mvc.common with razor. It is just a build time dependency. We might just move the common library somewhere else

@yishaigalatzer Lets get together to talk about this because this would end up being some new shared webstack repo which to me at least is iffy.

Updated. Left the CopyOnWriteDictionary as a private class until we decide on a home for common web helpers.

@NTaylorMullen will you update this PR once you've pushed aspnet/Common#1?  (will look at it after if that's the case.)

@dougbu Updated to utilize Common repo.

:watch:

Updated.

:watch:

Updated after discussion.

:watch: getting close (but is this blocked by XRE bug?)

Updated.

:watch:

Updated.

:shipit:
if possible, please check in as 2 commits with first reacting to the Common repo additions


Issue #274: Fix LLMCompiler Bugs

Fixes 4/5 bugs, (Specifically 1,2,4,5) described in Issue #274.
Issue text copied here for reference:
I noticed some bugs in the tutorial for LLMCompiler:

Main problem: the code doesn't actually handle when there's more than one dependency listed in an argument, which is the whole point of LLMCompiler. The example of multi-step math used in the code doesn't work because the third step has more than one dependency in its args and the code only handles one:

User query: "What's ((3*(4+5)/0.5)+3245) + 8? What's 32/4.23? What's the sum of those two values?"
1. math(problem="((3*(4+5)/0.5)+3245) + 8")
2. math(problem="32/4.23")
3. math(problem="${1}+${2}")
4. join()<END_OFPLAN>

Step 3 fails, and does so silently too. It correctly parses strings that are "${1}", but not multi-argument strings like "${1}+${2}"
Luckily, this is a relatively easy fix:
Previous code:
def _resolve_arg(arg: Union[str, Any], observations: Dict[int, Any]):
    if isinstance(arg, str) and arg.startswith("$"):
        try:
            stripped = arg[1:].replace(".output", "").strip("{}")
            idx = int(stripped)
        except Exception:
            return str(arg)
        return str(observations[idx])
    elif isinstance(arg, list):
        return [_resolve_arg(a, observations) for a in arg]
    else:
        return str(arg)

Possible fix:
def _resolve_arg(arg: Union[str, Any], observations: Dict[int, Any]):
  '''Resolve arguments. This is mostly to get and replace ${idx} arguments that are
  dependencies on other tasks. Otherwise we just return the arguments again.
  '''

  # $1 or ${1} -> 1
  ID_PATTERN = r"\$\{?(\d+)\}?"

  def replace_match(match):
    # If the string is ${123}, match.group(0) is ${123}, and match.group(1) is 123.

    # Return the match group, in this case the index, from the string. This is the index
    # number we get back.
    idx = int(match.group(1))
    # Retrieves the value associated with the index idx from the
    # observations dictionary. If the index is not found in the dictionary, it returns
    # the placeholder itself (match.group(0)).
    return str(observations.get(idx, match.group(0)))

  # For dependencies on other tasks
  if isinstance(arg, str):
    # re.sub() searches the whole string and replaces all occurrences where the pattern
    # is matched. For each match, it calls the function and uses the match as input,
    # then replaces the match with the returned value from the function.
    return re.sub(ID_PATTERN, replace_match, arg)

  elif isinstance(arg, list):
    return [_resolve_arg(a, observations) for a in arg]

  else:
    return str(arg)

Task Fetching Unit, when it inserts the tool_messages, the function args don't get logged with function calls, this causes the replanner to loop and use the same function parameters and never corrects itself.

  tool_messages = [
    FunctionMessage(name=name, content=str(obs), additional_kwargs={'idx': k})
    for k, (name, obs) in new_observations.items()
  ]

Possible fix:
  tasks = {}
  args_for_tasks = {}
  ...
        tasks[task["idx"]] = (
        task["tool"] if isinstance(task["tool"], str) else task["tool"].name
      )
      args_for_tasks[task["idx"]] = (task["args"])
  ...
    new_observations = {
    k: (tasks[k], args_for_tasks[k], observations[k])
    for k in sorted(observations.keys() - originals)
  }
  ...
  tool_messages = [
    FunctionMessage(name=name, content=str(obs), additional_kwargs={'idx': k, 'args':task_args})
    for k, (name, task_args, obs) in new_observations.items()
  ]

Replan prompt is never actually inserted into the prompt sent to the LLM.
In the planner prompt formatting, the 'num_tools' variable needs to have a +1 added to it because we're appending the join() function, without +1 it says there's one less available tools than there actually is because it only counts the passed in functions and not the join() function.  And add +1 for listing otherwise it starts at a 0 offset.
Possible fix:

  tool_descriptions = "\n".join(
    f"{i+1}. {tool.description}\n" # +1 to offset the 0 starting index, we want it count normally from 1.
    for i, tool in enumerate(tools)
  )
  ...
    planner_prompt = base_prompt.partial(
    replan="",
    num_tools=len(tools)+1,# add one because we're adding the join() tool at the end.
    tool_descriptions=tool_descriptions,
  )
  ...
    replanner_prompt = base_prompt.partial(
    replan=replan_prompt,
    num_tools=len(tools)+1,# add one because we're adding the join() tool at the end.
    tool_descriptions=tool_descriptions,
  )

The task fetching unit, when it calls the tools it doesn't handle when there's not tasks or reaches it's end:
Current code: tasks = itertools.chain([next(tasks)], tasks)
A possible fix, wrap in try/except and set tasks to empty:

    try:
        tasks = itertools.chain([next(tasks)], tasks)
    except StopIteration:
        # Handle the case where 'tasks' is empty or has reached its end.
        tasks = iter([])

Thank you!


Corrade inside docker "does not work"...

Yes i know, but that is really all I can say. I am using a Corrade.ini that works fine with a local corrade bot on linux or windows, but the corrade bot inside the image just tells me this:
Corrade : [02-06-2018 09:28:00] : unable to load Corrade configuration : There is an error in XML document (122, 10).

solved: I built my own image using the same corrade version as the one i'm using locally, and now it seems to work.


[Enhancement]: There is no Pac Man Game

Do you want to have the enhancement of existing game ? 😀 Describe yourself..
Game enhancement
Pac man game doesn't exist anymore. So I'm going to make it and add it to that map.
Describe the solution you'd like
Solution steps
Adding index, css and javascript to make it
Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @aamira0 !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

/assign

Hey @aamira0 ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


move "base templates" from sinopia_api git repo / mongo_db deployment to locally loaded

Based on work for #2889 and #2907, there is a definite smell about the configuration for sinopia_editor UI living not only in mongo_db, but in LD4P/sinopia_api, a completely different code base from the rest of the editor.
LD4P/sinopia_api has a setup folder with json files that are used as "base templates" to get the sinopia_editor to display the correct UI widgets for editing a resource_template.
It might make more sense for these configurations to be local to the sinopia_editor codebase.
Tradeoffs:
Pros

removes complexity from sinopia_api
puts "mongo-setup" docker-compose task for local development where it is needed
keeps "configuration" for sinopia_editor closer to its use in ... sinopia_editor.

Cons

effort required to make this change
will add some "special case" complexity to sinopia_editor code when loading the "base templates" (look for "these 7 templates" locally, o.w. look in mongo)

Additional thoughts:
"base templates" -->

"bootstrap resource templates" ?
"bootup resource templates" ?
"template editor templates" ?
"initialization templates"

TO COMPLETE:

[x] sinopia_editor has "base templates" and loads them from local files (see PR #3279)
[x] sinopia_api no longer has "base template" files or "mongo_setup" in docker-compose.yml and may be able to drop some stuff in package.json (see PR LD4P/sinopia_api#217)
[ ] remove "base templates" from all the bastions (??)
[x] consider different name for "base templates" that is more descriptive.
[x] document what "base templates" are, how to modify, and what other steps are related (e.g. vocabulary documentation) -- see https://github.com/LD4P/sinopia_editor/blob/editor-component-templates-doc/static/EditorComponentTemplates.md for a beginning.  (see PR #3306)

"bootstrap template json"

"bootstrap" is a loaded term for me.

"component template"  !!!

I started some documentation on a branch:  https://github.com/LD4P/sinopia_editor/blob/editor-component-templates-doc/static/EditorComponentTemplates.md

Have the base templates been removed from mongo for all environments?   That's the only thing left on this ticket.

@peetucket Using your new Mongo skills, can you delete the resource templates listed here: https://github.com/LD4P/sinopia_api/commit/4bd37da3a7025812feed35e2c823dee519674e86#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L133-L137 ?
Note that they will only be in the resources collection.

@peetucket Using your new Mongo skills, can you delete the resource templates listed here: LD4P/sinopia_api@4bd37da#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L133-L137 ?
Note that they will only be in the resources collection.

These are all the templates in the PR in the "setup" folder?  (e.g.  setup/rt_literal_property_attrs_doc.json)
Which sinopia environments to delete from?

Note to self for remove syntax for a resource (using URI):
db.resources.remove({uri: 'http://localhost:3000/resource/FoobarTemplate'})

Yes.
All

How to delete:
First verify we only deleting one each with the query:
db.resources.find({id: 'sinopia:template:property:literal'}).count()
db.resources.find({id: 'sinopia:template:property:lookup'}).count()
db.resources.find({id: 'sinopia:template:property'}).count()
db.resources.find({id: 'sinopia:template:property:resource'}).count()
db.resources.find({id: 'sinopia:template:resource'}).count()
db.resources.find({id: 'sinopia:template:uri'}).count()
db.resources.find({id: 'sinopia:template:property:uri'}).count()

Then delete with the same query:
db.resources.remove({id: 'sinopia:template:property:literal'})
db.resources.remove({id: 'sinopia:template:property:lookup'})
db.resources.remove({id: 'sinopia:template:property'})
db.resources.remove({id: 'sinopia:template:property:resource'})
db.resources.remove({id: 'sinopia:template:resource'})
db.resources.remove({id: 'sinopia:template:uri'})
db.resources.remove({id: 'sinopia:template:property:uri'})

Deleted above seven resources from dev, stage and prod.

Thanks @peetucket !


Consolidate installation instructions

Cargo has a --git option that can take a GitHub URL. (Reference.)

Thanks!

Of course, the instruction might also mention the fact that we're on crates.io, https://crates.io/crates/cargo-minify


Make TypeScript output work as ES modules by adding file extensions

Suggestion
🔍 Search Terms
typescript output extensions import
✅ Viability Checklist

My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion
I know there has been discussion about this before, but a lot of time has gone by and I can't find any reasonable solution. The file extension is required to use import x from './y.js' in JavaScript. On the other hand, TypeScript supports imports without an extension, and doesn't add the extension in the output. Importing without extensions is the de facto standard for TypeScript as far as I know, which means these two things are incompatible. I personally think it would be nice if it also worked without .js, but we are where we are, so I want to ask for help to fix this with a compiler option, or some other solution.
I really like TypeScript, but I think at this point, we all know that the output doesn't work in Node or the browser, which is effectively everywhere. I hope a solution that can be agreed on by most people can be found 🙏
📃 Motivating Example
This would make import x from './y'; compile to modern JavaScript 👏
💻 Use Cases
ES modules

Frequently requested.  See https://github.com/microsoft/TypeScript/issues/16577 and https://github.com/microsoft/TypeScript/issues/42151 among others.


Create Blog “2023-10-13-kjhk”

Automatically generated by Netlify CMS

👷 Deploy Preview for resonant-starlight-3dcbac processing.

Name
Link

🔨 Latest commit
d5a28f56e53963d896e1376d017ed5820fdecbcb

🔍 Latest deploy log
https://app.netlify.com/sites/resonant-starlight-3dcbac/deploys/65299e4ceb6fab000869c737


Wfuzz parser: accept more status codes

Hello,
I'm using wfuzz to perform dictionary attacks to try to find possible missed directories from spider scans.
When trying to import the results to the DefectDojo I ran into problems. It doesn't accept some status codes present in the results.
Also, is there a possibility to discard the severity based on the status code? From the results I only wanted to upload the endpoints.
Here's a sample output
wfuzz_results.json
Have a nice day.

Hi @GilFernandes2000 , I uploaded your sample output and it was fine, all three results were shown.
Could you please be more specific about which DefectDojo version you used and also which status codes were not covered. In https://github.com/DefectDojo/django-DefectDojo/releases/tag/2.32.0 there were fixes regarding Wfuzz.
Regarding the severity, this could be implemented as soon as https://github.com/DefectDojo/django-DefectDojo/issues/9250 would be implemented.
I guess this can be closed @mtesauro and ias a false positive.

Hi @manuel-sommer, sorry for the inconvenience. I wasn't running the latest version of DefectDojo. I was having problems with the status code 301 but I saw that it was already fixed.
In case of the severity, I just wanted to have the option to skip it because there are endpoints that are supposed to be visible and accessible to the public so a High severity doesn't apply.
I'll close this issue.
Thanks for the prompt answer.

Within the linked issue, finetuneing could be implemented.


Add [Partial] combination attribute support for Named Formulas

This is an early prototype of support for a [Partial] attribute that enables combining named formulas.
This is done via name-mangling in the parser, renaming each NF to foo_Guid_0, foo_guid_1, ... and then creating a new hidden nf
Foo = Op(foo_guid0, foo_guid1, ...). This allows us to update the formulas independently in authoring, and process them without real changes to NF handling on the PA side.

✅ No public API change.

✅ No public API change.

✅ No public API change.


Error while running v0.0.4:  Could not resolve "src/adapters/wintercg-minimal.ts"

This can be resolved by adding the flag --no-emulate-wintercg


Alternative log formats

Summary of the new feature/enhancement
The different streams coming from powershell would be more useful if they were in a format like json and included metadata like logging level, function, datetime, etc.
It would be nice to have a straightforward way to customize the logging in powershell without having to use custom logging functions.

@strawgate Please add use cases and scenarios.


Work around lack of information on which networks exist

Stop checking the network IDs that come in; assume Docker is managing that information.
Also assume Docker will assign different subnets to different networks.

Adopting the assumptions, LGTM


Consuming bourbon as imports via bower/npm

The published Bourbon files are under app/assets/stylesheets, which makes it very verbose to do @import from SASS files. I realize we can set the Sass compiler's loadPath accordingly, but that means we get no IDE support because these  load path settings are not recognized by IDEs, and it's generally preferable to keep the imports as resolvable path names. Could we please reconsider publishing at least the top-level _bourbon.scss file under the root or at least under the app directory instead of 3 levels down? Thanks!

+1

Yep, we know it’s a bummer and we’re investigating this for 5.0. It will be large release with lots of refinements and fixes, like this one. Thanks!

awesome!

I think my issue might be related - I am told to use @import "bourbon/bourbon"; but this doesnt seem to give me any thing in my compiled css file. I have placed bourbon in "root/src/scss/" and compile to "root/dist/core.css" to keep it inline with my current build so is it my unique path that is causing me issues ? I am using grunt (grunt-contrib-sass) to build my css and this is working fine normally.
Thanks -

@ashwinr check out https://github.com/lacroixdesign/node-bourbon

thanks that will probably to the trick :)

We’ve restructured the Bourbon directories for v5.0 to be just core instead of app/assets/stylesheets.


Minor fixes

Hi!
I've made some minor style fixes.
Regards

@george-zakharov I like the typo fixes but I am a bit against the coding style changes you added in the PR. Those coding style exists since v9 and even if I want to change some I will probably update them for v10 whenever that one comes alive but not before to stay as consistent as possible.
If you could update your PR and only submit the typo changes I would gladly merge them ASAP

Okay, I'll fix it :)

@nyamsprod did it :)

@george-zakharov thanks. By the way now that I saw your answer I get it. League CSV uses PSR-2 as the basis of it's coding style + some additions by me. It was done prior to PSR-12 or PSR-2R was even created This explain more my why's 😉 . Anyway I will review the package coding style when the next major version is released. Thanks for the PR in any case.

@nyamsprod thank you too!
I will try to contribute further :)


Fix Repository About description

https://github.com/eclipse/microprofile-jwt-bridge About still says microprofile-jwtBridge.
@Emily-Jiang, please have a look

Added a comment here

All done @sberyozkin @ayoho

Thanks @Emily-Jiang for looking after it 👍

@sberyozkin my pleasure!


Use Threads.@spawn instead of @async

A very mechanical PR that goes beyond #72 and replaces every occurrence of @async with Threads.@spawn, as recommended in the Julia documentation of @async:
  │ Warning
  │
  │  It is strongly encouraged to favor Threads.@spawn over @async always even when no parallelism is required especially in publicly distributed libraries. This is
  │  because a use of @async disables the migration of the parent task across worker threads in the current implementation of Julia. Thus, seemingly innocent use of
  │  @async in a library function can have a large impact on the performance of very different parts of user applications.

Fixes #71.

Hey @devmotion, thanks for contributing!
I would like to get some feedback on when to use Threads.@spawn vs @async, I believe the first is not always a better replacement of the latter. For example, Distributed uses both async and spawn in different places.

I see that you also contributed to https://github.com/PumasAI/QuartoNotebookRunner.jl/issues/192, I think this is a good case that we should also take into account. What is the desired behaviour with RNGs for Malt?

Based on the docs and PRs such as https://github.com/JuliaLang/julia/pull/55315 I assumed one should always use Threads.@spawn instead of @async. It would be good to know (and document) if that's not always the case 🙂

What is the desired behaviour with RNGs for Malt?

I'm not sure actually, I think it depends on the intended use of Malt. For linear computations such as in QuartoNotebookRunner I think one would expect that state of all objects (including the RNG) is preserved between subsequent calls of remote_eval_fetch. But if the intended use are somewhat arbitrary unrelated Julia evaluations, then state does not matter. I guess the most common use is the former though?
I think this discussion is not directly related to this PR though, for that problem it doesn't seem to matter if one uses @async or @spawn.

I assume the Mac test failure on 1.10 are unrelated since these tests also fail in other recent PRs #79 and #85.

The change is not trivial without locking. The server-global objects that may be accessed by multiple threads work differently with @async vs @spawn. This needs some investigation on Pluto internals too.

Do you have an example for an object for which it would be problematic if the accessing task is not pinned to a thread anymore? And which Threads.@spawn might be problematic?

I initially replied

Do you have an example for an object for which it would be problematic if the accessing task is not pinned to a thread anymore?

https://github.com/JuliaPluto/PlutoSliderServer.jl/blob/17f45ea66bc6b3ce2d70334efb2fc6bbbf77e17f/src/PlutoSliderServer.jl#L236
It's mainly this one.

And which Threads.@spawn might be problematic?

All of them, until proven otherwise. Julia's threads can migrate through processors, which means that they can run at the same clock time on a different processor. And if they do, they may update the same memory location from two threads, for any shared memory that is not protected by a lock. It's highly unlikely, but it's not impossible, and when it will happen, it will be super hard to debug.
See also https://github.com/JuliaWeb/HTTP.jl/pull/1102#issuecomment-1703842677. This basically means that the parent thread is pinned to thread 0, no matter what you do, because HTTP.jl uses @async which pins it.
Doing threads correctly is hard.
As a final note, it's not clear in which exact scenario that is a good idea, performance wise. Julia only writes to I/O from thread 1, so to get benefit from this approach you'd need to have some performance-heavy operations that don't write much (which is often the case for scientific notebooks). But it may be hard to actually get performance out of this, because pushing computations to another processor (from the main one), means that the data need to migrate to the other processor, and the reply needs to come back, to be written to the tcp socket to find its way back to the network interface!
That is not to say we be underwhelmed though! If you're interested, you can start by understanding the access patterns to objects in the shared address space from the HTTP handlers and introduce locking around them. It's mainly the server_session in Pluto itself.

which is wrong, because it assumes we're on PlutoSliderServer. But also that it's not 100% wrong, because there is the implicit assumption that the handler is pinned on the main thread of the Malt worker on every client that uses Malt. (the exact problem mentioned in https://github.com/JuliaWeb/HTTP.jl/pull/1102#issuecomment-1703842677)
User code can escape the main thread by doing Threads.@spawn themselves. But if we do this, we change the promises of Malt per se. It's the same reason why Julia doesn't define macro async to equal Threads.@spawn to begin with.


Provide build and run instructions

It is unclear howto build and run this project.
When running gradle run I will get an error saying that no file has been specified, when appending the file path to the command I cannot get it running either. Please also show how to display the help messages provided in code

@chris-aeviator can you please check whether https://github.com/sschuberth/stan/pull/14 is good enough for you?

Feel free to reopen if there's still some unclarity.


Update Flow integration

Proposed Changes

Merge master into flow branch
Add flow types for new files

Checklist

[x] Feature developed
[x] Created/updated unit tests
[x] Comments in code
[ ] Documentation written

Changes Unknown when pulling 110126907bf96dc2d49c8ad6596dd6bf789aa65a on elas7:flow into ** on ModusCreateOrg:flow**.


Are both rollup_config.toml and rollup_config crate needed?

Right now there are two configs in the examples folder. There's const-rollup-config and rollup_config.toml.
Is there a conceptual distinction in between the two configs? If not, can const-rollup-config refactored into rollup_config.toml for better clarity and to avoid hardcoding ROLLUP_NAMESPACE_RAW and SEQUENCER_DA_ADDRESS?

Hey @LiveDuo! Great question - yes both configs are needed. The const-rollup-config crate is required at compile time, and sets configuration that needs to be baked into the rollup's underlying zk circuit. Any changes to this config are equivalent to a hard fork of the rollup. On the other hand, the rollup_config.toml file has runtime params that are only relevant to one particular full node at runtime.

cc @citizen-stig, maybe we can rename const-rollup-config to consensus-params or something? And maybe rollup_config.toml would be clearer as node-config.toml?

@preston-evans98 Thanks for clearing it out.
One thing that does not make complete sense yet is: if da_sequencer_address is required in const-rollup-config and whether a feature like https://github.com/Sovereign-Labs/sovereign-sdk/issues/408 would remove the hardcoded dependency on the sequencer address?

@preston-evans98 I thinks it is good idea to rename those to match their actual usage!

@LiveDuo, good question! Unforunately, #408 on its own won't remove the need for a hardcoded initial sequencer. For DOS protection, we require sequencers to stake some tokens before we begin processing their blobs, so you need at least one sequencer to be registered at genesis.
We do have a long-term plan for removing this restriction, but it isn't currently a priority. If you need that feature, let me know and we'll bump it up on the roadmap.
For context, the rough idea of what we'll do is process a limited number of blobs from unregistered sequencers in each DA layer block, with the requirement that each of these blobs must begin with a transaction which registers the sequencer in order for the rest of the blob to be processed. This puts an upper bound on the amount of "wasted" work that the rollup will have to do if someone malicious tries to spam the chain, but still gives us a fallback mechanism to recover if all of the registered sequencers are unavailable.

@preston-evans98 I kind of missed the DOS attack vector.

with the requirement that each of these blobs must begin with a transaction which registers the sequencer in order for the rest of the blob to be processed

It seems that this restriction might overlap with forced transactions (ie. submitted directly to DA) as they don't come from a registered sequencer either. My view is that unregistered sequencers are more important than forced transactions as they are still permission-less (with the require a bond) but provide a better user experience. I think users would value more the fallback unregistered sequencers provide but very few would go through the process of submitting the transaction to the DA manually.

If you need that feature, let me know and we'll bump it up on the roadmap.

As of right now, these specific features are just "good to have". The important bit is understanding the overall architecture and how the different pieces fit together.


UML link in YAML is faulty

Problem description
 The UML link in the most recent YAML appears to be faulty
Expected behavior
 Link to correct files
Alternative solution

Additional context

@ECORMAC I think this issue can be closed since the link is no longer broken😄

fixed


Create first pull request

Ok, thats cool. I've created a repository, a new branch, a new file and a commit. I'm on fire 🔥

Merge feat-checks into master


ui/map: fix css error

fix css error message:

: QCssParser::parseColorValue: Specified color without alpha value but alpha given: 'rgb 0, 0, 0, 150'

Is there some strict mode we can enable to make this fail more obviously? Something like PYTHONWARNINGS=error or -Werror

no idea yet.


使用cargo安装包错

环境：macos bigsur
rustc: rustc 1.55.0 (c8dfcfe04 2021-09-06)
cargo: cargo 1.55.0 (32da73ab1 2021-08-23)
执行命令: cargo install --force dcli
报错：
error[E0599]: no method named `insert_and_get` found for struct `DOMAINS` in the current scope
   --> /Users/zhangxin/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/i18n-embed-fl-0.2.0/src/lib.rs:360:17
    |
136 | / lazy_static::lazy_static! {
137 | |     /// Cached data specific to each localization domain, to improve
138 | |     /// performance of subsequent macro invokations.
139 | |     static ref DOMAINS: dashmap::DashMap<String, DomainSpecificData> =
140 | |         dashmap::DashMap::new();
141 | | }
    | |_- method `insert_and_get` not found for this
...
360 |           DOMAINS.insert_and_get(domain.clone(), data)
    |                   ^^^^^^^^^^^^^^ method not found in `DOMAINS`

For more information about this error, try `rustc --explain E0599`.
error: could not compile `i18n-embed-fl` due to previous error
warning: build failed, waiting for other jobs to finish...
error: failed to compile `dcli v0.0.7`, intermediate artifacts can be found at `/var/folders/g3/38kh1ntx0rn4xkglzn5_l20h0000gn/T/cargo-installJ3vBc1`

crates.io 上已更新 0.0.8, 请尝试从 crate.io 重新安装


upgrade to 6.1.4 fails on older systems

upgrade to 6.1.4 does not run on postgres versions <12
   ALTER TYPE rule_field_enum ADD VALUE IF NOT EXISTS 'rule';
   ALTER TYPE ... ADD cannot run inside a transaction block

from https://stackoverflow.com/questions/1771543/adding-a-new-value-to-an-existing-enum-type/7834949#7834949
If you have only one or two columns which use the enum type you want to change, you can try this. Also you can change the order of values in the new type.

-- 1. rename the enum type you want to change
alter type some_enum_type rename to _some_enum_type;
-- 2. create new type
create type some_enum_type as enum ('old', 'values', 'and', 'new', 'ones');
-- 3. rename column(s) which uses our enum type
alter table some_table rename column some_column to _some_column;
-- 4. add new column of new type
alter table some_table add some_column some_enum_type not null default 'new';
-- 5. copy values to the new column
update some_table set some_column = _some_column::text::some_enum_type;
-- 6. remove old column and type
alter table some_table drop column _some_column;
drop type _some_enum_type;

3-6 should be repeated if there is more than 1 column.

tolerate this and update system requirements
this only affects upgrades, new installs are ok


paused until find more people

Although I enjoy working on this project, I have many other commitments and feel I am somewhat addicted to this project. As such, I am putting this project on pause until I can get developers who, combined, output half of what I am outputting.
I believe I could get a solid event (similar to the Overcast network) within a month that can be presented to 3M+ sub-YouTubers, but I am currently working multiple jobs and have my own startup, which I am confounding. I need to prioritize.
I am putting this project on pause until either:
a) I get more developers who are willing to work with me
b) I am more available
I am guessing (a) will likely occur sometime in mid-May after uni is finished, but if you are a developer and are interested now, let me know.

I found more people but will still be rather inactive-ish until May.


Queries on Weights for Classification Loss on Background Boxes

Hi,
First of all congratulations for the great work and many thanks for sharing the code !!
I have been checking out the code, and have a query regarding the weight for classification loss on background proposals.
The classification loss on pseudo labels seems to be done here https://github.com/microsoft/SoftTeacher/blob/bef9a256e5c920723280146fc66b82629b3ee9d4/ssod/models/soft_teacher.py#L240
where the bbox_targets are computed a couple of lines earlier here https://github.com/microsoft/SoftTeacher/blob/bef9a256e5c920723280146fc66b82629b3ee9d4/ssod/models/soft_teacher.py#L215
which I understand refers to the bbox_head.py in mmdetection here https://github.com/open-mmlab/mmdetection/blob/bde7b4b7eea9dd6ee91a486c6996b2d68662366d/mmdet/models/roi_heads/bbox_heads/bbox_head.py#L183
which further calls _get_target_single() here https://github.com/open-mmlab/mmdetection/blob/bde7b4b7eea9dd6ee91a486c6996b2d68662366d/mmdet/models/roi_heads/bbox_heads/bbox_head.py#L117
But in this, the negative proposals are assigned weight of 1.0, which should have been cls_score for the proposals after running them through the Teacher, as mentioned in the paper.
Maybe I am missing something in the code. It would be really great if you could kindly clarify the above query or point me to where it uses the cls-score from the teacher into the classification loss for background proposals.
Thank You !!
Best Regards,
Anuj

Okay, I can see it now where it is updated to background cls-score from the teacher https://github.com/microsoft/SoftTeacher/blob/bef9a256e5c920723280146fc66b82629b3ee9d4/ssod/models/soft_teacher.py#L235

In the final classification loss here https://github.com/microsoft/SoftTeacher/blob/bef9a256e5c920723280146fc66b82629b3ee9d4/ssod/models/soft_teacher.py#L243
it seems loss is:
`
where w is the cls-score from teacher for background proposal
total_cls_loss = sum(cls_loss_on_all_fg_proposals) + sum(w * cls_loss_on_bg_proposals)
avg_factor = N_fg + sum(w's on bg proposals)
loss_cls = total_cls_loss / avg_factor
`
So, avg_factor is not as N_fg in the paper. Also, the w_j as used in the paper (Eq 5) does not seem to be used in the code.
It would be really great if you could you please clarify these couple of doubts.
Thank You !!
Anuj

Yes, you are right. The typo should have been fixed in the paper but I am not sure why it isn't. I will discuss this with my collaborators.

Great. Thanks a lot for the quick clarifications !! :+1:

Very good and important question. I'm curious about the relationship between weight setting and the final mAP performance. This can also benefit my work. I comment here simply to get the latest feedback.

@lliuz Hi, yes, the above equation matches the code correctly.


Radiobutton/IntVar() malfunction with tkinter in certain Spyder version

Description
What steps will reproduce the problem?

I ran the following script(just copied from a textbook teaching you use tkinter to build up a GUI)

the expected output of the GUI program is that, if I toggle one of the three radiobuttons, the background color shall be switched to the corresponding color, but it doesn't do so in this version of Spyder/Python3.
The interesting thing is that if I ran the exactly same script on the other PC, with

Spyder Version: 3.1.4
Python Version: 3.6.1
Qt Versions: 5.6.2, PyQt5 5.6 on Windows

It worked perfectly just as the textbook indicated.
I feel it really creepy and tried out different ways by myself with 20+ hours, and I finally give up and here by subscribing this issue.
best regards,
Lu
#%%

# =============================================================================
# Chapter 1-8 Checkbuttons IntVar() select()
# =============================================================================

import tkinter as tk
from tkinter import ttk
from tkinter import *

win = tk.Tk()

#aLabel = ttk.Label(win, text = 'A Label')
#aLabel.grid(column = 0, row = 0)

def clickMe():
    global name
    action.configure(text= 'Hello ' + nameEntered.get() + ' ' + numberChosen.get())
    print(nameEntered.get())
    action.configure(state = 'disable')

#    aLabel.configure(foreground = 'red')

action = ttk.Button(win, text = 'Click Me!', command = clickMe)
action.grid(column = 2, row = 1)

#name = tk.StringVar()
#nameEntered = ttk.Entry(win, width=12, textvariable=name)

ttk.Label(win, text = 'Enter a name: ').grid(column = 0, row = 0)
nameEntered = Entry(win, width=12)
nameEntered.grid(column = 0, row=1)

Label(win, text = 'Choose a number:').grid(column = 1, row = 0)
number = tk.StringVar() #ここでnumberをStringと定義したので、1,2,4,42が表示される時に、Stringになる
numberChosen = ttk.Combobox(win, width = 12, textvariable = number, state= 'readonly')
numberChosen['values' ] = (1,2,4,42,100)
numberChosen.grid(column=1, row = 1)
numberChosen.current(2)

chVarDis = tk.IntVar()
check1 = tk.Checkbutton(win, text= 'Disabled', variable = chVarDis, state = 'disabled')
check1.select()
check1.grid(column=0, row = 4, sticky = W)

chVarUn = tk.IntVar()
check2 = tk.Checkbutton(win, text= 'Unchecked', variable = chVarUn)
check2.deselect()
check2.grid(column=1, row = 4, sticky = W)

chVarEn = tk.IntVar()
check3 = tk.Checkbutton(win, text= 'Enabled', variable = chVarEn)
check3.select()
check3.grid(column=2, row = 4, sticky = W)

win.title('Python GUI')
#win.resizable(0,0)  # 4 Disable resizing the GUI

COLOR1 = 'Blue'
COLOR2 = 'Gold'
COLOR3 = 'Red'

radVar1 = tk.StringVar()

def radcall():
#    radVar1.set("1")
#    global radVar1
    radSel = radVar1.get()
    if radSel == 1:
        win.configure(background = COLOR1)
    elif radSel == 2:
        win.configure(background = COLOR2)
    elif radSel == 3:
        win.configure(background = COLOR3)
    print(radVar1)
    print(radVar1.get())
    print(radSel)
#    print('Hey')
#    print(rad1['value'])

#def radcall():
##    radVar1.set("1")
#    global radVar1
#    radSel = radVar1.get()
#    if rad1['value'] == 1:
#        win.configure(background = COLOR1)
#    elif rad1['value'] == 2:
#        win.configure(background = COLOR2)
#    elif rad1['value'] == 3:
#        win.configure(background = COLOR3)
#    print(radVar1)
#    print(radVar1.get())
##    print('Hey')
##    print(rad1['value'])

radVar1= tk.IntVar()
#radVar2 = tk.IntVar()
#radVar3 = tk.IntVar()
#radSel = 1

rad1 = tk.Radiobutton(win, text = COLOR1, variable = radVar1, value = 1, command = radcall)
rad1.deselect()
rad1.grid(column=0, row = 5, sticky = W)

rad2 = tk.Radiobutton(win, text = COLOR2, variable = radVar1,  value = 2,command = radcall)
rad2.deselect()
rad2.grid(column=1, row = 5, sticky = W)

rad3 = tk.Radiobutton(win, text = COLOR3, variable = radVar1,  value = 3,command = radcall)
rad3.deselect()
rad3.grid(column=2, row = 5, sticky = W)

#radVar1.set("1")

#radVar1 = tk.IntVar()
#win.set_focus()
#nameEntered.focus()
win.mainloop()

What is the expected output? What do you see instead?
Please provide any additional information below
Version and main components

Spyder Version: 3.2.3
Python Version: 3.6.2
Qt Versions: 5.6.2, PyQt5 5.6 on Windows

Dependencies
pyflakes >=0.6.0 :  1.5.0 (OK)
pycodestyle >=2.3:  2.3.1 (OK)
pygments >=2.0   :  2.2.0 (OK)
pandas >=0.13.1  :  0.20.3 (OK)
numpy >=1.7      :  1.13.1 (OK)
sphinx >=0.6.6   :  1.6.3 (OK)
rope >=0.9.4     :  0.10.5 (OK)
jedi >=0.9.0     :  0.10.2 (OK)
nbconvert >=4.0  :  5.3.1 (OK)
sympy >=0.7.3    :  1.1.1 (OK)
cython >=0.21    :  0.26.1 (OK)
qtconsole >=4.2.0:  4.3.1 (OK)
IPython >=4.0    :  6.1.0 (OK)
pylint >=0.25    :  1.7.2 (OK)

I fail to see how this is related to Spyder, sorry. It seems like a problem with Tk.

To confirm that and help you narrow down whatever the problem really is, I would think you could just run it in a regular python or iPython console from e.g. your system shell on the two machines, without Spyder, and observe the results.

Thanks for the kind comments for this problem.
Yesterday I upadated my anaconda package to the newest version(Spyder 3.2.4 & python 3.6.3) with command “conda update —all”. And I ran this script and observed the same outcome as in Spyder 3.2.3 & python 3.6.2 that the value of radiobutton is not passed to the tk.IntVar() and thus the function based on radiobutton regulation doesn’t work.
Besides Spyder 3.1.4 & python 3.6.1 environment, I tested the same script with Pycharm 2017.2 built & python 3.6.3 and my expected outcome was observed.
From my perspective and my minor knowledge on programming, I would guess that there is something occurs in Spyder. And I’m sorry if it’s not like this and looking forward to figure out the real mechanism.

Right now I confirmed again with jupyter notebook and it worked. (On the first PC which has ran with Spyder 3.2.4 & python 3.6.3|anaconda custom (64-bit)| and failed)

We don't have time to help you debug this, sorry. Please let us know if you find how Spyder is interfering with Tk.

Thanks for the effort.
I’m just very curious about that why certain version of Spyder coundn’t show the same result as former version and other IDEs.
Have you successfully reproduced the output?
If other PCs couldn’t, then I think it’s something wrong with the particular PC.

You don't have any other machine you can try it on with a fresh install? Or even a VM? I can't find tkinter on conda or conda-forge or I'd run it for you and report the results.

I’m not sure if the following photos could better explain what the problem is.(not sure if it could be defined as an interference.)
Case 1
Spyder 3.2.3 & python 3.6.2 Environment(PC 1) run a Spyder cell (in parentheses of #%%)
https://i.imgur.com/ufJfQuG.jpg
https://i.imgur.com/NkRyy8I.jpg
Case 2
Spyder 3.1.4 & python 3.6.1 Environment( PC 2) run a Spyder cell (in parentheses of #%%)
https://i.imgur.com/HLpWJh1.jpg
https://i.imgur.com/md6gOiP.jpg
Case 3
Pycharm 2017.2 & python 3.6.3|anaconda custom (64-bit)| Environment(PC 1)
https://i.imgur.com/0QdgITE.jpg
3 cases using the same script and only case 1 failed.
Run with jupyter notebook on PC1 shows Case 2&3,
But with Spyder 3.2.4 shows case 1.

The only pattern of interference I see on your screen is the one due to using a camera to take a photo of a computer display, heh...protip: Windows has such thing as snipping tool and printscreen, if you are not aware.
I think we understand that part, and it certainly may be associated with Spyder somehow. If you can actually dig into the code and see what's actually going on and where Spyder's playing a role, than maybe someone can fix it (or you are welcome to take a stab at it yourself, of course). The fact that it was something changed between those two versions might help you narrow it down; you can do so further by eliminating as many different variables (machine, python, package and spyder versions) as you can between the working and non working environments, and then at that point the diffs might be minimal enough to point you in the right direction. Best of luck!

@CAM-Gerlach Thanks for the suggestion, I'm now trying with a third PC.
For about tkinter, I think it is a standard python GUI toolkit and is included in python. you can check it with a python -m tkinter command.
if you don't have one,  i just uploaded here ;-)
https://github.com/hugoess/tkinter-package

Okay, thanks. In case that didn't clue you in, I'm a n00b when it comes to GUIs and just a random Spyder user besides, so I really don't think I can be much more help than whatever I have already. Hopefully you get it working, or at least isolate the problem.

@CAM-Gerlach Thank you for your encouraging words!
Actually I'm really a novice/noob( started within 2 months) with Python and I found Spyder is a really useful, helpful and easy-to-start-with IDE in scientific analysis.
For now I will choose to just continue my development on the working environment and when somehow I become more intermediate( like knowing how to use debug tools), I will try to figure this out at that time.
BTW, I see you commenting at issues here, so you are also a member of Spyder maintenance team or so?

Haha, nope, I'm no different from you—I' hope I'm not sending the wrong impression...:/ Like I mentioned above, I'm just a run of the mill Spyder user, and a beginner at that.  I haven't even submitted my first PR yet; I just felt bad I was submitting long and detailed issues for others to fix without helping at all in return, so I try to do what I can triaging issues and helping others with their problems while working on some simple fixes/enhancements on the side, all while I'm not doing my actual job as a researcher.

Good of you, i think somehow you are having a meaningful time XD

Closing as this is not a Spyder bug.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target_5bce9f0e-389b-44d8-a653-68c455ca8cff/pull/1 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-target_5bce9f0e-389b-44d8-a653-68c455ca8cff.git

Docs Build status updates of commit f4eca85:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-RuningBuildFailed] Some unexpected errors happened when running build, please open a ticket in https://aka.ms/SiteHelp and include the error report for our team to troubleshoot

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Cannot remove attachments

Example: when Viserys leaves play, he can remove an attachment. You can't do it manually.
Also, When a character or leaves play, the non-terminal attachments disappear.

Cannot look at a certain number of cards (like for Summons).

Cannot do a second challenge of the same type. Like a second military with Khal Drogo out.

Attachments can now be removed from play, the others will be implemented as those cards get implemented


redisCommand invalid conversion from void to redisReply

Hi, I'm very new to use hiredis for my c project and I encountered an issue.
When I tried the very PING PONG code from the example.c, I got the below error:
test_hiredis.c: In function ‘int main()’:
test_hiredis.c:17:22: error: invalid conversion from ‘void*’ to ‘redisReply*’ [-fpermissive]
reply = redisCommand(c, "PING");
~~^
When I SET value to the db, it works if I didn't assign the return value to it. Example as follow:
redisCommand(c, "SET TESTVALUE my_test_value");
I can see a new variable is created in the redis db by redis-cli.
However, if I want to assign redisCommand() to redisReply point, the above error shows up.
Please help me with this problem. Many thanks.
Here is my code:
#include <stdlib.h>
#include "hiredis/hiredis.h"

int main() {
    redisContext *c = redisConnect("<IP_ADDRESS>", 6379);

    if (c != NULL && c->err) {
        printf("Error: %sn", c->errstr);
        redisFree(c);
    } else {
        printf("Connected to Redis\n");
    }

    redisReply *reply;

    reply = redisCommand(c, "PING");
    freeReplyObject(reply);
    return 0;
}

Are you compiling your program with a C++ compiler?
C has a special rule that void* may always be converted to and from any other pointer type, whereas C++ does not.
With a slight change your program will compile as C++:
diff --git a/test_hiredis.cpp b/test_hiredis.cpp
index 151fa11..fdae710 100644
--- a/test_hiredis.cpp
+++ b/test_hiredis.cpp
@@ -13,7 +13,7 @@ int main() {

     redisReply *reply;

-    reply = redisCommand(c, "PING");
+    reply = (redisReply*)redisCommand(c, "PING");
     freeReplyObject(reply);
     return 0;
 }

If you don't intend to compile your program as C++ however, you'll need to change how you are invoking it.  If you're using GCC or clang it should be straightforward:
gcc -Wall test_hiredis.c -lhiredis
clang -Wall test_hiredis.c -lhiredis

I'm not as familiar with MSVC.

Thanks for the reply.
I'm working on Ubuntu 18.04. I compile my file as follow:
gcc -o example example.c -lhiredis
I updated the code as follows and now I can compile it. But when running, it gets Segmentation fault (core dumped)
#include <stdlib.h>
#include "hiredis/hiredis.h"

int main() {

    redisContext *c = redisConnect("<IP_ADDRESS>", 6379);

    if (c != NULL && c->err) {
        printf("Error: %sn", c->errstr);
        redisFree(c);
    } else {
        printf("Connected to Redis\n");
    }

    redisReply *reply;

    reply = (redisReply*)redisCommand(c, "PING");
    freeReplyObject(reply);

    printf("%s\n", reply->str);
    return 0;
}

I'm working on Ubuntu 18.04. I compile my file as follow:
gcc -o example example.c -lhiredis

If you're compiling your program that way, you really shouldn't need the typecast.  It doesn't hurt anything, it just shouldn't be required in C.
The segfault is probably because you are causing undefined behavior by calling freeReplyObject(reply) before accessing the reply structure itself.
    redisReply *reply;

    reply = (redisReply*)redisCommand(c, "PING");

    // You are freeing the memory for `reply` here
    freeReplyObject(reply);

    // Now you are attempting to access `reply->str`
    printf("%s\n", reply->str);
    return 0;

Here's a modified program that checks for errors after connecting and then after sending the PING command:
#include <stdlib.h>
#include "hiredis/hiredis.h"

int main() {

    redisContext *c = redisConnect("<IP_ADDRESS>", 6379);

    // Short circuit if we fail to allocate a redisContext or if it
    // reports an error state.
    if (c == NULL || c->err) {
        fprintf(stderr, "Error:  Couldn't connect to Redis (%s)\n",
                c && c->err ? c->errstr : "Unknown error");
        exit(1);
    }

    printf("Connected...\n");

    redisReply *reply;

    // You really shouldn't need this (redisReply*) typecast in C.
    reply = (redisReply*)redisCommand(c, "PING");

    // Now make sure our reply is not NULL and it is a STATUS reply.
    if (reply == NULL || reply->type != REDIS_REPLY_STATUS) {
        fprintf(stderr, "Error:  NULL or wrong type from PING!\n");
        exit(1);
    }

    // Now you know you have a reply and it's the right type
    printf("Reply: %s\n", reply->str);

    // Clean up memory.
    freeReplyObject(reply);
    redisFree(c);

    return 0;
}

I tried check the error and move the freeReplyObject function after calling the printf function.
The error remains and it does not even go to the error checking section.
Here is my code:
#include <stdlib.h>
#include "hiredis/hiredis.h"

int main() {

    redisContext *c = redisConnect("<IP_ADDRESS>", 6379);

    if (c != NULL && c->err) {
        printf("Error: %sn", c->errstr);
        redisFree(c);
    } else {
        printf("Connected to Redis\n");
    }

    redisReply *reply;

    reply = (redisReply*)redisCommand(c, "PING");

    if (reply == NULL || reply->type != REDIS_REPLY_STATUS) {
        fprintf(stderr, "Error: NULL or wrong type from PING!\n");
    }

    printf("%s\n", reply->str);

    freeReplyObject(reply);
    redisFree(c);

    return 0;
}

The output:
root@ubu:/home/ubu/Desktop# gcc -o test_hiredis test_hiredis.c -lhiredis
root@ubu:/home/ubu/Desktop# ./test_hiredis
Connected to Redis
Segmentation fault (core dumped)
root@ubu:/home/ubu/Desktop#

I wonder if I install hiredis correctly.
How to install hiredis on ubuntu from source code exactly? I installed it by following a youtube tutorial: https://www.youtube.com/watch?v=ECY20JGfLso&ab_channel=CodeSupplement

C can be tricky to learn at first.
You can certainly try to reinstall hiredis.  It looks like that video has you copying hiredis source files into your directory, but you're linking with your system hiredis (that's what -l hiredis is doing).  This certainly could cause a problem.
Perhaps this program will work for you.  You don't need any of hiredis' source files in your project path.  Those will come from your system.
Like the gist says you should be able to compile like so:
cc -Wall -ocheck-hiredis check_hiredis.c -lhiredis

If you get a linker error you will need to install hiredis either by installing it from your package manager or building it from source with:
git clone https://github.com/redis/hiredis.git && cd hiredis
git checkout v1.1.0 && make clean && make && sudo make install

# You may need to then do this
sudo ldconfig

And just so I mention it there is also a logic bug in this part of your program:
    if (c != NULL && c->err) {
        printf("Error: %sn", c->errstr);
        redisFree(c);
    } else {
        printf("Connected to Redis\n");
    }

This will print Connected to Redis when c == NULL.

Hi michael-grunder,
I can't thank you more!
I removed the older installation file (as in the youtube video I mentioned) and used the way you recommended to install the hiredis and now everything works!
It seems like the manually installation method messed up the whole repository for invoking library for hiredis.
Thank you again for the help!
Happy new year, btw!


Allow images to be hidden from the top of posts

Type of change

[x] New feature (non-breaking change which adds functionality)
[x] Documentation update

Description

I was looking for a way to hide a post's image from the top of the post but still have it show on the home page and whenever it is shared in socials. This was mainly because I wanted the first part of the post to embed a corresponding YouTube video and I didn't want the post image and YouTube video to be displayed right next to each other, effectively showing the same things twice.
I found this discussion post from someone else that is asking how to do this exact thing, and followed the suggestions there and made it into a PR.
Additional context

This PR successfully hides the image from being shown at the top of the post.

[ ] However, I'm unsure if this prevents the image from being shown when sharing via socials. It seems to be working via a "social share preview" browser extension but I'm not sure where og:image is being set, so please confirm that og:image is set correctly before merging.

Ok. I hoped that by making it an "opt-in" change (if you don't want to use it, no changes are needed), that would reduce confusion.
Sounds like you are not interested in integrating this to the baseline, so I will close this PR.


Update Readiness probe

What is the purpose of the change
Brief changelog
Verifying this change

Checklist

[x] Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Each commit in the pull request should have a meaningful subject line and body.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
[ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
[ ] Add some description to dubbo-website project if you are requesting to add a feature.
[ ] GitHub Actions works fine on your own branch.
[ ] If this contribution is large, please follow the Software Donation Guide.

Codecov Report

Merging #10423 (96ece31) into 3.1 (87a776a) will decrease coverage by 0.28%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##                3.1   #10423      +/-   ##
============================================
- Coverage     65.53%   65.25%   -0.29%
+ Complexity      318      294      -24
============================================
  Files          1253     1253
  Lines         54516    54514       -2
  Branches       8240     8240
============================================
- Hits          35729    35575     -154
- Misses        14905    15040     +135
- Partials       3882     3899      +17

Impacted Files
Coverage Δ

...e/dubbo/qos/probe/impl/ProviderReadinessProbe.java
35.29% <0.00%> (+3.71%)
:arrow_up:

...mmon/serialize/fastjson2/FastJson2ObjectInput.java
0.00% <0.00%> (-62.50%)
:arrow_down:

...mon/serialize/fastjson2/FastJson2ObjectOutput.java
0.00% <0.00%> (-56.25%)
:arrow_down:

...on/serialize/fastjson2/FastJson2Serialization.java
57.14% <0.00%> (-28.58%)
:arrow_down:

...dubbo/common/status/support/LoadStatusChecker.java
41.66% <0.00%> (-25.00%)
:arrow_down:

...nt/metadata/ServiceInstanceHostPortCustomizer.java
65.78% <0.00%> (-21.06%)
:arrow_down:

...n/serialize/fastjson2/Fastjson2CreatorManager.java
46.66% <0.00%> (-20.00%)
:arrow_down:

...dubbo/remoting/exchange/support/DefaultFuture.java
80.17% <0.00%> (-11.21%)
:arrow_down:

...che/dubbo/registry/client/NopServiceDiscovery.java
44.44% <0.00%> (-11.12%)
:arrow_down:

...va/org/apache/dubbo/remoting/TimeoutException.java
22.22% <0.00%> (-11.12%)
:arrow_down:

... and 31 more

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


No application menu when "hide the dock icon" is enabled.

When "Hide the dock icon when the mini player is active" is enabled, I no longer get the application menu when the window is focused; the menu of the previously focused app is shown instead. When I go to full screen, the application menu does not show up when I put the mouse at the top of the screen. This seems to be the cause of #71.

Control-clicking the menu icon doesn't seem to pull-up the application menu (just the mini-player still). I'm on a one-button trackpad... Do I need a mouse with a right button?


Fix incorrect variable name that was preventing final flush in browse…

@bensigelman , fixes the final flush issue. The code was not properly ported when moving from Thrift to the JSON endpoint.  The this._hostport variable does not exist in the JSON reporting code path.

(thanks)


Implement open modes for store

This allows having a store that's marked read-only or write-only and
have this enforced by the type system.
Signed-off-by: Patrick Uiterwijk<EMAIL_ADDRESS>

This is specifically for the manufacturing server, which will have one read-only store (mfgstring -> public key) and one write-only store (new ownership vouchers).


ARM64 Builds

We need rebuild all native code for arm.

[ ] need arm jdk
[ ] rebuild internal natives

[ ] runnerw(win)
[ ] launcher(mac)
[ ] launcher(win)
[ ] fsnotifier(mac/win)
[ ] ideaWin32(win)
[ ] jumplistbridge(win)
[ ] restarter(mac/win)

[ ] rebuild external natives

[x] jna library

[x] win https://github.com/java-native-access/jna/pull/1264
[x] mac https://github.com/java-native-access/jna/pull/1297

[ ] pty
[ ] winp??

[ ] support updates inside java code, due it will be new platformIds
[ ] support new platformIds in hub.consulo.io
[ ] new distribution
[ ] new download page

This issue delayed due i don't have devices for test.

Windows ARM64 device arrived


Add regularization term to AMD?

Right now AMD blows up if any of the fields do not have noise added to them due to dividing by velocity or tracer gradients.
@sandreza suggested that a small regularization term may be added to the denominator so that zero gradients do not produce NaNs.

The issue I have with this solution is that there is no default value we can reasonably choose for such a parameter.
So, we can add the possibility for users to set a regularization parameter which is 0 by default. But by the time users realize that they need to set a regularization parameter, they could have already added noise to their initial condition. In essence, you'll have to add small numbers somewhere --- and I think its both easier and preferable (from the point of view of the correctness of the solution) to add these numbers to the initial condition rather than to change the model itself by adding small numbers in certain places. The notion of 'small' is better defined for the initial condition than, eg, for the strain rate (the denominator of the AMD fraction).
Regardless of whether this is a good idea, I don't think we should consider changing the LES model until we have done some basic verification and understand its behavior.

@ali-ramadhan, @sandreza, one solution is to add an ifelse statement to AMD that returns a zero nonlinear transport coefficient (viscosity or diffusivity) if the denominator is zero. I think this is correct behavior, because the denominator of the AMD transport coefficient being zero also implies that the flux divergence is zero (in principle --- this is only strictly true in the case that the gradients and transport coefficients are co-located, which is not how our algorithm works right now). Either way, it is reasonably correct to return a value of zero for the transport coefficient (unlike the addition of a regularization parameter, which we can show is definitely incorrect in some cases, hence my concern).
In other words, the AMD viscosity function is
@inline function ν_ccc(i, j, k, grid::Grid{FT}, closure::AnisotropicMinimumDissipation, c,
                       eos, grav, u, v, w, T, S) where FT

    r = Δ²ₐ_uᵢₐ_uⱼₐ_Σᵢⱼ_ccc(i, j, k, grid, closure, u, v, w)
    ζ = Δ²ᵢ_wᵢ_bᵢ_ccc(i, j, k, grid, closure, eos, grav, w, T, S)
    q = tr_∇u_ccc(i, j, k, grid, u, v, w)

    νdagger = -closure.C * (r - ζ) / q

    return max(zero(FT), νdagger) + closure.ν
end

I propose that we change the line with νdagger to
νdagger = ifelse(q != 0, -closure.C * (r - ζ) / q, zero(FT))

Let me know what you think.

Ah interesting.
I'm wondering if this is an opportunity to short circuit AMD and speed it up a bit: If q is calculated first then you could return zero(FT) early and save some cycles.

I'm fine with that too... so something like
if q == 0
    return zero(FT)
else
   ...
end

We were lead to believe that ifelse is faster on the GPU --- any concerns about that here? Presumably GPU cycles are cheap (but memory accesses are not as long as we aren't using shared memory...)

Yeah the problem with ifelse is that it actually calculates both branches.
I thought it was faster on the GPU as well, but it depends on the use case. We've been using explicit if statements in the z-operators for a long time and it was still decently fast with millions of if statements per time step so I don't think using it in an AMD kernel will be bad.
We should still run benchmark_turbulence_closures.jl before and after of course.

Should save some time as Δ²ₐ_uᵢₐ_uⱼₐ_Σᵢⱼ_ccc and Δ²ᵢ_wᵢ_bᵢ_ccc seem like expensive functions.

This was implemented in #383.


Add input and output for code examples

Added input and output for code examples to improve clarity of said examples.

Thanks @ezioda004


Remove Docker Build Items & Switch to GitHub Hosted Image

We only utilize Snowflake in our dbt environment, so you can see I am only pulling from the Snowflake image. However, this can easily be modified to pull all dbt connectors. This eliminates the need to build and publish your own docker image to Docker Hub and updating this action to newer versions a breeze.
FROM ghcr.io/dbt-labs/dbt-core:1.6.0

COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]

Thank you for that PR. As you mentioned, this is only for using the Snowflake image? We'll have to think about how to use the other connectors.

Correct! I believe if you switch to "FROM ghcr.io/dbt-labs/dbt-core:1.6.0" it will install all of the connectors.

Awesome - will give that a try. Thanks again!

I am going to close this for now as I don't think FROM ghcr.io/dbt-labs/dbt-core:1.6.0 contains all adapters, it's just dbt-core.  I agree that dbt publishes images that include individual adapters, but I don't see an image for dbt-all.
For now I am just going to build versions following the guide here https://github.com/dbt-labs/dbt-core/tree/main/docker


bugfix flytekit-pandera

Signed-off-by: Niels Bantilan<EMAIL_ADDRESS>TL;DR
This PR fixes an issue where the pandera schema was not validating out-going dataframes in the PanderaTransformer.to_literal method. This resulted in a no-op when executing a task on a flyte backend
Type

[X] Bug Fix
[ ] Feature
[ ] Plugin

Are all requirements met?

[X] Code completed
[ ] Smoke tested
[ ] Unit tests added
[ ] Code documentation added
[ ] Any pending items have an associated Issue

Complete description
The flytekit pandera plugin was not working correctly on a flyte backend because the pandera schema was not being invoked in the PanderaTransformer.to_literal method. This PR fixes this by validating a dataframe output before it's written out to disk.
Tracking Issue
NA
Follow-up issue
NA
OR
https://github.com/lyft/flyte/issues/

@cosmicBboy do you also want to add the auto-loading feature as in the flytekitplugins-data-fsspec?

@cosmicBboy do you also want to add the auto-loading feature as in the flytekitplugins-data-fsspec?

sure! how does one add the auto-loading feature?

@cosmicBboy do you also want to add the auto-loading feature as in the flytekitplugins-data-fsspec?

sure! @kumare3 how does one add the auto-loading feature?

was able to smoke test this on sandbox, producing an error as expected:

let's do autoloading as a separate pr.


[🐛 BUG]: Jobs amqp Error while producing messages with same delay and exchange type direct

No duplicates 🥲.

[X] I have searched for a similar issue in our bug tracker and didn't find any solutions.

What happened?
..
Version (rr --version)
2023.3.6
How to reproduce the issue?
jobs:
  pipelines:
    queue1:
      driver: amqp
      config:
        durable: true
        exchange: amqp.direct
        routing_key: queue1
        exchange_type: direct
        exchange_durable: true
     queue2:
      driver: amqp
      config:
        durable: true
        exchange: amqp.direct
        routing_key: queue2
        exchange_type: direct
        exchange_durable: true

$this->jobs->connect('queue1')->push(
    name: 'queue1',
    payload: 'message',
    options: (new Options())->withDelay(20)
);

$this->jobs->connect('queue2')->push(
    name: 'queue2',
    payload: 'message',
    options: (new Options())->withDelay(20)
);

When producing RR will try to create the same queue delayed-20000.amqp.direct. for them, which will cause an error:
Error 'rpc_push:
	jobs_plugin_push:
	rabbitmq_push:
	rabbitmq_handle_item: Exception (406) Reason: "PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-routing-key' for queue 'delayed-20000.amqp.direct.' in vhost '/': received 'queue2' but current is 'queue1'"' on tcp://<IP_ADDRESS>:6001

I think this is happening because we have a direct exchange type and there are no queue names in the pipeline config.
Maybe we should add a check for an empty queue and use "rk" instead at this point?
Relevant log output
2023-11-28T05:08:05+0000	INFO	server      	{"message":"Exception thrown when handling an exception (Spiral\\RoadRunner\\Jobs\\Exception\\JobsException: Error 'rpc_push:\n\tjobs_plugin_push:\n\trabbitmq_push:\n\trabbitmq_handle_item: Exception (406) Reason: \"PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-routing-key' for queue 'delayed-20000.amqp.direct.' in vhost '/': received 'queue2' but current is 'queue1'\"' on tcp://<IP_ADDRESS>:6001 at /var/www/project/vendor/spiral/roadrunner-jobs/src/Queue/Pipeline.php line 47)","context":{"exception":{"class":"Spiral\\RoadRunner\\Jobs\\Exception\\JobsException","message":"Error 'rpc_push:\n\tjobs_plugin_push:\n\trabbitmq_push:\n\trabbitmq_handle_item: Exception (406) Reason: \"PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-routing-key' for queue 'delayed-20000.amqp.direct.' in vhost '/': received 'queue2' but current is 'queue1'\"' on tcp://<IP_ADDRESS>:6001","code":0,"file":"/var/www/project/vendor/spiral/roadrunner-jobs/src/Queue/Pipeline.php:47","previous":{"class":"Spiral\\Goridge\\RPC\\Exception\\ServiceException","message":"Error 'rpc_push:\n\tjobs_plugin_push:\n\trabbitmq_push:\n\trabbitmq_handle_item: Exception (406) Reason: \"PRECONDITION_FAILED - inequivalent arg 'x-dead-letter-routing-key' for queue 'delayed-20000.amqp.direct.' in vhost '/': received 'queue2' but current is 'queue1'\"' on tcp://<IP_ADDRESS>:6001","code":0,"file":"/var/www/project/vendor/spiral/goridge/src/RPC/RPC.php:101"}}},"level":500,"level_name":"CRITICAL","channel":"exception","datetime":"2023-11-28T05:08:05.481257+00:00","extra":{"http_method":"GET","ip":"<IP_ADDRESS>","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36","status_code":500}}

Hey @fereron 👋
Yes, you're right, this is the bug. We should add some randomness to these values. Will be fixed in the next bugfix release. Thanks for noting that 👍


Call in-process hook for deploy-action with parameters

Description
feat: Adds call to oclif hooks for deploy-action during run/deploy and pass… it the actions being deployed
Previous hook implementation was not fine-grained enough as when the package-script for deploy-action was called, there was no context of what action was being deployed and the hook-script developer had to parse the cli params themselves to see -a action-1 filters.
This hopefully allows aio-cli plugin developers a more focused hook where they implement only the required amount and not respond to every oclif hook event init, prerun, postrun
InProc hook is fired during the deploy-action stage of:

aio app deploy
aio app deploy -a actionname
aio app run
aio app run --local

Related Issue
Working on this revealed https://github.com/adobe/aio-cli-plugin-app/issues/608
Motivation and Context
2 paths that should fire an inproc hook ...

aio app deploy [--action some-action]

for each action to be deployed fire an event with the config, which action is being deployed, isLocal

aio app run [--local]

for each action to be deployed

How Has This Been Tested?
To verify my hook (emiter) was working as expected, I added a quick hook (responder) to the app plugin.
// package.json
"oclif": {
    "hooks": {
      "deploy-actions": "./src/hooks"
    }
}

// ./src/hooks.js
module.exports.hook = async function ({ appConfig, filterEntities, isLocalDev }) {
  console.log('inproc hook called with appConfig => ', Object.keys(appConfig))
  console.log(`filterEntities: ${JSON.stringify(filterEntities)}, isLocalDev: ${isLocalDev}`)
}

Here is the output of various commands I ran to test, using the sample test hook above.
aio app run
inproc hook called with appConfig =>  [
  'app',        'ow',
  's3',         'web',
  'manifest',   'actions',
  'tests',      'root',
  'name',       'web2',
  'hooks',      'imsOrgId',
  'operations', 'envFile'
]
filterEntities: [], isLocalDev: false

// after modifying the `generic` action file ....

inproc hook called with appConfig =>  [
  'app',        'ow',
  's3',         'web',
  'manifest',   'actions',
  'tests',      'root',
  'name',       'web2',
  'hooks',      'imsOrgId',
  'operations', 'envFile'
]
filterEntities: ["generic"], isLocalDev: false

// if the above calls are run with --local
// then the hook will be called with

 isLocalDev: true

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Tested using this PR branch (local link) and:
# repo: https://github.com/shazron/oclif-hooks-test
aio plugins install shazron/oclif-hooks-test


[Snyk] Upgrade reflect-metadata from 0.2.1 to 0.2.2

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade reflect-metadata from 0.2.1 to 0.2.2.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 1 version ahead of your current version.
The recommended version was released 21 days ago, on 2024-03-29.

Release notes

Package name: reflect-metadata

0.2.2 - 2024-03-29

0.2.1 - 2023-12-14What's Changed

Fix stack overflow crash in isProviderFor by @ rbuckton in #155
Update main to v0.2.1 by @ rbuckton in #156

Full Changelog: v0.2.0...v0.2.1

    from reflect-metadata GitHub release notes

Commit messages

Package name: reflect-metadata

ca9650a Bump patch version
49e57c0 Merge pull request #161 from rbuckton/fix-fallback
a0a0553 Fix incorrect early exit in fallback
67ae05d Add test showing fallback issue
6dd6417 Merge pull request #159 from hasezoey/ignoreGithub
1509722 Ignore .github directoy for npm publishing
9562d63 Merge pull request #157 from rbuckton/backwards-compat-exports
0c237d8 Add backwards-compatible exports for reflect-metadata/Reflect
f56f83a Merge pull request #156 from rbuckton/release-0.2
7afd45d Merge pull request #155 from rbuckton/fix-153
af40361 Fix stack overflow crash in isProviderFor
1fce5c6 Merge pull request #152 from rbuckton/fix-GenRandomValues
7c4239a Don't use return value of crypto.getRandomValues
b7db32c Merge pull request #151 from rbuckton/fix-typo
f5a3b4d Fix typos
9a48a2d Merge pull request #91 from cncolder/patch-1
9fb4625 Merge pull request #138 from knutkj/knutkj/traceur-readme-link/1
3b8fa50 Merge branch 'main' into knutkj/traceur-readme-link/1
2e88855 Merge pull request #150 from rbuckton/release-0.2
cfd3ccf Unprettified README file.
76fb116 Added link to Traceur in README file. Prettified README file.
1288ddf fix typo in comment

Compare

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 82.56%. Comparing base (579ee06) to head (ff93c46).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #274   +/-   ##
=======================================
  Coverage   82.56%   82.56%
=======================================
  Files          23       23
  Lines        2265     2265
  Branches      126      126
=======================================
  Hits         1870     1870
  Misses        395      395

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


feat: add a submodule to support proxy based regional external load balancer

This is a combination of all previous commits for this feature because I messed up last time when I did the rebase.

/gcbrun


feat(upgrade): perform upgrade from NDM operator

This PR adds a new pkg to perform upgrade operations. Preupgrade -> upgrade -> postupgrade tasks all can be performed using the package. It is also possible to handle upgrade for multiple release versions.
Currently, only the preupgrade script is being executed. It handles renaming finalizer in BDC.

Codecov Report

Merging #286 into master will decrease coverage by 0.54%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #286      +/-   ##
==========================================
- Coverage   52.71%   52.17%   -0.55%
==========================================
  Files          51       51
  Lines        2396     2396
==========================================
- Hits         1263     1250      -13
- Misses       1037     1047      +10
- Partials       96       99       +3

Impacted Files
Coverage Δ

cmd/ndm_daemonset/probe/eventhandler.go
46.05% <0%> (-7.9%)
:arrow_down:

cmd/ndm_daemonset/probe/udevprobe.go
60.16% <0%> (-5.7%)
:arrow_down:

Continue to review full report at Codecov.

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


cmd/compile: compiler runs "forever" for test case

This is from #48974. The following program
package p

type Fooer interface {
	Foo()
}

type Fooable[F Fooer] struct {
	ptr F
}

func (f *Fooable[F]) Adapter() *Fooable[*FooerImpl[F]] {
	return &Fooable[*FooerImpl[F]]{&FooerImpl[F]{}}
}

//
// By removing the 'F Fooer' type param, program compiles sucessfully
//            |||||||||
//            vvvvvvvvv
type FooerImpl[F Fooer] struct {
}

func (fi *FooerImpl[F]) Foo() {}

type-checks successfully now (after fixing #48974) but the compiler appears to hang.
cc: @danscales

Slightly simplified reproducer:
package p

type Fooer interface {
	Foo()
}

type Fooable[_ Fooer] struct {}

func (_ *Fooable[F]) Adapter() (res *Fooable[*FooerImpl[F]]) {
	return
}

type FooerImpl[_ Fooer] struct {}

func (*FooerImpl[_]) Foo() {}

I think this another case where things are not monomorphisable, right?  In #48018, it was more focused on a generic function that can create arbitrary levels of the generic type Box[].  In this case, we have a method/type combination, where a type's own method creates another level of instantiation of the same type.
If we reference/create Fooable[MyInt], where MyInt satisfies Fooer, then when we instantiate the type and methods, we must create Fooable[*FooerImpl[MyInt]].  But then when we instantiate that type, we must create Fooable[Fooable[*FooerImpl[MyInt]]], etc.  So, if we do stenciling/monomorphisation, we need to create instantiations for an infinite number of types.  (I realize in this case that Adapter is not actually called and its result used, so maybe we could special-case and not created those methods in this case, but the general problem remains.)
In the current implementation, we actually get in an infinite loop creating types during the translation to types1.  If we had some kind of lazy representation of types, we might be able to compile, but we would need to create run-time types or dictionaries on the fly at run-time, especially if actually created an instance of Fooable[] and Adapter were actually called and used for the recursively created types.
I don't think we actually want to handle this case, do we?
@mdempsky Will your non-mono pass catch this case?  Or can it be adapted to catch this case?

@danscales Yes, the nomono check will reject this.

@griesemer
@danscales
@mdempsky
I'm trying to implement some kind of iterator model using type parameters in Go
So i started with this implementation first:
type Iterator[T any] interface {
    Next(*T) bool
}

// To add some utility methods (adapters and consumers) on top of iterator abstraction
// i needed to embed an iterator and define the needed methods with **Iterable** struct
type Iterable[T any] struct {
    iterator Iterator[T]
}

// Consumer
func (it *Iterable[T]) ForEach(fn func(T)) {
    var nextVal T
    for it.iterator.Next(&nextVal) {
        fn(nextVal)
    }
}

// Adapter
func (it *Iterable[T]) Filter(fn func(T) bool) *Iterable[T] {
    fit := &filterIter[T]{iterator: it.iterator, fn: fn}
    return &Iterable[T]{iterator: fit}
}

// Internal implementation of an adapter method
type filterIter[T any] struct {
    iterator Iterator[T]
    fn    func(T) bool
}

func (fit *filterIter[T]) Next(v *T) bool {
    var nextVal T
    if fit.iterator.Next(&nextVal) {
        if !fit.fn(nextVal) {
            return fit.Next(v)
        }
        *v = nextVal
        return true
    }
    return false
}

it works fine without any problem
but then in order to gain some more performance i tried to embed type params directly, as in current generic implementation structs are monomorphized in spite of functions
So i came up with this implementation:
type Iterator[T any] interface {
    Next(*T) bool
}

type Iterable[I Iterator[T], T any] struct {
    iterator I
}

func (it *Iterable[I, T]) ForEach(fn func(T)) {
    var nextVal T
    for it.iterator.Next(&nextVal) {
        fn(nextVal)
    }
}

func (it *Iterable[I, T]) Filter(fn func(T) bool) *Iterable[*filterIter[I, T], T] {
    fit := &filterIter[I, T]{iterator: it.iterator, fn: fn}
    return &Iterable[*filterIter[I, T], T]{iterator: fit}
}

type filterIter[I Iterator[T], T any] struct {
    iterator I
    fn      func(T) bool
}

func (fit *filterIter[I, T]) Next(v *T) bool {
    var nextVal T
    if fit.iterator.Next(&nextVal) {
        if fit.fn(nextVal) {
            *v = nextVal
            return true
        }
        return fit.Next(v)
    }
    return false
}

And this is where i ran into the issue #48974
Do you guys believe that this is infeasible in current design?
Sorry for bad english. English is not my native language


Launch settings on Android

Hi,
Thanks for this contribution. Perhaps the best one around for its intended purpose. Surprised it hasn't gained much traction.
A quick question: Is there a reason why openSettings() is available for iOS only? Just wondering what the limitations are.
How would you recommend I handle "Never ask me again" on android?
Thanks

I haven't yet tested, but I think the README might be behind the plugin's capabilities.
https://github.com/breningham/nativescript-advanced-permissions/blob/master/src/core/index.android.ts#L42 is a plugin I've used before, and it contains fairly similar code to what is located at https://github.com/nativescript-community/perms/blob/master/src/permissions.android.ts#L305

@DanielDent thanks i updated the doc!


Attribute Based Access Control

https://www.npmjs.com/package/accesscontrol
Great docs: http://onury.github.io/accesscontrol/?api=ac

This has been roughly implemented


Linux Paths converted to Windows Paths

Is your feature request related to a problem? Please describe.
Given how often people are using WSL now on Windows it would be nice if we could put in a Linux path and have it bring up that location in the tab. For example, when clicking on the new tab address bar and pasting in a linux path.

Describe the solution you'd like
Ideally if some simple regex could be applied to convert POSIX paths to Windows paths. Would that be easy?
for the image above for example it would ideally change from
/mnt/f/GithubRepos/path/location to F:\GithubRepos\path\location
Additional context
Maybe the following link might help?
Regex for regnizing Windows and POSIX paths

Thanks for opening this feedback item. I will likely get to implementing this one when better WSL support is added. I can't announce an ETA on that just yet.

@ldsands Thank you for opening this issue, this feature was implemented with v1.2.