Unify editor class and reference search

Merges the class hierarchy tree and flat documentation reference search in one list.

The hierarchy can be toggled on or off. This setting is stored.

When off, it is very similar to the previous flat documentation search.
When on, it resembles the previous class list, but with added member search. Classes required to build the hierarchy but not actually matching any part of the search term when searching for members are grayed out.

Usability changes / improvements

The first full match is automatically selected.
Removed now redundant buttons to open the separate class documentation.
List can be filtered by item type. This setting is not stored to start new searches later on over all types.
Tooltip on classes now strips unneccessary newlines at start and end.
Results without an icon get the "ArrowRight" icon to make the text indented logically. Actual icons to differentiate between methods / constants / etc. would be interesting.
Window size is stored and restored.
Class names are matched like members, i.e. by subsequences of the search term. Previously, class names only containing the letters in any order of the search term were found.
Drawing root lines can be toggled with the already existing scene dock settings.
Tree no longer draws buggy lines when hierarchy lines should be rendered while the root item is hidden.

Code related changes

Search is now only executed when the window is actually visible. It previously executed even at initial filling, for example when the editor was started.
Deleted EditorHelpIndex. EditorHelpSearch (now in separate file) handles both.
Removed open_class signal, now handled by  go_to_help.
Removed EditorNode signal request_help_index, now handled by request_help_search.
Unified ScriptEditorBase signals request_help_index and request_help_search in request_help (tell me if you want to keep the name request_help_search instead).
Rewrote so many parts of EditorHelpSearch::IncrementalSearch that I also renamed it to EditorHelpSearch::Runner as it isn't just an "incremental" search anymore (more a phased search).

looks good, but it seems a bit confusing since in every other place the left panel (or tree) has some relation or dictates the content on the right side.

Yeah, thought the same. Open for ideas.

I know that, I just don't autoformat right away to see if I missed anything. Will be fixed in the next commit when I'm happy about what djrm mentioned.

To be honest, I find this interface quite bad. As the gif suggests, you will very likely end-up with redundant results on the left and right side.
Maybe I don't understand perfectly how it should word, but instead of that, I would mix them into a single tree, where matching results are shown, whether it is a class, a method, or anything else. Something like that:

When a method is matching, it is shown as a child (in the tree) of its class. If only the class name matches, no method is displayed. (the class inheritance is still displayed)

Yeah, I don't like it much either. I wanted to unify it into one list already and thought about the same. I can try that if it finds acceptance.

In that case maybe could more option to filter the results ? Like checkboxes or something like that.

I edited my previous comment, you mean something like that?
Could also have a checkbox "display in class hierarchy" and if not, it shows a flat list.

Hum, this takes a lot of space. Maybe a dropdown list to filter the content instead then ?
And a button to switch between a tree view and a list view.

Yeah, that's better. I try that.

Nice, thanks :)

I opened an issue #14319 about better search in Search Help a few days ago.
I'd personally prefer filtering just by typing. Since it's a search box, your hands are already on the keyboard. It's fast to just type in "signal" or "method". Checkboxes and menus force me to grab the mouse again.

You can tab and configure the filter like in most other applications. I could still add shortcuts. If you want to filter, you have to do more than typing (except someone wants to add keywords).

You mean use Tab to select the checkboxes and Space to toggle them?

Something like that, it whatever you need to press to typically use the UI keyboard wise. There can still be hotkeys assigned to toggle each filter.

Well IMHO, no need for obscure keyboard shortcuts for now. In most cases you'll find the result you are looking for by just typing its name.
The mouse will be needed quite rarely.

@RayKoopa I'd rather avoid a plethora of ad-hoc new keyboard shortcuts. As for using Tab, that'd almost unusable. Imagine having to disable all the boxes but the Signal one using Tab and space. At this point using the mouse would be less of a sore.
@groud Well when you're looking for a Signal, anything other than a signal showing up is just noise. Same if you're looking for a Class, or a Property. It's not that you won't find it. It's just that the signals are drowned in irrelevant methods and classes.
The problem with the design you're going for, is that you want all of them included by default, but when you don't you usually want just one. With this design, getting from "all included" to "just signals" means unticking every single other box aside from "signals". I think that's bad and tedious.

Not if you have a drop-down list as what I suggested. You select either "display all", "signals only", "methods only" etc....

Yeah the dropdown solution is a bit better, but then you can't have two at a time.

you can't have two at a time.

This is not important, either you know what you are looking for and you select it, or you don't and the "display all" option is ok.

Sometimes you don't know if something's going to be a method/getter or a property.
It's all right if you think that deserves to wait for another PR. But I still think that this is not a really great design. It's be much more convenient to be able to select types through search terms

The proposal seems ok to me. Let's just keep the interface simple by now, if more people complain we will improve it. But for now it does not seems really necessary to me.

Do we agree on how the results should look like? For example, the search for "set_name" with the hierarchy displayed would

show all classes having "*set_name*" in their own name (unlikely for the example).
show all classes being part of the hierarchy up to the child class having any "*set_name*" member
show all the matching members (ohrly)
not show other classes which have no matching members or don't include the search term in their class name.

If that's how you'd like it, I have some trouble implementing it wisely.

I'd require "looking down" the class hierarchy to filter out upper-level nodes, e.g. from base classes into child classes. The current DocData only allows looking upwards  via String ClassDoc::inherits.
I'd have to build a tree storing base down to child classes first to logically wander through it. (The current class tree filter doesn't have to bother about this as it filters out only by class names themselves, not members.)
The inheritance chain should be stored inside DocData itself however (as Vector<ClassDoc> ClassDoc::child_classes probably) rather than being (re-)created only for the help dialog, and I'm not sure if anyone wants me to add that to DocData.

Do we agree on how the results should look like?

For me, the logic you describes looks ok.
If we can avoid recording a link to children classes it's better, avoiding redundancy in data structures is better, unless it's for performance reasons. I would just list the matching results then reconstruct the hierachical structure afterwards.

That's kind of the problem, the Tree only allows me to add new items to the bottom of one parent node, neither insert or anything (I want to ensure to have child classes at the top before class members). The code I'd have to write for that is surely possible, but will be adventurous to understand later on...

Looking fine so far. I'll add remembering the selection when toggling the hierarchy (if possible) before I push.

It looks awesome! Maybe adding the function arguments could be good too?

Not for this PR. The search results collect the original *Doc classes though so this can be added later. Needs more elaboration on how they're going to be searched (including braces, commas, spaces, or just the parameter names? Ignore searching only the parameter types then? should they be shown or hidden with an option?).

@RayKoopa Gorgeous work! But may I request something? As the Scene Dock and its Node Creation dialog have a option to enabled the drawing of relationship lines, could this have such option as well when in tree mode?

Didn't know such a thing even exists. I'll add it as a separate setting for now, but it should probably be a editor-global option to show Tree lines.

You can use the same setting that is used for the scene I think, just retrieve its value. :)

Yep, it'll just have a bad category.

Question about case sensitivity and what users would expect.
Currently it behaves as previously:

Search is case insensitive
Exact matches are only marked if case matches.

Should case sensitivity behave uniquely?
Should it be toggleable with a button in the toolbar and stored?

looking good, one question why the arrows?

It's stated in the initial comment:
"Results without an icon get the "ArrowRight" icon to make the text indented logically. Actual icons to differentiate between methods / constants / etc. would be interesting."
I'd prefer other icons, but I have no even more basic ones than the icon of the "Node" (a white circle), which is irritating since everything starts looking like being a Node class.

i wouldnt put the class icon in members and methods (this will make the classes easier to identify at first sight), and instead of arrow i will put the object icon, for thigs that are objects, for the non objects maybe the arrow is fine, but im not sure, maybe a new icon would be needed

I don't know if an item ultimately inherits from Object at the item creation time without wandering up the tree all the time. That would require ugly code and would question if not all items should use the icon of the nearest class which has one.

all the objects that do not have an icon are shown with the object icon, thats how currently works. and it seems that you only need to ask to ClassDB if certain class inherits object, and that only happens if the item does not have icon (not that ugly). And no, items should not get the nearest available icon, just the object icon as a placeholder (like everywhere else).

Reasonable enough. Would look like this.

@RayKoopa, ok dont get mad at me, but i have a final request.
i made some icons for properties, constants and methods, could you try them out.
members.zip
by the way, great work.

Excellent! I just reworked the code to make item creation more flexible and use those icons, I had them in mind aswell.

yeah the property icon was supposed to be in lowercase but i think thats not really important.
also i made the VS type icons act as general icons, so now variant types will have icons

and yes i will make the signal and theme icons.

