Error during exporting of split dataset.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\ops\array_ops.py in na_arithmetic_op(left, right, op, is_cmp)
    142     try:
--> 143         result = expressions.evaluate(op, left, right)
    144     except TypeError:

~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\computation\expressions.py in evaluate(op, a, b, use_numexpr)
    232         if use_numexpr:
--> 233             return _evaluate(op, op_str, a, b)  # type: ignore
    234     return _evaluate_standard(op, op_str, a, b)

~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_standard(op, op_str, a, b)
     67     with np.errstate(all="ignore"):
---> 68         return op(a, b)
     69

TypeError: can't multiply sequence by non-int of type 'float'

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_59916/1620987889.py in <module>
----> 1 dataset.export.ExportToYoloV5(output_path='model_training/labels',yaml_file='dataset.yaml', use_splits=True)

~\Anaconda3\envs\yolov5\lib\site-packages\pylabel\exporter.py in ExportToYoloV5(self, output_path, yaml_file, copy_images, use_splits, cat_id_index)
    486
    487         yolo_dataset["center_x_scaled"] = (
--> 488             yolo_dataset["ann_bbox_xmin"] + (yolo_dataset["ann_bbox_width"] * 0.5)
    489         ) / yolo_dataset["img_width"]
    490         yolo_dataset["center_y_scaled"] = (

~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\ops\common.py in new_method(self, other)
     63         other = item_from_zerodim(other)
     64
---> 65         return method(self, other)
     66
     67     return new_method

~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\ops\__init__.py in wrapper(left, right)
    341         lvalues = extract_array(left, extract_numpy=True)
    342         rvalues = extract_array(right, extract_numpy=True)
--> 343         result = arithmetic_op(lvalues, rvalues, op)
    344
    345         return left._construct_result(result, name=res_name)

~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\ops\array_ops.py in arithmetic_op(left, right, op)
    188     else:
    189         with np.errstate(all="ignore"):
--> 190             res_values = na_arithmetic_op(lvalues, rvalues, op)
    191
    192     return res_values

~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\ops\array_ops.py in na_arithmetic_op(left, right, op, is_cmp)
    148             #  will handle complex numbers incorrectly, see GH#32047
    149             raise
--> 150         result = masked_arith_op(left, right, op)
    151
    152     if is_cmp and (is_scalar(result) or result is NotImplemented):

~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\ops\array_ops.py in masked_arith_op(x, y, op)
    110         if mask.any():
    111             with np.errstate(all="ignore"):
--> 112                 result[mask] = op(xrav[mask], y)
    113
    114     result, _ = maybe_upcast_putmask(result, ~mask, np.nan)

TypeError: can't multiply sequence by non-int of type 'float'

This happens when exporting to YOLOv5.

Running the example notebook on Google Colab works fine, for information. My dataset was imported as YOLOv5, will try now to import as COCO and see if there is a difference.

I suspect that this is also caused by your images without annotations, which creates null values.
If it works on Colab it may be because Colab has a different version of pandas.  I see this error message above "TypeError: can't multiply sequence by non-int of type 'float'" pandas sometimes changes the datatype of a column which causes errors like this.

So I imported the dataset using ImportYOLOv5 successfully, then exported to COCO, also successfully. The problem is that when I import the newly exported dataset, errors start to occur such as:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
pandas\_libs\lib.pyx in pandas._libs.lib.maybe_convert_numeric()

ValueError: Unable to parse string "nan"

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_46392/991218777.py in <module>
      1 print(f"Number of images: {dataset1.analyze.num_images}")
      2 print(f"Number of classes: {dataset1.analyze.num_classes}")
----> 3 print(f"Classes:{dataset1.analyze.classes}")
      4 print(f"Class counts:\n{dataset1.analyze.class_counts}")

c:\Users\istaka\tmp\pylabel\pylabel\pylabel\analyze.py in classes(self)
     27             r"^\s*$", np.nan, regex=True
     28         )
---> 29         pd.to_numeric(self.dataset.df["cat_id"])
     30
     31         filtered_df = self.dataset.df[self.dataset.df["cat_id"].notnull()]

~\Anaconda3\envs\yolov5\lib\site-packages\pandas\core\tools\numeric.py in to_numeric(arg, errors, downcast)
    151         try:
    152             values = lib.maybe_convert_numeric(
--> 153                 values, set(), coerce_numeric=coerce_numeric
    154             )
    155         except (ValueError, TypeError):

pandas\_libs\lib.pyx in pandas._libs.lib.maybe_convert_numeric()

ValueError: Unable to parse string "nan" at position 13

I think these problems stem from the NAN class. Maybe a better solution would be to not consider it a class rather ignore the images that don't contain labels.

I suspect that this is also caused by your images without annotations, which creates null values.
If it works on Colab it may be because Colab has a different version of pandas. I see this error message above "TypeError: can't multiply sequence by non-int of type 'float'" pandas sometimes changes the datatype of a column which causes errors like this.

I have to add that I tried the Google Colab notebook with your sample dataset, not mine.

In terms of machine learning principles, I think it is valid to have images without labels to train a model. So I will try to get it to work and add more test cases.
But in the mean time, you can filter out the the rows without labels like this after you import it.
dataset.df = dataset.df[dataset.df.cat_id.notnull()]

Appreciate the concern and thanks for the tip. Will try it out and let you know if sth goes wrong. In the mean time, should I close this issue or leave it open?

You can leave it open and thank you for reporting it. There is a lot of diversity in how people create and save datasets so it is helpful to see other peoples examples.


Audit copywriting against styleguide

As per our documentation, Warehouse uses the material design writing styleguide.
We should cross check our UIs to ensure that we are meeting these guidelines - in particular in relation to capitalization and punctuation.

Good First Issue: This issue is good for first time contributors. If you've already contributed to Warehouse, please work on another issue without this label instead. If there is not a corresponding pull request for this issue, it is up for grabs. For directions for getting set up, see our Getting Started Guide. If you are working on this issue and have questions, please feel free to ask them here, #pypa-dev on Freenode, or the pypa-dev mailing list.

To audit:

[ ] Templates (/warehouse/templates)
[ ] PyPI theme (I will need to make this PR as it is on a separate repository)
[ ] All "flash" messages, e.g. request.session.flash and corresponding tests
[ ] All error messages, e.g. https://github.com/pypa/warehouse/blob/master/warehouse/manage/forms.py#L30

A few places in the templates we seem to have missed:

See PR https://github.com/pypa/warehouse/pull/3609.

Flash messages addressed by https://github.com/pypa/warehouse/pull/3830.
Still todo:

[ ] PyPI theme (I will need to make this PR as it is on a separate repository)
[ ] All error messages, e.g. https://github.com/pypa/warehouse/blob/master/warehouse/manage/forms.py#L30

Address the form error messages by #3846.

There still seems to be a lot to do here. Just a search for the word "please" in the codebase produces a few files that probably need to be entirely gone over:

warehouse/forklift/legacy.py
warehouse/legacy/api/xmlrpc/views.py
warehouse/static/js/warehouse/index.js
warehouse/static/js/warehouse/utils/forms.js
warehouse/templates/base.html
warehouse/templates/accounts/request-password-reset.html
warehouse/templates/pages/security.html
warehouse/templates/pages/help.html
warehouse/templates/upload.html
warehouse/templates/email/verify-email.body.txt
warehouse/templates/email/password-reset.body.txt

as well as a lot of documentation:

docs/roadmap.rst
docs/application.rst
docs/development/index.rst
docs/development/reviewing-patches.rst
docs/development/submitting-patches.rst
docs/development/getting-started.rst
docs/api-reference/index.rst
docs/api-reference/xml-rpc.rst
docs/api-reference/integration-guide.rst
docs/security.rst
docs/ui-principles.rst

Material Design have restructured their website without adding redirects.
Here's the new link to the writing styleguide: https://material.io/design/usability/accessibility.html#writing

Also looks like they've removed a lot of the writing advice and examples from the new site.
Here's a link to the most-recent old version from the Internet Archive:
https://web.archive.org/web/20180410101124/https://material.io/guidelines/style/writing.html

@nlhkabu, we(@mferi & @acangiani) are working on this issue.

"Please" left on warehouse/forklift/legacy.py and its test. Otherwise seems clean.

@nlhkabu
"Bugas & feedback"
Aspersen is not used consistenly on the website. Should it be a plane "and"?

@nlhkabu
I would say that lower case here makes sense to keep the style: eg.

"By topic" or even "by topic"

@nlhkabu working on it!

Change filter list titles to 'By licence', 'By environment', etc.

Looks like the text that comes after "By" are generated from the top-level classifiers: https://pypi.org/pypi?%3Aaction=list_classifiers
https://github.com/pypa/warehouse/blob/af3784d4341da7e6b1b24864f55bd0205f648390/warehouse/templates/search/results.html#L104-L121

Closing this issue as it appears we've covered all use cases.  Thanks to all contributors!


is this support m3u8 within webview？

NO!
m3u8 will support later, but in the WebView you need to hook the network behavior


sctp not running in some version linux

sctp echo sample not runing in ubuntu 16.04lts, 18.04 lts but work well in centos 7 or ubuntu 17.10. because Server send ABORT chunk as response on INIT .but  command sctp_darn is working normal.  Can someone please help me file pcap

@khanhlv93 we just use what the JDK includes so I think you will need to fill an openjdk bug.

i tried both oracle jdk7 and orack jdk8 but it same result "abort init" .

@khanhlv93 again I think you need to open an issue for openjdk with a reproducer.


Jira collector error ERROR c.c.d.c.DefaultBitbucketClient - 404 Not Found for Commit\since

I am getting
ERROR c.c.d.c.DefaultBitbucketClient - 404 Not Found:
when query for
/commits?sha=master&since=2017-01-11T18:48Z
I am using api/1.0
Thanks,
Bimal

What version of Bitbucket? Did you set git.product correctly?

please try with latest codebase. Open a new issue if it still exists.


Add Webhook Support for Gitea/Drone

Please consider adding webhook support for Gitea/Drone.

Sorry to reply to this thread (I can open another one if you think it is better and remove this comment). Please also consider using local webhooks. I have webhook installed, so I want to call it directly from argus.
For instance, I have a local webhook that responds to http://<IP_ADDRESS>/hooks/update-docker?container=argus and calls a local script to update a specific container in the name. I am having no luck settings this up.
Regards,

@jrhbcn yeah, I think another issues would be best please. I'd definitely like to support adnanh/WebHook as I do use it myself (just not for receiving from Argus atm)

