Update =destroy hooks

With Nim 2.0.0, the function signature for =destroy hooks changed.
These need to be updated, the compiler warnings should tell you the relevant locations.

@PhilippMDoerner do you want me to assign you to this?

Yeah, might make for good research and when I'm too bored at the prospect of updating docs of my mapster package this might be a good fit

From my understanding this only affects 2 places of code:

PixiBuf in widgets.nim around line ~460

  PixbufObj* = object
    gdk: GdkPixbuf

  PixBuf* = ref PixbufObj

proc `=destroy`(x: PixbufObj) =
  echo "PixbufObj destructor"
  g_object_unref(pointer(x.gdk))

proc newPixbuf(gdk: GdkPixbuf): Pixbuf =
  if gdk.isNil:
    raise newException(ValueError, "Unable to create Pixbuf from GdkPixbuf(nil)")
  new(result)
  result.gdk = gdk

TextBufferObj in widgets.nim around line ~2000

proc `=destroy`(buffer: TextBufferObj) =
  echo "DESTRUCTOR TEXT"
  g_object_unref(pointer(buffer.gtk))

proc newTextBuffer*(): TextBuffer =
  new(result)
  result.gtk = gtk_text_buffer_new(nil.GtkTextTagTable)

You can test 1) by compiling and playing around with examples/widgets/picture.nim
You'll be able to see how it triggers the echo.
No clue about TextBufferObj as of now and what else would need to happen to avoid memory leaks in the case of exceptions occurring during destruction.

Looks good so far, I am just going to trust that you tested it :)
The text buffer should be testable using the text view example.
If it fixes the warnings, it should also close this issue. I don't see anything about recoverable errors in the g_object_unref docs, so that should be fine. The minimum Nim version requirement in the nimble file (and the workflows) needs to be raised to 2.0.0, because I am not sure if previous Nim versions will execute these destructors. If you want you could also add the destructor for Stylesheet in the same PR (https://github.com/can-lehmann/owlkettle/issues/76).

I tested only PixBufObj so far given I haven't found an example to compile where textbuffer is used.
I'll test that of course as well.
I am however also double and triple checking together with PMunch to see whether there's anything else that could possibly be overlooked given my low understanding of destructors and memory allocation. Something we stumbled over was that strictly speaking one could just remove "ref" and have PixBuf follow value-type semantics, given that it's just a pointer (or in the current version: A pointer/ref to a pointer of a GTK object).
I'm not sure what/how much that would break though. I can only state that compiling nim r ./examples/widgets/picture.nim works what seems like the same as before.

I like the option of dropping the ref. However you are going to need to add a =copy hook, otherwise this wont compile:
let pixbuf = loadPixbuf(path)
app.pixbuf = pixbuf
echo pixbuf.height

So you want this:
proc `=destroy`*(pixbuf: Pixbuf) =
  if not isNil(pixbuf.gdk):
    g_object_unref(pointer(pixbuf.gdk))
    echo "destroy"

proc `=copy`*(a: var Pixbuf, b: Pixbuf) =
  if pointer(a.gdk) != pointer(b.gdk):
    `=destroy`(a)
    wasMoved(a)
    echo "copy"
    if not isNil(b.gdk):
      g_object_ref(pointer(b.gdk))
    a.gdk = b.gdk

I would also recommend adding weak_refs for testing that the GdkObjects actually get deleted.
proc notify(data, oldObjectPtr: pointer) {.cdecl.} =
  echo "delete pixbuf"
g_object_weak_ref(pointer(gdk), notify, nil)

Here is my complete test setup:
diff --git a/examples/widgets/picture.nim b/examples/widgets/picture.nim
index 277073c..935eb63 100644
--- a/examples/widgets/picture.nim
+++ b/examples/widgets/picture.nim
@@ -75,7 +75,9 @@ method view(app: AppState): Widget =

                 proc callback(pixbuf: Future[Pixbuf]) =
                   app.loading = false
-                  app.pixbuf = pixbuf.read()
+                  let pixbuf = pixbuf.read()
+                  app.pixbuf = pixbuf
+                  echo pixbuf.height
                   discard app.redraw()

                 future.addCallback(callback)
@@ -84,10 +86,12 @@ method view(app: AppState): Widget =
               else:
                 # Load sync
                 try:
-                  app.pixbuf = loadPixbuf(path)
+                  let pixbuf = loadPixbuf(path)
+                  app.pixbuf = pixbuf
+                  echo pixbuf.height
                 except IoError as err:
                   echo err.msg
-                  app.pixbuf = nil
+                  #app.pixbuf = newPixbuf(nil)

         Button {.addLeft.}:
           text = "Save"