That's great, I wondered why I couldn't see those. Do you think flat list looks okay too?
I'd also have several other icon requests throughout the whole editor since they (soon can be added to menues without making them look dumb if some other items don't have an icon)[https://github.com/godotengine/godot/pull/13983]. For this PR however I'd just need a case sensitive toggle button icon.

ok, i made the rest of the icons + match case icon. if you have icon request please ask them here https://github.com/godotengine/godot-design
members.zip
also my previous screenshot is from the master branch plus my changes to the icons, so you will have those once an icon update PR gets merged.

I've added those, you can see an updated animation in the PR comment.

Weird, am I querying ClassDB wrong, or why do some classes not get the Object icon even though they inherit from Object?

if (ui_service->has_icon(p_doc->name, "EditorIcons"))
	icon = ui_service->get_icon(p_doc->name, "EditorIcons");
else if (ClassDB::is_parent_class(p_doc->name, "Object"))
	icon = ui_service->get_icon("Object", "EditorIcons");
String tooltip = p_doc->brief_description.strip_edges();

I guess they should still get the Object icon then?

some are not even godot Objects Like the ResourceLoader, the others im not sure

According to DocData, they inherit from Object, which is also why they're listed in that indentation there (under Object).

i like this a lot, but i don't think an extra click should be needed (to get to help menu)

yes?

thank you

Is the behavior of this feature still the same after the discussions? If not, please update the GIF.

Yes it is.

How am I supposed to ever resolve these conflicts? Why hasn't this been merged before accepting additional (redundant?) work on this?

If you are having trouble with Git, just backup your versions, accept all rebase conflicts in favor of Godot, then add your changes back.

Yeah except adding them back causes conflicts over conflicts, and I don't know what's been changed over time which I should try to keep / put into my changes.

How am I supposed to ever resolve these conflicts? Why hasn't this been merged before accepting additional (redundant?) work on this?

I'm sorry about that, but you made this contribution at an inconvenient time as we were in release freeze for the massive 3.0 release. Since similarly big contributions had piled up on the master branch during December/January, and more kept coming, it took us months to review and merge them while staying on top of new changes, and some PRs from that time are still waiting, like this one.
Newer and potentially redundant work has been merged because it had a scope easier to review and manage. Big PRs are always harder to handle and can end up having conflicts to resolve before they're eventually merged or rejected.
I'm still interested in the UX improvements made in this PR, for the reference.

https://github.com/fire/godot/tree/unified_help_search Is rebased on top of master, but it's using your search rather than the current search. I hope you find this useful.

We've discussed this on IRC today and it would be a "go" once rebased on the current master branch:
14:18 <Akien> Next one is #14535
14:18 <IssueBot> #14535: Unify editor class and reference search | https://git.io/vbRPq
14:18 <Akien> Also needs a rebase, and I guess we could ask iFire if he wants to do it since OP is busy - but we need a "go" for the proposed feature first
14:19 <reduz> are we ok with this? I personaly like it, but not sure if there is consense on this
14:19 <Akien> There's been a lot of iteration but I think the gif in the OP is the latest status
14:19 <Akien> I think it's pretty cool myself, and a net improvement over the current dialogs
14:20 <Akien> Usage will tell if it's good enough or needs some more usability changes, but it's a good start
14:22 <Akien> Given the reactions on the PR I guess the community likes it
14:22 <reduz> ok
14:23 <reduz> if iFire wants to give it a try, or OP finds time, would be great
14:24 <Groud[m]> I think it's good
14:25 <Groud[m]> the clean and "case sensitive" buttons are weird though

To refer to what was said in the IRC, I can confirm that the GIF in the OP is up-to-date with the latest changes I commited back then.

And about the clean button: it would be nice to have a search box dynamically changing the magnifying glass to an X-clear button in case text is entered.

There is a PR for it #20155

Closing as the PR has conflicts and no update so it can't be merged for the time being. It's a nice feature though and a new rebased PR would be welcome, either from OP or from another contributor extending the work in this PR (which is what the salvageable label means).
Thanks for the initial work, I hope it will make it in the master branch eventually.

Too bad, this was a great improvement. Hope someone will be interested in rebasing it.


corrected typos

@crowchirp,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by Microsoft. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot


How to assign different loss weights to concatenated datasets?

Hi，thanks for your code！
I want to assign different loss weights to concatenated datasets in the training phase.
Can you give me some advice?

You can set an attribute id for all images in a dataset and pass it to image_metas and use different loss weights in the head according to this id.

Thanks for your help!

Hi, another question, how to pass the attribute id to image_metas?

I knew it, thanks!
file path: 'mmdet/datasets/pipelines/formatting.py:Collect'


Preprocess several files

How to preprocess several files after each other in one script ?
I had to make a litte change in the: post_process function and deleted the sys.exit(0) statement if run==False
now I can do things like this:
pypreprocessor.input = 'Algorithm.py'
pypreprocessor.output = 'Algorithm_out.py'
pypreprocessor.parse()
pypreprocessor.input = 'Algo_2.py'
pypreprocessor.output = 'Algo_2_out.py'
pypreprocessor.parse()
Process several file with the same #ifdef statements in one file is there another oportunity to do so ?

There's probably a better way to do this. For instance make the input and output a list.

Yes i can do this by lists, but this does not change the original problem that my code stops after preprocessing the first file (Without the changes mentioned above in your package (deleting the sys.exit(0) statement))
Here is a minimal example (works fine with my changes, not with original package, and I am asking for  a better way to do this ?):
Main:
`from pypreprocessor import pypreprocessor
options=[['rain',False],['debug',False]]
print('Starting prepro')
for opt in options:
if opt[1]:
pypreprocessor.defines.append(opt[0])
#pypreprocessor.removeMeta = True
codes=['Algorithm', 'Algorithm_2']
for c in codes:
pypreprocessor.input = c+'.py'
pypreprocessor.output = c+'_out.py'
pypreprocessor.parse()
pypreprocessor.reset_internal()
print('Finished pre pro')
print('Now doing')
import Algorithm_out
Algorithm_out.do()
print('Now doing 2')
import Algorithm_2_out
Pferd=Algorithm_2_out.funny_horse(9)
Pferd.say_age()
Pferd.say_feeling()
Algorithm.pydef do():
#ifdef debug
print('The source is in debug mode')
#else
print('The source is not in debug mode')
#endif
#ifdef rain
print('It is raining')
#else
print('Dry')
#endif`
Algorithm_2.py
class funny_horse():     def __init__(self,age):         self.alter=age     def say_age(self):         print('I´m the funny horse and may age is ',self.alter)     def say_feeling(self): #ifdef rain         print('I´m sad, because it is raining here and i am very wet') #else         print('I´m happy, the sun is shining') #endif
This is the output with my changes:
Console:   python main.py
Starting prepro
Finished pre pro
Now doing
The source is not in debug mode
Dry
Now doing 2
I´m the funny horse and may age is  9
I´m happy, the sun is shining
and without:
Console: python main.py
Starting prepro
So without the changes, the code terminates while preprocessing.

self.run is False is telling the preprocessor that the output files will be produced but not run. This works more like a transpiler (ex sass, less, babel), where the files are preprocessed on-the-fly and the output is saved as new files.
Note: This can be a great approach if you setup a simple file watcher that automatically preprocesses the files when it detects that the source has been changed.
`self.run is True' is telling the preprocessor to run the postprocessed source of the file it's defined in. It preprocesses the source on-the-fly, imports, and launches it all at once. This works more like C where the preprocessor directives are supported natively, except python doesn't allow preprocessor code so this requires a bit of magic to work.
Note: This approach is ideal if you just need some simple branch logic in a single source file. That doesn't need to be imported by something else.
The 2nd approach won't work because the python's internal lexer/parser processes all import statements on the first pass. In this case, you're trying to import source files that don't exist yet (ie the preprocessor doesn't run until after python's internal lexer/parser). There is a way to modify the internal imports list after python's internal lexer/parser has run, that's the 'magic' that makes on-the-fly mode work. To see it in action, check out the override_imports method.
In short, if you want to load files in the same source that is responsible for preprocessing them, you have to use an alternative to the import statement. Things that seem very straight-forward and simple don't necessarily work as you'd expect them to when you're trying to load code that's being dynamically generated.

I am using pypreprocessor as transpiller (called in another python file (main)), saving the files, and afterwards importing this newly created files in main and then using the preprocessed and afterwards included file. With the statement: self.run is False and then sys.exit(0) The main file terminates after the first file is preprocessed. Therefore I forked your project and added an option to the parse function, handed over to post_process and dissabling the sys.exit(0). This works fine for me, I don't see the problems mentioned above.
Also I added the possibility to have nested #ifdef statements

Makes sense. Using it to externally transpile and later import fits the intended usage.
If you want to cut down the size of output source you could set removeMeta to True. That will remove all directives and unused code from the output. Although it's not really necessary; once the output source is run once the .pyc will contain only bytecode.
AFAIK the sys.exit(0) is unnecessary and worth removing if it's causing issues. Submit that as a PR and I'll merge it.
For the nested #ifdef how does that look in practice? I'm good with adding that capability if it's useful. The usage just needs to be documented in the README.
If you'd like to make further improvements, let me know and I'll grant push access. The only thing I'm a stickler about is logically separating changes into different commits and documenting each commit with a relevant message.

Thanks for the answers to evanplaice.
OK, fine.
Yes I know the function, for debugging reasons i often left removeMeta = False (so that the line numbers are consistend)
OK, I added a varaible mode with wich the user can swith between: 'Run' (is the same as your run = True), 'PP' (preprocess only is the same as before run = False, PPCont (preprocess and continue: preprocess file and reset internal variables)
The nested #ifdef  works with a list, you can see it in my project. I will modify my Readme and the examples and afterwards do a PR. (Some test on my version are done but if you have some cases you can test them)
Oh, i hope my commits into my PR are not to weird. At the moment I have no further ideas.


Update operator version in deployment.yaml

Update operator version in deployment.yaml to get the correct version on install via kustomize.

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

Hey @Links2004
So unless I screwed up the release yaml the kustomize config should get the correct version automatically https://github.com/grafana/grafana-operator/blob/d3508c0defe494d1e5facbd0a4e9c9b65523aa98/.github/workflows/release.yaml#L52
So if you download the kustomize artifact it should contain the correct version  https://github.com/grafana/grafana-operator/pkgs/container/kustomize%2Fgrafana-operator/156599061?tag=v5.6.0
You can see how to downloda the artifacts using flux here https://grafana.github.io/grafana-operator/blog/2023/03/29/install-grafana-operator-using-flux-and-kustomize/, sadly this feature isn't available in kustomize or ArgoCD.
I don't see an issue with this PR, but it's also not a prat of our normal prepartions for a new release, since it already automated, so I see that this will happen again.
FYI @HubertStefanski

my current gitops process uses kustomize + argocd.
basiclly it comes down to render everything with kustomize and commit it to git for argocd to pick it up.
e.g.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - github.com/grafana/grafana-operator/deploy/kustomize/overlays/cluster_scoped/?ref=v5.6.0

namespace: monitoring

having flux as only options sounds not optimal to me, lets hope that kustomize or argocd gets support soon.
I totally understand hat the release automation does not commit changes to the git itself and that this is good.
Maybe it's worth checking out a release as tar.gz too (add to the release as Assets)
based on https://kubectl.docs.kubernetes.io/references/kustomize/kustomization/resource/
URL specifications should follow the hashicorp URL format
and hashicorp URL / go-getter has a archive option.
https://github.com/hashicorp/go-getter?tab=readme-ov-file#unarchiving
but this need to be tested, had only a quick read of the docs.
in case someone needs the patch that I had as workaround in the future:
patches:
  - target:
      kind: Deployment
      name: grafana-operator-controller-manager
    patch: |-
      - op: replace
        path: "/spec/template/spec/containers/0/image"
        value: ghcr.io/grafana/grafana-operator:v5.6.0

upsteam argo proposals:
https://github.com/argoproj/argo-cd/blob/master/docs/proposals/native-oci-support.md

Trust me @Links2004 I want nothing else then have ArgoCD actually support OCI in a good way, and sadly I'm stuck with ArgoCD as well, so right now I use helm for my deployment.
I'm open for other suggestions on how to provide Kustomize, as long as I don't manually have to update it in yaml manually.
Currently, I assume that Kustomize users will path the image just as you have done in the example. But it would be nice if this is documented (happy to take a PR).


⚠ Processors has degraded performance

In 57c8a4a, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 60 ms

Resolved: Processors performance has improved in bc0ef59.


Apply 'weak' to delegate property to avoid from reference cycle.

@Finalet Great if you can take a look and merge it to main branch if it works to you.

Thank you for the input. Although I understand the logic, this does not seem to do anything. The demo app still retains all previously presented emoji pickers in memory.

Good catch. @Finalet
It turns out there are some other reference cycle issues. Have updated the fix now.
Have also double checked the memory usage after select different emojis multiple times.

@loongman I see the changes you've made and agree. But it's strange, because memory is still not being released on my end. I checked out your branch and you can see the results below. Perhaps there are some reference cycles that were missed? How did you test on your attached screenshot?
https://github.com/Finalet/Elegant-Emoji-Picker/assets/10033440/b7137285-8815-4d3a-b655-2d361364a46e

@Finalet Any chance still the formal version were in-using while you do the verification on your side due to cache even after you replaced the package url?
Could you try remove the package at first, then, clean build folder by selecting "Product" > "Clean Build Folder" in Xcode, and remove the local cache at ~/Library/Caches/org.swift.swiftpm/repositories, then, add my fork's package and try again?
In addition, from your video record, there is a Politeness section on the picker, which indicates there are some other local changes(?) on the Demo project?
On my side, the only checkout files are Demo.xcodeproj/project.pbxproj and Demo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved which related to the package replacement(my fork) for debug purpose.
Below you can see the test on my side, the original issue is gone.
Though, there seems to be still another issue exist, at beginning, the memory usage is around 8.2M, after open the picker first time, it increased to 24.1M. Open and close the picker multiple times, the memory is stay around 27M. Ideally, it should go back down to its initial value, aka, 8.2M. However, i'd suggest we split this part out from current PR, and handle it with another PR after dive more deeper. Does that make sense?
https://github.com/Finalet/Elegant-Emoji-Picker/assets/2167359/1945411e-70cf-4c5e-9215-3c1de387f1fa

I have tried on a clean demo project, and with cleaning the build folder, but neither helped. It is also strange that my simulator consumes around 20mb just after launching the app, compared to your 8.2mb. Might be issues on my end as I am not running the latest version of xcode.
Either way, I will merge this PR. The changes you've made are correct and reflect how this code should have been written from the start.
Thank you for your help, @loongman!


@ashfurrow => Add screen properties

I think I’ve done all the groundwork needed to implement screen views with properties. Once https://github.com/artsy/eigen/pull/454 is done, then this should be good to be merged.

Looks good to me. @orta you have a note about super properties. How about I merge and then submit a new PR adding those? I'd PR into Alloy's branch, but :baby:

Sure, I agree.

Cooool.


[GH-656] Adjusted code duplication between state trees

resolves #656

@cytadela8 @grzegorz225
In our approach and the way we implemented there is no need to implement behavior and callback
When we write use Aecore.Util.StateTrees to some module we inject the functions from the macro to the module. We don't need any specific functions to be implemented in that module.

@thepiwo
At the current state, we think that we are ready.

@cytadela8 can you approve?

@grzegorz225 I think all your comments were resolved


[4.2] Allow for version 1.0 of predis to be installed

There are some great improvements in the new Predis client, and still works perfectly with Laravel 4.2.
This would allow both the old version and the new version of Predis to be installed

Laravel 4.2 is not accepting changes. Please upgrade to 5.1.


net: sockets: ioctl support for FIONBIO and FIONREAD

In asynchronous server systems, it can be advantageous to be able to look ahead to see how many bytes are available to read on a given socket, without blocking, and without allocating an overly large buffer.
Typically on POSIX systems ioctl(fd, FIONREAD, &avail) is used to get the number of bytes available. That method actually predates POSIX though having been a part of BSD systems before that.
This change adds

add ioctl numbers for ZFD_IOCTL_FIONBIO, ZFD_IOCTL_FIONREAD to fdtable.h
posix: ioctl: use fdtable.h FIONBIO and FIONREAD definitions
net: sockets: socketpair: support querying bytes available
tests: net: socketpair: reduce requirements for test
tests: net: socketpair: add fionread test
syscalls: include stdarg.h for va_list type
net: socketpair: support for fionbio
net: sockets: support fionbio and fionread
net: sockets: tls: support fionbio and fionread
tests: net: socketpair: use a test fixture to deduplicate code
FIONBIO and FIONREAD defines in lib/posix that re-use the namespaced versions
net: sockets: tcp: test FIONREAD with ipv4 and ipv6 sockets
tests: net: socket: tcp: clear fdtable in after()
tests: net: socket: udp: clear fdtable in after()
net: sockets: udp: test FIONREAD with ipv4 and ipv6 sockets

There are some other ioctl use cases for networking that may be useful in the future.

cc @Emna-Rekik

Just adding DNM so this doesn't get a fly-by merge until the TLS comment is addressed

I'll be dropping TLS support for the time being due to implementation detail complexity. I don't have time to find a workaround, and any kind of peek operation apparently requires restructuring socket_tls.c to use intermediate buffers, which is maybe not ideal.
net changes
diff --git a/subsys/net/lib/sockets/sockets_tls.c b/subsys/net/lib/sockets/sockets_tls.c
index 801a321a20..3af263fbfa 100644
--- a/subsys/net/lib/sockets/sockets_tls.c
+++ b/subsys/net/lib/sockets/sockets_tls.c
@@ -3215,6 +3215,16 @@ static int tls_sock_ioctl_vmeth(void *obj, unsigned int request, va_list args)
                return ztls_poll_offload(fds, nfds, timeout);
        }

+       case ZFD_IOCTL_FIONBIO:
+       case ZFD_IOCTL_FIONREAD: {
+               int *avail;
+
+               avail = va_arg(args, int *);
+               *avail = MAX(0, ztls_socket_data_check(ctx));
+
+               return 0;
+       }
+
        default:
                errno = EOPNOTSUPP;
                return -1;

tests
diff --git a/tests/net/socket/tls/src/main.c b/tests/net/socket/tls/src/main.c
index 0a4dab9f1f..a4e78ffdbd 100644
--- a/tests/net/socket/tls/src/main.c
+++ b/tests/net/socket/tls/src/main.c
@@ -405,6 +405,7 @@ void test_msg_trunc(int sock_c, int sock_s, struct sockaddr *addr_c,
                    socklen_t addrlen_s)
 {
        int rv;
+       int avail;
        uint8_t rx_buf[sizeof(TEST_STR_SMALL) - 1];
        int role = TLS_DTLS_ROLE_SERVER;
        struct test_msg_trunc_data test_data = {
@@ -420,6 +421,11 @@ void test_msg_trunc(int sock_c, int sock_s, struct sockaddr *addr_c,
        rv = bind(sock_s, addr_s, addrlen_s);
        zassert_equal(rv, 0, "server bind failed");

+       /* available bytes should be 0 for a newly created socket */
+       avail = 42;
+       zassert_ok(ioctl(sock_s, ZFD_IOCTL_FIONREAD, &avail));
+       zassert_equal(0, avail);
+
        rv = bind(sock_c, addr_c, addrlen_c);
        zassert_equal(rv, 0, "client bind failed");

@@ -433,6 +439,12 @@ void test_msg_trunc(int sock_c, int sock_s, struct sockaddr *addr_c,
                              test_msg_trunc_tx_work_handler);
        k_work_reschedule(&test_data.tx_work, K_MSEC(10));

+       /* available bytes should be non-zero */
+       k_msleep(100);
+       avail = 0;
+       zassert_ok(ioctl(sock_s, ZFD_IOCTL_FIONREAD, &avail));
+       zassert_true(avail > 0);
+
        memset(rx_buf, 0, sizeof(rx_buf));
        rv = recv(sock_s, rx_buf, 2, ZSOCK_MSG_TRUNC);
        zassert_equal(rv, sizeof(TEST_STR_SMALL) - 1, "MSG_TRUNC flag failed");
@@ -502,6 +514,7 @@ static void test_dtls_sendmsg(int sock_c, int sock_s, struct sockaddr *addr_c,
                              socklen_t addrlen_s)
 {
        int rv;
+       int avail;
        uint8_t rx_buf[sizeof(TEST_STR_SMALL) - 1];
        int role = TLS_DTLS_ROLE_SERVER;
        struct iovec iov[3] = {
@@ -525,6 +538,11 @@ static void test_dtls_sendmsg(int sock_c, int sock_s, struct sockaddr *addr_c,
        rv = bind(sock_s, addr_s, addrlen_s);
        zassert_equal(rv, 0, "server bind failed");

+       /* available bytes should be 0 for a newly created socket */
+       avail = 42;
+       zassert_ok(ioctl(sock_s, ZFD_IOCTL_FIONREAD, &avail));
+       zassert_equal(0, avail);
+
        rv = bind(sock_c, addr_c, addrlen_c);
        zassert_equal(rv, 0, "client bind failed");

@@ -541,6 +559,12 @@ static void test_dtls_sendmsg(int sock_c, int sock_s, struct sockaddr *addr_c,

        k_work_reschedule(&test_data.tx_work, K_MSEC(10));

+       /* available bytes should reflect size of datagram */
+       k_msleep(50);
+       avail = 0;
+       zassert_ok(ioctl(sock_s, ZFD_IOCTL_FIONREAD, &avail));
+       zassert_equal(sizeof(TEST_STR_SMALL) - 1, avail);
+
        memset(rx_buf, 0, sizeof(rx_buf));
        rv = recv(sock_s, rx_buf, sizeof(rx_buf), 0);
        zassert_equal(rv, sizeof(TEST_STR_SMALL) - 1, "recv failed");

@rlubos, @jukkar, @nordicjm - please re-ack if you don't mind. I investigated enabling FIONREAD support for TLS, but found we would likely need some kind of workaround or to restructure code to use an intermediate buffer, which is likely beyond the scope of what I'd like to do in this PR. Please see my changes above if you would like to investigate further.

Just a minor rebase to pull in the fix in f6fde45e098d6c75d70d0a34cbf15899d6a52903

@rlubos , @jukkar - I believe this is ready for review now. Just needed to address a corner case.

@rlubos, @jukkar, @ycsin, @jgl-meta
Pretty basic benchmark. Time how long it takes to transfer 16kB of lorem_ipsum
https://pastebin.com/pQhcndjY
summary:

TCP / IP speedup of ~7.5 in terms of time
far fewer calls to recv()
far fewer cycles spent in recv()

before:
calls to send(): 427
calls to recv(): 31
EAGAIN in send(): 16
EAGAIN in recv(): 0
cycles in recv(): 114382
end time (ms): 239260

after:
calls to send(): 459
calls to recv(): 5
EAGAIN in send(): 3
EAGAIN in recv(): 0
cycles in recv(): 96421
end time (ms): 32160


Initialize Workspace command doesn't trigger correctly after "add workspace"

Summary: After adding a workspace to the Extensions Workspaces view via the "+" button, the workspace is not initialized and still requires manually running the Initialize command.
Expected behavior: Once a workspace is opened, the Initialize Workspace command is triggerred automatically and the workflow carries on to initialize/update the workspace.
Actual behavior: The Initialize Workspace command does seem to trigger, but the interface doesn't react yet. When the user manually invokes the Initialize Workspace command we first see the errors from the previous failed run ("no selection was made" on schemas, but the UI did not present the quick pick list). Potentially a short delay may be applicable to allow for the new window to fully load before UI functions are invoked.

Added as a known limitation in documentation.
It happens when a workspace/folder is opened that doesn't already have an extension.yaml file. Because none of the extension activation events are met once the folder is opened, the extension isn't activated. As soon as it's activate (e.g. click the Dynatrace view icon) the workflow triggers as expected. From within the code, there is no workaround to this issue.
Workaround for user: click the Dynatrace view icon, or invoke the initialize command via Ctrl+Shift+P


What I did:

go mod init (imported from vendor)
go mod tidy ensure indirect imports
go mod vendor vendor copy of all imports for non-module support (pre 1.11, etc)
Update CI config to force use of Go modules (GO111MODULE=on)
Tested with a fresh clone to ensure build

Should the build target use -mod=vendor

ping

ping @ehazlett ^^

@ehazlett How did protobuild fare in this scenario?

@stevvooe I get the following warns:
/<path>/go/containerd/src/github.com/gogo/protobuf: warning: directory does not exist.
/<path>/go/containerd/src/github.com/gogo/googleapis: warning: directory does not exist.

I'm also vendoring everything for backwards compat to help.
But since I have them global I think it works.  I'm going to try to get this rebased and updated this week to try some more.

@ehazlett some merge conflicts still...?

I'm going to close this one for now since it is not in a reviewable state. My suggestion is that we first update script/validate/vendor in the project repository which can switch based on GO111MODULE=on then first validate go mod working in the sub projects.


Add Multiple Pages

[ ] Contact Page
[ ] About Page
[ ] Feedback Page

Hey, can you elaborate on this? Like what exactly do you want to be done in this issue.

Hey, can you elaborate on this? Like what exactly do you want to be done in this issue.

Sure, the current streamlit app has only a home page that loads by default and a contact page. For a prototype, we usually need more pages including contact, about, support, etc

Okay so we need to add those pages along with some general text that users can use, right?

Hey, I am trying to make a feedback form for the feedback page which would implement sending a feedback email. Should I implement it using flask? Or like do you have any suggestion as to how should I go about it?

Hey, I am trying to make a feedback form for the feedback page which would implement sending a feedback email. Should I implement it using flask? Or like do you have any suggestion as to how should I go about it?

We are already using streamlit for this. Please have a look at the readme and the codebase

Hey, I am trying to make a feedback form for the feedback page which would implement sending a feedback email. Should I implement it using flask? Or like do you have any suggestion as to how should I go about it?

We are already using streamlit for this. Please have a look at the readme and the codebase

Alright I'll go through the documentation again


Add support for Timers (TC)

atsam4s_a, atsam4s_b

1 Timer Module (3 Channels)
16bit registers
atsam4s_c
2 Timer Modules (2x3 Channels)
16bit registers
atsam4e
3 Timer Modules (3x3 Channels)
32bit registers

Only basic timer functionality for now.
Out-of-scope features

Wave mode
Chaining timer channels
External clock input

Still trying the figure out the best way to do this.
Currently the problem is that there are can be multiple Timer Modules (usually 0 through 2). And each module has 3 channels.
For the most part each channel is an independent channel and can be configured separately. Unfortunately there are some shared registers in the module as well. On top of that, I haven't figured out a way to assign specific registers to a struct yet.
Ideally, each Timer Module Channel would own their specific registers. The Timer Module would own any of the generic registers for the module.


Add ChefSpec matchers

Huh? :)

@BackSlasher https://github.com/sethvargo/chefspec#packaging-custom-matchers

Oh ok. I'm assuming it helps you with testing?

Yup, ChefSpec is what most of the Chef community uses for testing chef resources and recipes
https://docs.chef.io/chefspec.html
https://semaphoreci.com/community/tutorials/unit-tests-for-chef-cookbooks-with-chefspec

BTW, I'll be happy to see some examples for your tests, both for my own use and to add them to the cookbook

Example of opening MongoDB port:
Recipe
selinux_policy_port '27018' do
  protocol 'tcp'
  secontext 'mongod_port_t'
end

Spec
require 'spec_helper'

describe 'cookbook::recipe' do
  let(:chef_run) { ChefSpec::SoloRunner.new.converge(described_recipe) }

  it 'set selinux port allowance for mongod on 27018' do
    expect(chef_run).to addormodify_selinux_policy_port('27018').with(
      protocol: 'tcp',
      secontext: 'mongod_port_t'
    )
  end
end

I see. So it's indeed more useful to validating cookbooks that USE
resources from here than testing THIS cookbook.
Thanks anyway :)
Nitzan Raz
http://backslasher.net
On Thu, Aug 6, 2015 at 12:51 PM, Grant Ridder<EMAIL_ADDRESS>wrote:

Example of opening MongoDB port:
Recipe
selinux_policy_port '27018' do
protocol 'tcp'
secontext 'mongod_port_t'
end
Spec
require 'spec_helper'
describe 'cookbook::recipe' do
let(:chef_run) { ChefSpec::SoloRunner.new.converge(described_recipe) }
it 'set selinux port allowance for mongod on 27018' do
expect(chef_run).to addormodify_selinux_policy_port('27018').with(
protocol: 'tcp',
secontext: 'mongod_port_t'
)
end
end
—
Reply to this email directly or view it on GitHub
https://github.com/BackSlasher/chef-selinuxpolicy/pull/31#issuecomment-128311758
.


Add Halo2 Circuit for SKEncryption

#3
#12
#19

What proving time for secret key encryption when -n is set to 32768?

Merging because PR is unrelated to my previous comment


Files outside project folders can't be diagnostics.

If folders added to sublime_text side bar(add folders to project), a .py file out of those folders can't be diagnosed, and the output shows “No diagnostics. Well done!”. And files in those folders can be diagnosed.
If side bar is empty(no folder in project), any file can be diagnosed.
So,  how can I add some folder to project and diagnose files outside project at the same time.
Settings as follow:
{
	"settings": {
		"python.pythonPath": "G:/miniconda3/envs/py310/python.exe"
	}
}

env: win10, sublime_text 4, lsp-pyright 1.1.190

Not sure whether this is expected since I've seen single file mode works weird in several severs.

Just test in VSCode and it behaves so as well. Thus I would call this works as "expected".

There is code in LSP that ignores diagnostics for files outside of the workspace: https://github.com/sublimelsp/LSP/blob/c8e617caaffccb4f57799d9d8fa7588fa1048d52/plugin/core/sessions.py#L1682-L1684

It does not always make sense to ignore diagnostics outside of the project  so there is related issue in LSP: https://github.com/sublimelsp/LSP/issues/1835

@rchl @jfcherng
Thanks very much.

It does not always make sense to ignore diagnostics outside of the project so there is related issue in LSP: sublimelsp/LSP#1835

Yes, this is the same problem.
It seems easy to handle in the code. But the work does not appear to be proceeding?

Such is life. Or open source at least.
Watch the issue for development or contribute with discussion or PR.


Create Social Preview image on GitHub

Describe the feature in detail (code, mocks, or screenshots encouraged)
https://github.com/skeletonlabs/skeleton/settings - Social Preview 3 items down.
(1280×640px for best display)
What type of pull request would this be?
None
Provide relevant links or additional information.
No response

@niktek DONE!

Source for future reference:


Improve concurrency between DruidSchema and BrokerServerView

Description
A concurrency issue is recently found between DruidSchema and BrokerServerView, which is, refreshing a DruidTable in DruidSchema can block query processing. This can happen in the scenario described below.

The DruidSchema-Cache thread locks DruidSchema#lock and calls DruidSchema.buildDruidTable() to rebuild the rowSignature of druidTable.
A new segment is added to BrokerServerView. The BrokerServerView thread will lock BrokerServerView#lock, process the new segment added, and call timelineCallbacks of DruidSchema.
The timeline callback of DruidSchema is executed by the same thread used in the step 2. This thread will wait for DruidSchema.buildDruidTable() in the step 1 to be done and DruidSchema#lock is released.
A new query is issued and the query thread will call BrokerServerView.getTimeline(). This call will wait for the timelineCallbacks to be done in the step 2 and BrokerServerView#lock is released.

The following flame graphs show what those threads were doing when this happened in our cluster. The metrics for these flame graphs were collected for 30 seconds.

DruidSchema was calling refreshSegmentsForDataSource() and buildDruidTable(). refreshSegmentsForDataSource issues a SegmentMetadataQuery per segment and locks DruidSchema#lock per row in the result to update segment metadata in memory. buildDruidTable locks DruidSchema#lock while it iterates all columns in all segments in the datasource. When the datasource has 481200 segments and 774 columns in each segment, buildDruidTable took about 25 seconds (!!) on my desktop.

BrokerServerView was blocked in the DruidSchema.addSegment callback.

Finally, there were 2 timeseries queries that were blocked in BrokerServerView.getTimeline() for 30 seconds.
Currently, this can happen whenever DruidSchema needs to refresh DruidTable, which is whenever a new segment is added to the cluster or a segment is completely removed from the cluster. Moving segments should not cause this issue because a new segment is always loaded first in the new server before it is removed from the previous server. As a result, moving segments does not require to update the RowSignature of DruidTable.
To fix this issue, this PR improves the concurrency of DruidSchema by not holding DruidSchema#lock to process expensive operations such as refreshing DruidTables.

A new thread, DruidSchema-Callback, is added in DruidSchema to asynchronously process the timeline callbacks.
The segmentMetadataInfo map is changed to ConcurrentHashMap<String, ConcurrentSkipListMap<SegmentId, AvailableSegmentMetadata>>, so that updating the map doesn't have to lock DruidSchema#lock. Instead, the concurrency control is delegated to ConcurrentMaps. This could potentially make querying the segments table faster because getSegmentMetadataSnapshot() no longer requires to lock DruidSchema#lock.

Finally, this PR does not fix the expensive logic in buildDruidTable(). Incremental updates on DruidTable could be better but it requires that, for each column, we should be able to fall back to the column type in the second most recent segment when the most recent segment disappears. We can research more how we can track those column types of segments efficiently as a follow-up.

Key changed/added classes in this PR

DruidSchema

This PR has:

[x] been self-reviewed.

[x] using the concurrency checklist (Remove this item if the PR doesn't have any relation to concurrency.)

[ ] added documentation for new or modified features or behaviors.
[x] added Javadocs for most classes and all non-trivial methods. Linked related entities via Javadoc links.
[ ] added or updated version, license, or notice information in licenses.yaml
[x] added comments explaining the "why" and the intent of the code wherever would not be obvious for an unfamiliar reader.
[x] added unit tests or modified existing tests to cover new code paths, ensuring the threshold for code coverage is met.
[ ] added integration tests.
[ ] been tested in a test Druid cluster.

@clintropolis thank you for the review!


Move embedded code example in articles to code repo

Summary
Related to .NET refresh work for task 1409972: https://mseng.visualstudio.com/TechnicalContent/_workitems/edit/1409972/ and
1409954: https://mseng.visualstudio.com/TechnicalContent/_workitems/edit/1409954/
See PRs #https://github.com/dotnet/docs/pull/11447, #https://github.com/dotnet/docs/pull/11461
As a best practice, move the C# and VB complete code example from the following articles to the samples repo:
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-request-data-using-the-webrequest-class
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-send-data-using-the-webrequest-class

Hi @rpetrusha, thanks for your review comments - I've made your suggested changes. Please confirm that my using statement blocks have the correct syntax.


feat: force semver

:tada: This PR is included in version 1.5.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Hiding browser tab during flash can leave flash progress modal up

I did a Python editor flash after MakeCode this morning and opened a new tab while it ran. The flash completed successfully but then I suspect we disconnected due to tab visibility which left this mess:

Detected board ID 9904
instrument.ts:129 Device status CONNECTED
instrument.ts:129 Stopping serial before flash
instrument.ts:129 Finished listening for serial data
instrument.ts:129 Reconnecting before flash
instrument.ts:129 Detected board ID 9904
instrument.ts:129 Device status CONNECTED
instrument.ts:129 Begin reset
instrument.ts:129 Begin flashing
instrument.ts:129 Total pages: 128
instrument.ts:129 Changed pages: 78
instrument.ts:129 Full flash
instrument.ts:129 Error during disconnection:
InvalidStateError: An operation that changes the device state is in progress.
instrument.ts:129 Device status NOT_CONNECTED
instrument.ts:129 Disconnection complete
instrument.ts:129 Error during disconnection:
InvalidStateError: An operation that changes the device state is in progress.
instrument.ts:129 Device status NOT_CONNECTED
instrument.ts:129 Disconnection complete
instrument.ts:129 Error during disconnection:
InvalidStateError: An operation that changes the device state is in progress.
instrument.ts:129 Device status NOT_CONNECTED
instrument.ts:129 Disconnection complete
instrument.ts:129 Device status NOT_CONNECTED
instrument.ts:129 Disconnection complete

When fixing this we might also want to consider the idea of making flashing state more available to the UI (e.g. we've discussed not saying "Running..." in the serial bar). Right now it's only the modal that's aware of what's going on. There are other incidental interactions due to the serial reset event.

Fairly convinced we just want to remove or disable the visibility listener during flash and that'll fix it.
But... there's a finally block that should prevent the dialog staying up regardless of errors. Why isn't that working?

As noted on #252, this didn't turn out to be easy to reproduce but does seem to be a logical flaw. I've added a fix and more logging in case we need to revisit in future.


Silence checkpointing

Adds a decorator to temporarily change log levels and uses it to silence checkpointing output. Also updates flake8 rules.

Shouldn't be required if raising the log-level to WARNING, no?

In fact, thinking again about it, why not just stick to WARNING everywhere ? the silencio util may still be useful though for application code.

the silencio util may still be useful though for application code.

isn't what "ERROR" does?

isn't what "ERROR" does?

I'm not sure I understand what you mean by that. If you're using any of the Devito high level wrappers, or you simply want to silence Devito in a particular region, then you can use this utility

I strongly believe it should be INFO, since that mirrors the default user experience.

OK, I really don't have strong thoughts in merit, so I'm happy to switch to INFO. I think the major problems in the end were:

useless DSE/DLE messages (gone time ago)
excessive pollution from various tests (fixed through silencio)

The next biggest source of log clutter after this are the compiler warnings.

All good, merging...

Merged.


Running at same time as i2s

[Great library, like it lots] I am trying to continually update a 64-pixel strand whilst playing a wav file through i2s. Occasionally, the strand seems corrupted with odd pixels being lit. The led display and the wav playing are in different FreeRTOS tasks. Is it possible the i2s output may be corrupting the RMT buffers?

I don't have an i2s device to test this use case against - but out of curiosity, which specific i2c device are you using? I've never tried this use case.
The specific revision of ESP32 and carrier board, the exact LED type, and that the strand has a solid 5V supply to it (not just USB) are also potential factors here. And of course your code and the version of the IDF you're using also have a potential impact.
Short of one peripheral corrupting the other, one possibility is that interrupts are conflicting - if the RMT peripheral and the i2s peripheral are interrupting each other, the display output (which is very sensitive to timing) may be impacted.
It's also possible that the timings for your LEDs are a little off - how often does the problem occur? Does it vary with the input?

I've done some more digging. I'm thinking now it might be caused by just reading my wav file from SPIFFS without even touching i2s. I get similar effects when I reading a bitmap from SPIFFS at the same time as sending new led pixels.

It could be one of the more subtle silicon bugs if it's an older device (involving memory reads). Without more information it's impossible to say.

I'm using a Wemos esp32 rev 1 board.

Interesting. The current IDF ought to mitigate any such effects. Beyond that (and without a setup to compare to) it's hard for me to say what might be going on.

Any news? I'm going to try an i2s device combined with a microsd card (the wav source). I'm pretty sure that the integrated SPIFFS is really slow compared to a microSD. Note that the microSD, rarely, takes a lot of time to retrieve even a small chunk of data (4bytes). Further details will come by the end of the day.
I'm not sure about my code understanding, hence another question: given that the RMT buffer dedicated to a single strad is 64 pulses long, and considering NeoPixel timings, every 86microsecond the RMT buffer has to be refilled, right? Considering you halved this size, every 43microsecond you need to send new data to the buffer. This is seems a VERY tight constrain, I'm wondering if this will kill concurrency while updating the strand...


⚠ DesiTorrents has degraded performance

In edb8ec9, DesiTorrents ($DST) experienced degraded performance:

HTTP code: 200
Response time: 1735 ms

Resolved: DesiTorrents performance has improved in 50b510d.


FreeVending Mode for Two conectors Simultaneously

Hello @matth-x,
I am implementing the free vending mode for two connectors.
Successfully implemented free vending mode for 1 connector, the following configuration keys are mentioned below.
Cst_FreeVendActive set to true
Cst_FreeVendIdTag set to ABCDEFG
I also added the idTag ABCDEFG to the CMS server.
Problem statement:

If I want to use the free vend mode for both the connectors, can I?
I also checked the configuration key generated in the file /ocpp-config.jsn, and only one idTag Cst_FreeVendIdTag key is available.

Is it possible to simultaneously charge the vehicle in free vending for both the connector and with the single Cst_FreeVendIdTag?
2. Is it possible to use charger in free vend mode without connecting to OCPP
Example: Charger gets reset then OCPP connection not established, no bootNotification and user want to charge in free vend mode.
Do I need to do any other configuration?

Hi @demirschmid61,
To answer your questions,

Yes, I would say using the same idTag for both connectors is an acceptable solution. I have never seen a backend system which requires unique idTags per connector. To test it with SteVe, it's necessary to increase the maximum concurrent transactions for the freevend idTag.
If you set Cst_PreBootTransaction to true, then no OCPP connection is necessary in freevend mode. However, the transaction queue will get full at some point and by default, MicroOcpp will reject further offline transactions. To override that behavior, set Cst_SilentOfflineTransactions to true, then the next transactions will become "silent" when the queue is full and won't occupy any space.

@matth-x Thank you very much for your reply.
I'll implement this and let you know the outcome.

@matth-x
The following keys are configured for the charger.
Cst_PreBootTransactions = True
Cst_SilentOfflineTransactions = True
Cst_FreeVendIdTag = "abcde"
My observation:

The charging transaction is perfectly executed and only recent 4 transactions are saved in the flash

Problem Faced:
1. After some (e.g.: 12) transactions, if somehow the charger gets reset (Manually or remotely), the charger is not starting the transaction in free vending mode, provided the charger is not connected to the internet
Please have a look at the logs free vending working perfectly:
`
------------------------For start transaction in free vending------------------------------------------
14:17:19.870 > [MO] info (Connector.cpp:430): begin FreeVend Tx using idTag abcde
14:17:20.562 > [MO] info (StatusNotification.cpp:50): New status: Preparing (connectorId 1)
14:17:20.731 > [MO] info (Connector.cpp:290): Session mngt: trigger StartTransaction
14:17:20.940 > [MO] info (StartTransaction.cpp:48): StartTransaction initiated
14:17:21.002 > [MO] info (StatusNotification.cpp:50): New status: Charging (connectorId 1)
------------------------For stop transaction in free vending------------------------------------------
14:19:52.250 > [MO] info (Connector.cpp:353): Session mngt: trigger StopTransaction
14:19:52.675 > [MO] info (StopTransaction.cpp:50): StopTransaction initiated
14:19:52.683 > [MO] info (RequestQueueStorageStrategy.cpp:162): Replace cached operation (cache full): StartTransaction
14:19:52.707 > [MO] info (StatusNotification.cpp:50): New status: Finishing (connectorId 1)
14:19:52.713 > [MO] info (RequestQueueStorageStrategy.cpp:162): Replace cached operation (cache full): StatusNotification
14:20:01.306 > [MO] info (StatusNotification.cpp:50): New status: Available (connectorId 1)
14:20:01.314 > [MO] info (RequestQueueStorageStrategy.cpp:162): Replace cached operation (cache full): MeterValues
14:20:02.211 > [MO] info (main.cpp:1994): MeterValues reset for connector 1
`
When the charger gets reset the freevending transactions does not started.
Please acknowledge on my observation, is it correct or not.
Am I missing something in the configuration keys?

Hi @demirschmid61, this could actually be related to a regression bug in v1.0. Can you upgrade to v1.1?
Everything on your side looks correct. Cst_PreBootTransactions and Cst_SilentOfflineTransactions are both set correctly and Freevend is also properly set up.

@matth-x Thank you very much,
The free vending mode for both connectors perfectly worked for me and regarding pure offline free vending mode, I'll upgrade the library version to 1.1 and let you know the observations.

@matth-x Thank you for your input,
I just upgraded to 1.1 and the free vending transactions are working perfectly for both connectors even if the charger gets rebooted.
My last objective for free vend mode is not to connect my charger to the OCPP server ever and to use the charger in free vend mode. Is it possible or at least once i need to connect it with the server for bootNotification?


Migration to Matine v5

Describe the enhancement you'd like
Mantine v5 has a lot of new features, but also introduces a lot of breaking changes. We are tracking all of the dependencies here, that still need to be migrated:

[x] @matine/modals
[ ] @matine/core
[ ] @matine/forms
[ ] @matine/dates
[ ] @matine/hooks
[ ] @matine/notifications

I think that this issue can be closed.
LibrePhotos/librephotos-frontend#125


Fix issue with inconsistent GenericMap output

Description
The FLP GenericMap provided by the agent differs in types depending on the exporter being used, especially with DirectFLP each records size is smaller than when used with protobuf, due to protobuf using uint32 almost everywhere. This is not a problem in most cases as FLP generally converts that in JSON, but it breaks the FLP IPFIX export which expects strict types.
This commit brings more consistency between the FLP-direct mode and the protobuf mode, by sharing the same GenericMap encoding function. Which means the protobuf decode is now done in two steps: first proto-to-flow.Record, then flow.Record-to-GenericMap.
Dependencies
TODO: FLP update of the IPFIX exporter
Checklist
If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

[ ] Will this change affect NetObserv / Network Observability operator? If not, you can ignore the rest of this checklist.
[ ] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
[ ] Does this PR require product documentation?

[ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.

[ ] Does this PR require a product release notes entry?

[ ] If so, fill in "Release Note Text" in the JIRA.

[ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.

[ ] If so, make sure it is described in the JIRA ticket.

QE requirements (check 1 from the list):

[ ] Standard QE validation, with pre-merge tests unless stated otherwise.
[ ] Regression tests only (e.g. refactoring with no user-facing change).
[ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

any cpu impact for the additional processing with ur scale test ?

why this is marked as breaking change ?

why this is marked as breaking change ?

That's a breaking change because the types in the GenericMap output change, as you can see here: https://github.com/netobserv/netobserv-ebpf-agent/pull/297/files#diff-5b98b198dc9b743f2c1c2d470d443d9ec2ed38b4ee15777cb857584ddacce657
For instance "Proto" was u8 in the inner model, cast as uint32 in protobuf, previously with the grpc exporter it was still uint32 in the GenericMap but now it's back to uint8 in that Map.
So, consumers who would cast explicitly to uint32 would now have to cast to uint8

/lgtm

any cpu impact for the additional processing with ur scale test ?

Slight increase of CPU in one of the tests (0.167 -> 0.172) and memory as well (671MB -> 679 MB) (i picked to one run that seems more relevant as it showed a similar number of flows per seconds). I'd say it's in reasonable bounds...

/approve
marking no-qe as there's no visible output

/retest


Suggest usage of --full-index flag in case of Dependency API failure

Closes #4384

\cc @indirect Could use some review on this as to if the appropriate error message has been changed.

:+1:

@homu r+

:pushpin: Commit e110c45 has been approved by segiddins

:hourglass: Testing commit e110c45 with merge 9d2676e...

:sunny: Test successful - status


ghactions: Don't upload artifacts multiple times

With the addition of a matrix of go versions to test the build with, the
artifact upload will also be run multiple time. If they run
concurrently, this will cause unexpected upload failures.
Only publish the '1.21.x' artifact.

LGTM

/lgtm


Feature request: syntax highlighting for markdown in issue/PR descriptions/comments

Firstly, thanks for writing this plugin - it's so nice to have GitHub integrated within Neovim.
It would be great if the user's markdown syntax highlighting could be applied to the GitHub issue/PR descriptions and comments.
This would help highlight headings, code blocks, etc.
I'm happy to look into making a PR to add this in, if you agree! (I am a little busy over the next couple weeks though, so it may take a me longer than usual)

Hi, that should be already implemented and documented in the FAQ, but since OctoEditable defaults to NormalFloat, I added some changes in https://github.com/pwntester/octo.nvim/commit/5e43e1f36755d67c31236a371831af7878b25884 to make sure the default highlight group does not use a  foreground color. Please check with latest version and let me know if it works as expected now

Thanks so much - your changes did help with the highlighting (highlighting headings, etc. that weren't being highlighted before!)
I use vim-markdown to get syntax highlighting for code blocks too, but this doesn't seem to appear on the Octo issue preview. In the screenshot below I have a scratch markdown buffer (top) with the Octo issue (bottom) for comparison:

Not sure whether this is an issue for vim-markdown or octo.nvim, or just something I need to configure with my highlight groups, so if you could point me in the right direction that would be much appreciated!

Can you try clearing the OctoEditable hl group?

Clearing the OctoEditable highlight group removes the background but doesn't affect my foreground colours:

Octo preview (left); and same content in a markdown scratch buffer (right)

I can run :TSHighlightCapturesUnderCursor (from nvim-treesitter), and that gives the following results:

Octo uses a custom octo filetype and syntax. Syntax is defined in https://github.com/pwntester/octo.nvim/blob/ea8aef7e0c3ae67fa46a46ee58623be3a201c968/after/syntax/octo.vim and it embeds markdown syntax. Perhaps vim-markdown defines additional syntax that is not imported by octo syntax. I dont use vim-markdown. Can you check if any addtional syntax files could be imported in the octo one?
A custom octo treesiter parser would be awesome but not sure if feasable since most octo text is virtual text

Hi @farbodsz
Just tried enabling the markdown treesitter for octo and it seems to work as you expect:

You just need to add these lines to your treesitter config:
  local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
  parser_config.markdown.used_by = "octo"

Ah this is perfect, thank you - I didn't realise this was possible!


nvidia-docker

Is it necessary to inatall nvidia-docker?Or just need to run "docker build --build-arg base_image=tensorflow/tensorflow:1.12.0-gpu -t imit-learn .
"

It's necessary and we should use nvidia-docker run to train the model.


copyDirectory on npm run watch not working properly

Hi
I've noticed copyDirectory on npm run watch is not working properly when copying for changes. However, when run for the first time, it runs normally
This is my webpack.mix.js configuration
mix.copyDirectory('Test/Test1', 'public/test');
Copied folder structure as npm run watch is run for the first time (everything is ok)

Copied folder structure as i change the content of test.x file. Notice now the structure from the base path to the directory being watched is also copied

mix.copyDirectory() is supposed to work like this and also during npm run watch
If you do not want it to keep copying and increase the depth of your directory, you will have to run something like clean-webpack-plugin to clean up test/ directory then re-copying the directory again because of npm run watch.

Fixed in 1.0.


Tile selection doesn't dissapear

When turning off the tile selection tool, the tiles previously selected while using the tile selection tool still stay selected.

This is partially intentional since this should be a tool. The "enable selection" text is kind of misleading that way. I do get what you mean though and I agree that there should definitely be a way to "deselect".


Updated recipe to fix detection method for Adobe Reader

Also added InstallBehavior and Supoersedence

Thank you! I started work on this yesterday, but you were much quicker!
Fixes #131


spinalcordtoolbox/vertebrae/detect_c2c3 -- New module

In its current implementation (v3.2.7), sct_label_vertebrae is poorly robust for detecting C2-C3 disc. It is an important first step for the algorithm, if it fails the rest of the processing fails.
This PR implements a separate, more robust, module that detects C2-C3 disc. Fixes #2066.
To test:

Re-install the toolbox: ./install_sct -m -b
Test it on a example data:

cd example_data/t2
source sct_launcher
python

then:
from spinalcordtoolbox.vertebrae.detect_c2c3 import detect_c2c3
from spinalcordtoolbox.image import Image
i=Image('t2.nii.gz')
s=Image('t2_seg_manual.nii.gz')
label_c2c3=detect_c2c3(i,s,'t2')
label_c2c3.save("t2_c2c3.nii.gz")

Subjects used for training:

[x] T2 here
[x] T1 here

Note: models added to NeuroPoly_wiki, not on OSF yet.

hum, with these data
and this version: 58a33ee3e5df97c87ed637919ccccee5a390d6ab
i'm getting this error:
>>> import os
>>> os.chdir("/Users/julien/sct_example_data/t2")
>>> i=Image('t2.nii.gz')
>>> s=Image('t2_seg.nii.gz')
>>> label_c2c3=detect_c2c3(i,s,'t2')
detection real   time in sec : 0.0599999
detection user   time in sec : 0.06
detection system time in sec : 0
Assertion failed: (nz>1), function centerline_dpdt, file /Users/creatis/sdika/spine/src/HOGDetect.cpp, line 1324.

@charleygros i've done some evaluations on t1 and t2, from the "largest differently looking" data from the multi-vendor single subject dataset from the spine_generic study, and only 1 out of 7 images fail (it is a t2). So it's a great preliminary result 👍

Update: I think the soft is ready to have an "sct" API so we can insert it into a processing pipeline (to easily test more subjects)
Update: sorry, i forgot that the idea was to call this function directly within sct_label_vertebrae (right?)

Yes (said here)

great, so i think this PR should already implement the call into sct_label_vertebrae (to avoid opening another PR). @charleygros do you mind doing it or do you prefer me to do it (i'm more familiar with the code of label vertebrae)?

Remains todo:

[ ] Add binary isct_train_svm

Not sure why Travis is failing here.
@charleygros: The binaries are supposed to be the same as before, right?


Add a flag to go into the console on test case failure

Overview
Normally, when testing with pytest one can add the --pdb flag to have pytest enter into the debugger when a test failure occurs (allowing you to debug it). Brownie already has a console available, so having the test case enter into this mode (or even pdb more generally) on a failure to allow a debug would be helpful.
Specification
Have a flag, like maybe brownie test --debug, that launches into an appropiate debug console to be able to introspect the conditions inside a test case, and be able to work with the contracts under test to identify what the failure might be. This mode might happen after all test cases have executed so that ordering doesn't become a problem, and it might want to revert the last transaction under certain scenarios.

I like it! I think implementation won't be trivial, but also not impossible.

After a test fails, rerun it and take a snapshot prior to every transaction.
When the test fails, revert the last transaction.
Output the test code with the lines that haven't run yet greyed out, and the trace for the pending fail.
Open the console with the namespace of the test. The user plays around and when finished, exit() and onto the next failed test.

Challenges I can see immediately are making it work with xdist and moving this functionality to the session teardown phase instead of happening as tests are failing. My gut tells me that the 2nd problem solves the 1st one.
Does what I'm describing make sense?

Did some experimenting, the basic functionality is possible with just 4 lines of code.
added to the PytestBrownieRunner class in  brownie/test/managers/runner.py:
    def pytest_exception_interact(self, report):
        if report.failed:
            from brownie._cli.console import Console
            Console().interact()

It requires use of the -s flag, otherwise pytest's stdout capture breaks it. There'll be a fair bit of experimenting to get this right, but it's really encouraging to see how easy the core functionality can be added!
Related: Pytest API documentation


error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory

Hi, as I lacked curl command in home-assistant snap package, I decided to give this toolbox a try. Here are the results:
user@system:/var/snap/home-assistant-snap/current$ snap run --shell home-assistant-snap

user@system:/snap/home-assistant-snap/555$ curl -I --http2 https://www.ubuntu.com/
find: failed to read file names from file system at or below '/snap/home-assistant-snap/555/shared-bin': No such file or directory
/snap/home-assistant-snap/555/shared-bin/usr/bin/curl: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory

Do you use this and is it working for you (then I apparently encountered a specific case), or the toolbox is deprecated and I should not use it anyway? Btw my OS is Ubuntu 22.04 Server

It would be great to get a larger set of libraries in this toolbox.

I suspend this was broken for quite some time. From my perspective 'find' command inside a snap context is quite useless and if instead of this, which will always fail on find:
#!/usr/bin/env bash

for LIB in $(find "${SNAP}/shared-bin" -name libcurl.so* -exec dirname {} \;); do
    if [ ! -z "${LD_LIBRARY_PATH##*$LIB*}" ]; then
        export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LIB}"
    fi
done

eval $SNAP/shared-bin/usr/bin/curl $@`

something like this works:
#!/usr/bin/env bash

export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${SNAP}/shared-bin/usr/lib/x86_64-linux-gnu"

eval $SNAP/shared-bin/usr/bin/curl $@

to provide more info:
user@system:~$ snap run --shell home-assistant-snap
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

user@system:/snap/home-assistant-snap/559$ find $SNAP -name something*
find: failed to read file names from file system at or below '/snap/home-assistant-snap/559': No such file or directory

find $SNAP always generates error on my installation.
only if I use  find /var$SNAP, it works


Added Tofts and Ext. Tofts

Added functionality for Tofts and ETofts modelling plus tests, documentation and examples. Merge with main will update the website to show changes.

Something wrong with Sphinx or make. I think there is some error during 'make html'. It says it can't find osipi...I am able to build the html without errors locally, so not sure why it's popping up on Github. Do you think this has to do with me deleting all the DS_Store files on the repo?!

The issue is with osipi not being able to load due to scipy being a dependency, and not being installed. I was able to replicate the error locally in a clean environment. I will make an MR for the fix to this and add you as a reviewer.


[Java][Packaging] Add an Arrow BOM

Describe the enhancement requested
We should add a Bill of Materials (BOM) to Arrow to make dependency management easier.
Component(s)
Java

take


0.2.5 make zsh-navigation-tools unusable / non-exit-able

(May be related to https://github.com/tarruda/zsh-autosuggestions/issues/115 , appeared at the same time)

Minimal .zshrc:
ZSH=$HOME/.oh-my-zsh
plugins=(zsh-navigation-tools zsh-autosuggestions)
source $ZSH/oh-my-zsh.sh

Scenario:

Press Ctrl+R to open zsh-navigation-tools.
Press ENTER to select the first entry

Expected: first entry is sent to current line
Actual: nothing happens: screen flickers and zsh-navigation-tools become impossible to exit (Ctrl+C, Ctrl+D don't help)

I'm seeing a similar thing when using fzf.
Can be re-produced with the following .
source $HOME/.zsh/plugins/autosuggestions/zsh-autosuggestions.zsh

fzf-history-widget() {
  LBUFFER=$(fc -l 1 | fzf +s --tac -n2..,.. | sed "s/ *[0-9*]* *//")
  zle redisplay
}
zle -N fzf-history-widget
bindkey -e '^r' fzf-history-widget

@ronjouch do you see this issue if you comment out the references to zle redisplay? It seems to prevent this for me, however the redisplay is most certainly needed. I guess something in autosuggestions may have changed how this is handled.
I will try to step through the commits in more detail when I have some time.

@george-b yeah, v0.2.5 is this single commit :)
Regarding your request for info, I'm a zsh user but my knowledge of programming zsh is very, very limited and I have no idea what you're talking about. Can you precise what you mean by "comment out the references to zle redisplay"? I have no such thing in my zshrc.

Regarding your request for info, I'm a zsh user but my knowledge of programming zsh is very, very limited and I have no idea what you're talking about. Can you precise what you mean by "comment out the references to zle redisplay"? I have no such thing in my zshrc.

Within zsh-navigation-tools there will be invocations of zle redisplay, e.g.
You can comment these out by prefixing them with a #. These are of course needed, in my case without the redisplay output is displayed before my prompt. However with the redisplay I am simply dropped back into fzf in my case since updating to v0.2.5 of autosuggestions.
I'm sure @ericfreese has far better knowledge of zsh widget than I, hopefully this cause of this is straight forward if you find the same behavior as I do.

So what 0.2.5 did is bind widgets not found in the CLEAR, ACCEPT, or PARTIAL_ACCEPT lists to the _zsh_autosuggest_modify function: https://github.com/tarruda/zsh-autosuggestions/commit/5e419da3267c606eab1cfc76334cc953e903c718#diff-2a58eb2e47d1b3ee3c072d264886fc66R52
Before 0.2.5, the redisplay widget was not bound, but now it is. I believe this is the same issue as described here, and I believe the correct fix is for zsh-navigation-tools to use zle .redisplay or zle .redisplay -w.
However, it's not really feasible to expect all of these other plugins to fix how they're calling zle, so I'll try to spend some time today looking into how we can handle those cases in this codebase.

I believe the correct fix is for zsh-navigation-tools to use zle .redisplay or zle .redisplay -w.

Thanks! I can confirm this works for me. If you don't mind me asking what does the . prefix do? I've had a skim through zshzle man page but am still left wondering.

No probem, glad it helps.
From http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Widgets:

Each built-in widget has two names: its normal canonical name, and the same name preceded by a ‘.’. The ‘.’ name is special: it can’t be rebound to a different widget. This makes the widget available even when its usual name has been redefined.

Ok, I've just pushed v0.2.6, which I believe will fix these issues by no longer referring to the $WIDGET variable. Please give that a shot.

Ok, I've just pushed v0.2.6, which I believe will fix these issues by no longer referring to the $WIDGET variable. Please give that a shot.

It does fix this issue however it has broken tab completion. Let me know if you want me to create a new issue for this.
$ cd _main_complete:199: command not found: expand-or-complete
_main_complete:199: command not found: modify
_main_complete:199: command not found: expand-or-complete
_main_complete:199: command not found: modify

Shoot. Yeah, let's make a separate issue for that.

Ah, forgot a pesky backslash. Will push v0.2.7 to fix that momentarily.


Blogs shifted and redesigned

Related Issue
Fix #2669
Description
I have shifted the blogs directory and redesigned it by adding a home page having blog cards with description of blogs,image and title, aligned in grid layout.
Type of PR

[ ] Bug fix
[x] Feature enhancement
[ ] Documentation update
[ ] Security enhancement
[ ] Other (specify): _______________

Screenshots / Videos (if applicable)
https://github.com/CodeHarborHub/codeharborhub.github.io/assets/122633300/fae44c71-ad9b-47bc-900b-e4ba8768d38d
Checklist

[x] I have performed a self-review of my code.
[x] I have read and followed the Contribution Guidelines.
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have followed the code style guidelines of this project.
[x] I have checked for any existing open issues that my pull request may address.
[x] I have ensured that my changes do not break any existing functionality.
[x] Each contributor is allowed to create a maximum of 4 issues per day. This helps us manage and address issues efficiently.
[x] I have read the resources for guidance listed below.
[x] I have followed security best practices in my code changes.

Additional Context
[Include any additional information or context that might be helpful for reviewers.]
Resources for Guidance
Please read the following resources before submitting your contribution:

[ ] Code Harbor Hub Community Features
[ ] Docusaurus Documentation
[ ] React.js Documentation
[ ] Markdown Guide
[ ] MDX Documentation
[ ] Mermaid Documentation

Resources for DSA Features on Our Site:

[ ] Tabs: Switch Languages
[ ] Line Numbering
[ ] Math Equations

Contribution Guidelines
Thank you for considering contributing to our project! To ensure smooth collaboration and effective contribution management, please adhere to the following guidelines:
Issue Creation

Limit on Issues:

Each contributor is allowed to create a maximum of 4 issues per day. This helps us manage and address issues efficiently.

Contribution Levels

Basic Contributions:

This project is primarily focused on documentation. Most of the setup has been completed, so contributors will generally need to work on basic code tasks, such as writing tests.
For these tasks, issues will be assigned the level1 label.

Acknowledging Hard Work:

If a contributor puts in significant effort on a task, the issue will be upgraded to level2. This is our way of recognizing and appreciating extra effort.

Feature Additions and Component Work:

Contributors working on new features or components using JSX/TSX will be assigned a level based on the complexity and quality of their work.
The more complex and valuable the contribution, the higher the level assigned.

Level Definitions

Level1:

Tasks are straightforward, such as fixing minor bugs, writing tests, or making simple documentation updates.

Level2:

Tasks require more effort, such as addressing complex bugs, improving existing features, or making substantial documentation improvements.

Level3:

Tasks are highly complex and involve significant new feature development, major refactoring, or extensive contributions to the project’s core components.

We look forward to your contributions and appreciate your effort in helping us improve the project!

@Ajay-Dhangar I needed a help
My PR NO 329 was merged many days ago till day before yesterday it was visible in leaderboard but since yesterday its not visible could u pls help me out with this?

@Ajay-Dhangar Sir but I didn't do documentation work here,I have designed the main blogs page then I guess documentation level isn't needed?
And sir My PR NO 329 was merged many days ago till day before yesterday it was visible in leaderboard but since yesterday its not visible could u pls help me out with this?

@Ajay-Dhangar I needed a help My PR NO 329 was merged many days ago till day before yesterday it was visible in leaderboard but since yesterday its not visible could u pls help me out with this?

@komal-agarwal5, I think your PRs score is currently at up to 120, but it might be removed by the program manager.

@sanjay-kv, can you help @komal-agarwal5 with solving their doubts?

https://github.com/GSSoC24/Contributor/discussions/categories/q-a
can u raise the issue with respective PR link here. i will get you solution eod

https://github.com/GSSoC24/Contributor/discussions/categories/q-a
can u raise the issue with respective PR link here. i will get you solution eod

Yes sir I have raised it

@komal-agarwal5, this approach isn't correct. Our blog directory is already set up with plugins, so you only need to create one file: pages/blogs/index.tsx. In this file, write the code for the blog cards, including the image, blog title, description, and link to our blogs. Please do not change the entire blog directory structure.

Ok I am making the corrections

@Ajay-Dhangar please check now if it is ok

@Ajay-Dhangar ok changing it
Actually when I was doing it without modifying the name of original blog directory then I was facing routing issue as on clicking the "blog" option from navbar it is redirecting to current blog page and not the blog page of index.tsx as both directories have same name "blog". How do i solve this could u pls tell?

@komal-agarwal5, Don't worry, our structure for blog content is organized as blog/..., while /blogs specifically serves as the page for all blog cards.

@komal-agarwal5, Don't worry, our structure for blog content is organized as /blog/..., while /blogs specifically serves as the page for all blog cards.

Ok got it


Improve support for vue files.

Thanks for this awesome tool! I ran into some issue while trying to use this on vue files so I added a few things.

Added an indentVueStyleBlock param that indents vue style blocks, a common pattern. Safely defaults to no indent.
Does not attempt to convert style blocks unless they have the style lang="stylus" attribute.
Retains the scoped attribute.

One TODO, is to add proper descriptions to the zh-cn README.

Awesome, thanks for the fixes! Maybe we can introduce Prettier to the project to maintain consistent code style.


gl-matrix 2.2.1 available on NPM but 2.1.0 listed as latest version?

npm install<EMAIL_ADDRESS>works as expected to get the latest version (matches git), and https://registry.npmjs.org/gl-matrix/2.2.1 exists, but https://www.npmjs.org/package/gl-matrix still shows an old version:
Version	 2.1.0 last updated a month ago

any idea why this is? npm install gl-matrix also installs 2.1.0, though the latest version can be referenced in a package.json with no problem.
found this other issue, which says 2.2.1 was published about a month ago: https://github.com/toji/gl-matrix/issues/91

npm updated to 2.3.0


Footer need to be Fixed

The CSS for the footer is currently not stable, and I'm confident that I can resolve this issue. Kindly assign it to me, as I am a contributor participating in the Social Winter of Code 2024.

Ok, make a new component Footer and then render it to the Homepage

Hey are you still working on this?

Yes i;m working on this issue and issue #8 collaboartively,
will raise PR for both by tommorow

refer to #22 for further discussion on this.


Update dependencies to validate changes

Update ovos-utils and ovos-workshop to latest alpha versions

https://github.com/OpenVoiceOS/ovos-PHAL/actions/runs/5604394126


Idempotent documentation examples could be misleading

What were you initially searching for in the docs?
How to use the Idempotent utility
Is this related to an existing part of the documentation? Please share a link
Link to documentation section
Describe how we could make it clearer
The example uses the following config:
config = IdempotencyConfig(event_key_jmespath="body")

What I feel is missing from the documentation is that the Idempotent decorator does not do any type coersion on the event_key_jmespath so this data hash key used in dynamodb is based on the String data in the event body attribute.
For a standard APIGatewayProxyEvent for a json REST Api that means the following body strings are different even though logically the API Json payloads are actually identical (in API terms).   If I follow the example verbatim the following body values will be seen as different API invocations:
{
   "more_data": "more data 1",
"data": "test message 1"
}

{
   "more_data": "more data 1",
   "data": "test message 1"
}

{

   "more_data": "more data 1",

"data": "test message 1"

}

maps to a body of "{\n\n   "more_data": "more data 1",\n\n\n\n\n\n\n\n"data": "test message 1"\n\n}" in the API Gateway event (i.e. includes all the white space).
I feel the example should include the event source for API Gateway events resulting in the following:
import json
from aws_lambda_powertools.utilities.idempotency import (
    IdempotencyConfig, DynamoDBPersistenceLayer, idempotent
)
from aws_lambda_powertools.utilities.data_classes import (
    event_source, APIGatewayProxyEvent
)

persistence_layer = DynamoDBPersistenceLayer(table_name="IdempotencyTable")

config = IdempotencyConfig(event_key_jmespath="json_body")
@event_source(data_class=APIGatewayProxyEvent)
@idempotent(config=config, persistence_store=persistence_layer)
def handler(event:APIGatewayProxyEvent, context):
    body = json.loads(event['body'])
    payment = create_subscription_payment(
        user=body['user'],
        product=body['product_id']
    )
    ...
    return {
        "payment_id": payment.id,
        "message": "success",
        "statusCode": 200
    }

If you have a proposed update, please share it here
Maybe change the example to include the event_source coersion to stop people copying that example thinking their API will be idempotent - when it will when the exact body string is used.  Its not obvious from the documentation (or maybe its just me)

Thanks @walmsles - I added some small feedback on your PR

Thanks @walmsles! I've had a look at the PR and requested a few small changes there.

Closing this now as it's available in the staged docs: https://awslabs.github.io/aws-lambda-powertools-python/develop/utilities/idempotency/
We'll work on exposing JMESPath Functions to all customers along with our handy functions, so they can use them like we do anywhere in their code.
Thank you so much for the help again @walmsles !


Cannot read from stdin in TestNG test

Running the following test with mvn clean test -Dtest=StdinTest, the line br.readLine() does not return.
testng-6.9.9
public class StdinTest {

    @Test
    public void stdinTest(){
        System.out.println("Press enter:");
        try{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            br.readLine();
        }catch(IOException e){
            e.printStackTrace();
        }
        System.out.println("Done.");
    }

    public static void main(String[] args){
        new StdinTest().stdinTest();

    }
}

I close because TestNG is working as expected: it runs the test.

@juherr I does run the test. But were you able to get stdin input from br.readLine()?

I didn't try like it is really system dependent. Is your example working with JUnit?

@juherr Yes. it does.

The following main is working well:
    public static void main(String... args) {
        TestNG tng = new TestNG();
        tng.setTestClasses(new Class[]{StdinTest.class});
        tng.run();
    }

I suppose we can say that TestNG is not the problem here? But maybe Maven is.

@juherr Oh. That seems to be true. Thanks for trying out.


What exactly step 2 is talking about?

Hi,
Newbie here and wondering what is step 2 talking about? Do I need to clone the repository and then create a config.yml in it?

you don’t need to clone the repository, just create the config.yml file in the repository that you want to install the first timers app on. Note that this is for github.com, i’m not sure how it works on self-hosted GitHub Enterprise at this point


Encoding "key=value1&key=value2&key=value3" in query string

Hello!
We are using Alamofire in our project and it is great! :)
But we faced a situation when we need to get some parameter in query string look like this:
key=value1&key=value2&key=value3
We are encoding parameters into request ourselves due to Alamofire's support only for:
key[]=value1&key[]=value2&key[]=value3
key[1]=value1&key[2]=value2&key[3]=value3
It would be great if you will support this additional format, for example when Set is passed. Thanks in advance!

This question has been asked and answered many times. We only support one common form of collection encoding. For other types, you need to use the .Custom encoding. The ParameterEncoding methods have been publicly exposed to make it easier to do so.
For more info, please see https://github.com/Alamofire/Alamofire/issues/589 and https://github.com/Alamofire/Alamofire/issues/965.
Cheers. 🍻


Target .NET 5.0 for the Bot Builder .NET SDK

Hi all, according to my question on SO, it would be nice to have the SDK targeting .NET 5.0, so we catch up with the latest .NET 5 GA release.
From:
<TargetFramework>netcoreapp3.1</TargetFramework>

To:
<TargetFramework>net5.0</TargetFramework>

We already see some libraries which can't be referenced since the SDK targets .NET Core 3.1.
I've changed the target manually, and I can't see any compile or runtime error. Anything that is blocking us from switching over?
Thanks
—Sebastian

@sebastianzolg the team will start testing on .NET 5.0 soon. We do not have an exact date at this time, but it is in the pipeline. Thank you for your question.

@sebastianzolg the team will start testing on .NET 5.0 soon. We do not have an exact date at this time, but it is in the pipeline. Thank you for your question.

Reviewed by the SDK team. @gabo to investigate the implications and timeframe.

Per discussion with @gabog, this is not for R13.

Hi all, it looks like this got bumped to R15. Is there any more clarity that could be provided on when it may land or is it still a little unceratin? The team I'm on is holding on 3.1 as a result. Thanks in advance!

Thank you for submitting this issue @NickSpag. The team has this change in the backlog for a future release.

How about .Net6?

@Citronjack, we will skip net 6, the upcoming release, 4.17.x will add support for net 6 (it should be available in a few weeks from now)


Add EVP_PKEY_todata() and EVP_PKEY_export() functions

Fixes #14657

Checklist

[x] documentation is added or updated
[x] tests are added or updated

This is dependent on #14785

Ignore the first 2 commits which are part of #14785

One thing I see as slightly odd is that with fromdata you have to call fromdata_init first. But not with todata. That's probably correct behaviour but the asymmetry seems strange.

Let's not bend over backwards over such things...

Let's not bend over backwards over such things...

:(  Consistency to developers matters a great deal.

:( Consistency to developers matters a great deal.

I think the problem here is "consistency with what"? "fromdata" is essentially very similar to a keygen operation and the "init then generate" pattern is consistent with how normal keygen works. "todata" is not a keygen operation and the "init then generate" pattern doesn't make a lot of sense and there seems no need for "todata" to attempt to be consistent with keygen. This is where I think the inconsistency comes from - in spite of the apparent similarity in names they are different types of function.

This looks ok to me, but I guess we need to wait for #14785 to be merged.

Rebased now that #14785 is merged..

Ready for review now that dependency has been merged.

The appveyor issue should be addressed by https://github.com/openssl/openssl/pull/14851.

24 hours has passed since 'approval: done' was set, but this PR has failing CI tests.  Once the tests pass it will get moved to 'approval: ready to merge' automatically, alternatively please review and set the label manually.

Merged to master.

Thanks - I would of got to it today..


Instead, allow an option for the user to choose with a setting in settings to pick a default at ayon+settings://houdini/load/CameraLoader/camera_aperture_expression
This does now default to the Houdini default behavior instead of the "Match Maya Render Mask" because it seems more aligned with what users seem to want. To keep the old default behavior on load that setting would have to be set to match_maya.
Additional review information

Fixes #106
Testing notes:

Load camera should default to regular Houdini expression on Alembic camera load
Unless the option was chosen to use the Match Maya Render Mask expression.
On update the chosen option should persist - so that if on load maya render mask was chosen, it would be preserved on updating.
It should be backwards compatible on updates for already loaded cameras in the scene (preserving the match maya render mask expression).

They can - there should be an option box on the action in the Loader?

This is cool, I didn't we can do that.


SSS variance is bugged

Variance for levitus dataset included in the climatology is bugged: it is actually the variance of sea-ice, needs to be replaced

this is partially resolved by #27 which includes a new climatology.

Still, even if it is a really outdated reference dataset, it would be nice to fix this so that when RK08 also SSS PI is there. Do we still have a copy (any copy) of the Levitus data ? I tried to download a fresh copy from the World Ocean Database (for example edition WOA 2013 but it is unclear to me which version we should use ....