Done. Let's keep this issue for gitea/drone support.

Is this still wanted, or did you find out how to get them working in this?

I am good to close.  I am able to do what I need with webhooks and the Drone CLI.  Longest pole in the tent was creating a docker image for webhook with docker and drone cli in it.  First image I ever created for an app that did not have one.  Was a good learning experience.


sokol_gfx.h: Multi-window support with shared context?

I have noticed that there is a multi-window glfw example but it seems to create one full set of data per context.
I'm after a way of sharing the context across windows/widgets (think of Autodesk Maya, or 3d Studio Max), with their different viewports, they all share the same data but draw from different cameras.
I unfortunately have not found a way to do this from looking at the public api, although I might be missing something, is there anything I could be missing?
I was thinking that since this would be using the same exact context there shouldn't be any need for context switching/creation so having an extra "window/widget id" argument at the end of sg_begin_default_pass might do the trick (without breaking code)
ie something along the lines of:
void sg_begin_default_pass(const sg_pass_action* pass_action, int width, int height, int window_id = 0)
or maybe as an override with an additional parameter, this time with explicit window_id?
the window_id would just be a way to internally set things up for the possibility of several "default/non-pass/pre-existent" framebuffers, which would be bound just before drawing, although the more I think of this the more I am starting to think that this might require a bit more of bookkeeping to keep track of some sort of sg_window(s) to know what goes where, and that they will also need initializing.
Off the top of my head (without testing) the hacky workaround for now would be to explicitly set the FBO id directly on gfx's internals before the sg_begin_default_pass call which I think should be harmless, but I honestly don't know if there is anything entangled that might cause trouble down the line in the backends that I'm not as familiar with as with OpenGL (which is quite forgiving!)
I'm also saying because to me it feels like having an extra sg_pass to deal with pre-existing widgets with their own framebuffers and somehow blitting sg_passes to them would be a bit of a hack?