diff --git a/owlkettle/gtk.nim b/owlkettle/gtk.nim
index da3baa2..56545ca 100644
--- a/owlkettle/gtk.nim
+++ b/owlkettle/gtk.nim
@@ -340,6 +340,7 @@ proc g_signal_connect_data*(widget: pointer,
 proc g_type_from_name*(name: cstring): GType
 proc g_object_new*(typ: GType): pointer {.varargs.}
 proc g_object_ref*(obj: pointer)
+proc g_object_weak_ref*(obj: pointer, notify: proc (data, oldObjectPtr: pointer) {.cdecl.}, data: pointer)
 proc g_object_unref*(obj: pointer)
 proc g_object_set_property*(obj: pointer, name: cstring, value: ptr GValue)
 proc g_type_fundamental*(id: GType): GType
diff --git a/owlkettle/widgets.nim b/owlkettle/widgets.nim
index 4523f00..6a8233b 100644
--- a/owlkettle/widgets.nim
+++ b/owlkettle/widgets.nim
@@ -458,17 +458,33 @@ type
   Colorspace* = enum
     ColorspaceRgb

-  Pixbuf* = ref object
+  Pixbuf* = object
     gdk: GdkPixbuf

-proc finalizer(pixbuf: Pixbuf) =
-  g_object_unref(pointer(pixbuf.gdk))
+proc `=destroy`*(pixbuf: Pixbuf) =
+  if not isNil(pixbuf.gdk):
+    g_object_unref(pointer(pixbuf.gdk))
+    echo "destroy"
+
+proc `=copy`*(a: var Pixbuf, b: Pixbuf) =
+  if pointer(a.gdk) != pointer(b.gdk):
+    `=destroy`(a)
+    wasMoved(a)
+    echo "copy"
+    if not isNil(b.gdk):
+      g_object_ref(pointer(b.gdk))
+    a.gdk = b.gdk
+
+proc isNil*(pixbuf: Pixbuf): bool = pixbuf.gdk.isNil()
+proc `==`*(a, b: Pixbuf): bool = pointer(a.gdk) == pointer(b.gdk)

 proc newPixbuf(gdk: GdkPixbuf): Pixbuf =
   if gdk.isNil:
     raise newException(ValueError, "Unable to create Pixbuf from GdkPixbuf(nil)")
-  new(result, finalizer=finalizer)
-  result.gdk = gdk
+  result = Pixbuf(gdk: gdk)
+  proc notify(data, oldObjectPtr: pointer) {.cdecl.} =
+    echo "delete pixbuf"
+  g_object_weak_ref(pointer(gdk), notify, nil)

 proc newPixbuf*(width, height: int,
                 bitsPerSample: int = 8,
@@ -549,7 +565,7 @@ proc handlePixbufReady(stream: pointer, result: GAsyncResult, data: pointer) {.c
   var error = GError(nil)
   let pixbuf = gdk_pixbuf_new_from_stream_finish(result, error.addr)
   if error.isNil:
-    future.complete(Pixbuf(gdk: pixbuf))
+    future.complete(newPixbuf(pixbuf))
   else:
     let message = $error[].message
     future.fail(newException(IoError, "Unable to load pixbuf: " & message))

I was not able to get this working with distinct instead of object yet, maybe you could look into that, as it would allow us to keep supporting nil values (both for better backward compatibility & since Nim is not particularly great at non nil types).

Also, if we move to value semantics, I would also add them for CairoContext (https://github.com/can-lehmann/owlkettle/blob/main/owlkettle/cairo.nim#L28), so that you do not need to do manual memory management for it (calling the destroy proc) anymore.

So basically it makes a whole bunch of things easier/streamlines them which means its worthwhile and a learning experience, which means the only right choice is to dig into it as far as I can see

Yes, I think that if arc had been the default when this code was written, it would have been the correct architectural choice.

WeakRef notifies you when the object is deleted. So you can use it to check that you implemented everything correctly (Once there are no more references, the Pixbuf/... should be deleted & the weak ref notifies you that that happened). https://developer-old.gnome.org/gobject/stable/gobject-The-Base-Object-Type.html#GWeakNotify

=copy is called when an assignment happens (a = b) in this case the reference count of the thing originally stored in a should be decreased, since it is no longer referenced by the variable a. But b is now also refereed to by a, so we need to increase the reference count. So we call =destroy and g_object_ref.
https://nim-lang.org/docs/destructors.html#lifetimeminustracking-hooks-nimeqcopy-hook

I've amassed enough understanding now that I managed to get the example running with a bit of my own setup.
I'm a bit confused as to the operations going on.
These are my widget changes:
  Pixbuf* = object
    gdk: GdkPixbuf

proc isNil*(pixbuf: Pixbuf): bool = pixbuf.gdk.isNil()
proc `==`*(a, b: Pixbuf): bool = pointer(a.gdk) == pointer(b.gdk)

proc `=destroy`(pixbuf: Pixbuf) =
  if isNil(pixbuf.gdk):
    echo "Destructor call on pixbuf with nil"
    return

  echo "Destructor: Remove ref ", cast[int](pixbuf.gdk)
  g_object_unref(pointer(pixbuf.gdk))

proc `=copy`*(dest: var Pixbuf, source: Pixbuf) =
  let areSamePixbuf = pointer(source.gdk) == pointer(dest.gdk)
  if areSamePixbuf:
    echo "copy call on pixbuf with nil"
    return

  echo "copy source --> dest: ", cast[int](source.gdk), " --> ", cast[int](dest.gdk)
  `=destroy`(dest)
  wasMoved(dest)
  if not isNil(source.gdk):
    echo "- Add ref ", cast[int](source.gdk)
    g_object_ref(pointer(source.gdk))

  dest.gdk = source.gdk

proc newPixbuf(gdk: GdkPixbuf): Pixbuf =
  if gdk.isNil:
    raise newException(ValueError, "Unable to create Pixbuf from GdkPixbuf(nil)")
  result = Pixbuf()
  result.gdk = gdk

  # TODO: Remove
  proc notify(data, oldObjectPtr: pointer) {.cdecl.} =
    echo "delete pixbuf ", cast[int](oldObjectPtr)
  g_object_weak_ref(pointer(gdk), notify, nil)

in pictures.nim I just commented out app.pixbuf = nil same as you did.
This is what I logged (I split the echo'd messages up by hand, one copy leads to a copy-echo as well as a destructor-echo as it triggers the destructor once, as well as an add-ref echo.:
Logs:
Initial Loading:
  Destructor call on pixbuf with nil
  Destructor call on pixbuf with nil

After loading img:
  Destructor call on pixbuf with nil

  copy source --> dest:<PHONE_NUMBER>9456 --> 0
  Destructor call on pixbuf with nil
  - Add ref<PHONE_NUMBER>9456

  copy source --> dest:<PHONE_NUMBER>9456 --> 0
  Destructor call on pixbuf with nil
  - Add ref<PHONE_NUMBER>9456

  Destructor: Remove ref<PHONE_NUMBER>9456

After rotate button click:
  Destructor: Remove ref<PHONE_NUMBER>9456

  copy source --> dest:<PHONE_NUMBER>9888 --> 0
  Destructor call on pixbuf with nil
  - Add ref<PHONE_NUMBER>9888

  copy source --> dest:<PHONE_NUMBER>9888 --><PHONE_NUMBER>9456
  Destructor: Remove ref<PHONE_NUMBER>9456
  - Add ref<PHONE_NUMBER>9888

  Destructor: Remove ref<PHONE_NUMBER>9888
  delete pixbuf<PHONE_NUMBER>9456

I'm kinda confused why everything seems to be happening twice

Probably because it happens once in the App viewable and then in the Picture renderable.

As someone with little to no experience that low level I'll assume that this doing double duty is less terrifying than it would be in webdev if those were db queries on a system under heavy load.

Yes, its just a few pointer assignments and integer increments / decrements (basically free).

If that's the case then I think we should be good with the value based semantics version for pixbuf.
I also tested what gets echo'd out of the ref-based semantics:
proc `=destroy`(pixbuf: PixbufObj) =
  if isNil(pixbuf.gdk):
    echo "Destructor call on pixbuf with nil"
    return

  echo "Destructor: Remove ref ", cast[int](pixbuf.gdk)
  g_object_unref(pointer(pixbuf.gdk))

proc newPixbuf(gdk: GdkPixbuf): Pixbuf =
  if gdk.isNil:
    raise newException(ValueError, "Unable to create Pixbuf from GdkPixbuf(nil)")
  new(result)
  result.gdk = gdk

  # TODO: Remove
  proc notify(data, oldObjectPtr: pointer) {.cdecl.} =
    echo "delete pixbuf ", cast[int](oldObjectPtr)
  g_object_weak_ref(pointer(gdk), notify, nil)

That logs this:
Logs:
Initial Loading:
After rotate button click:
  Destructor: Remove ref<PHONE_NUMBER>2880
  delete pixbuf<PHONE_NUMBER>2880

Seems like we might be missing some ref-copies since now the ref of PixbufObj gets copied around rather than PixbufObj itself.
Given that I don't have a copy-proc here we're obviously not getting informed on when the ref of PixbufObj gets copied, so that's missing.
From what I can see we might be making fewer unnecessary copies of the actual buffer this way, but given that you stated that that's cheap anyway I think we should be good.

I was not able to get this working with distinct instead

I could also be looking into this, what were you meaning when you stated "distinct".
Like type PixBuf = distinct GdkPixBuf ?

Yes, that would be nice, since it allows for using nil values (Pixbuf(nil)).

If that's the main reason/benefit, couldn't you just have a constructor ?
proc initPixbuf(buffer: GdkPixBuf): Pixbuf =
  Pixbuf(gdk: buffer)

initPixbuf(nil)

Sure, I just think this looks kind of weird :smile:

Okay, just tried it out. Apparently distinct pointer is allowed to have destructors for reasons I don't understand.
  Pixbuf* = distinct GdkPixBuf

proc isNil*(pixbuf: Pixbuf): bool = pixbuf.isNil()
proc `==`*(a, b: Pixbuf): bool = pointer(a) == pointer(b)

proc `=destroy`(pixbuf: Pixbuf) =
  if isNil(pixbuf):
    echo "Destructor call on pixbuf with nil"
    return

  echo "Destructor: Remove ref ", cast[int](pixbuf)
  g_object_unref(pointer(pixbuf))

proc `=copy`*(dest: var Pixbuf, source: Pixbuf) =
  let areSamePixbuf = pointer(source) == pointer(dest)
  if areSamePixbuf:
    echo "copy call on pixbuf with nil"
    return

  echo "copy source --> dest: ", cast[int](source), " --> ", cast[int](dest)
  `=destroy`(dest)
  wasMoved(dest)
  if not isNil(source):
    echo "- Add ref ", cast[int](source)
    g_object_ref(pointer(source))

  dest = source

proc newPixbuf(gdk: GdkPixbuf): Pixbuf =
  if gdk.isNil:
    raise newException(ValueError, "Unable to create Pixbuf from GdkPixbuf(nil)")
  result = gdk.Pixbuf

This worked for me. In the sense it compiled, the example started and I could select an image and rotate it.
You mentioned troubles in your own attempts, what did they look like?

If I remember correctly, it never recognized both hooks at the same time.  Also, are you sure that dest = source does not cause an infinite loop?

I must have forgotten to save because I'm getting issues about it already having copy/destroy hooks implicitly created from within gtk.nim.
I'm trying to figure out what's going on there.
I got it to run, but it definitely leaks memory. By rotating the image 50 or so times I could watch my memory go from 2.7GB free to 2.3 GB free.
The same issue does not occur when running with the version where Pixbuf is just an object type.

copy/destroy hooks implicitly created from within gtk.nim

Yes, thats also the thing I ran into. As far as I can see, the code the nim compiler points you to is completely unrelated to any of this (but I also got pointed to the same section of gtk.nim).

I'd take that as a hint to either start debugging where those implicit copy/destroy hooks come from (which might be a compiler bug) or just use hooks on a wrapper value type for now.
Given that I'm already in very new territory (though at least I've gotten an understanding of macros over the last couple months) I'm tempted to leave it at value objects. Sound good?

Ok, I think I might have figured it out. The issue is using the pointer(...) cast, so you need to do something like this (note the cast[...](...):

If you use a pointer(...) cast instead, you get the error we encountered before.
Also if I remember correctly, the =destroy and =copy hooks must be defined immediately after the type definition. So you cannot define isNil and == before defining the hooks.

I can't say I figured it out.
The copy hook does eternal loop due to the pointer cast I believe and causes SOs:
  Pixbuf* = distinct GdkPixBuf

proc `=destroy`(pixbuf: Pixbuf) =
  if cast[pointer](pixbuf) == nil:
    return

  g_object_unref(cast[pointer](pixbuf))

proc `=copy`*(dest: var Pixbuf, source: Pixbuf) = # This is line 469
  let areSamePixbuf = cast[pointer](source) == cast[pointer](dest)
  if areSamePixbuf:
    return

  `=destroy`(dest) # This is line 474
  wasMoved(dest)
  if cast[pointer](source) != nil:
    g_object_ref(cast[pointer](source))

  dest = source

Traceback (most recent call last)
/home/philipp/dev/owlkettle/examples/widgets/picture.nim(170) picture
/home/philipp/dev/owlkettle/owlkettle.nim(193) brew
/home/philipp/dev/owlkettle/owlkettle/mainloop.nim(75) runMainloop
/home/philipp/dev/owlkettle/owlkettle/widgetutils.nim(46) eventCallback
/home/philipp/dev/owlkettle/owlkettle/widgetutils.nim(31) redraw
/home/philipp/dev/owlkettle/owlkettle/widgetdef.nim(77) redraw
/home/philipp/dev/owlkettle/owlkettle/widgetdef.nim(53) view
/home/philipp/dev/owlkettle/owlkettle/widgets.nim(469) view
/home/philipp/dev/owlkettle/owlkettle/widgets.nim(469) =copy
... same call 2000 times
/home/philipp/dev/owlkettle/owlkettle/widgets.nim(474) =copy
/home/philipp/dev/owlkettle/owlkettle/widgets.nim =destroy
Error: call depth limit reached in a debug build (2000 function calls). You can change it with -d:nimCallDepthLimit= but really try to avoid deep recursions instead.

You need to cast to pointer cast[var pointer](dest) = cast[pointer](source), otherwise it will be a recusive function.

Seems like the assignment is destined to segfault because dest is nil and nim just segfaults when it does that:
proc `=copy`*(dest: var Pixbuf, source: Pixbuf) =
  let areSamePixbuf = cast[pointer](source) == cast[pointer](dest)
  if areSamePixbuf:
    return

  `=destroy`(dest)
  wasMoved(dest)
  if cast[pointer](source) != nil:
    g_object_ref(cast[pointer](source))

  let val = cast[pointer](source)
  echo val.repr, " - ", dest.repr
  cast[var pointer](dest) = val

00005640DFB7F6B0 - nil  # The echo you can see right before the assignment, so dest is nil
Traceback (most recent call last)
/home/philipp/dev/owlkettle/examples/widgets/picture.nim(170) picture
/home/philipp/dev/owlkettle/owlkettle.nim(193) brew
/home/philipp/dev/owlkettle/owlkettle/mainloop.nim(75) runMainloop
/home/philipp/dev/owlkettle/owlkettle/widgetutils.nim(46) eventCallback
/home/philipp/dev/owlkettle/owlkettle/widgetutils.nim(31) redraw
/home/philipp/dev/owlkettle/owlkettle/widgetdef.nim(77) redraw
/home/philipp/dev/owlkettle/owlkettle/widgetdef.nim(53) view
/home/philipp/dev/owlkettle/owlkettle/widgets.nim(469) view
/home/philipp/dev/owlkettle/owlkettle/widgets.nim(481) =copy
SIGSEGV: Illegal storage access. (Attempt to read from nil?)

Similar inim experiment:
nim> type A = distinct pointer
nim> var x: A
nim> echo x.repr
nil
nim> cast[var pointer](x)
Error: expression 'cast[var pointer](x)' is of type 'var pointer' and has to be used (or discarded); start of expression here: /tmp/inim_1694789970.nim(1, 1)
nim> var y: A
nim> cast[var pointer](x) = y.pointer
/tmp/inim_1694789970.nim(12) inim_1694789970
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Error: execution of an external program failed: '/tmp/inim_1694789970'

I guess you can just cast[ptr pointer](dest.addr)[] = cast[pointer](source)

Does the weak ref callback get called?

Good point! It does not!
Which is weird because the echo I have is after the nil-check, so every echo means there definitely is a call to unref:

proc `=destroy`(pixbuf: Pixbuf) =
  if cast[pointer](pixbuf) == nil:
    return
  echo "Destroy me"
  g_object_unref(cast[pointer](pixbuf))

Could you open a draft PR, so I can see the current code?


Incorrect URLs at ninenines website

All the front page links at http://ninenines.eu/ for cowboy are for 1.0
I started following the guide to finally figure out that there are drastic changes in code I have ( 2.0.0 pre3 ) and front page documentation which is 1.0
Like in http://ninenines.eu/docs/en/cowboy/1.0/guide/  itself, It uses behavior cowboy_http_handler which is not there in new version.
I think if the default links point to new guide ( 2.0 ), It would be better for people who are going to start with cowboy.

2.0 is not ready for general consumption. New people really should use 1.0 right now.


Update SquidTask_ExpressionXMLSchema.xsd

The schema needs the notes field added and also the list of functions and operations updated to match the names in the Function and Operation class.

Hey Dr. Bowring, I think you meant to assign my brother to this issue?

thanks!

This was handled in the task updating from fall 2020.


MErge develop into v0.4.x

Added

Signals when user accept/decline the authorization page.
OIDC_AFTER_END_SESSION_HOOK setting for additional business logic
Feature granttype password
OIDC_UNAUTHENTICATED_SESSION_MANAGEMENT_KEY setting for OpenId Connect Session Management. This value will be used for unauthenticated users as session state key only when Session Management is enabled.
OIDC_SESSION_MANAGEMENT_ENABLE setting enables OpenID Connect Session Management feature
OIDC_GRANT_TYPE_PASSWORD_ENABLE setting enables Resource Owner Password Credentials Grant
OIDC_TEMPLATES setting contains dictionary with names of templates for authorize and error pages
reuse_consent to client model. If enabled, the Server will save the user consent given to a specific client, so that user won't be prompted for the same authorization multiple times. Default: True
require_consent to client model. If disabled, the Server will NEVER ask the user for consent. Default: True

Fixed

Timestamps with unixtime (instead of django timezone).
Field refresh_token cannot be primary key if null.
create_uri_exceptions are now being logged at Exception level not DEBUG
SessionManagementMiddleware by hiding DJANGO_SECRET and using OIDC_UNAUTHENTICATED_SESSION_MANAGEMENT_KEY instead

Changed

LOGIN_URL has been changed to OIDC_LOGIN_URL

Removed

OIDC_SKIP_CONSENT_ALWAYS setting. Now is client based configuration


Transcribe music

Describe the feature
It will be great to be able to transcribe music/radio with Vibe.
This way we can easily transcribe songs or videos that have music.
we need to integrate vocal separation model (separate music and speech).
Currently we can open https://vocalremover.org -> upload the audio -> download the Vocal -> transcribe in Vibe.

https://github.com/Anjok07/ultimatevocalremovergui
This is the best open source vocal separator. but written in pytorch.
In theory it's possible to rewrite it with onnxruntime so it will be fast, efficient, and lightweight. but require some work.

https://github.com/modelscope/ClearerVoice-Studio
could be useful


Typos in issue templates

Unfortunately there are some typos in the issue templates.

[x] It says Report a missbehavior or other bug. If this doesn’t look right, choose a different type.  in the header of the bug report template. The correct spelling is misbehavior.
[x] Also in feature request: <!-- This is not strictly neccessary but helps all of us get a different point-of-view --> -> necessary.
[x] Remove package version from PR templates
[x] Replace catkin with colcon
[x] Remove unnecessary whitespace at the endo of the BUG issue template (and probably others too)
[x] Bug Report: screenshots ot other details
~- [ ] Maybe also add this bot: https://probot.github.io/apps/delete-merged-branch/ ???~

Expected behavior
There should be no such typos.
Current behavior
There are typos.
Steps to Reproduce

Open a new issue...

...
Context (Environment)

[ ] RViz
[ ] Simulator
[ ] Robot
[ ] Local
[X] Github

Possible Solution
Use a spell checker the next time...
Yeah, we all are responsible for this, since we all had to review this.

Addressed in the following PRs:

[X] bitbots_template_repository
[X] bitbots_meta: https://github.com/bit-bots/bitbots_meta/pull/70
[ ] bitbots_behavior:
[ ] bitbots_lowlevel:
[ ] bitbots_misc:
[ ] bitbots_motion:
[ ] bitbots_msgs:
[ ] bitbots_navigation:
[ ] bitbots_tools:
[ ] bitbots_vision:
[ ] bitbots_world_model:
[ ] dynamic_stack_decider:
[ ] humanoid_league_misc:
[ ] humanoid_league_msgs:
[ ] udp_bridge:
[ ] wolfgang_robot:


satellite.log file is not being appended to

Need to fix Manager.configure_loggers()

I think the satellite logger is nowcasting_dataset.data_sources.data_source:SatelliteDataSource whilst GSP is like nowcasting_dataset.data_sources.gsp...

Is this a specific satellite log not being attending to, or is it all logs?

https://github.com/openclimatefix/nowcasting_dataset/runs/4407519504?check_suite_focus=true
Interestingly the test only failed on Mac, but not on Ubuntu

Is this a specific satellite log not being appended too, or is it all logs?

so, it's specifically /mnt/storage_ssd_4tb/data/ocf/solar_pv_nowcasting/nowcasting_dataset_pipeline/prepared_ML_training_data/v15/satellite.log that doesn't seem to get updated properly
I've made a few fixes of the logging code in the OpticalFlow PR, but I haven't tried running the satellite data source yet.
there's some more helpful thoughts about what the problem might be in comments in Manager.configure_loggers()

I think this fixed it


working on dropdowns

changed package used and ran into a lot of troubles with getting our variable lists to render on the dropdowns.
worked two nights ~4 hrs. and feel like a lot will come together this next sprint!


Removed defer - not needed there

Description
Removed defer - not needed there

Codecov Report

Merging #205 (63a471d) into master (199e710) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master     #205   +/-   ##
=======================================
  Coverage   91.38%   91.38%
=======================================
  Files          23       23
  Lines         859      859
=======================================
  Hits          785      785
  Misses         62       62
  Partials       12       12

Impacted Files
Coverage Δ

tests/helpers/mock_t.go
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


why exporter sometimes don't have data.

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
error:

use yum method installed.

this is prometheus problem. It don't apear when I create a new prometheus for it.


libsForQt5.qcoro: 0.7.0 -> 0.9.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/project/qcoro/versions.
meta.description for libsForQt5.qcoro is: Library for using C++20 coroutines in connection with certain asynchronous Qt actions
meta.homepage for libsForQt5.qcoro is: https://github.com/danvratil/qcoro
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.9.0 in filename of file in /nix/store/5gncmbqkgz1c22dvqp3crrmip7a35070-qcoro-0.9.0

Rebuild report (if merged into master) (click to expand)

135 total rebuild path(s)

135 package rebuild(s)

First fifty rebuilds by attrpath
calligra
digikam
kile
kmymoney
kphotoalbum
libsForQt5.akonadi
libsForQt5.akonadi-calendar
libsForQt5.akonadi-calendar-tools
libsForQt5.akonadi-contacts
libsForQt5.akonadi-import-wizard
libsForQt5.akonadi-mime
libsForQt5.akonadi-notes
libsForQt5.akonadi-search
libsForQt5.akonadiconsole
libsForQt5.akregator
libsForQt5.angelfish
libsForQt5.calendarsupport
libsForQt5.discover
libsForQt5.eventviews
libsForQt5.falkon
libsForQt5.gwenview
libsForQt5.incidenceeditor
libsForQt5.kaccounts-integration
libsForQt5.kaccounts-providers
libsForQt5.kaddressbook
libsForQt5.kalarm
libsForQt5.kalendar
libsForQt5.kamoso
libsForQt5.kdenetwork-filesharing
libsForQt5.kdenlive
libsForQt5.kdepim-addons
libsForQt5.kdepim-runtime
libsForQt5.kdeplasma-addons
libsForQt5.kdev-php
libsForQt5.kdev-python
libsForQt5.kdevelop
libsForQt5.kdevelop-unwrapped
libsForQt5.kgpg
libsForQt5.kio-gdrive
libsForQt5.kmail
libsForQt5.kmail-account-wizard
libsForQt5.kmailtransport
libsForQt5.knotes
libsForQt5.koko
libsForQt5.kontact
libsForQt5.korganizer
libsForQt5.kpurpose
libsForQt5.libgravatar
libsForQt5.libkdepim
libsForQt5.libksieve

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/5gncmbqkgz1c22dvqp3crrmip7a35070-qcoro-0.9.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A libsForQt5.qcoro https://github.com/r-ryantm/nixpkgs/archive/bb9e15a5943beb28873a120aec69f345f946efd6.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/5gncmbqkgz1c22dvqp3crrmip7a35070-qcoro-0.9.0
ls -la /nix/store/5gncmbqkgz1c22dvqp3crrmip7a35070-qcoro-0.9.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review took longer than 45m and timed out

Maintainer pings
cc @syvb for testing.

2 packages marked as broken and skipped:
calligra trojita

91 packages built:
digikam kile kmymoney kphotoalbum libsForQt5.akonadi libsForQt5.akonadi-calendar libsForQt5.akonadi-calendar-tools libsForQt5.akonadi-calendar-tools.dev libsForQt5.akonadi-calendar.dev libsForQt5.akonadi-contacts libsForQt5.akonadi-contacts.dev libsForQt5.akonadi-import-wizard libsForQt5.akonadi-import-wizard.dev libsForQt5.akonadi-mime libsForQt5.akonadi-mime.dev libsForQt5.akonadi-notes libsForQt5.akonadi-notes.dev libsForQt5.akonadi-search libsForQt5.akonadi-search.dev libsForQt5.akonadi.dev libsForQt5.akonadiconsole libsForQt5.akregator libsForQt5.akregator.dev libsForQt5.angelfish libsForQt5.calendarsupport libsForQt5.calendarsupport.dev libsForQt5.discover libsForQt5.eventviews libsForQt5.eventviews.dev libsForQt5.falkon libsForQt5.gwenview libsForQt5.incidenceeditor libsForQt5.incidenceeditor.dev libsForQt5.kaccounts-integration libsForQt5.kaccounts-providers libsForQt5.kaddressbook libsForQt5.kalarm libsForQt5.kalendar libsForQt5.kamoso libsForQt5.kdenetwork-filesharing libsForQt5.kdenlive libsForQt5.kdepim-addons libsForQt5.kdepim-runtime libsForQt5.kdeplasma-addons libsForQt5.kdev-php libsForQt5.kdev-python libsForQt5.kdevelop libsForQt5.kdevelop-unwrapped libsForQt5.kgpg libsForQt5.kio-gdrive libsForQt5.kmail libsForQt5.kmail-account-wizard libsForQt5.kmail.doc libsForQt5.kmailtransport libsForQt5.kmailtransport.dev libsForQt5.knotes libsForQt5.koko libsForQt5.kontact libsForQt5.korganizer libsForQt5.kpurpose libsForQt5.kpurpose.bin libsForQt5.kpurpose.dev libsForQt5.libgravatar libsForQt5.libgravatar.dev libsForQt5.libkdepim libsForQt5.libksieve libsForQt5.libksieve.dev libsForQt5.mailcommon libsForQt5.mailcommon.dev libsForQt5.mailimporter libsForQt5.mauikit-calendar libsForQt5.mbox-importer libsForQt5.messagelib libsForQt5.messagelib.dev libsForQt5.neochat libsForQt5.okular libsForQt5.pim-data-exporter libsForQt5.pim-sieve-editor libsForQt5.pimcommon libsForQt5.pimcommon.dev libsForQt5.plasma-browser-integration libsForQt5.plasma-desktop libsForQt5.plasma-welcome libsForQt5.qcoro libsForQt5.qcoro.dev libsForQt5.skanpage libsForQt5.spacebar libsForQt5.spectacle libsForQt5.tokodon libsForQt5.zanshin maui-shell


Live Reload working when addin hosted in Excel

Would be great to have the live reload functionality working when the addin is hosted in excel, like it currently is for Chrome.

Think this might be doable with browserify-hmr, need to have a more detailed look.


each helper cannot iterate over objects

In Handlebars, we could iterate over an object with key/value pairs.  In HTMLbars I get the error Uncaught Error: Assertion Failed: The value that #each loops over must be an Array. You passed {prop1: prop1Value, prop2: prop2Valuel}
By design or bug?

Are you referring to Ember's #each helper? You should search for / report an issue there.

Cool, thought it was HTMLbars because it used to work when Ember was using Handlebars but I guess it is an ember issue.

+1 for this... kind of weird I can't do that...

@hcatlin - There is a recent PR in ember adding {{each-in}} helper for iterating objects. It will be feature flagged, but is likely to be available in 2.0.0 (which should hit beta around 4 weeks from now).


openjdk8: JRE cannot use jars from JDK

Issue description
It seems that the way how JRE is moved out of JDK (and then old files/directories are replaced with symlinks) breaks something.
It might save 100MB (unless nix-optimise is used) but a side of effect of those symlinking is at least inability to build JOGL (https://github.com/NixOS/nixpkgs/pull/37357)
Steps to reproduce
Minimal testcase is:
{ stdenv, openjdk8 }:

stdenv.mkDerivation rec {
  name = "qq";

  buildCommand = ''
    # write source
    echo ${stdenv.lib.escapeShellArg ''
      public class Q {
        public static void main(String[] args) {
          javax.tools.JavaCompiler c = javax.tools.ToolProvider.getSystemJavaCompiler();
          System.out.println("c=" + c);
        }
      }
    ''} > Q.java

    # compile
    ${openjdk8}/bin/javac -cp ${openjdk8}/lib/openjdk/lib/tools.jar Q.java

    # run with JDK java
    ${openjdk8}/bin/java     -cp ${openjdk8}/lib/openjdk/lib/tools.jar:. Q   # <- c=com.sun.tools.javac.api.JavacTool@29453f44

    # run with JRE java
    ${openjdk8}/jre/bin/java -cp ${openjdk8}/lib/openjdk/lib/tools.jar:. Q   # <- c=null
  '';
}

zulu8 and oraclejdk8 have no problem

Fixed in https://github.com/NixOS/nixpkgs/commit/72f76fe856077becf4135acaf6cab385067ddf2e
jogl workaround could be removed


Create wrapper for IDE platform icons

Standalone is optional, but at least in the IDE theme we should have an easy way to address platform icons (AllIcons, StudioIcons, etc). This should be auto-generated from IDE sources.

For now the way to address icons is to use Icon(key, classloader). Where the algorithm is:

Find class where icon placed (like AllIcons)
find icon there
copy id from there
Use it's class classloader

In the future IntelliJ Platform may provide just keys for Icons, so they can be used without classloader. But for now the only way is described one

I am not aware of such issue, it was just 1n1 discussions

https://youtrack.jetbrains.com/issue/IDEA-345096/Add-way-to-obtain-icon-IDs-for-AllIcons-and-similar filed

Done in #430


[FEATURE]

Description
Move Switch mode from light to dark button in header part.
Screenshots

Additional information
No response
Record

[X] I agree to follow this project's Code of Conduct
[X] I have checked the existing issues
[X] I'm a GSSoC'23 contributor
[X] I want to work on this issue

Hi, this is a duplicate issue, closing


How to add a prisma relation to a response?

Hi! How can I add a relation to a response? I have the following code but the users doesn't get returned:
import NextCrud, { PrismaAdapter } from "@premieroctet/next-crud";

const handler = NextCrud({
  resourceName: "bookmarks", // Same as your folder name
  adapter: new PrismaAdapter({
    modelName: "bookmark", // Prisma model name, must match the one generated in your prisma client
    options: {
      select: {
        users: true,
      },
    },
  }),
});
export default handler;

Hi! How can I add a relation when creating a new record?
This is an example.
model Article {
id            String    @id @default(uuid())
title         String
description   String
content       String
slug          String    @unique
image         String?
publishedAt   DateTime?
categoryId    String
category      Category  @relation(fields: [categoryId], references: [id], onDelete: SetNull)
authorId      String
author        User      @relation(fields: [authorId], references: [id], onDelete: SetNull)
}
When I create a new Article I want to add a relation with a Category. What do I have to send in the request body?
Thanks!

Hi! How can I add a relation when creating a new record?
This is an example.
model Article { id String @id @default(uuid()) title String description String content String slug String @unique image String? publishedAt DateTime? categoryId String category Category @relation(fields: [categoryId], references: [id], onDelete: SetNull) authorId String author User @relation(fields: [authorId], references: [id], onDelete: SetNull) }
When I create a new Article I want to add a relation with a Category. What do I have to send in the request body?
Thanks!

Hello,
The adapter accepts whatever data you are passing in the request body. So basically, you can send whatever prisma accepts in the data property to make your relation.
https://github.com/premieroctet/next-crud/blob/master/src/adapters/prisma/index.ts#L183


Chinese: Istio 1.0 realease note

Translate 1.0 release note into Chinese

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

Needs approval from an approver in each of these files:

content_zh/OWNERS [rootsongjc]

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

@gyliu513 已按评论更新。

/lgtm

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

Needs approval from an approver in each of these files:

content_zh/OWNERS [fleeto,rootsongjc]

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


Review and update documentation

Go thoroughly through the Parsec book and update what is needed including diagrams to make sure everything is up to date.
This is needed before #89

Closing this as it relates to work in a different repo (which is nearly done).
https://github.com/parallaxsecond/parsec-book/pull/10 should finish off the documentation update.


Update Home Page

Home page code is outdated. It also needs a grammar check and restructure.

Renamed to "Uniform Introduction" on the wiki page.
I'm a little unsure about the new notation again. I'll try talk with you tomorrow? to get my settled to the new stuff. I'd like for you to look through the code and see if I am using it right.
@dgp1130

Just kidding, needs to be home otherwise it won't start on that page.

A made minor edits throughout just to improve the readability, nothing very special there.
A few more significant comments:

The initial "What is Uniform?" section's rhetorical questions don't really mean a whole lot to me reading through them. I think they should focus on the specific pain points Uniform addresses.

Have you tried to implement simple form logic but find yourself with a mess of unmaintainable code?
Do you find yourself fighting the JavaScript language, rather than working with it?
Do you hate writing your form validation once on the client, and again on the server?

I moved the description of the form's logic into the Uniform section, so it could display the HTML and get the structure out of the way before we discuss the validation logic.
I added more comments to the Uniform code to be more explicit and made a few corrections.

The checkbox's name was inconsistent between the Uniform and HTML, I used checkCar to reinforce that it is a checkbox.
make model year { } should probably be make, model, year { }. I say "probably" because that functionality doesn't exist yet. I don't know if we should use three blocks for it just so it actually runs in the current build.
Added a section telling users that it will automatically submit the form for them without any JavaScript.
Updated the JavaScript hooks. $("#sel").ufm() doesn't exist anymore. We may want to add that back and some point, but currently you can only access the root tag via JavaScript. $("[name=\"subForm\"]") especially doesn't work because there is no HTML element <input name="subForm" />, so we would probably need to leverage the selector tag to make that work.

This page is fine for now. I'm going to close it. We can update it later.


ipfs-unixfs: no_std and alloc -ification for wasm use

Creating this issue following interest expressed in the comments of #222. I don't have much to go on from my previous comment on this topic.

I am finally getting a start on this, and my entry into this got a minor error trying to cargo build an example (#266) . Based on your last comment, I may be going down the wrong path?

Would the use of bytes in ipfs-unixfs hurt this goal, or is it no_std compat or could we somehow be generic over the buffer type? It would of course be nice to seek out less allocation or less copying solutions as well.

As far as I can tell, bytes is no_std-aware and uses core and alloc internally.

Well, that's just excellent. Yeah, need to do some bytes exploration, that might allow a path to much simpler impl and better perf. I'll try to write the thoughts up... Later.


Add option to pull license file path and contents

My organization needs the ability to pull the license file path and contents, similar to how npm license-checker does when using --customPath licenseText. This adds that functionality with the --with-license-file argument.
During testing I also found a missing development dependency, hence the updates to dev-requirements.in (and the re-computed dev-requirements.txt) in a separate commit.

After more testing, this isn't full-baked yet. Will close and resubmit when it is.


Added db password in cassandra-integration-test

Which problem is this PR solving?

Resolves #5643

Description of the changes

Modified the usage function to include the <db_password> argument
In check_arg function , checked the required no. of parameters - <cassandra_version>, <schema_version>, <jaeger_version>, and <db_password>, and passed to apply_schema function and handling it in main.

How was this change tested?

make test

Checklist

[x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md
[x] I have signed all commits
[ ] I have added unit tests for the new functionality
[x] I have run lint and test steps successfully

for jaeger: make lint test
for jaeger-ui: yarn lint and yarn test

@ayushrakesh do we really need to increase the number of arguments passed this will cause the ci to fail and I don't think we should add password in github action
we can simply specify it in like we have done with primaryKeyspace

@hellspawn679 should I use env variable?

@hellspawn679 should I use env variable?

And further passing database password through Github action secrets -> in cassandra CI?

do we really need to increase the number of arguments passed this will cause the ci to fail and I don't think we should add password in github action we can simply specify it in like we have done with primaryKeyspace

+1. There is no need to complicate the CI scripts with ability to override password, if it's needed in the future we can add it. It still should not be required argument to the script, but an optional one.

@yurishkuro @hellspawn679 so what should be done, db password should be passed as an optional parameter then what is the default value? Is it should be directly declared locally in run_integration function?

the docker command starting Cassandra may need to specify password. The same password should be hardcoded in the integration tests. We have two flavors of integration tests:

v1 (plugin/storage/integration) which are driven from code, and the password can be passed from code
v2 (cmd/jaeger/internal/integration) is accessing storage from our main binary, and password can be passed via configuration file cmd/jaeger/config-cassandra.yaml

` jaeger_storage:
cassandra:
cassandra_main:
servers: <IP_ADDRESS>
port: 9042
keyspace: "jaeger_v1_dc1"
connections_per_host: 2
index:
tags: true
logs: true
process_tags: true
password: "your_password_here" # Replace with actual password
  cassandra_archive:
    servers: <IP_ADDRESS>
    port: 9042
    keyspace: "jaeger_v1_dc1"
    connections_per_host: 2
    index:
      tags: true
      logs: true
      process_tags: true
    password: "your_password_here"`

`  jaeger_storage:
cassandra:
cassandra_main:
servers: <IP_ADDRESS>
port: 9042
keyspace: "jaeger_v1_dc1"
connections_per_host: 2
index:
tags: true
logs: true
process_tags: true
password: "your_password_here"
  cassandra_archive:
    servers: <IP_ADDRESS>
    port: 9042
    keyspace: "jaeger_v1_dc1"
    connections_per_host: 2
    index:
      tags: true
      logs: true
      process_tags: true
    password: "your_password_here"`

@yurishkuro like this in cmd/jaeger/config-cassandra.yaml ? And in plugin/storage/integration/cassandra_test.go
using env variable?

As approach - yes. Exact syntax- you need to try.

@yurishkuro Need to review, I have added different passwords for cassandra main and archive in cmd/jaeger/cassandra-config.yaml.

@yurishkuro Please review my revised PR.

no follow-up, closing


Update message content on /for/X pages

As a follow-up to #30016, we should update message screenshots on all the /for/X pages.
We are still finalizing the avatars, but in the meantime we can implement the message content. We can use the same content as now on the following pages, aside from updating the global times to be now-ish:

[ ] /for/education
[ ] /for/events

We will update the content on /for/business and /for/open-source (same content for both).
(Comments with <- are for the issue description, not to be included in the content. :)
Powerful formatting

Stream: general
Topic: Zulip features

Bo Williams: When you hover over a Python code block, you’ll now see a button that opens the code in a playground. Try it out: :playground_slide:
print("Hello world!")

[Reactions: 5 :tada:]

Ariella Drake: $$LaTeX$$ math blocks are nice — I wish I had them in grad school. 😉
Ariella Drake:   math  \phi = 1 + \cfrac{1}{1+\cfrac{1}{1+\cdots}}
Kevin Lin: Interesting! https://www.youtube.com/watch?v=cbj59mVwErg <- previews turned on

Interactive messaging

Stream: general
Topic: presentation feedback

Maxy Stert: Could someone take a look at my presentation draft? presentation
Kevin Lin: Sure! Let’s do a call at <time:2024-05-17T14:30:00-07:00> to go through it.
[Reactions: +1 from Maxy]
Maxy Stert: Join video call. ← at the time mentioned above
Maxy Stert: I got great feedback from @_Kevin Lin!
Maxy Stert:
/poll When we should do a dry run?
[0] Extend tomorrow’s meeting
[0] Next week
Avatars for new content:

@roanster007 This would be a good one to prioritize.

@alya I have the PR ready, could you confirm the paths of the screenshots -- I am having a tough time figuring out if the entire thing is for the "for/education" or "for/events" , etc.


complete drum kit game

Developer Checklist

[x] Followed guidelines mentioned in the readme file.
[x] Followed directory structure. (e.g. ProjectName/{USERNAME}/...yourfiles)

Summary
create a drum kit game using html ,css and js
Screenshot

closes #796


Fix flaky testPreferCopyCanPerformNoopRecovery

Summary of the changes / Why this improves CrateDB
Failed with
java.lang.AssertionError:
Expected: is <2L>
     but: was <2>

Checklist

[x] Added an entry in CHANGES.txt for user facing changes
[x] Updated documentation & sql_features table for user facing changes
[x] Touched code is covered by tests
[x] CLA is signed
[x] This does not contain breaking changes, or if it does:

It is released within a major release
It is recorded in CHANGES.txt
It was marked as deprecated in an earlier release if possible
You've thought about the consequences and other components are adapted
(E.g. AdminUI)

any reason not to backport this?

any reason not to backport this?

I think the test case doesn't exist in 4.4


errors on Win11

I tried to train Nerf-DS dataset on my Win11 platform
but i got this issue

(gaussian_splatting) PS D:\3dgaussians\Deformable-3D-Gaussians> python train_gui.py -s .\data\NeRF-DS\as\ -m output/test1 --eval --is_blender
Optimizing output/test1
Output folder: output/test1 [06/12 08:56:40]
Tensorboard not available: not logging progress [06/12 08:56:40]
Found dataset.json file, assuming Nerfies data set! [06/12 08:56:40]
Reading Nerfies Info [06/12 08:56:40]
[06/12 08:56:44]
Loading Training Cameras [06/12 08:56:44]
Loading Test Cameras [06/12 08:56:49]
Number of points at initialisation :  20256 [06/12 08:56:52]
Training progress:   0%|                                                                     | 0/40000 [00:00<?, ?it/s]Traceback (most recent call last):
File "train_gui.py", line 773, in
gui = GUI(args=args, dataset=lp.extract(args), opt=op.extract(args), pipe=pp.extract(args),testing_iterations=args.test_iterations, saving_iterations=args.save_iterations)
File "train_gui.py", line 134, in init
self.test_step()
File "C:\Users\Lwyy\miniconda3\envs\gaussian_splatting\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "train_gui.py", line 674, in test_step
out = render(viewpoint_camera=cur_cam, pc=self.gaussians, pipe=self.pipe, bg_color=self.background, d_xyz=d_xyz, d_rotation=d_rotation, d_scaling=d_scaling, is_6dof=self.dataset.is_6dof)
File "D:\3dgaussians\Deformable-3D-Gaussians\gaussian_renderer_init_.py", line 63, in render
debug=pipe.debug,
TypeError: new() got an unexpected keyword argument 'debug'

I successfully run on ubuntu. so never mind


MM-22857 Fix lists being unable to start with 0

The code that controls the index on numbered lists wasn't triggering when someone starts a list with 0 because the falsey value was causing the if condition to be fail incorrectly.
Ticket Link
https://mattermost.atlassian.net/browse/MM-22857

Creating a new SpinWick test server using Mattermost Cloud.

Mattermost test server created! :tada:
Access here: https://mattermost-webapp-pr-4974.test.mattermost.cloud

Account Type
Username
Password

Admin
sysadmin
Sys@dmin123

User
user-1
User-1@123

Test server destroyed


Loose requirements

Before you make a Pull Request, read the important guidelines:
Issue Link :link:

 Is this a bug fix or a feature?
 Does it break any existing functionality?

Goals of this PR :tada:

 Why is the change important?
 What does this fix?
 How far has it been tested?

How Has This Been Tested :mag:
Please let us know if you have tested your PR and if we need to reproduce the issues. Also, please let us know if we need any relevant information for running the tests.

 Unit Tests
 Functional Tests

Test Configuration :space_invader:

 Operating System
 Python version

Things to check on :dart:

[ ] My Pull Request code follows the coding standards and styles of the project
[ ] I have worked on unit tests and reviewed my code to the best of my ability
[ ] I have used comments to make other coders understand my code better
[ ] My changes are good to go without any warnings
[ ] I have added unit tests both for the happy and sad path
[ ] All of my unit tests pass successfully before pushing the PR
[ ] I have made sure all dependent downstream changes impacted by my PR are working

Welcome to Codecov :tada:
Once merged to your default branch, Codecov will compare your coverage reports and display the results in this comment.
Thanks for integrating Codecov - We've got you covered :open_umbrella:


Cannot read property 'length' of undefined

Could there be a problem with the driver that would cause this error? I am doing a very simple 'insert' like:
    var db = pmongo(mongodbConfig, ['formDefinition']);
    return db.formDefinition.insert(json);

But this throws an error in the subject line. I am using Mongod 3.2.1 on a Windows 7 OS.
Thank you.

I get this error when I do the following:
            var db = pmongo(mongodbConfig);
            return db.runCommand({ listCollections: 1 }).then(function(collections) {
                return collections;
            });


Catch all routes gives error: Expected "0" to be defined

Version
3.0.2
Reproduction link
https://codesandbox.io/s/y22y9m738v
Steps to reproduce
Hello!
I use nuxt.js with this folder structure.
| - pages
|____ _.vue
|__ order
|____ _id.vue
|__coach
|____ _slug.vue

Which generates:
routes: [{
      path: "/coach/:slug?",
      component: _53d49874,
      name: "coach-slug"
    }, {
      path: "/order/:id?",
      component: _0fe25cac,
      name: "order-id"
    }, {
      path: "/*",
      component: _4a6e1890,
      name: "all"
    }],

and it gives me this error:
[nuxt] Error while initializing app TypeError: Expected "0" to be defined
    at app.js:3259
    at app.js:1391
    at Array.map (<anonymous>)
    at _callee5$ (app.js:1390)
    at tryCatch (commons.app.js:5425)
    at Generator.invoke [as _invoke] (commons.app.js:5659)
    at Generator.prototype.(:3000/anonymous function) [as next] (http://localhost:3000/_nuxt/commons.app.js:5477:21)
    at asyncGeneratorStep (commons.app.js:12)
    at _next (commons.app.js:34)

This does not happen in<EMAIL_ADDRESS>Rolling back with adding this to the package.json solves it for now (if anyone want a solution.)
"resolutions": {
    "vue-router": "3.0.1"
  },

This error is caused because I have a catch all / fallback route. I have tested in multiple Node versions and Nuxt version.
What is expected?
Catch all routes working without error.
What is actually happening?

Related: https://github.com/vuejs/vue-router/issues/724

could be something caused by this https://github.com/vuejs/vue-router/pull/1995

https://codesandbox.io/s/54v0vl1rzn
Can't repro it with pure Vue + VueRouter. Might be an interop issue between Nuxt and the new(est) VueRouter :thinking:


ActiveMQ commodity support

What kind of change does this PR introduce (Bug fix, feature, docs update, ...)?

Feature

What is the current behavior?

No commodity support for ActiveMQ within common-dev-env

What is the new behavior (if this is a feature change)?

Commodity support for ActiveMQ within common-dev-env

Does this PR introduce a breaking change? If so, what actions will users need to take in order to regain compatibility?

No breaking changes; care was taken to ensure that exposed ActiveMQ ports do not conflict with existing RabbitMQ ports
Checklists
All submissions

[x] Have you followed the guidelines in our Contributing document?
[x] Is this PR targeting the develop branch, and the branch rebased with commits squashed if needed?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

New feature and bug fix submissions

[x] Has your submission been tested locally?
[x] Has documentation such as the README been updated if necessary?
[x] Have you linted your new code (using rubocop and markdownlint), and are not introducing any new offenses?

Can you update the commodity list in the readme: https://github.com/LandRegistry/common-dev-env#configurationyml


[Diskussion] use of external processors/tasks

I'd like to ask for your opinion or plans on supporting 3rd party tools like babel in the ui5 build tools.
We're experimenting with using babel in our toolchain to be able to write "modern" JavaScript code but keep IE11 supported at the same time. Until now we did this by doing a babel compile step from src/**/*.js to build/**/*.js and then start grunt-openui5:openui5_preload on the build directory (after copying xml/json/properties there, too). This worked fine.
Having played around with the ui5-cli for some hours now, I really like the simplicity of its interface, but would really like to be able to keep using babel.
I could imagine something like a processors config option in the ui5.yaml which contains a list of additional processors to use in the chain. These could come as npm modules like grunt/gulp tasks do.
Is that somewhere on the roadmap?

I think the Type Extensibility RFC (ui5-tooling PR #4) will also takle scenarios like this. You can imaging creating a custom type for your applications and putting the transpiling in front of the default build steps.
Main reason why that RFC is currently stuck is that we are not really happy with the architecture of the main Builder and the Type-Builders.
I'll close this issue to move discussion to the RFC PR. Feel free to comment either here or in the RFC PR if you have further questions or think that it won't actually solve your use case.


[#596][FOLLOWUP] Index data support offheap read

What changes were proposed in this pull request?
We support to read off heap data in the #806, we support to read index in this pr.
Why are the changes needed?
#596 follow up pr
Does this PR introduce any user-facing change?
No.
How was this patch tested?
GA passed.

Codecov Report

Merging #852 (6357775) into master (6bd8d13) will increase coverage by 2.15%.
The diff coverage is 77.77%.

@@             Coverage Diff              @@
##             master     #852      +/-   ##
============================================
+ Coverage     56.58%   58.73%   +2.15%
- Complexity     2174     2176       +2
============================================
  Files           327      307      -20
  Lines         15977    13619    -2358
  Branches       1262     1263       +1
============================================
- Hits           9040     7999    -1041
+ Misses         6429     5184    -1245
+ Partials        508      436      -72

Impacted Files
Coverage Δ

...e/storage/handler/impl/HdfsShuffleReadHandler.java
50.00% <77.77%> (-1.36%)
:arrow_down:

... and 22 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Merged to master. thanks all.


enable independent releases of soroban-rpc and soroban-cli

What problem does your feature solve?
Currently, RPC and CLI are always versioned together when released. These are different products with different release lifecycles. It's likely that CLI will have a tendency to iterate faster than RPC as soroban matures. However, if CLI-only changes are made, RPC still gets version bumped. This means that semantic versioning can't be properly followed for both of these tools.
What would you like to see?
A release process / CD pipeline that allows us to independently version and release soroban-rpc and soroban-cli.
What alternatives are there?

Move them into separate repos entirely
Keep versioning them together. It's not clear to me what benefit this provides, but all ears if someone has more context

All of the Rust repos in the @stellar org share the same release process. Rather than introduce a new release process for the CLI to support releasing the CLI + RPC independently from within the same repo, I'd like to see it maintain the same release process that the Rust repos use. Rust projects are not trivial to release, and over time having a single release process for all our Rust projects will help us maintain a consistent and secure release process for these projects.

Agreed, I believe the plan is to restructure this repo. CLI will live in its own repo, be renamed from Soroban CLI to Stellar CLI, has a README available at the top level, and has its own release cadence.

I split the RPC into its own crate in this PR https://github.com/stellar/soroban-tools/pull/1065. Which is the first step toward your last point.

Agreed, I believe the plan is to restructure this repo. CLI will live in its own repo, be renamed from Soroban CLI to Stellar CLI, has a README available at the top level, and has its own release cadence.

+1. For the sake of preserving the most git history and git sha's possible, I suggest we keep this repo as the soroban-cli, because this repo started out as the soroban-cli repo. Later on soroban-rpc was moved into this repo.

As of now, we're able to release Soroban RPC separately from CLI.
Please refer to this tracking issue for what's left in terms of clean up


Fix C3 renderers to allow custom data order

@nicolaskruchten
based on https://github.com/andypetrella/spark-notebook/pull/606

Thanks for the PR, and apologies for the delay in responding. I've just pushed a simpler fix for this issue :)


(Enhancement) Add New Feature To see Names Of Courses Enrolled

Is your feature request related to a problem? Please describe.
No, It's not related to any problem. it's just an idea!
Describe the solution you'd like
Please add an option to view enrolled courses via the application. The Current application shows only numbers of courses enrolled
Describe alternatives you've considered
Please add a feature that shows names of courses enrolled in an account
Additional context
This Feature is Not Actually NECESSARY. Add This Feature If You Have Time.

Doesn't it already show the names

Doesn't it already show the names

No

Its Only Shows total Number Of Couses


Consider changing the default console encoding on Windows to UTF-16

In my tests on Windows, .NET Core's console I/O defaults to the user's local codepage. This leads to quite a bit of overhead as .NET's UTF-16 strings have to be converted to the codepage, just for the console to convert them back to UTF-16. On top of this, it means that a lot of characters can't be properly represented, which I discovered by accident when I was unable to enter a euro sign in my program as my locale (932) doesn't have it. There's an easy fix for this, which is to change the console encoding manually, but unless the programmer is doing fuzzing testing, this problem could be hard to discover.
With that in mind, I propose that the default encoding for console I/O on Windows be changed to UTF-16, allowing low-overhead and lossless passing around of strings between the console and .NET programs.
On Mac and Linux, the default already seems to be UTF-8, which a sensible choice on those platforms, and I think Windows should be brought in line with those other two by using a Unicode encoding (UTF-16) for its I/O as well.

This seems reasonable. We'd need to understand it from a compat perspective. Most console apps are expecting -- purely by default, so they may not even realize it -- the user's codepage when reading stdin. Changing the default here might create issues when piping between apps.


Json instances are not properly encoded/decoded

The following condition  defined in src/classes/encoded/data/Json.ph:

if(in_array(Json::class, class_implements($data))) {
    /** @var Json $data */
    return $data->__toString();
}

is causing issues with encoding. which in turn, are causing issues with decoding.
It was originally implemented because I thought it was best to prevent the encoding of a \Darling\PHPJsonUtilities\classes\encoded\data\Json instance to avoid creating deeply nested json strings. My solution was for the new Json instance to simply assign itself the json originally assigned to the Json instance being encoded.
This is a bug, it should be possible to enocde a Json instance as json via another Json instance, and then decode it via a JsonDecoder.
The following integration test should pass:
<?php

/**
 * Purpose of this integration test:
 *
 * Test that a Json instances can be encoded as json via a Json
 * instance and decoded via a JsonDecoder into a Json instance
 * with equal property values.
 */
include(
    str_replace(
        'tests' . DIRECTORY_SEPARATOR . 'integration',
        '',
        __DIR__
    ) .'vendor/autoload.php'
);

use \Darling\PHPJsonUtilities\classes\encoded\data\Json;
use \Darling\PHPJsonUtilities\classes\decoders\JsonDecoder;
use \Darling\PHPTextTypes\classes\strings\Id;

$jsonInstance = new Json(new Id());

$jsonEncodedJsonInstance = new Json($jsonInstance);

$jsonDecoder = new JsonDecoder();

echo "\033[38;5;0m\033[48;5;111mRunning test" . __FILE__ . " \033[48;5;0m";

if(
    $jsonDecoder->decode($jsonEncodedJsonInstance)
    ==
    $jsonInstance
) {
    echo "\033[38;5;0m\033[48;5;84mPassed\033[48;5;0m";
} else {
    echo "\033[38;5;0m\033[48;5;196mFailed\033[48;5;0m";
}

Resolved as of 3c05f27fa3166783af91a96ceea167c10dc1ccce


Bug: can't pass a prop to a stubbed custom element using a .prop modifier

Describe the bug
When I try to stub a custom element, I can not read its props when it's using a .prop modifier in the template as mentioned in the docs: https://vuejs.org/guide/extras/web-components.html#passing-dom-properties
To Reproduce
https://stackblitz.com/edit/github-pttnmy-snzfka?file=src%2Fcomponents%2F__tests__%2FHelloWorld.spec.ts
Expected behavior
Props are readable even with .prop modifier

Hi @wassim-ben-amor
I think this is expected: if you use .prop then you set the property as a DOM property, so it won't be accessible via wrapper.prop(). Instead you will find it on the DOM element:
  it('should read custom elemnt props with .prop modifier', () => {
    const customComponent = wrapper.findComponent(customComponentStub);
    // 👇 access the property on the DOM element directly
    expect(customComponent.element.positionWithPropModifier).toStrictEqual({
      '2': '2',
    });
  });


Time source enhancements

squashed and merged as https://github.com/spring-cloud/spring-cloud-stream-modules/commit/b83f18e399bf692241d1b161e55fbe6e99b6f951


[Bug]: Adding automatic copyright

Give a brief about the bug ✍
The current code contains manual copyright year which needs to be changed every year manually.
What is the expected behavior? 🤔
Adding automatic copyright year reduces manual effort by updating every year automatically, and this makes website look more professional.
Provide step by step information reproduce the bug 📄
Adding a JavaScript currentYear code in the copyright section.
Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @dishathakurata , You can't have another issue before completing the previous one 😀
you already have the following 1 open issues 👀 ! :
#4362

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

@kunjgit Can I work on this now as my previous issue is completed? Please open this issue and assign it to me under GSSoC.


Primary Color Dot in the middle of icon

If the icon has a transparent center, sometimes when you unselect it a dot of color appears in the middle.  The color of the dot appears to be what you set as the spark button's primary color.
normal selected:

normal unselected:

unselected with dot:

This doesn't happen every time a button is selected and unselected, only sometimes, I have no idea why.
Here is the xml:
<com.varunest.sparkbutton.SparkButton
        android:id="@+id/addButton"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@color/white"
        app:sparkbutton_activeImage="@drawable/ic_add_box_active_24dp"
        app:sparkbutton_inActiveImage="@drawable/ic_add_box_inactive_24dp"
        app:sparkbutton_iconSize="25dp"
        app:sparkbutton_primaryColor="#3498db"
        app:sparkbutton_secondaryColor="#f1c40f"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true" />

Here is the java, I didn't do any logic with the button yet:
SparkButton addButton = (SparkButton) view.findViewById(R.id.addButton);
addButton.setChecked(false);

Here is the icon xml:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="@color/add_inactive"
        android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM17,13h-4v4h-2v-4L7,13v-2h4L11,7h2v4h4v2z"/>
</vector>

Hi,
This was really a bug. The circular animation was visible even when no animation was playing. Have fixed this issue in v1.0.1. Kindly check and revert so I can close this issue.

Thanks!

Hi sorry for closing and reopening, I updated to 1.0.1 in my gradle file and its still giving me the dot.

@jonl1096 I had fixed this bug in my pull request.

@lfkdsk Do I have to pull a snapshot to get that then?

@nikhilpanju I have released v1.0.2 which includes @ifkdsk's pull request. Simply update version in dependency and you are good to go.


JSON praser can't take an int128

Bug Report
When giving json parser a json with int127 so does the crystal json.praser return an error:
Unhandled exception: Invalid Int64: "186709961001538790100634132976990" at line 94, column 19 (JSON::ParseException)

Changing this to i128, would that fix it? https://github.com/crystal-lang/crystal/blob/c6e3116df9a44a871740318ebcf486f986b79dad/src/json/pull_parser.cr#L212

Not quire, but it would be one step in that direction. However, it would also be a breaking change.
We also need to represent the type in JSON:Any. And then there's also the problem that Int128 isn't really the end. JSON number can be arbitrarily large.
Maybe something like https://github.com/crystal-lang/crystal/issues/11490#issuecomment-1165610021 would be more appropriate. Or require BigInt for this.

For my use case I wont need bigger than Int128. But yeah that could be a limitation, I am open for all suggestions on how to solve this. One solution could be to let the user (programmer decide), but otherwise, a BigInt is also an option.

Support for large numbers is also incomplete for JSON::Serializable. I think that would be the first and easiest step. It requires some improvements to the parser, which should be easy to implement in a backwards-compatible way. This would already help work with large numbers when the data format is known.
For JSON::Any, it's probably best to represent large numbers as String. Int128 may suffice for your use case, but numbers can be bigger in JSON. This should be backwards-compatible. We'll probably need add an ivar to indicate the original JSON type, though. But that should be fine.
I think this solution should be doable without breaking anything and it's powerful and flexible.

You mean like if I have this number (we say it is bigger than int64::max) 100, we should parse it as "100_int128" if it is possible to fit it as a int128. And that we have something like "100_int_big" for numbers bigger than that. Or do you mean that all numbers bigger than int64 should be parsed as like "100_int"? Or do you mean in a totally different way?

No, I mean when the parser encounters a number that can't be represented as Int64 or Float64, it parses it literally as a string and attaches the original JSON type.
JSON.parse("186709961001538790100634132976990") would return a JSON::Any with raw value "186709961001538790100634132976990" and an additional type field that identifies it as integer.
Then you can parse that value as Int128 or BigDecimal or whatever type you want at call site.
The need for an additional type identifier may be debatable. Its only purpose is to ensure type safety i.e. to make a difference between a JSON string ("186709961001538790100634132976990") and number<PHONE_NUMBER>01538790100634132976990). This is often probably not really necessary.

A JSON string this long could be a hexstring that happens to contain decimal digits only. In this case it would be odd if this is readable as an integer, but fails as soon as there is an /[A-Fa-f]/ somewhere

Sure, it could be anything. It's just a string that contains only digits. It doesn't need to be interpreted as a number.
I think it's a viable option to do this interpretation at the call site. Whether you call as_s or as_i128 (or whatever).
Additional type safety surely wouldn't be bad, but I'm not sure how relevant it is. The line is already quite blurred because of the fact that many JSON parsers actually can't deal with large numbers and thus it's relatively common to serialize large numbers as strings.

If I parse {"a": "123"} into JSON and then get the node for "123" and call as_i, I'd really want that to fail. It's not an int, it's a string.
So I think it would be best to have an extra ivar that tells whether the string is actually a number or not.
Not doing that would also be a breaking change, because code that used to fail could now silently start working fine.

:int_as_string as ivar?

It's probably best to make the ivar hold a generic json_type. We can probably reuse JSON::Token::Kind for this.

If I parse {"a": "123"} into JSON and then get the node for "123" and call as_i, I'd really want that to fail. It's not an int, it's a string.

Yeah, that should never succeed. But that's not really the subject here. We're talking about big numbers that don't fit in Int64, so we'd need new methods for additional types such as Int128 and BigInt. And we could introduce them to work on ordinary string values without breaking anything.

Well I made an attempt, I am unsure if it is how you guys imagined it, but I did some testing and it doesn't work for numbers that is int64 (or lower) or strings.

If we are only concerned with JSON::Serializable, we could easily circumvent JSON::PullParser's typed interface by relying on #read_raw inside a converter directly:
require "json"
require "big"

module IntConverter(T)
  def self.from_json(pull : JSON::PullParser) : T
    {% raise "Expected T to be a non-union integer type, got #{T}" unless T < Int && T.union_types.size == 1 %}
    pull.raise "Expected #{JSON::PullParser::Kind::Int} but was #{pull.kind}" unless pull.kind.int? # pull.expect_kind :int
    T.new(pull.read_raw)
  end

  def self.to_json(value : T, json : JSON::Builder) : Nil
    {% raise "Expected T to be a non-union integer type, got #{T}" unless T < Int && T.union_types.size == 1 %}
    json.raw(value.to_s)
  end
end

class Foo
  include JSON::Serializable

  @[JSON::Field(converter: IntConverter(Int128))]
  getter x : Int128

  @[JSON::Field(converter: IntConverter(UInt64))]
  getter y : UInt64

  @[JSON::Field(converter: IntConverter(BigInt))]
  getter z : BigInt
end

f = Foo.from_json <<-JSON
{
  "x": #{Int128::MIN},
  "y": #{UInt64::MAX},
  "z": #{10.to_big_i ** 50}
}
JSON
f         # => Foo(@x=-170141183460469231731687303715884105728, @y=18446744073709551615, @z=100000000000000000000000000000000000000000000000000)
f.to_json # => %({"x":-170141183460469231731687303715884105728,"y":18446744073709551615,"z":100000000000000000000000000000000000000000000000000})

Then the PullParser interface improvements become relevant only to JSON::Any. Ditto for floats and YAML.


Error resolving dependencies when upgrading to v10

While trying to upgrade to v10 I am encountering issues in xCode.

Failed to resolve dependencies Dependencies could not be resolved because root depends on 'maplibre-gl-native-distribution' 6.5.4..<7.0.0 and root depends on 'maplibre-gl-native-distribution' 5.13.0.

I followed the installation steps here:
https://github.com/maplibre/maplibre-react-native/blob/main/ios/install.md#ios-installation
Changed the post_install to $RCTMLN.post_install(installer)
and even added the following to the Podfile:
$RCTMLN_SPM_Spec = {
  url: "https://github.com/maplibre/maplibre-gl-native-distribution",
  requirement: {
    kind: "upToNextMajorVersion",
    minimumVersion: "6.5.4"
  },
  product_name: "MapLibre"
}

Any ideas what could be going on?
Seems like something from the previous version is still hanging around somehow?
Environment

Platform: iOS
Emulator or Simulator: no
Development OS: macOS
@maplibre/maplibre-react-native Version: "10.0.0-alpha.26"
react-native Version: "0.74.2"

I fixed it by following these steps and setting the exact version to the one in the error.
https://i.sstatic.net/nZ4vf.jpg
Still a bit weird it was there after removing and reinstalling.

I am now getting the following error though:

@KiwiKilian do you have any ideas on this one?

@KiwiKilian I keep getting this one in particular. Not sure how to solve it. I uninstall maplibre and remove all references, then reinstall and get this every time.

Please provide a minimal reproduction of your problem. Otherwise I still can only suspect your project setup.


Render issues after upgrading to Hugo v0.111.3

Describe the bug
After upgrading to Hugo v0.111.3 I'm no longer able to render pages. I get a 404 Page Not Found error in all pages, except some XML pages.
To Reproduce

Call hugo server -D
Navigate to http://localhost:1313/

Expected behavior
Pages to render seamlessly
Desktop:

OS: Mac OS
Browser: Safari
Version of the Theme: v1.12.0
Version of Hugo: Hugo v0.111.3

Additional context
I also get the following warnings in the terminal with the --debug flag active:
Start building sites …
hugo v0.111.3+extended darwin/arm64 BuildDate=unknown
INFO 2023/04/14 00:49:53 syncing static files to /
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "section": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "taxonomy": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "page": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "page": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "page": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "home": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "term": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "taxonomy": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
WARN 2023/04/14 00:49:53 found no layout file for "HTML" for kind "page": You should create a template file which matches Hugo Layouts Lookup Rules for this combination.
DEBUG 2023/04/14 00:49:53 Render XML for "sitemap" to "/sitemap.xml"
DEBUG 2023/04/14 00:49:53 Render page Call Me Pedro to "/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Tags to "/tags/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Categories to "/categories/index.xml"
DEBUG 2023/04/14 00:49:53 Render page AirTag to "/tags/airtag/index.xml"
DEBUG 2023/04/14 00:49:53 Render page CommandLineTools to "/tags/commandlinetools/index.xml"
DEBUG 2023/04/14 00:49:53 Render page DevOps to "/tags/devops/index.xml"
DEBUG 2023/04/14 00:49:53 Render page DIY to "/tags/diy/index.xml"
DEBUG 2023/04/14 00:49:53 Render page 3DPrinting to "/tags/3dprinting/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Posts to "/posts/index.xml"
DEBUG 2023/04/14 00:49:53 Render page FlipperZero to "/tags/flipperzero/index.xml"
DEBUG 2023/04/14 00:49:53 Render page NetworkAnalysis to "/tags/networkanalysis/index.xml"
DEBUG 2023/04/14 00:49:53 Render page NetworkX to "/tags/networkx/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Productivity to "/tags/productivity/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Programming to "/tags/programming/index.xml"
DEBUG 2023/04/14 00:49:53 Render page PLA to "/tags/pla/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Python to "/tags/python/index.xml"
DEBUG 2023/04/14 00:49:53 Render page PyVis to "/tags/pyvis/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Scapy to "/tags/scapy/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Security to "/tags/security/index.xml"
DEBUG 2023/04/14 00:49:53 Render page SoftwareDevelopment to "/tags/softwaredevelopment/index.xml"
DEBUG 2023/04/14 00:49:53 Render page Wallet to "/tags/wallet/index.xml"
DEBUG 2023/04/14 00:49:53 Render page WiFiSecurity to "/tags/wifisecurity/index.xml"

                   | EN
-------------------+-----
  Pages            | 22
  Paginator pages  |  0
  Non-page files   |  0
  Static files     |  6
  Processed images |  0
  Aliases          |  0
  Sitemaps         |  1
  Cleaned          |  0

Built in 21 ms
Watching for changes in (redacted)/{archetypes,assets,content,data,layouts,static}
Watching for config changes in (redacted)/config.toml, (redacted)/go.mod
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at http://localhost:1313/ (bind address <IP_ADDRESS>)
Press Ctrl+C to stop

I rebooted and now everything works. I don't know why this happened in the first place. I will reopen the ticket if I get this bug again.


First Release

Changes Unknown when pulling 30a6eaf8cb65590268fc08593d8b7adfe7cb3796 on rc/v0.1.0 into ** on release**.


feat(labware-library): change test protocol to api v2

change test labware test protocol to use api v2
closes #4539

@IanLondon ok, i'll fix the indentations


How to Handle Permission callback in different method.

Currently I have one method which needs Contacts and Storage permission both. I want to handle its callback and show snackbar message.
I have done like this:
  @NeedsPermission({Manifest.permission.READ_CONTACTS,
            Manifest.permission.WRITE_CONTACTS,
            Manifest.permission.GET_ACCOUNTS,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE})
    void importContacts(){
        Intent newIntent = new Intent(ActivitySplashScreen.this, ContactSyncService.class);
        newIntent.setAction(Config.STARTFOREGROUND_SYNC_ACTION);
        startService(newIntent);
    }

now i want callbacks differently for both permission so i have done like this:
  @OnPermissionDenied({Manifest.permission.READ_CONTACTS,
            Manifest.permission.WRITE_CONTACTS,
            Manifest.permission.GET_ACCOUNTS})
    void onContactsPermissionDenied() {
        Snackbar.make(mainLayout, getResources().getString(R.string.permission_contacts_denied),
                Snackbar.LENGTH_INDEFINITE)
                .setAction(getString(R.string.ok), new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        ActivitySplashScreenPermissionsDispatcher.importContactsWithCheck(ActivitySplashScreen.this);
                    }
                })
                .show();
    }

    @OnPermissionDenied({Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE})
    void onStoragePermissionDenied() {
        Snackbar.make(mainLayout, getResources().getString(R.string.permission_storage_denied),
                Snackbar.LENGTH_INDEFINITE)
                .setAction(getString(R.string.ok), new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        ActivitySplashScreenPermissionsDispatcher.importContactsWithCheck(ActivitySplashScreen.this);
                    }
                })
                .show();
    }

But it is not working. is there any other way to do this?
If i have given above permission which are in different permission group and if i allow one permission and deny second permission then when i call same method it asks for both permission instead of just asking second permission.

AFAIK, there is no such way. You need to split NeedsPermission or combine OnPermissionDenied into one method.

@RajeshJadav Exactly. Please split permissions definition!


Enforce changesets in PRs (excluding allowedPackageJsonDependencies)

This adds a CI check that verifies that PRs contain changesets if they modify packages, ignoring PRs which only modify allowedPackageJsonDependencies.txt.
🦋  error Some packages have been changed but no changesets were found. Run `changeset add` to resolve this error.
🦋  error If this change doesn't need a release, run `changeset add --empty`.

No, it isn't excluded and gets full changelogs and tagging:

https://github.com/microsoft/DefinitelyTyped-tools/blob/master/packages/publisher/CHANGELOG.md
https://github.com/microsoft/DefinitelyTyped-tools/releases/tag/%40definitelytyped%2Fpublisher%400.0.185

To exclude it, I could exclude it in the changeset config (and probably delete its changelog and version number). https://github.com/changesets/changesets/issues/1093

Confusingly, retag is not private. That is probably an oops from a while ago...

I feel like publisher (and retag) don’t need to be version managed, but I'm fine either way

I agree. I'll send a different PR to fix that up.

I didn't read the linked thread in full; apparently ignore doesn't achieve what I hoped. But, I can at least make retag private.


Add an option to disable checksumming if possible

(based on feedback from previous PR #59 )
This allows disabling checksumming on memory reads, writes, and MMIO traces by setting the DISABLE_CSUMS environment variable.
To ensure compatibility, the checksum disabling is only used if both sides agree on using it; this is determined by feature flags that are exchanged during the initial REQ_NOP sent by boostrap_port:

The checksum algorithm used for NOP messages is not modified by this feature so feature detection will work in all cases
If an older version of m1n1 is used, it will ignore the feature flags in the NOP message and return 0 in the reply message, so no features will be enabled.
If an older version of the proxy is used, it will send in its NOP message; m1n1 will disable all features and return 0 in the reply message.

I like redefining the iface-level NOP command as a feature exchange, it makes perfect sense :)

Also, I'm thinking I want this to be always disabled for UART (checksums always enabled). One way to do it would be for the proxy side to always reject the feature if the current iodev is the UART one. Then the Python side can safely request it by default, and we probably don't even need the environment variable.

I replaced the DISABLE_CSUMS environment variable check with a IODEV_UART check on the M1’s side, as you suggested, so the checksum disabling is now automatic. That was easier to implement than I though it would be :-)


Make copy link to sidebar

I have added additional tests and fixed some errors that are showing during the test suite execution.
PR: https://github.com/apache/yunikorn-web/pull/193

This is pulled to the upstream master branch - version 1.6.0


Can't set Response.StatusCode to 401 in JwtBearerEvents

I have following code in my Startup.Auth.cs partial:
        app.UseJwtBearerAuthentication(new JwtBearerOptions
          {
              IncludeErrorDetails = true,
              AutomaticAuthenticate = true,
              AutomaticChallenge = true,
              TokenValidationParameters = tokenValidationParameters,
              Events = new JwtBearerEvents()
              {
                  OnAuthenticationFailed = c =>
                  {
                      c.HandleResponse();
                      c.Response.StatusCode = xxx;
                      c.Response.ContentType = "text/plain";
                      return c.Response. WriteAsync("Hello an error!");
                  }
              }
          });

Goal is to intercept unauthorized requests and return 401 code instead of login form for API requests.
Problem is, when i set c.response.statuscode to 401, i get runtime exception
System.InvalidOperationException: 'StatusCode cannot be set, response has already started.'
Every other response works (200, 201, 202, 300, 400, 402, 403... etc.. tested with postman) except one i need.

@onedevteam can you show us the entire stack trace? This is definitely quite odd. It would be even more helpful if you can upload your app to GitHub so we can see what's going on.

Can't post whole project.
I'm following stormpath tutorial to implement jwt.
After some research, i managed to make it work by returning     return Task.FromResult(c);. When i return  c.Response. WriteAsync, OnAuthenticationFailed handler execute's 3 times and crash on 3rd attempt.
Here's exception:
{System.ObjectDisposedException: The response has been aborted due to an unhandled application exception. ---> System.InvalidOperationException: StatusCode cannot be set, response has already started.
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.ThrowResponseAlreadyStartedException(String value)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.set_StatusCode(Int32 value)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.<HandleUnauthorizedAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.<HandleAutomaticChallengeIfNeeded>d__57.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.<FinishResponseOnce>d__55.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.<OnStartingCallback>d__54.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.<FireOnStarting>d__177.MoveNext()
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.ThrowResponseAbortedException()
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.<InitializeResponseAwaited>d__192.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.<WriteAsyncAwaited>d__183.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.<HandleAuthenticateAsync>d__1.MoveNext()}

@onedevteam thanks for posting the stack trace.
@Tratcher any ideas?

Ok, that makes a bit more sense. The endpoint/controller has executed and set a 401 (with a body) and returned. As the pipeline unwinds then the middleware calls

FinishResponseOnce: https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNetCore.Authentication/AuthenticationHandler.cs#L137
HandleAutomaticChallengeIfNeeded: https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNetCore.Authentication/AuthenticationHandler.cs#L156
Sees the 401 calls HandleUnauthorizedAsync: https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNetCore.Authentication.JwtBearer/JwtBearerHandler.cs#L186
Which sets Response.StatusCode = 401 (again): https://github.com/aspnet/Security/blob/dev/src/Microsoft.AspNetCore.Authentication.JwtBearer/JwtBearerHandler.cs#L212

Bug: HandleAutomaticChallengeIfNeeded should check Response.HasStarted before calling HandleUnauthorizedAsync.
It's your OnAuthenticationFailed event that sets the 401, correct?
Workarounds:
A) OnAuthenticationFailed should not write to the response body.
B) OnAuthenticationFailed should call HttpContext.Authentication.Challenge("JwtBearer") rather than just setting a 401.
C) Disable JwtBearerOptions.AutomaticChallenge.

@Tratcher  It's your OnAuthenticationFailed event that sets the 401, correct?
Yes. I have checked it in step-by-step debugger, and on first pass, before i set it to 401, value of c.Response.StatusCode is 200. Then, on second pass, it's 401 (set manualy, in 1st pass), and in 3rd pass it throws an error...
I also tested with JwtBearerOptions.AutomaticChallenge, off, and it passed.

Hi, we just tried to analyse a similar issue today.
The root of the problem is in Security/src/Microsoft.AspNetCore.Authentication.Cookies/Events/CookieAuthenticationEvents.cs where a method line #104 tries to guess wether the request is AJAX or not.
Since the MVC and WebAPI request now follow the same path, this (I imagine legacy) class catches and modifies the response just as it were a normal web request.
Maybe you should remove the cookie middleware from your pipeline?

Closing for the following reasons:

The response body should not be written to from an auth event because there is no way to know what code will run after that - such as some other code that also wants to set a header, status code, etc.
With the mega-change that @HaoK is working on, much of this behavior will be changing (such as no automatic challenges caused by a 401 status code), so this failure shouldn't happen anymore anyway.

@Eilon
I want to return the error information by using response body when server fails to authenticate the jwt, what should I do?

@Zonciu we don't track closed issues, please open a new issue and describe your scenario.


IAvroRows serializedBinaryRows typedef is a Buffer but defined as (Uint8Array|string|null)

Avro's Type.decode expects a Buffer and serializedBinaryRows is a Buffer, but it's defined as (Uint8Array|string|null) which shows up as a type issue.
Presumably either the typedef is missing, or serializedBinaryRows is wrong.

This is a generated API.  I'm not familiar with the Avro library you're using, but this sounds like a case where you need to wrap the serialized row data in a buffer before passing it to the Avro decode?

This is a generated API.  I'm not familiar with the Avro library you're using, but this sounds like a case where you need to wrap the serialized row data in a buffer before passing it to the Avro decode?

This is the same library your examples are using but not the actual issue.
The typedef for the property is different from the type of the property. It's defined as UInt8Array in this library, but it is a Buffer when executing.

To be clear: https://github.com/googleapis/nodejs-bigquery-storage/blob/b2aa964153b048b550454f835f5aa6dd825a5362/protos/protos.d.ts#L440
This property is a Buffer when executing not a UInt8Array.
So this https://github.com/googleapis/nodejs-bigquery-storage/blob/f7ba708bab75f24b410dd3d7f213977e75a5a0e5/samples/quickstart.js#L117 will get highligted as passing the wrong type because avro.decode expects a Buffer not a UInt8Array which it isn't.

Status: exploring potential annotation changes via internal issue 277340507.

Those typescript annotations are generated by protobufjs and we apply some fixes in our gax-nodejs tools. I've just opened this PR to apply the fix in our tool as it's faster for us to land those kind of improvements.
https://github.com/googleapis/gax-nodejs/pull/1652