Hi, rendering to different "contexts" is a topic that's only relevant (and possible) in GL, and I don't want to bend the sokol-gfx API too much for that specific use case, but I think what you need is already possible with what's already there:
I'm not sure if you've seen the GLFW multi-window example (https://github.com/floooh/sokol-samples/blob/master/glfw/multiwindow-glfw.c), but that's what the context-support in sokol-gfx was created for basically. Each window or widget gets its own GL context, each context has its own GL framebuffer, and resources like textures or buffers would use GL's resource sharing feature.
So with GLFW the first step would be to enable resource sharing for all contexts/windows (see here: https://www.glfw.org/docs/latest/context_guide.html#context_sharing). Then I would render the different cameras on the "main context" into offscreen passes. Since this rendering would go into shared textures, it should be possible to render the camera views on the other contexts as a simple fullscreen rectangle.
The last time I tried using multiple GL contexts in Qt resulted in a lot of pain and suffering, but that was a few years ago, maybe it has improved in the meantime ;)

PS: for using shared textures across different GL context you'd probably want to use sokol_gfx.h's "native resource injection", basically create one texture via direct GL calls, and create several sokol textures on different sokol different with the same GL texture handle, see here for an example (this doesn't use different contexts, but demonstrates how to "inject" a GL texture): https://github.com/floooh/sokol-samples/blob/master/glfw/inject-glfw.c

Sorry perhaps I didn't explain myself well, I think that we're talking about different things?
I would actually prefer avoiding using contexts completely what I am actually after is re-using the same single context across multiple windows/widgets. Although I can see why the word shared context would throw anyone out as it's also a valid concept in GL.
The only reason why I used the word context was to say that I had in fact looked at the glfw multi-window example and is doing the opposite of what I'm after.
As I mention the only thing that I can think of (my backend knowledge is limited to GL) that would be needed for my purposes isn't a context change but some sort of window "id" that would tell sokol that I'm going to be rendering to a certain FBO id or another.
Perhaps this explains a bit better my use case, going back to the QOpenGLWidget example:
I would have multiple QOpenGLWidgets, think of the typical front/back/top/perspective 4 viewport case in 3d softwares and a single context for all of them, that does not cause any issues since it can only redraw one at a time anyway.
in each "draw" call...
void GLWidget::paintGL()
{
    sg_begin_default_pass(&pass_action, width(), height()); // <--- no sg_window concept***
    queue_drawables();
    sg_end_pass();
    sg_commit();
}

my issue with the current concept of sg_begin_default_pass is that it assumes that there is a single default pass/or a single window/widget.
I was asking about the possibility of either contemplating the possibility of having an extra concept of sg_window(s) used on sg_begin_default_pass like so:
sg_begin_default_pass(&pass_action, width(), height(), &this_window_id); // sg_window this_window_id;
// everything going forward goes to the fbo of this_window_id... as long as sg_pass aren't involved

or maybe some global state:
sg_set_current_window(&this_window_id);
sg_begin_default_pass(&pass_action, width(), height());
// everything going forward goes to the fbo of this_window_id... as long as sg_pass aren't involved

As far as I can think of (right now, with my GL-only knowledge) sg_window would be something along the lines of:
struct sg_window {
 uint32_t fbo_id;
}

whereas right now without this concept of sg_window it assumes that this_window_id is always going to be _sg.gl.cur_context->default_framebuffer
Does this make more sense now? Is there already a nice way to do this? Would you consider supporting this?
I was basically saying earlier that I could probably do something along the lines of the following and call it a day, I'd assume this would work on GL but I'm not sure about doing the equivalent on Metal, for instance.
void GLWidget::paintGL()
{
    _sg.gl.cur_context->default_framebuffer = this_window_id.fbo_id;
    sg_begin_default_pass(&pass_action, width(), height());
    //...

another approach to doing this would be to create and use sg_pass for all widgets/windows (without ever dealing with a "default" one) but without actually creating the fbos that may be attached to sg_pass. (to avoid having unused fbos)
ie: since Qt already creates FBOs one would want to create sg_passes pre-initializing them with existing FBOs so they wouldn't have to create any (if that makes sense), in this case sg_pass would need to have some sort of bookkeeping to know the ownership of the FBOs it manages.

Ok, if this code works in GL:
_sg.gl.cur_context->default_framebuffer = this_window_id.fbo_id;
sg_begin_default_pass(&pass_action, width(), height());

Then I think it's better if you wrap that your own small extension header for sokol-gfx (to be included after the sokol_gfx.h implementation), where you add a small extension function which would look like this:
void sg_begin_pass_with_fbo(sg_pass pass_id, const sg_pass_action* pass_action, GLuint fbo) {
    GLuint cur_fbo = _sg.gl.cur_context->default_framebuffer;
    _sg.gl.cur_context->default_framebuffer = this_window_id.fbo_id;
    sg_begin_pass(pass_id, pass_action);
    _sg.gl.cur_context->default_framebuffer = cur_fbo;
}

The "multiple window rendering" approaches of the different backend APIs differ too much to generalize this case IMHO, and at least in Metal and D3D11 it also needs code that's normally living in sokol_app.h, so it couldn't be done in sokol-gfx alone.

I see thanks, I will need to have a look at the Metal side of things then to see how to wrap it nicely since having OpenGL && Metal supported is the reason why I'm considering moving my codebase from raw OpenGL to sokol_gfx.h.
I naively expected other backends to have a similar way around this by dealing with FBOs with some numeric id... :(
Cheers!

I did a quick test in Metal, in the super simple test I hacked together looks like all it takes to get it to handle multi-MTKView rendering is setting up mtk_view before drawing like so:
- (void)drawInMTKView:(nonnull MTKView *)view {
    mtk_view = view;
    sg_begin_default_pass(&pass_action, m_width, m_height);
    //...

and/or before initialization the first time, so it has something to hold on to, given that the setup is using the callbacks osx_mtk_get_render_pass_descriptor() and osx_mtk_get_drawable() which rely on an assigned MTKView*, if it gets swapped out it seems to be all good...
This is looking good, I'll have a bit more of a play when I get to something more "complex" as right now when I say it works it means that it works by modifying one of the samples, if it works then I'd be happy to send a PR.


ServerConnection :: doInBackground is called twice on app start

ServerConnection :: doInBackground is called twice on app start.
Why?

Seems like it doesn't happen any more


Add support for live properties

@ChristopherChudzicki , I'm porting the examples and realized that there is a second way to call each constructor that we haven't covered. I'm curious what you think is an appropriate API. On the API docs: https://github.com/unconed/mathbox/blob/master/docs/api.md

I can do this now with a ref.
What do you think of accepting this as a :bind property? I guess we need to wire it in here: https://github.com/ChristopherChudzicki/mathbox-react/blob/main/src/components/components.tsx#L62-L68

Here's a demo in Clojurescript where the matrix property of transform4 depends on the projection angle that's being set by the UI...

Interesting. I hadn't realized that set() had a second arg, or really the purpose of bind() until now. Neat.
Do you know what the live boolean properties are for? (9 primitives have it, according to https://github.com/unconed/mathbox/blob/master/docs/primitives.md).
I'm not sure what API mathbox-react should expose for this. Some options I can think of:

Infer from value: <Line color={staticValue} width={liveFunction} /> width would be live, but color would not. I don't think this would work very well, particularly because some property values are allowed to be functions themselves.
prefixes ... <Line color={staticValue} liveWidth={liveFunction} />
a single object ... <Line color={staticValue} liveProperties={{ width: liveFunction, other: otherLiveFunc }}/>. Annoying, since inline objects cause extra re-renders, but can work around that with standard react techniques.
an array of live property names <Line color={staticValue} width={liveFunction} liveProps={["width"]} /> ... Same annoying as (3), but probably also annoying aspects.
No support. Use ref if you want this.

All in all, I think I would lean toward (3): easy type definitions, simple API.
@sritchie What do you think? Thanks for pointing this out, btw!

I think 3 is the way to go; as you say it's nice and clean, and it's simple to mechanically port code over from the non-React examples to this style.
Good stuff!
I am really liking https://github.com/pmndrs/leva, by the way. Not that you have a need for floating controls but it's been solid.

I actually do know what live is for. That is a property on components with an expr in every case, I believe, and toggles whether or not the expr is called a single time (for each point in an area, say) to populate the Area, or continuously.
Here's an example of an animation that uses live to generate those (physics-simulation) arrows in the phase portrait:

I also just realized that bind is only used in this exponential demo to query the state - and your react code handles all of that for us more efficiently!
For cases where the variable updates based on the incoming time or delta variables, this new feature will be excellent.

@sritchie Ah, thanks for that reminder about live. I do recall that now... I guess I had forgotten about it because it defaults to true, I think. I believe liveProps are now working now (in mathbox-react)!

Excellent I'll give it a try.

Or rather, now it should be... initially forgot to publish. Now published!


[1pt] Create basic structure for Missions - Setup

Create a route and a view component. Use <NavLink /> for the page navigation links and style active class to indicate which section/page the user is currently on (underline active navigation link).
Create a directory for all Redux state slice files.

https://github.com/inspecta/react-group-project-1/pull/28


Run Pumba without duration

Sometimes I just want to run it forever.
Currently it return exit 1 with the error messege: "Undefined duration interval".

Currently, the duration is a required parameter. I will consider adding forever option in one of the upcoming releases.
Will gladly accept a PR with this feature too


Dev

I was able to successfully initialize a database using postgres locally and deploy my app to heroku. The issue I am running into is finding out how to post, put, get and delete to the server once it is deployed. I attempted to use thunderclient without luck and used herokus postgres app add-on to automatically establish a DATABASE_URL on heroku but I was still unable to post an object.


Quality Name Distribution & Namespaces

Currently EOSIO prohibits the creation of new account names that are less than 12 characters long and/or contain a ".".  The purpose of this restriction is to discourage name squatting. That said, it is desirable to enable shorter names for usability and because they are a marketable commodity.
It is also desirable for organizations to have the ability to create a "trusted" namespace where everyone can trust an account suffix like ".edu" or ".com".  Shorter suffix enable longer names pre-suffix and therefore have a larger namespace and are more valuable.
The most economically efficient and fair method to allocate shorter names and/or namespaces is to sell the names at market price. To get the most value for the premium names they should not be sold all at once, but over time.
Proposal

Only account name "com" can register new accounts   xyz.com
At most one new "premium name" (those that don't contain a ".") will be sold per day and it will be the name with the highest bid.

Bidding on Names
bidname( account_name bidder, account_name desired, asset bid )
If 'bid' is greater than the highest bidder then bidder becomes the pending winner of the desired name. Each bid must be 10% higher than any existing bid. The existing bidder will receive a refund of their bid when they are outbid.  This encourages parties to bid high enough that they don't get outbid in the first place and discourages parties from going back-and-forth fighting for the name. It also discourages "squatting" on names hoping no one comes along to outbid them.
Every 24 hours the name with the highest bid is closed. Once closed the "winner" can use the newaccount action to register the account. At this point the memory allocated for the bid is released back to the bidder.
Easy options for masses
The vast majority of users will not want to participate in the daily name auctions because it is a slow and highly competitive process. Instead name-registrars will bid on the good names and then create accounts for their users as "sub-names".  Large DAPPs will probably want to reserve their own branded namespace and set their own policy on premium names.
Non-Revokable
Once account xyz.com has been created by .com it cannot be deleted and the owner of xyz.com can potentially transfer control over that account to anyone. If companies wish to retain control over all accounts with ".com" in the suffix then they will need to set the "owner" permission accordingly.
Auction Proceeds
The proceeds from the auction are placed into the system savings account along with other unallocated inflation and RAM trading fees.
FAQ

All names can be bid on at any time, but only the name with the highest bid closes each day.  Order of names being sold will be "most valuable first".

Future worker proposals could allocate the proceeds from the name sales.

12 character limit applies to the full name including the ".suffix"

An interesting proposal for premium namespace auctions. I can see how these sorts of account name resources would be a desirable asset in many use cases 👍
First thought - if the auction window uses static start/end times (e.g. auctions start/end at 0:00 UTC), it's design may encourage "sniping" of the daily auctions. I'm not sure if this is a major concern - but bidders under these conditions may be at a disadvantage if they participate earlier in the auction, as opposed to bidders participating towards the end. Combine this with the partial refund (75%) and this could turn into a frustrating situation.
Potential solutions to discourage "sniping" include:

selecting a secret/random time between X and Y each day that the auction will end, encouraging users to bid early enough to not miss the deadline.
each bid extends the auction window by 30 (or X) minutes, allowing users to counter bid any last-minute bid.
requiring all "new" bids for the day to be placed within the first 23 (or X) hours of the auction, and only allowing previous bidders (who had been outbid that day) to participate in the last hour of each auction.

One additional thought - would it make sense to prefix (as opposed to suffix) these namespaces (aka reverse-DNS style)? Instead of xyz.com, going with com.xyz. I'm not sure if it would have an impact on the indexes within EOS itself, but this is a common practice I've adopted when dealing with actual DNS domain names, primarily for organization, sorting and grouping. They can always be reversed for UX/presentational purposes.

see.

see.

in terms of user experience, people will identify most with the "start of the name" so suffix is more appropriate.
in terms of ending it... I agree that it must be at least 24 hours after last bid.

Items left to do:

[ ] update ABI for eosio_global_state, bidname, and namebids table
[ ] write unit tests to verify accounts cannot be created unless authorized

I see 2 potential issues with this:

Demand for premium names could be much higher than 1 per day, which would artificially increase the price of a premium name.
Last-minute bid wars.

I propose the following to alleviate these potential problems:

Users submit both a current bid and a maximum bid. The maximum bid amount is used to automatically outbid (by X%) anyone who outbids their current bid, similar to how it works on Ebay.
Each day, the top Z% of the names that are bid for are awarded, but not less than 1.

I wonder that who would get the cost of bid？BP? Or this part of tokens will be de destroyed by system？

Good proposal, a few comments...

All names can be bid on at any time, but only the name with the highest bid closes each day. Order of names being sold will be "most valuable first".

If the system sells only one account a day, after year we'll have only 365 premium names. That's not much for an ecosystem like EOS. I'd like to see more names sold.
But on the other hand, it might not be a good idea to sell a lot of names in the beginning. Some tokenholders haven't registered their tokens, so they need to wait until they'll get their tokens to EOS blockchain. And generally people will be just learning how the system works and it takes time. So I propose that premium names are sold one per 24 hours for the first month, and after that there is more supply, for example, one account in every 10 hours.

Future worker proposals could allocate the proceeds from the name sales.

I think we could just burn these proceeds by default. The worker proposal fund will be getting a lot of money if the token price stays at this level or goes higher, so I don't see a need for extra funds. If the token price goes lower and extra funding is needed, this can be changed by the community.

@guaiguaihw as BM mentions, cost of bid goes into system saving account, just like WPF(worker proposal fund).

At most one new "premium name" (those that don't contain a ".") will be sold per day and it will be the name with the highest bid.
It is not enough i think. Every DAPP developer wants a premium name. This limitation stops eosio adopting massive dapps.

Does this proposal cover symbol namespace as well? There's going to be a lot of demand for 3 character tickers. How is this going to work?

SYMBOL names will have to be allocated by the exchange and/or token contract in the future. We are not currently supporting that as part of this proposal.

Should we consider renaming our reserved names/permission levels to be consistent with the suffix approach.
For instance eosio.* is currently a reserved namespace for accounts enforced at a base level.  This was done so that only privileged accounts (chain level administration) could allocate names in this space (eg eosio.token)
However, this is the reverse of the proposed scheme here and ideally we would have consistency such that the token contract would be emplaced @token.eosio, msig @msig.eosio etc.  We should also consider re-renaming the special accounts from #2325 to conform as well.

Hmmm ... could you please clarify @bytemaster - are you saying it will not be possible to create EOS standard tokens with unique tickers at launch?
Currently on private testnet we can create token ABC via the following:
`user@localvm:~/eos$ cleos push action eosio.token create '[ "eosio", "1000000000.0000 ABC", 0, 0, 0]' -p eosio.token
executed transaction: 632985632c04cca957e630c8c174689166177d4849dd0479008148212e419f79  120 bytes  314 us
eosio.token <= eosio.token::create          {"issuer":"eosio","maximum_supply":"1000000000.0000 ABC"}
warning: transaction executed locally, but may not be confirmed by the network yet`
and then attempting to create that same token again results in an exception as the ticker already exists:
user@localvm:~/eos$ cleos push action eosio.token create '[ "eosio", "1000000000.0000 ABC", 0, 0, 0]' -p eosio.token 59247ms thread-0   main.cpp:2444                 main                 ] Failed with error: Assert Exception (10) condition: assertion failed: token with symbol already exists

Hi Dan, Petty typo comment http://tinyurl.com/yd8pyvnu (I can't help it they just jump out at me).
When names are transferred, as per your example xyz.com, can the current owner sell this to the new owner for whatever price they like and using whatever payment mechanism they like, and will they then be the owner of this name until the end of time?
(Unlike current domain registrations which have to be renewed) If so I can see a whole new EOS namespace industry springing up from this.....

Will account names work across multiple eos sidechains, or will each sidechain have own account names?
Same question for token symbol names.

Having .com or other generally known gtlds as namespaces could be potentially confusing between domain names and eos account names e.g. coinbase.com - could a different separator rather than period be used e.g. @ or * = tortoise@com or boatface*com
Also not clear how namespaces would be auctioned or allocated.

Side chains will likely import accounts from the main chain

I recommend either:

reserving certain names for community control:  .eos  .bp  .arb

not implementing this feature until the WP fund is working so that the community has the option to bid on the names it wants.

Do we see this live now?

then what's the final decision about name bid?

See.

Sells only one account a day is too slow for the whole community. I suggest name auction to be take place in different classes every day . like:
Premium class: sells 1 name per day with the highest bidding price
Medium class: sells 10 names per day within the medium price range
Low class: sells 100 names per day within the lowest price range
We are a small Dapps developer that want a low class name only while we can't wait too long to acquire.

This is painful. ENS did it right, the end time for each name should start when it receives its first bid and then can be delayed as long as bidding continues. The fact that I will have to wait weeks to bid for randomjunk because I am waiting for someone to pay tens of thousands of dollars for eos or games is crazy.

only one name perday is weired.

why not just start from 12 characters for the first year combine with the one day per account;
Just like ENS, still cannot register 7 characters for now.

For most people, it seems to be in an auction that will never be finished, and the auction funds will not return, so no one wants to go to the auction for a long time.

Can anyone tell me what time exactly for the first round of bid ends in UTC TIME?  Thanks

from producer_pay.cpp of eosio.system contract onblock:
        if( (timestamp.slot - _gstate.last_name_close.slot) > blocks_per_day ) {
1 day after last name close and hightest bid has not changed in 1 day.

can anyone help me confirm which exact date is the first bidding opening date?  Thank you very much

The human element and time zones is already potentially creating a slow bid problem which could mean literally weeks or months between each name closing as parties bid higher only after they see what other parties bid the night before.
It would be better in my opinion if it would award one name per day that has the highest bid and no bids for 24 hours (so the next name in line with no bids in the last 24 hours). That way there is always one name per day that gets awarded, and names with high bid activity stay in auction but less popular names make their way out sooner and allow app devs to actually have a chance getting a namespace.
This has essentially the same per-name economic impact, as parties willing to pay more can get their name and also get it sooner... but it doesn't cause the entire bidding system to sit in stale-mate for weeks on end.
Let's assume I want the name "zrrbg"  ...  I would have to pay more for zrrbg then someone wants to pay for "eos" or "com" just because those other names keep getting bids and potentially never leave the auction block if two whales keep out-bidding eachother and obviously neither of them want to put more money than is needed and both potentially have no deadlines to deliver a product...
A name which has an actual use case would create incentive to pay a higher bid, but it would also create incentive to apply the bid immediately...   where as someone who is just rich with eos and has no use case and all the time in the world can just tire out all the people who actually need the name some time this year and slowly bid it up once every 24 hours.  You are enabling people who have more money and less actual use cases to be able to frustrate hard working developers with actual products to ship and actual deadlines.   This essentially makes the bidding useless to people who would be MOST LIKELY to actually benefit the community.

@ bytemaster
In seeing how the bidding process has gone and only 2 premium names have sold in two weeks I would suggest a tweak to the system -

Allow the highest price name that has not been bid on in 24 hours to sell.

ie day 1
"NET" is at 90,000 EOS but was bid on 6 hours ago.
"WYSIWYG" is at 85,000 EOS and was last bid 25 hours ago
"JENGA" is at 15 EOS and was last bid 1 hour ago
"DOORMAT" is at 5 EOSand was last bid on 6 days ago.
WYSIWYG sells in round 1
day 2
"NET is at 99,000 EOS and last bid 1 hour ago
"JENGA" is at 17 EOS and last bid on 22 hours ago
"DOORMAT" is at 5 EOS and last bid on 7 days ago
DOORMAT sells in round 2
At least we have a sale per day and at least some of the non uber premium names have a chance to sell early so developers can acquire their proprietary names that no one else really wants like ZUMBLAR.
The other issue is that I have potentially tied up my EOS indefinately by bidding on names in the 5 EOS range since it will take about a million years for them to raise in price or come up for sale. And since the bylaws dont allow me to bid again on the same auction to say 300 EOS on the same name just to hopefully push it through, I'm stuck without those 5 EOS possibly forever, or at least my lifetime. With no ability to raise my bid or cancel it, my EOS are tied up and unusable. If you use the current rate of sale, added to the increase in BPs mining rewards allowing them to gorilla bid indefinately, We will likely only sell 10-15 premium names this year and they will all be owned by BPs and possibly 1 or 2 eccentric billionaires....not really an ideal system.
Just a thought.

Winning bid from starteosiobp, 90,088 EOS for "io" premium name at Thursday, 12 July 2018, 7 days ago!
Has the auction rules been modified?
The only different thing was last winner, geztaobygene account that paid 50,000 EOS for the "one" premium name, claimed the account only yesterday , 18 July 2018.

Yesterday it only shows EOS and COM sold. Today on EOSPark it additionally shows ONE, IO, and CN sold, but on EOSFlare IO and CN are still at auction with highest bid 90,088 and 35,200.00001 respectively...
Something really strange is going on.

Reading this thread I've noticed there used to be a plan of imposing a partial refund on the bids that got outbid.

The existing bidder will receive a <partial?> refund of their bid when they are outbid. This encourages parties to bid high enough that they don't get outbid in the first place and discourages parties from going back-and-forth fighting for the name. It also discourages "squatting" on names hoping no one comes along to outbid them.

I was unable to see the previous versions of @bytemaster's comment, but I think the word partial was later removed, as the following sentences only make sense with it there. Also there is @aaroncox's comment saying:

Combine this with the partial refund (75%) and this could turn into a frustrating situation.

I would like to know why the idea of a partial refund was rolled back. It sounds like a good idea (although I'm not sure about what percentage would make sense), and I'm failing to see good reasons not to do it. Maybe it is actually desirable to have the auction go slowly? Since without disincentivizing the continuous outbidding, the auction's close time would continue to be delayed.
Please shed some light on this, I would like to understand the reasons and thought process.

By the premium name auction rules, gm3denbwguge offer of 25,000 EOS for game premium name should have been set as a winner days ago!
For me, there is a problem with the bids table index, and the -35200.0001 EOS winning bid from f2poolshenyu for cn name is returning first.
So, as long as f2poolshenyu do not claim his premium name, the auction will remain stalled.

@crx-master yes, I noticed the same thing today.

I just submitted a fix in https://github.com/EOSIO/eos/pull/4849.
I hope it will get merged soon so the auctions can continue, as some people must be pretty frustrated with their money locked in there as the top bid for several days.

@andresberrios 15 days or so since last winner... do you know when your patch (or any other) will fix the broken names auction?

@CRX-MASTER
Last I checked the ".ex" extension was bid on consistantly every day for the past 10 or so days. With ".pra" being bid to the top before it, so legitimately I think it had had daily action on the highest bid name.
However, something doesnt smell right. It looks actually like a stall tactic being used to bid ".ex" as the same two bidders keep bidding every 22+ hours back and forth at the 110% min, keeping the auction stagnent. I worked in auction for many years, buyers who really wanted to actually win would immediately bid after being outbid or they would gorilla bid a huge increase to scare off the other bidders. Wearing people down over time is ultimately a way to lose money in buyers premium...something this type of auction doesnt employ (like if you only got back 75% of your bid qhen outbid). Huge flaw in the design. I bet someone is either trying to break the system by creating doubt in its mechanics, or is a BP amassing more tokens over time to then only have to contend with 20 other BPs for all the other names, wiping out all the devs and other potential buyers.


End date shows error state upon first selection of start date (range datepicker)

Describe the bug
When first using a range datepicker with the required attribute, the end date shows an error icon when selecting the start date.
To Reproduce
Steps to reproduce the behavior:

Go to https://www.alaskaair.com/search-test-1235/
The datepicker is automatically populated with the current date. Select a new departing date.
See that the returning datepicker shows an error icon when you select the departing date (before a return date is selected).

Expected behavior
When in the process of selecting a pair of dates, the end date does not show an error until the user unfocuses the datepicker.
Screenshots
https://github.com/AlaskaAirlines/auro-datepicker/assets/43892293/52d73e65-bf8a-4fb8-bc10-8121f3c0db89
Desktop (please complete the following information):

OS: MacOS 13.4.1
Browser: Chrome
Version: 115.0.5790.170

Additional context
Pointed out by Kayla as part of the new Planbook design

Trying to mess around with it locally, and it might be an auro-input issue more than an auro-datepicker one. I'm also not entirely sure if this is expected behavior or not, but Kayla and June have said that erroring on start date input was not intended by design.


Ability to use custom selected color in shift mode

@tplkn is this still a thing on the latest version?

@yombunker I don't use this library, you can close this PR. thx


"Zero-config" proxy option

Testing needed to see if this is viable
Use hosts file on the device or host system instead of having to enter proxy settings:

Get host system IP address
Update hosts file on startup if able to add entry <hostIp> ffrk.denagames.com
Remove hosts file entry on shutdown

This isn't going to work without a lot of effort... need to act more of a web server then a proxy


Is the minimum API 21 or 19?

The "Target Platforms" section says that the minimum OS is 5.0 (API 21), but the "Android" section says: "...the minimum version can be set to API 19 so you can continue to support devices that use Android 4.4 and newer". I have used the latest version of Xamarin.Forms to target a device running 4.4, and it works. Why does the Target Platforms section call out version 5.0 as the minimum?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 443cf095-5281-a757-0005-60dd1c82899c
Version Independent ID: fd91ca24-84ae-04e4-14b5-d6738f8c6527
Content: Xamarin.Forms Requirements - Xamarin
Content Source: docs/get-started/requirements.md
Product: xamarin
Technology: xamarin-forms
GitHub Login: @davidbritch
Microsoft Alias: dabritch

Hi @jfichtner
I'm going to close this issue because it's a duplicate of https://github.com/MicrosoftDocs/xamarin-docs/issues/1969
However, I'm going to follow up on the issue there.


[Datafactory] [Do Not Merge] Add interactive query API for Azure-VNet IR

add interactive query API for Azure-VNet IR
Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

@hvermis  Since there is no movement in this PR for more than a month, I am closing this. When you are ready to merge the changes, please fix the linter errors and reopen the PR. Thanks


Noe/add meta tag max size

Now that the proxy server handles a meta tag max size parameter, add it to the proxy client

Looks good to me. Think you'll need to rebase or merge against main to get the true diff, since I see duplicate commits.

Looks good to me. Think you'll need to rebase or merge against main to get the true diff, since I see duplicate commits.

sorry about that! should be fixed now.

You'll also want to run yarn changeset so that this publishes a new version of the library

@neekolas done


Try weeman with ngrok it looks a lot better

@Franchium Try here

@Franchium No you don't need to just use git clone method.Ex
git clone https://github.com/UndeadSec/SocialFish.git
cd SocialFish
python SocialFish.py
You can run this way as well.


Can't build project - Typescript problem

I added this library in my discord-bot typescript project, but i'm getting so many errors when I'm trying to build it.
Do you know something about it? I think that's some problems with types, but I don't know how to solve it

Add "noImplicitAny": false to compileOptions in tsconfig.json

Add "noImplicitAny": false to compileOptions in tsconfig.json

Maybe do not use any?
it's a library it should be "plug and play", which it is totally not.
it makes the library unusable for me

I totally agree with you, I don't have to change my entire project typescript config to use a single library

Add "noImplicitAny": false to compileOptions in tsconfig.json

Maybe do not use any? it's a library it should be "plug and play", which it is totally not. it makes the library unusable for me

I totally agree with you, I don't have to change my entire project typescript config to use a single library


net/quagga: add a firewall rule for unicast traffic

part of #346
Waiting for feedback of the Ticket author.

@fichtner can I merge this as I don't want a stale PR when switching the backend?

@fichtner now I will adjust the files for FRR

can you make a copy so we can cleanly discontinue quagga plugin?

@fichtner I would prefer making an empty os-quagga package with an os-frr dependency

no just a os-frr people can flip / install on their own
the models stay the same so it's just that maintenance effort of installing the other plugin

(And I believe os-quagga will auto-deinstall if os-frr is used)

We should also think about the conflict of the stale quagga package which conflicts with frr. This is why I plan this change to the end of the release.

see my last comment, I think this works automatically if people install os-frr plugin (because they need to as going to be stated in the release notes)


Drop luajit-openresty unity test runner (?)

It seems extremely flaky. I haven't been able to repro this locally, although I had some trouble getting setup in the first place. This is supposed to be the same as luajit, so I don't think we should maintain a separate, flaky test.

My assumption is that it's a setup or install issue wherever we're building this.


[ADD AZURE REPLICA] DONT APPEARS

@mmgil commented on Sat Jun 22 2019
I'm using SQL Server 2017 and "Add Azure Replica" dont appears in my wizard...

Detalhes do documento
⚠ Não edite esta seção. É necessário para a vinculação do problema do docs.microsoft.com ➟ GitHub.

ID: 0e8e9cf2-a018-4898-cee7-0943804bb4fa
Version Independent ID: 571a7f39-3274-7ba3-dfc6-89f0d50ccef5
Content: Estender Grupos de Disponibilidade AlwaysOn locais para o Azure
Content Source: articles/virtual-machines/windows/sqlclassic/virtual-machines-windows-classic-sql-onprem-availability.md
Service: virtual-machines-sql
GitHub Login: @MikeRayMSFT
Microsoft Alias: mikeray

Hi team,
the user reports the tutorial may not be updated
best

Thanks for the feedback! We are currently investigating and will update you shortly.

@mmgil we mention in a note that the Add Replica Wizard only works when using Classic Virtual Machines.

Are you using classic VMs or ARM? If using ARM, this is expected.

@mmgil I will close this for now. If you are still having issues just let me know and we can reopen and continue the conversations.


TP-92 Create a new foonote

Summary
Allow the user to create footnotes

Yeah I thought it would be more so to do with get_descriptions() not picking up the draft descriptions currently


How to parse query columns in tracker insert

Hello, I'm wondering how you can parse the field names (columns) for an insert? Here is roughly what I'm trying to accomplish:
let usersDb = [];

describe('user', () => {
  before(() => {
    tracker.install();

    tracker.on('query', query => {
      let actions = {
        select: () => query.response(usersDb),
        insert: () => {
          usersDb.push(query.bindings);
          query.response(1);
        },
        update: () => {
          usersDb[0] = query.bindings;
          query.response(1);
        }
      };

      actions[query.method]();

      console.log('FULL USERS DB', query);
    });
  });

  // ...tests here...
});

Here's my console.log'd query object with random data:
{ method: 'insert',
  options: {},
  bindings:
   [ Wed Mar 23 2016 16:36:37 GMT-0400 (EDT),
<EMAIL_ADDRESS>     '42aac085-a447-457d-8a96-012da279e84b',
     '$2a$10$FEDcFA4RzzsDU/F/4pHK.Oll4qBlnilK.4YpUlhY08at86j0sL3ze',
     Wed Mar 23 2016 16:36:37 GMT-0400 (EDT),
     'mi24woj19h' ],
  sql: 'insert into "users" ("created_at", "email", "id", "password", "updated_at", "username") values (?, ?, ?, ?, ?, ?) returning "id"',
  returning: 'id',
  response: [Function: response],
  result: [] }

As I understand it, bindings is an array and query.response expects an array of objects with keys being the column name. Is there an easier way to get the inserted column names other than manually parsing query.sql?
What I'm building is a full-loop integration test that creates a user, logs in with the user and deletes the user, so it'd be nice for the mock to maintain some state to simulate a real database.

I ended up writing a helper function to parse the SQL and extracted the columns. It feels weird doing manual SQL parsing when I have knex as my disposal but I'm not sure how to get knex to tell me the columns. Below is my code. Feel free to close this issue if this doesn't solve a problem for someone else.
let usersDb = [];
const insertRegex = /insert into "(.*?)" \((.*?)\)/;
const updateRegex = /update "(.*?)" set (.*?) where/;

function queryToObj(regex, query) {
  let fields = query.sql
    .match(regex)[2]
    .replace(/ = \?/g, '')
    .split(', ')
    .map(field => field.slice(1, -1));

  let obj = {};
  fields.forEach((field, index) => {
    obj[field] = query.bindings[index];
  });
  return obj;
}

describe('user', () => {
  before(() => {
    tracker.install();

    tracker.on('query', query => {
      let actions = {
        select: () => query.response(usersDb),
        insert: () => {
          usersDb.push(queryToObj(insertRegex, query));
          query.response(1);
        },
        update: () => {
          usersDb[0] = queryToObj(updateRegex, query);
          query.response(1);
        },
        del: () => {
          usersDb = [];
          query.response(1);
        }
      };

      actions[query.method]();
    });
  });
});

I wonder if @colonyamerican has any thoughts on this. Your current solution might break if Knex (for whatever reason) changed slightly the way their SQL is rendered from the QueryBuilder (change spacing, case etc).
I'd like to run a simple test to ensure that my "findUserByEmail" function invokes Knex in such a way that the resulting SQL is to select from the users table, where email is equal to some value. With mock-knex at the moment, all I can reasonably do is check that it was a select method and control the response.

@gausie you could use something similar to https://github.com/forward/sql-parser to parse your queries


Live sample doesn't show anything

So I'm trying the following and the computer says no:

    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">

open Fable.Core
open Fable.Core.JsInterop
open Fable.Import.Browser

let g = System.Guid.NewGuid().ToString("N")
let p = document.documentElement.querySelector("p")
printfn "%A" p
p.textContent <- g

window.addEventListener_load (fun _ ->
    let g = System.Guid.NewGuid().ToString("N")
    let p = document.documentElement.querySelector("p")
    printfn "%A" p
    p.textContent <- g
    box ()
)

I'm not sure if I need the load event, I'm seeing nothing in both cases.
Some console logs:
Cannot find type System.ArgIterator
bundle.min.js:1 Cannot find type System.Runtime.CompilerServices.IDispatchConstantAttribute
bundle.min.js:1 Cannot find type System.ArgIterator
bundle.min.js:1 Cannot find type System.Runtime.CompilerServices.IDispatchConstantAttribute

I guess so, though I'm not sure what the argument is exactly doing. Maybe you could send a PR?

Hmm I suppose
export function newGuid(){
  let b = ''
  for(
    let a = 0;
    a++ < 36;
    b += a * 51 & 52
      ? (a^15 ? 8^Math.random() * (a^20 ? 16 : 4) : 4).toString(16)
      : '-'
  );
  return b;
}

should return an Object with a toString function to format the guid.
Might be more than meets the eye. I guess all of the Guid functionality should be added an not just let newGuid return a string.
Where should that code end up? Should it be F# and then compiled by Fable? I'm always a bit confused what is transpiled F# and what isn't when looking at Fable.Core.

Hmm, it's a bit complicated. There are a few types that are converted to a different thing in JS (e.g. TimeSpan becomes a number), you can see them in the compatibility doc. In the case of Guid it was a quick patch at the beginning, but it worked well and proved other benefits (e.g. you can easily use it as Id in custom react components) so I kept it as is. The problem with making it an object is it's difficult to port all the features from .NET, like being a value type, or conversion to/from a byte array. But we could try something if formatting is important for you.

Well to be honest I'm not sure if it is worth the effort. Writing a helper function that formats the ToString() of the guid to the shape I need could also do the trick.
let toStringN (guid:Guid) =
    Guid.NewGuid().ToString().Replace("-", String.Empty)

Guid.NewGuid()
|> toStringN
|> printfn "%s"

Maybe it's enough to have a better error message when using ToString("N")
ERROR in ./src/App.fs
C:/Temp/SimpleFable/src/App.fs(8,0): (8,28) error FABLE: Cannot find replacement for System.Guid::ToString
 @ ./src/SimpleFable.fsproj 1:0-25
 @ multi (webpack)-dev-server/client?http://localhost:8080 ./src/SimpleFable.fsproj
webpack: Failed to compile.

This is somewhat confusing since ToString() without args does work.


Consider adding proxy-header support

Since Domino 12.x regresses on proxy-header support, it may make sense to add it into the Jakarta servlet wrappers, based on either in-app or server configuration for trusted proxies.

The removal of this from Domino is now tracked as a defect, so it's likely that it will eventually be unnecessary to have such a workaround.


Enhance Marker Holding query to fully utilize the pagination fields.

Summary
The Marker module's QueryHoldingRequest message contains a cosmos.base.query.v1beta1.PageRequest message, but the module's query_server Holding method does not use the query.Paginate or query.FilteredPaginate methods. So not all pagination functionality is available on that query, e.g. pagination using a next_key and key.
Problem Definition
Most of the other paginated queries have full pagination support, so not having it here can cause confusion and frustration. Additionally, there's no way to know how many results there are without getting all of them.
Proposal
Refactor the Marker module's Holding query to use either the query.Paginate or query.FilteredPaginate function in order to enable full pagination support.

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate contributors tagged
[ ] Contributor assigned/self-assigned

These issues are all similar:

#400
#401
#402


Add VGG16 with basic image preprocessing

Can we make the implementation general for the VGG family?
What I mean is VGG16 is quite a specific model and others like VGG11(+BN), VGG19(+BN) etc can also be supported with minimal effort.

Just a reminder for later stages, missing test cases to verify that forward pass is going through with and without jit.

Unfortunately, at the moment I don't have much time to think about how one could make it general for other VGG's. But after this PR someone with more time can take over that task. Moreover, I think that independent code bases between VGG16 or VGG19 might be better, rather than abstracting some small generalizations. For example VGG16 and VGG19 model implementations in Keras are independent of each other, and this makes it easy and simple to read and understand. What do you think?

The issue I raised this is because existing model architectures in eqxvision support model_* variations and just supporting VGG16 for VGG will break the consistency for the rest. Plus, having multiple classes declared (with/wo BatchNorm) also increases duplicacy of the code.
Don't worry about the time I can take it over from here for this else if you still wish to push for it then you are more than welcome!

@oarriaga Sorry, just wanted to confirm, should I close the merge? I can bundle in VGG with test case revamp I was doing.

Ah OK I was thinking that you could accept the PR and continue developing with another PR or just commits to master.

Sorry for the confusion.


Implement loading of UFO files from server

If necessary, implement lazy loading of parts of the project.
Depends #144

Make the following info available on server:

list of all glyphs
family name, copyright and other interesting props from fontinfo.plist
glif file of 1..n glyphs, if glif doesn't exist return null, also support loading all glifs at once
raw kerning, features.fea and group info

Ideally make the queries combinable, as in: I can request both glif files of A to C and the family name/fontinfo
Client Side will be implemented via #145


Allow light groups to be used for fixed mode

This is already possible because light groups are also from the light domain and fully works.


Official support for projdata.txt

@tobiasksu I believe you have the code for this mod, please PR it in :)
One extra request is to make sure that if projdata.txt is ACTIVE, it shows up IN THE LOBBY.

Fixed by #100.


Hash implementations don't implement hash.Hash interface

The way that the hash functions are implemented - containing the hash.Hash instance, and the constructor, doesn't allow for them to be used in place of standard hash.Hash implementations.
I.e. if a program is designed to have swappable hash implementations, they will commonly take as a parameter of type (hashFunc func() hash.Hash)
However, since the objects return their own types - Hash32, Hash64 or Hash128, the New functions do not have a matching signature, and cannot be easily used in place of the other hash functions.

Objects do not return their own types but stdlib's hash.Hash32 and hash.Hash64 (unless you're referring to Hash128 for which there’s no stdlib equivalent).
hash.Hash is a subset of those more specialized hash.Hash32 and hash.Hash64 interfaces.
Producers would indeed process data through hash.Hash, while some endpoints might prefer e.g hash.Hash64.
All stdlib's hash constructors use the same approach (e.g Adler, FNV). Is there any specific usage you’re still having issues with?


Missing commas

Missing commas prevent button.success and button.info font color turning white.
.btn.info .btn.info:hover must be .btn.info, .btn.info:hover

I added a fix for a bug in firefox preventing the gradient to be rendered properly

Yes, this should be merged, @jlong I'll go ahead and merge if that's good with you.


[package_info] Upgrade to 1.12 Flutter and cleanup.

Description
An earlier v2 embedding was already performed. This cleans up some loose ends.
Related Issues
https://github.com/flutter/flutter/issues/47153
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[ ] All existing and new tests are passing.
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[x] I updated CHANGELOG.md to add a description of the change.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

great, thanks! LGTM

I just sent you an invite for the flutter.dev publisher. Now that it's checked in, you need to pub publish it from the directory to push it onto pub.
cc @amirh

Note that post-submits are red, make sure it's green before publishing.
https://cirrus-ci.com/github/flutter/plugins/master

Seems to be flakes. Reran and passed. Feel free to publish.

@cyanglaz please file issue for the flakes you've seen

done https://github.com/flutter/flutter/issues/52567


Do not fallback to using equals on Java serialized values

for up-to-date checks. Gradle will now compare the serialized values only to check whether a task is up-to-date.
Fixes #17324

@bot-gradle test and merge

OK, I've already triggered a build for you.


Bug - nested component index problem

There is a problem (in the case of components) that you have to write the Dialog in the file and not DialogIndex because when we want to load the Index Dialog we should not write DialogIndex because it creates an error.
This method is wrong.

The following method is correct.

Got it - thanks for reporting - PR's are very welcome!

The same problem


Kerberos username [XXX]: Kerberos password for [XXX]: waiting for enter twice, otherwise spark will be waiting util timeout then failed.

Kerberos username [XXX]: Kerberos password for [XXX]: waiting for enter twice, otherwise spark will be waiting until timeout then failed.
Add parameter into session with no use.
RootCause:
sftp server installed kerberos.

RootCause:
remote sftp server installed kerberos.


Added ability to use plugin with arbitrary number of arguments

Without this small change it is not possible to pass an arbitrary number of arguments to plugins.
On the markdown-it npm page you can see that this is allowed:
var md = require('markdown-it')()
            .use(plugin1)
            .use(plugin2, opts, ...) // <-- arbitrary number of arguments
            .use(plugin3);

I would like to use this feature with the plugin markdown-it-inline which takes an arbitrary number of arguments.
I also modified the version number in package.json for you if you choose to update the npm module.

Good idea, thanks very much for your work! I'll see about getting it published as soon as I can.

This is now published in npm as 1.0.3. Thanks again!

Thank you! And no problem!


[Live component] Invalid cheksum exception with own hydrating methods after upgrade from 2.10 to 2.11

I have got a Live Component which contains a LiveProp defined as array of DTO with custom hydrateWith and dehydrateWith methods.
/** @var CourseMeetingResponse[] $courseMeetings */
#[LiveProp(writable: true, hydrateWith: 'hydrateCourseMeetings', dehydrateWith: 'dehydrateCourseMeetings')]

In 2.10.* everything works fine, but after upgrading to 2.11* or 2.12.* or 2.13.* I started to receive a Hydration exception Invalid checksum sent when updating the live component.
I saw that in 2.11 you have changed the checksum calculation. However before it works fine for me and now the new calculation causes exception. I didn't find any BC in changelog or any information about action which is required after upgrading to newer versions.
What should be done to avoid such behaviour?

It's a bit old for me to remember but one thing that could be related is we removed the hard dependency on symfony/serializer ... it is possible you don't have it anymore and this prevent something during hydration ?

@smnandre I was referring directly to that changes: Fix checksum calculation for deeply nested data.
I found that commit. I upgrade to 2.13 (with reinstalling js files) and revert back change made by that commit. So using again ksort fixed my problem.

Could you give us a (simplified) set of data to understand the duffzrence for you ? And see if and how we can find a fix ?

First array is sorted by ksort and everything works fine. Second array is sorted by new method and breaks a checksum calculation.  As you can see the order of associative keys in sub-arrays has changed.

Below is a json data request to my component.
"{"props":{"title":"Dostępne terminy","courseMeetings":[{"id":7199,"variantCode":"symbol_243188","realizationDate":{"date":"2024-05-10 10:00:00.000000","timezone_type":3,"timezone":"UTC"},"placeName":"szkolenie online","earlyClubMembershipPrice":85000,"clubMembershipPrice":90000,"earlyNonClubMembershipPrice":90000,"nonClubMembershipPrice":100000,"consultantId":1388},{"id":7200,"variantCode":"symbol_243195","realizationDate":{"date":"2024-05-19 00:00:00.000000","timezone_type":3,"timezone":"UTC"},"placeName":"szkolenie online","earlyClubMembershipPrice":85000,"clubMembershipPrice":90000,"earlyNonClubMembershipPrice":90000,"nonClubMembershipPrice":100000,"consultantId":1388},{"id":7201,"variantCode":"symbol_243196","realizationDate":{"date":"2024-05-22 12:00:00.000000","timezone_type":3,"timezone":"UTC"},"placeName":"Gdańsk","earlyClubMembershipPrice":85000,"clubMembershipPrice":90000,"earlyNonClubMembershipPrice":90000,"nonClubMembershipPrice":100000,"consultantId":1350},{"id":7202,"variantCode":"symbol_243197","realizationDate":{"date":"2024-05-29 17:20:00.000000","timezone_type":3,"timezone":"UTC"},"placeName":"Sopot","earlyClubMembershipPrice":85000,"clubMembershipPrice":90000,"earlyNonClubMembershipPrice":90000,"nonClubMembershipPrice":100000,"consultantId":1388},{"id":7203,"variantCode":"symbol_243206","realizationDate":{"date":"2024-06-05 12:00:00.000000","timezone_type":3,"timezone":"UTC"},"placeName":"szkolenie online","earlyClubMembershipPrice":85000,"clubMembershipPrice":90000,"earlyNonClubMembershipPrice":90000,"nonClubMembershipPrice":100000,"consultantId":1412}],"itemsErrors":[],"formName":"add_to_cart","add_to_cart":{"courseMeeting":"symbol_243188","addToCartSubmit":null},"isValidated":false,"validatedFields":[],"@attributes":{"data-live-id":"live-962431554-0"},"@checksum":"Xo5RMRMvZz4DMff3vSPadkxqC32GnD5nDTStuTVSiGg="},"updated":{"add_to_cart.courseMeeting":"symbol_243206","validatedFields":["add_to_cart.courseMeeting"]}}"

Is it possible that something wasn't updated on a JS part?

That should not have impact, as those POST data are also recursively sorted before computing and comparing checksum.
Just a inch with no certitude at all: could you try without the field "realizationDate" ?

Hey @sabat24! Could you create a basic reproducer? So we can look at your issue, I didn't manage to reproduce it locally. Thanks for the report!

Just a inch with no certitude at all: could you try without the field "realizationDate" ?

@smnandre You were right. It seems that this field causes problem since 2.11. When I removed it from my component, checksum exception disappeared. I will dig into it.

Ok good to know and tell us if you cannot sort this out.
by curiosity what was the différence between both array representations ?

In 2.11 when component was mounted and dehydrate method called the calculateChecksum method my realizationDate field was a DateTime object.

Then after liveAction was triggered the verifyChecksum method was called and my realizationDate field was an array.

In 2.10 when component was mounted the behaviour was same as above. But when live action was triggered the dump method in calculateChecksum was called twice.

On the first call from verifyChecksum method my realizationDate was represented as an array. But on the second call from dehydrate method my realizationDate was a DateTime object.
@WebMamba I can try to create a reproducer in a few days.

I created repo to reproduce the issue -> https://github.com/sabat24/symfony-ux-2000
After installing just go to home page and select radio button.

Some things, not sure if one particular solves all
        $courseMeetings = [];
        foreach ($data as $courseMeeting) {
            /** @var array{id: int, variantCode: string, realizationDate: array{date: string}, placeName: string, earlyClubMembershipPrice: string|null, clubMembershipPrice: string|null, earlyNonClubMembershipPrice: string|null, nonClubMembershipPrice: string|null, consultantId: int|null} $courseMeetingArray */
            $courseMeetingArray = (array) $courseMeeting;
            $courseMeetings[] = $courseMeetingArray;
        }

This is false, (array) $courseMeeting does not transform realizationDate into an array, it's still a DateTime (you can dd($courseMeetingArray) to check)
--
Your mock data uses strings for date, not your hydrate/dehydrate methods after that
"realizationDate":"2024-07-26 00:00:00"

--
I updated twig & live packages (in 2.18) and installed Serializer (not required since 2.something) ..
Then i removed your hydrate/dehydrate and things seems to "work".
Maybe start doing the same and see where it goes for you ?

I think that I know where the "problem" was.
In short in my dehydration method as you mentioned.

Mock is a data provider which sends $realizationDate = "2024-07-26 00:00:00".
SF serializer converts string into DateTime object.
LiveComponent calculates checksum based on DateTime object.
LiveComponent saves this DateTime object internally in props as an array "realizationDate":{"date":"2024-07-18 00:00:00.000000","timezone_type":3,"timezone":"UTC"}
When model changes and LiveAction calls cheksum verification an array (from point 4) is send to calculate checksum.

Here the checksum exception is raised.

If checksum is valid LiveComponent tries to hydrate back the array into object and then my hydrate method converts an array realizationDate into DateTime object.

If i modyfi my dehydration method to
$courseMeetings = [];
        foreach ($data as $courseMeeting) {
            /** @var array{id: int, variantCode: string, realizationDate: array{date: string}, placeName: string, earlyClubMembershipPrice: string|null, clubMembershipPrice: string|null, earlyNonClubMembershipPrice: string|null, nonClubMembershipPrice: string|null, consultantId: int|null} $courseMeetingArray */
            $courseMeetingArray = (array) $courseMeeting;
            $courseMeetingArray['realizationDate'] = (array) $courseMeetingArray['realizationDate']; // <-- added
            $courseMeetings[] = $courseMeetingArray;
        }

everything works fine.
I was sure that LiveComponent calculates checksum based on props from point 4 and not from point 3.

everything works fine.

Really happy for you!  😃

I'm running into the same error after implementing my own hydration / dehydration logic, and it's not entirely clear what I'm doing wrong / how it should be fixed (and the docs don't mention anything about checksums)

Could you open a support question, and ideally provide some code to better understand what is happeing ?

I fixed the problem by not storing entities in the live component, but only their ids (then retrieving the corresponding entities with their repositories).
I went from this :
public function dehydrate(MyObject $object): array
{
    return [
        'related' => $myObject->getRelated()
   ];
}

public function hydrate(array $data): MyObject
{
    $object = new MyObject();

    $object->setRelated($data['related']);

    return $object;
}

To this :
public function dehydrate(MyObject $object): array
{
    return [
        'related' => $myObject->getRelated()->getId()
   ];
}

public function hydrate(array $data): MyObject
{
    $object = new MyObject();

    $related = $this->relatedRepository->find($data['related']);

    $object->setRelated($related);

    return $object;
}


Decode also err output of external tool subprocess

Byte values for err channel should be decoded as well, see 0a5824508
cc @aweisberg

+1 in for a penny in for a pound.
So who is going to update the dtests instances where we decode?

Is this safe to merge or do you want me to wait for some corresponding dtest changes?

it's not safe, but a lot of these instances are already broken on decoding stdout anyways.
So... umm... sure merge it?


spirv-opt -Oconfig does not support comment lines properly

Given a configuration input file:
$ cat opt.cfg
# This is a comment
--eliminate-local-multi-store
--ccp
$ spirv-opt -Oconfig=opt.cfg for.frag.spv
error: More than one input file specified
The comment line is being parsed as additional input files, instead of being ignored.

I don't think that anyone uses the config file. Most spirv-opt users are using it as a library, so I don't think there is value in improve the feature. Closing this issue.


Enqueue new block is lag behind

Feature description
Flowjuno cannot keep up with the latest block. It lags behind for one day

Duplicated


Adding Bizible mixins for B2B Account/Person/Opportunity

Please link to the issue #…

reviewed and accepted.


Add [your name] Markdown

Project Request

Proejct Request to Add [your name] markdown file and route

Field
Description

Name
Amogh E M

Email
<EMAIL_ADDRESS>

Github
typicallhavok

https://github.com/typicallhavok
What do you what to contribute to:

[x] HackFest GDSC Contributor
[x] Hacktober Fest Contributor

please add your name in the issue title


Issuse with ->FetchMethods(&methods);

What is the game you are using with IL2CPP Resolver?

Details:
std::vectorUnity::il2cppMethodInfo* methods;
component->FetchMethods(&methods);
for (int k = 0; k < methods.size(); k++) {
auto method = methods[k];
fprintf(file, "\t\t\tMethod - %s\n", method->m_pName);
}
got these:
Method - H嬃I嬋H嗵烫烫烫I婣L嬄I婹L嬔I?M婭L塂$(??D?
Method - H冹8I嬂L嬌L嬄H峀$ H嬓A袶婰$? Method - H冹8I?M嬝L嬔L嬄H峊$ I嬎? Method - H冹8I嬂L嬌L嬄H峀$ H嬓A袶婰$?
Then I tryed ->FetchFields(&vect); It is OK
Field - _lastFrameTime
Field - JUDGE_DEBUG_TIME
Screenshots/Video:
No response
Minimal, Complete and Verifiable Example code:
No response

use il2cppdumper and generate dump.cs, and check dump.cs. everything in alternate way is use offset.
https://github.com/Perfare/Il2CppDumper


ITMS-90809: Deprecated API Usage (UIWebView)

@segiddins can you please take a look at this. this is very important.

All this PR is doing is changing a comment, I don’t think it’s addressing the underlying API usage that iTunes Connect is complaining about

@segiddins I know its weird but for a lot of people apps are being rejected due to this library, and the only reference to UIWebView is in the comments so I'm assuming Apple is looking at the source of this library and searching for UIWebView.
Do you mind to do that release so we can test if this is the issue?

Has someone submitted with this patch applied and confirmed it fixes the issue?

@segiddins I just submitted to Testflight pointing to the svetlanama:issue-810 branch and it worked.

@segiddins I just submitted to Testflight pointing to the svetlanama:issue-810 branch and it worked.

It helped to me also
I use grep to check all things before uploading to AppStore
cd app
grep -r "UIWebView" .
./Pods/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.h: to emulate the link detection behaviour of UIWebView.

After applying changes  svetlanama:issue-810  it was gone.
The processing of the build was completed successful without issues.

@segiddins when you plan to release this?

Same question as jzeferino, when do you plan do release this, because all of the apps that are using "TTTAttributedLabel" should use this fix, if they want to release their app in the AppStore?

Hi again, sorry for the spam, but we still need to know if you are planing to release this or not, as it is now mandatory for any project that use "TTTAttributedLabel", to use svetlanama's fix


fix: prevent overwriting i18n.json for unsupported locales

Fixes: #198
This PR modifies the CLI to prevent overwriting i18n.json with a default template when an unsupported locale is provided. Instead of allowing the file to be overwritten, the CLI now checks for unsupported locales and throws a clear error message if one is detected.

Hi @Nithishvb – good attempt!
However, resave must remain true here: we have a mechanism, that automatically migrates config file to the next version when there's such, whenever i18n command is being run.
Here's more info: https://github.com/replexica/replexica/blob/main/packages/spec/src/config.ts
I think the issue might be somewhere in extendConfigDefinition function, but that's just a guess.
Also, would be awesome to have a super tiny vitest test, to make sure the fix actually works!

Hi @maxprilutskiy ,
Thanks for the feedback! I'll look into the extendConfigDefinition function and ensure resave remains true. I'll also add a vitest test to verify the fix. Let me give it another go!

Hi @maxprilutskiy
I’ve made the requested changes!

Resave remains true as per the migration mechanism, which automatically updates the config file to the next version whenever the i18n command runs.
Also, I’ve added a tiny vitest test to ensure the fix works correctly, covering the unsupported locale scenario.

hey @maxprilutskiy
I've completed the requested changes and pushed them to GitHub. Looking forward to your review and merging the PR soon!


change top margin to 1rem

change 2rem to 1rem
Should this be a breaking change? I am thinking yes as it will mess up forms in other consumers

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


GeneralizedDivisiveNormalization layer

closes #85
Prerequisites

[x] #96

@0x00b1 could you rebase to #96 or rebase after merge?

@mmuckley rebased!


Allow opening files from lazy git as nvim buffer (not inside floating terminal)

Is your feature request related to a problem? Please describe.
When using lazygit, it would be nice to be able to edit the current file inside neovim using nvr similar to how you can use nvr to open the commit buffer in the current neovim session rather than an embedded terminal.
I have nvr setup as specified in the README and I've set my open command to nvim {{filename}} but this still opens the file I've selected in lazygit inside the embedded terminal

Describe the solution you'd like
When I select a file in lazygit and hit e it should open the file as a buffer in my nvim session not within the floating window.
NOTE: I've tried explicitly setting my open command to nvr {{filename}} but lazygit seems to be executing nvim afile.ext regardless

Additional context
nvr seems to be setup correctly as committing correctly opens the buffer in the nvim session not in the terminal. It just doesn't behave the same way for files.

Interesting. I've never tried that. I'll look into it. I suspect it has to do with this:
https://github.com/kdheepak/lazygit.nvim/blob/52689d49bcdc981a2b9053f4c291ebc9c5fa9927/README.md#L85
You might need to add:
if has('nvim') && executable('nvr')
  let $EDITOR = "nvr -cc split --remote-wait +'set bufhidden=wipe'"
endif

as well, and experiment with the options.

Gave the $EDITOR suggestion above a try but doesn't seem to work still

It seems like by default lazygit uses core.editor from your gitconfig.
https://github.com/jesseduffield/lazygit/blob/23299f88e9c5da84902cc872772333c4ab755946/pkg/commands/os.go#L235
However, I tried changing that on my point to use nvr and wasn't able to get it to work. I'm still looking into it. I also tried setting the EDITOR and VISUAL environment variable before calling lazygit but no luck. I'm not sure if it is something to do with my machine though.
I think even if we are able to get lazygit to open the file using nvr, we will have to restore the instance of the floating window where lazygit is running. Currently when opening the commit editor, this is done using gitcommit.vim but that won't work for this case. So there are some additional changes that I'll have to make to the package for this to work, if I can figure out how to trigger nvr.
Surprisingly, if I open a terminal in the separate pane in neovim, and open lazygit there and try to edit a file, it tries to open the file using nvr. So it is possible to do, we just have to figure out the right combination of EDITOR / VISUAL environment variables I think.

Thanks for looking into it, wasn't sure if it was just my setup and other people were able to do it. It's weird that manually opening a terminal split with lazy git 🤔.

Submitted a pull request for lazygit https://github.com/jesseduffield/lazygit/pull/1324. This will allow use to set EditCommand = nvr ... in the lazygit config file. If you want to use it, you can build from source, or just wait until the change is released in your package repository.

Awesome!

I think I can close this out and just wait on your PR then @caojoshua 👍🏾

@kdheepak Your comment here is useful in my seemingly cryptic error: https://github.com/kdheepak/lazygit.nvim/issues/22#issuecomment-671136199
I have this error when editing a file from lazygit floating term (i.e. by pressing e)
Error detected while processing function <SNR>14_LoadRemotePlugins[1]..<SNR>14_GetManifest[1]..<SNR>
14_GetManifestPath:
line    7:
E117: Unknown function: stdpath
Press ENTER or type command to continue

which is similar to here:
https://github.com/neovim/neovim/issues/9960
and I didn't understand why it triggers vi/vim. But in the logic above, it checks the

$GIT_EDITOR
$VISUAL
$EDITOR
and the default is vi/vim if it's not set!

So, fixed the issue by setting those envvars in my ~/.zshrc. Thanks for the idea. :)

Glad that worked!

Is this now possible? This would be incredible! Desperately looking for this feature 😊

Is there any way to close the lazygit buffer and open the file in the current windows?

so I know lazyvim doesn't even use this plugin but I came across this this issue when searching for how to do this so thought I'd share my results.
I got this to work using some lazyvim utils but those dependencies could probably be switched to whatever this plugin uses. my keymaps overwrite the lazyvim defaults of <leader>gg to open lazygit and e within lazygit to open a file by copying the path, closing lazygit, then opening the file in a new buffer in the original window. I figured a simple sequence of commands like this would be much easier to set up than something like nvr.
local Util = require("lazyvim.util")

function LazygitEdit(original_buffer)
  -- git current terminal channel
  local bufnr = vim.fn.bufnr("%")
  local channel_id = vim.fn.getbufvar(bufnr, "terminal_job_id")

  if channel_id == nil then
    print("No terminal job ID found.")
    return
  end

  -- Use <c-o> to copy the relative file path to the system clipboard in Lazygit
  vim.fn.chansend(channel_id, "\15") -- \15 is <c-o>
  -- Give some time for the copy operation to complete
  vim.cmd("sleep 200m")

  -- Close Lazygit
  vim.cmd("close")

  -- Get the copied relative file path from the system clipboard
  local rel_filepath = vim.fn.getreg("+")

  -- Combine with the current working directory to get the full path
  local cwd = Util.get_root()
  local abs_filepath = cwd .. "/" .. rel_filepath

  print("Opening " .. abs_filepath)

  -- focus on the original window
  local winid = vim.fn.bufwinid(original_buffer)
  if winid ~= -1 then
    vim.fn.win_gotoid(winid)
  else
    print("Could not find the original window")
    return
  end

  -- Open the file in a new buffer
  vim.cmd("e " .. abs_filepath)
end

-- Start Lazygit
function StartLazygit()
  local current_buffer = vim.api.nvim_get_current_buf()
  local float_term = Util.float_term({ "lazygit" }, { cwd = Util.get_root(), esc_esc = false, ctrl_hjkl = false })
  local created_buffer = float_term.buf
  -- set the custom keymap for "e" within it
  vim.api.nvim_buf_set_keymap(created_buffer, "t", "e", string.format([[<Cmd>lua LazygitEdit(%d)<CR>]], current_buffer), { noremap = true, silent = true })
end

vim.api.nvim_set_keymap("n", "<leader>gg", [[<Cmd>lua StartLazygit()<CR>]], { noremap = true, silent = true, desc={ "Lazygit (root dir)" } })

Thank you, @cosmicbuffalo! Your script worked pretty good, but the absolute file path didn't always resolve correctly for me. The solution was to use the relative path instead. I also found that the 200ms delay was not needed, so I added a retry mechanism with retries instead. The made it alot snappier for me. I also changed the default keybinding from  to , which makes more sense to me, and slightly improved the error handling and logging.
local Util = require("lazyvim.util")

-- Function to check clipboard with retries
local function getRelativeFilepath(retries, delay)
  local relative_filepath
  for i = 1, retries do
    relative_filepath = vim.fn.getreg("+")
    if relative_filepath ~= "" then
      return relative_filepath -- Return filepath if clipboard is not empty
    end
    vim.loop.sleep(delay) -- Wait for 200ms before retrying
  end
  return nil -- Return nil if clipboard is still empty after retries
end

-- Function to handle editing from Lazygit
function LazygitEdit(original_buffer)
  local current_bufnr = vim.fn.bufnr("%")
  local channel_id = vim.fn.getbufvar(current_bufnr, "terminal_job_id")

  if not channel_id then
    vim.notify("No terminal job ID found.", vim.log.levels.ERROR)
    return
  end

  vim.fn.chansend(channel_id, "\15") -- \15 is <c-o>
  vim.cmd("close") -- Close Lazygit

  local relative_filepath = getRelativeFilepath(5, 50)
  if not relative_filepath then
    vim.notify("Clipboard is empty or invalid.", vim.log.levels.ERROR)
    return
  end

  local winid = vim.fn.bufwinid(original_buffer)

  if winid == -1 then
    vim.notify("Could not find the original window.", vim.log.levels.ERROR)
    return
  end

  vim.fn.win_gotoid(winid)
  vim.cmd("e " .. relative_filepath)
end

-- Function to start Lazygit in a floating terminal
function StartLazygit()
  local current_buffer = vim.api.nvim_get_current_buf()
  local float_term = Util.terminal.open({ "lazygit" }, { cwd = Util.root(), esc_esc = false, ctrl_hjkl = false })

  vim.api.nvim_buf_set_keymap(
    float_term.buf,
    "t",
    "<c-e>",
    string.format([[<Cmd>lua LazygitEdit(%d)<CR>]], current_buffer),
    { noremap = true, silent = true }
  )
end

vim.api.nvim_set_keymap("n", "<leader>gg", [[<Cmd>lua StartLazygit()<CR>]], { noremap = true, silent = true })

Submitted a pull request for lazygit jesseduffield/lazygit#1324. This will allow use to set EditCommand = nvr ... in the lazygit config file. If you want to use it, you can build from source, or just wait until the change is released in your package repository.

This worked for me! Below is how I did it in case anyone is stuck. The below configuration opens my git commit messages in a horizontal split that reopens lazygit when done. And opens a file to edit within a vertical split as a regular buffer within my current neovim instance. Amazing.
lazygit/config.yml
os:
  # this will edit the file in the current neovim sesh
  edit: "nvr -cc vsplit --remote-wait +'set bufhidden=wipe' {{filename}}"

.zshrc
if [ -n "$NVIM_LISTEN_ADDRESS" ]; then
    export VISUAL="nvr -cc split --remote-wait +'set bufhidden=wipe'"
    export EDITOR="nvr -cc split --remote-wait +'set bufhidden=wipe'"
else
    export VISUAL="nvim"
    export EDITOR="nvim"
fi

@iAmKevinCruz Speak of flawless! This is absolutely amazing! Thank you so much for sharing!


Additional math functions

Is your feature request related to a problem or challenge?
Arrow-DataFusion at this stage has few mathematical expressions and operations. In this issue I describe possible futures features about the problem.
Most significant features:

[x] Cbrt (Support: PostgreSQL, Rust, Numpy) https://github.com/apache/arrow-datafusion/pull/5839
[ ] Mathematical constant Pi (3,1415..) (Support: PostgreSQL, Rust, Numpy, MySQL)
[ ] Factorial (Support: PostgreSQL, Rust, Numpy)
[x] Hyperbolic functions (Support: PostgreSQL, Rust, Numpy) https://github.com/apache/arrow-datafusion/pull/5884
[ ] Degrees, Radians (Support: PostgreSQL, Numpy, Rust, MySQL)

Least Significant features:

[ ] GCD and LCM (Numpy)
[ ] Support radian/degree trigonometric functions (Like PostgreSQL COS/COSD) (Support: PostgreSQL)

Describe the solution you'd like
Series of PR, active discussion of features.
Describe alternatives you've considered
The significance of some features can be disproven as a result of conversations.
Additional context
Sources:

PostgreSQL math functions: https://www.postgresql.org/docs/current/functions-math.html
MySQL math functions: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html
Rust f64 in-built functions: https://doc.rust-lang.org/std/primitive.f64.html
Numpy (using with Pandas) math functions: https://numpy.org/doc/stable/reference/routines.math.html

👍

FYI: it also helps to integrate PromQL's function, thanks for this 👍


GDTCCTUploader: use NSOperationQueue to coordinate uploads

This is a first incremental PR of refactoring of GDTCCTUploader.

use NSOperationQueue instead of maintaining isCurrentlyUploading variable
move all upload logic to GDTCCTUploadOperation (this will be refactored in the future PRs)

Tests failures are expected. The tests will be fixed and updated in following PRs.
Related to b/160018519
#no-changelog

cc @mikehaney24

I suppose my main questions are: What problem are we solving and why is this better than what we had?

@mikehaney24 The main issue solved by the current PR is cleanup of isCurrentlyUploading related logic that was introduced as a workaround to fix the race conditions exposed in version 7.0.0. Currently isCurrentlyUploading related logic is a bit difficult to follow. Also there is a low probability race condition case when isCurrentlyUploading is set improperly. Using the operation queue enables expressing the required logic in the simpler terms in a single place.
The motivation for refactoring to use promises(b/160018519) is mainly the following:

GDTCCTUploader has multiple chained async operations which is hard to express in plain Objective-C. Structuring existing code using promises should improve readability and extensibility of the code
there are tasks in the backlog requiring adding more logic to GDTCCTUploader (such as adding backoff strategy and upload telemetry). A brief attempt to do it with the current code structure led to even more complicated and hardly readable code.

The plan is to wrap the existing async operations into promises to leverage them for async operations binding and centralized error handling. The intention is to introduce as few changes to the existing code as possible.

@mikehaney24 The main issue solved by the current PR is cleanup of isCurrentlyUploading related logic that was introduced as a workaround to fix the race conditions exposed in version 7.0.0. Currently isCurrentlyUploading related logic is a bit difficult to follow. Also there is a low probability race condition case when isCurrentlyUploading is set improperly. Using the operation queue enables expressing the required logic in the simpler terms in a single place.
The motivation for refactoring to use promises(b/160018519) is mainly the following:

GDTCCTUploader has multiple chained async operations which is hard to express in plain Objective-C. Structuring existing code using promises should improve readability and extensibility of the code
there are tasks in the backlog requiring adding more logic to GDTCCTUploader (such as adding backoff strategy and upload telemetry). A brief attempt to do it with the current code structure led to even more complicated and hardly readable code.

The plan is to wrap the existing async operations into promises to leverage them for async operations binding and centralized error handling. The intention is to introduce as few changes to the existing code as possible.

SGTM, Generally LGTM

I'm going to merge this PR and address the comments in the following PRs.