See how many bees are in a bee nest/hive in the inventory

There are other mods for this, such as Beenfo, but that one in particular adds brand new interfaces that feel completely unnecessary when simply adding a Bees: 0/1/2/3 lore text line to the bee nest/hive items themselves would make much more sense. This is assuming that adding lore text to the items could be done on the client side only. I would like this feature to work exclusively on the client side so that it may be used on vanilla servers.~

I've received an overwhelming number of feature requests over the week and they are filling up the issue tracker and making it difficult to keep track of what is even going on. I've enabled Discussions on the repo as a new location for feature requests. Unfortunately, GitHub has "temporarily" disabled the ability to convert issues to discussions, so I'm closing all feature request issues. However, I'm tracking all the closed issues in a Project board; despite being closed, they're still on my radar on the board. All new feature requests must go to Discussions. Feature requests opened as issues going forward will be closed.

I've received an overwhelming number of feature requests over the week and they are filling up the issue tracker and making it difficult to keep track of what is even going on. I've enabled Discussions on the repo as a new location for feature requests. Unfortunately, GitHub has "temporarily" disabled the ability to convert issues to discussions, so I'm closing all feature request issues. However, I'm tracking all the closed issues in a Project board; despite being closed, they're still on my radar on the board. All new feature requests must go to Discussions. Feature requests opened as issues going forward will be closed.


provide a way to extract the table of content

Right now, this package allows to generate headings with ids  for markdown content and this works great !
Often for long document, you like to generate a table of content, with anchor links to those ids.
The issue is that I have found that hard to generate a TOC data set when using this plugin.
I was thinking about opening a PR to provide such function with the lexer output as argument :
const convertRaw = (raw) =>
  raw
    .toLowerCase()
    .trim()
    .replace(/<[!\/a-z].*?>/gi, '');

export function extractHeadings(lexer, { prefix = '' } = {}) {
  const slugger = new GithubSlugger();
  const headings = lexer.filter((x) => x.type === 'heading');

  return headings.map((heading) => {
    const raw = heading.raw); // doesn't work
    const raw = heading.text); // doesn't work
    const raw = heading.tokens.reduce((acc, token) => `${acc}${token.raw}`, ''); // doesn't work

    const slugged = slugger.slug(convertRaw(raw));
    console.log(raw, slugged, heading);
    return {
      raw: heading.raw,
      level: heading.depth,
      text: heading.text,
      id: `${prefix}${slugged}`,
    };
  });
}

It'd be great to have a way to acess the same raw as the one provided with the renderer. Wdyt ?

To avoid having to create each slug twice, since that id isn't sent to the renderer, we could keep the ids in an array and export a function that provides them.
So a user could write:
import { marked } from "marked";
import { gfmHeadingId, getHeadingList } from "marked-gfm-heading-id";

marked.use(gfmHeadingId());
marked.use({
  hooks: {
    postprocess(html) {
      const headings = getHeadingList();
      ...
    }
  }
});

This is a good alternative @UziTech ! I've opened a PR !


Bug: When user presses ArrowUp when on last item, the first item is highlighted

...rather than the second-to-last one

Released in v4.2.2


(docs) Record version for new records

According to docs : http://www.orientechnologies.com/docs/last/orientdb.wiki/Concepts.html#record-version

When a record is created, the version is zero.

Looks like the version is set to 1 for new records
> create class Foo extends V

Class created successfully. Total classes in database now: 15

> insert into Foo set name = 'bar'

Inserted record 'Foo#14:0{name:bar} v1' in 0.005000 sec(s).

> select @version from Foo
----+------+-------
#   |@CLASS|version
----+------+-------
0   |null  |1
----+------+-------

1 item(s) found. Query executed in 0.004 sec(s).

PS: tested against Odb 2.0.3

Version can be 1 or higher depending on different cases. Removed that from docs. Thanks.


Feature/endpoint testing

Test Endpoint
Location

tests/test_external.py

Description

test rental endpoint to check that is can be accessed correctly and that the schema is correct

Committed Feature

test rental endpoint to ensure users can access rental info for their desired city.

 DS will create endpoints for both web and iOS, utlizing the new data sets.

 DS will create endpoints for both web and iOS, utlizing the new data sets.


[Feature Request] Using pgx instead of pq

Tell us about your feature request
Looking at the README, it says that pq and mattn/sqlite3 are the supported database drivers, but I do not find these to be the best options for these databases.
For postgres:

They literally say that they are only in maintenance mode, probably heading into the same route that gorilla was in a few months ago. I think a better choice would be to switch it to have users integrate and use pgx instead!

For sqlite

Using mattn's driver is a great choice, but the driver ships with cgo, which can present scary errors that can be difficult to solve. I feel that using modernc.or/sqlite would be best, since they do not use cgo for the library, and only use it for testing the library.

Disclaimer

[X] I agree

@anthonyg876 I believe we just recently changed to pgx.
As for SQLite, that is pretty cool, not a bad idea. Do you mind closing this issue and opening a new one specific for SQLite driver?

@Melkeydev Yeah, that works out, when I read the README, it mentioned that it used pq.


Dynamic invocations incorrectly access "call" field in VM, dart2js, dart2wasm

The test method_must_not_be_field_test checks that dynamic invocations do not implicitly access the field "call": https://github.com/dart-lang/sdk/blob/0c32c7fc6295f329b8d8d74f640bdd77b0058c13/tests/language/call/method_must_not_be_field_test.dart#L13-L28
This test was introduced in https://dart-review.googlesource.com/c/sdk/+/42020, and it currently fails in VM, dart2js (at least on dartpad), and dart2wasm.
This test is in sync with the static call semantics when the receiver has a "call" field but not a method, e.g.
class C {
  void Function() call = () {};
}

main() {
  C()();
}

Fails with compile-time error:
test.dart:6:6: Error: Cannot invoke an instance of 'C' because it declares 'call' to be something other than a method.
 - 'C' is from 'test.dart'.
Try changing 'call' to a method or explicitly invoke 'call'.
  C()();
     ^

Seems like a change in the semantics that snuck under the radar. @eernstg can you confirm that this was incorporated into the spec?

Fixing this will probably require kernel-level changes. Currently if I compile expression d() where d : dynamic, this is the kernel I get:
node=DynamicInvocation(DynamicAccessKind.Dynamic,d.call())
node.receiver=VariableGetImpl(d)
node.name=call
node.arguments=ArgumentsImpl(())

This is the exact same kernel I get when I compile d.call(), which has different runtime semantics than d(). So I can't distinguish the Dart expr d() from d.call(), they're both compiled to the same kernel.
cc @chloestefantsova

I'm tentatively adding area-front-end.

Actually I am puzzled why d.call() is okay and d() is not. That is:

Inconsistent.
Handling d.call() for field case would require just as much machinery as d() does.

So for these reasons I would have expected d.call() and d() to both throw in runtime, while (d.call)() should work.

@mraleph wrote:

[confirm that] this was incorporated into the spec?

The current language specification says 'method', not 'member' or 'method or getter':
If $o$ has a method named \CALL{}
the following ordinary method invocation is evaluated,
and its result is then the result of evaluating $i$:
\code{$f$.call<$A_1, \ldots,\ A_r$>($a_1, \ldots,\ a_n,\ x_{n+1}$: $a_{n+1}, \ldots,\ x_{n+k}$: $a_{n+k}$)}.

This text occurs without changes back to 2018-09-17 (and the change at that time was a complex reorganization, which means that this particular rule might have been the same also before that time, but I didn't try to verify that).
The main rationale is that it avoids infinite loops during the method lookup step, but also that the "callable object" feature should be rather simple and limited (as opposed to an approach where we try to "do what i mean" in as many different situations as possible). Here's the loop:
class C { get call => this; }
void main() => (C() as dynamic)();

This runs, and it shows (as already mentioned in earlier comments) that the actual behavior (in dart-pad, based on SDK 2.19.2) is a dynamic error:
Uncaught RangeError: Maximum call stack size exceededError: RangeError: Maximum call stack size exceeded

This raises some questions:

Is it a non-trivial breaking change to stop supporting dynamic invocations via a getter named call (and raising a dynamic error instead)? In that case we might want to change the specification to include that feature, and leave the implementations unchanged. Otherwise we'd need a breaking change process.
How important is it that statically checked and dynamic invocations have the same semantics? If we do support call getters for dynamic invocations, should we then also support them for statically checked invocations?
Optimization opportunities: Would the specified semantics (with no support for call getters) allow for invocations in a more general sense to be simpler and faster? In particular, would there be anything to gain for dynamic function invocations? ... for all function invocations? In that case we might prefer to endure the breakage.

/cc @stereotype441

I created https://github.com/dart-lang/language/issues/3482 to manage the discussion about changing the specification.

We should consider a long-time failing test a process failure.
The specification has been this way for years, as far as I remember since Dart 2.0.
No implementation has changed, even though they're not following the specification, there is a test showing it, and an open issue stating so.
That should lead to either the implementations fixing the bug, or a renewed discussion about changing the spec, until we reach a print where they all agree, and implementations match specification.
Instead we got crickets. Maybe nobody really cared, because everything that should work worked, and then a little more which shouldn't, and we had bigger and more urgent things to do anyway.
That's why it's a process failure. Nobody had the job of following up and taking the next step, and everybody could just do something else.


Duplicate imports from RSS feed

When setup to poll an RSS feed > to topic Id:

duplicate posts will sometimes be added.
at times, duplicates will be pulled one after another, other times the duplicates will appear more sporadically.

I find that whenever a feed is updated, the first item of last time is always recreated as a new post...

Fixed here https://github.com/vinkashq/discourse-autobot/commit/9c5a71541a693da4c0f65a1f01a5e9b587a4b1f7


GitHub action to add "status: needs triage" label to new issues

This does what it says.  The YAML code is based on the example here.

I'll have to merge this without review in order to test it.

I tested this in https://github.com/input-output-hk/plutus/issues/5044 and it appeared to work.  A quick retrospective review might be worthwhile though.

The main alternative that I'm aware of is that you can add labels to issue templates so that they are created with those labels. The advantage is that you don't need an action, but the disadvantage is that if someone clicks "open a blank issue" it won't work.


Secrets not showing up in UI

Internal reference: SURE-4000, SURE-4035
Issue description:
Local or external users, even as Cluster Owner, are not able to see secrets in the UI of a downstream cluster, but they are able to run kubectl in UI and see the secrets. Different browsers tested.
Business impact:
No impact.
Troubleshooting steps:
Screenshot evidence of the secrets not being showed up in UI at the same time of kubectl in UI are able to list the secrets.
Developer browser tool screenshots and HAR file collected.
Repro steps:
Attempts to reproduce in a lab not possible but the users were able to do it in their environment.
access the UI, select cluster, select storage/secrets
Workaround:
Is workaround available and implemented? YES
What is the workaround: Access the old UI, https://URL/g
Actual behavior:
Secrets not being shown up in UI for one downstream cluster
Expected behavior:
Being able to see the secrets in UI from a specific downstream cluster

Further info: Secrets are not being shown up in UI when missing field "username" for basic-auth secret type. If you have even just one secret in this scenario, any Secrets in the namespace is showed up, even the other secrets which have Username field.

I think the bug is in detail/secret.vue and models/secret.js - the base64Decode function should be improved to work when the value supplied is undefined

Test Environment:
Rancher version: v2.6-head 4a5a926
Rancher cluster type: HA
Docker version: 20.10
Downstream cluster type: RKE2 node driver

Testing:
Tested this issue with the following steps:

Provision a downstream RKE2 cluster
Check secrets are showing in UI

Result - Pass
Secrets are now showing in the UI


Import your TechEd BUILD project into SAP Web IDE

Tutorial URL: https://developers.sap.com/tutorials/teched-2017-build-import.html
Hello,
I have cloned a prototype in BUILD, but when I try to import in Web IDE, it says that I don't have a prototype. What should I do to resolve this issue? Should I make changes to the cloned project from BUILD?

Hello,
Apologies for the delay. There were many updates to the SAP Cloud Platform and SAP Web IDE. This feature was one of the items removed during the update, so unfortunately you cannot proceed this way any longer which is why the tutorial is no longer available.
As a workaround if you are interested in still importing a prototype from BUILD into SAP Web IDE, from the prototype you can download a zip and import using the Import feature in SAP Web IDE.
Again apologies and thank you for your patience.
Meredith


Parameter Doubts

Few doubts on parameters :
Q1. Here, what is the difference between max_steps, train_times, and episode_train_times? Can you please define them?
Q2. What happens during the warmup stage?  ( Is there any issue if we keep warmup step=0)

A1. max_steps means 'max length for episode', default 40 means 40 * 5 strokes to paint an image.
train_times means model the number of  update iterations during training.
episode_train_times means the number of model update iterations after every batch of finished episode.
Q2. In warmup process, we just collect training examples to fill replay memory buffer, so that at the beginning of training, the training samples are relatively rich. I think the lack of this process may slightly affect the performance of the model.


frei0r: 1.7.0 -> 1.8.0, and fix/add cudaSupport

Description of changes
Fixes #226374
This updates frei0r to 1.8.0 and fixes building with config.cudaSupport = true, that update to 1.8.0 alone triggers a few rebuilds, see nixpgks-review:
Result of nixpkgs-review run on x86_64-linux 1

1 package marked as broken and skipped:

obs-studio-plugins.obs-hyperion

7 packages failed to build:

audiobookshelf
manim
obs-studio-plugins.obs-ndi
pixinsight
python310Packages.dm-sonnet
python310Packages.tensorflow-datasets
tone

62 packages built:

MIDIVisualizer
arcanPackages.all-wrapped
arcanPackages.arcan
arcanPackages.arcan-wrapped
arcanPackages.cat9-wrapped
arcanPackages.durden-wrapped
arcanPackages.ffmpeg
arcanPackages.pipeworld-wrapped
arcanPackages.prio-wrapped
arcanPackages.xarcan
corrscope
ffcast
ffmpeg_4-full
ffmpeg_6-full
flowblade
frei0r
handbrake
haruna
hikounomizu
imagination
jellyfin
jellyfin-ffmpeg
libsForQt5.kdenlive
libsForQt5.mlt
libsForQt5.soundkonverter
liquidsoap
mlt
obs-studio
obs-studio-plugins.advanced-scene-switcher
obs-studio-plugins.droidcam-obs
obs-studio-plugins.input-overlay
obs-studio-plugins.looking-glass-obs
obs-studio-plugins.obs-backgroundremoval
obs-studio-plugins.obs-gstreamer
obs-studio-plugins.obs-livesplit-one
obs-studio-plugins.obs-move-transition
obs-studio-plugins.obs-multi-rtmp
obs-studio-plugins.obs-nvfbc
obs-studio-plugins.obs-pipewire-audio-capture
obs-studio-plugins.obs-source-record
obs-studio-plugins.obs-vaapi
obs-studio-plugins.obs-vkcapture
obs-studio-plugins.wlrobs
ocamlPackages.frei0r
olive-editor
peek
printrun
python310Packages.mlt
python310Packages.moderngl-window
python310Packages.pydub
python310Packages.pyglet
python310Packages.pytmx
python311Packages.mlt
python311Packages.moderngl-window
python311Packages.pydub
python311Packages.pyglet
python311Packages.pytmx
restream
shotcut
sunshine
synfigstudio
video-trimmer

The relevant output for the failed builds doesn't seem to be related to this change:

Log excerpt of failing packages
error: builder for '/nix/store/n04w7wl62g4mnvv1wcf735pi92pmxxwy-Install_NDI_SDK_v5_Linux.tar.gz.drv' failed with exit code 1;
       last 10 log lines:
       >
       >   https://ndi.tv/sdk/
       >
       > Once you have downloaded the file, please use the following command and
       > re-run the installation:
       >
       >   $ nix-prefetch-url file://$PWD/Install_NDI_SDK_v5_Linux.tar.gz
       >
       > ***
       >
       For full logs, run 'nix log /nix/store/n04w7wl62g4mnvv1wcf735pi92pmxxwy-Install_NDI_SDK_v5_Linux.tar.gz.drv'.
error: 1 dependencies of derivation '/nix/store/awin4niaza38sl0rb7j317b80wgki7fv-ndi-5.5.2.drv' failed to build
error: builder for '/nix/store/66ss7336hxlmfj8bxnskxzpg16fm40g2-python3.10-tensorflow-datasets-4.8.2.drv' failed with exit code 1;
       last 10 log lines:
       > Processing ./tensorflow_datasets-4.8.2+nightly-py3-none-any.whl
       > Requirement already satisfied: etils[enp,epath]>=0.9.0 in /nix/store/3znsyrry5z8rj6lzaffyyyrnlq9dgknk-python3.10-etils-1.1.0/lib/python3.10/site-packages (from tensorflow-datasets==4.8.2+nightly) (1.1.0)
       > Requirement already satisfied: wrapt in /nix/store/fldmgs8bxrbx98zf7vgqnm56w2k47dyl-python3.10-wrapt-1.14.1/lib/python3.10/site-packages (from tensorflow-datasets==4.8.2+nightly) (1.14.1)
       > Requirement already satisfied: click in /nix/store/c424f8r8i3n7zyd11vzg59yw0d5xf0vn-python3.10-click-8.1.3/lib/python3.10/site-packages (from tensorflow-datasets==4.8.2+nightly) (8.1.3)
       > Requirement already satisfied: toml in /nix/store/fk607z2x9v64g38hy02x3i4byizaj645-python3.10-toml-0.10.2/lib/python3.10/site-packages (from tensorflow-datasets==4.8.2+nightly) (0.10.2)
       > Requirement already satisfied: dill in /nix/store/qrhxh40c2cg581bcvpx3c83pb9d0mc0n-python3.10-dill-0.3.6/lib/python3.10/site-packages (from tensorflow-datasets==4.8.2+nightly) (0.3.6)
       > Requirement already satisfied: numpy in /nix/store/khm35qfxp63pvps6hy9lpg80r7p7h5w4-python3.10-numpy-1.24.2/lib/python3.10/site-packages (from tensorflow-datasets==4.8.2+nightly) (1.24.2)
       > ERROR: Could not find a version that satisfies the requirement psutil (from tensorflow-datasets) (from versions: none)
       > ERROR: No matching distribution found for psutil
       >
       For full logs, run 'nix log /nix/store/66ss7336hxlmfj8bxnskxzpg16fm40g2-python3.10-tensorflow-datasets-4.8.2.drv'.
error: 1 dependencies of derivation '/nix/store/bysgwshcfqg7b9bryg16a15byncqaf3r-python3.10-dm-sonnet-2.0.0.drv' failed to build
error: builder for '/nix/store/07cr4p3zb4w2bss02kv46dydji7rcka0-manim-0.16.0.post0.drv' failed with exit code 1;
       last 10 log lines:
       > Requirement already satisfied: srt<4.0.0,>=3.5.0 in /nix/store/nd44gk9fm1yray5vwbx3p8mb5whx9lrd-python3.10-srt-3.5.3/lib/python3.10/site-packages (from manim==0.16.0.post0) (3.5.3)
       > Requirement already satisfied: manimpango<0.5.0,>=0.4.0.post0 in /nix/store/0qdvjxf30v76w244wjknbpvpfav23d61-python3.10-manimpango-0.4.3/lib/python3.10/site-packages (from manim==0.16.0.post0) (0.4.3)
       > Requirement already satisfied: cloup in /nix/store/y780286n1n5kww1ra7ppha35q4a97yc3-python3.10-cloup-2.0.0.post1/lib/python3.10/site-packages (from manim==0.16.0.post0) (2.0.0.post1)
       > Requirement already satisfied: rich!=12.0.0,>=6.0 in /nix/store/0h540aw30gaksmfa15v9p4a7n0f79gay-python3.10-rich-13.3.1/lib/python3.10/site-packages (from manim==0.16.0.post0) (13.3.1)
       > Requirement already satisfied: numpy<2.0,>=1.19 in /nix/store/khm35qfxp63pvps6hy9lpg80r7p7h5w4-python3.10-numpy-1.24.2/lib/python3.10/site-packages (from manim==0.16.0.post0) (1.24.2)
       > Requirement already satisfied: tqdm<5.0.0,>=4.62.3 in /nix/store/w1fn2fckw1z6kq68qlhrp9v0m1hcwim7-python3.10-tqdm-4.64.1/lib/python3.10/site-packages (from manim==0.16.0.post0) (4.64.1)
       > Requirement already satisfied: Pillow<10.0,>=9.1 in /nix/store/73a1dapyrngbi11rarfw73q73xdnqlxs-python3.10-pillow-9.4.0/lib/python3.10/site-packages (from manim==0.16.0.post0) (9.4.0)
       > ERROR: Could not find a version that satisfies the requirement networkx<3.0,>=2.5 (from manim) (from versions: none)
       > ERROR: No matching distribution found for networkx<3.0,>=2.5
       >
       For full logs, run 'nix log /nix/store/07cr4p3zb4w2bss02kv46dydji7rcka0-manim-0.16.0.post0.drv'.
error: builder for '/nix/store/ha4x0k4r5aqijvn4xii8kqks1qgxi569-PI-linux-x64-1.8.9-1-20220518-c.tar.xz.drv' failed with exit code 1;
       last 10 log lines:
       >
       > ***
       > PixInsight is available from https://pixinsight.com/ and requires a commercial (or trial) license.
       > After a license has been obtained, PixInsight can be downloaded from the software distribution
       > (choose Linux 64bit).
       > The PixInsight tarball must be added to the nix-store, i.e. via
       >   nix-prefetch-url --type sha256 file:///path/to/PI-linux-x64-1.8.9-1-20220518-c.tar.xz
       >
       > ***
       >
       For full logs, run 'nix log /nix/store/ha4x0k4r5aqijvn4xii8kqks1qgxi569-PI-linux-x64-1.8.9-1-20220518-c.tar.xz.drv'.
error: 1 dependencies of derivation '/nix/store/v15d23yv6v6zg591hwhkg2gsacic4098-pixinsight-1.8.9-1.drv' failed to build
error: 1 dependencies of derivation '/nix/store/my5zqyxsqlab9l20jg15jnhw2jz9c4va-obs-ndi-4.10.0.drv' failed to build
error: builder for '/nix/store/mx7qpxiyvxb9c80139andsxv4id3xi51-tone-0.1.5.drv' failed with exit code 1;
       last 10 log lines:
       > unpacking sources
       > unpacking source archive /nix/store/ywgpqyqzzaxysmm5sfiwp6ad06y5sh16-source
       > source root is source
       > patching sources
       > configuring
       > Executing dotnetConfigureHook
       >   Determining projects to restore...
       > /build/source/tone/tone.csproj : error NU1102: Unable to find package Microsoft.NETCore.App.Crossgen2.linux-x64 with version (= 6.0.16)
       > /build/source/tone/tone.csproj : error NU1102:   - Found 1 version(s) in nugetSource [ Nearest version: 6.0.15 ]
       >   Failed to restore /build/source/tone/tone.csproj (in 1.12 sec).
       For full logs, run 'nix log /nix/store/mx7qpxiyvxb9c80139andsxv4id3xi51-tone-0.1.5.drv'.
error: 1 dependencies of derivation '/nix/store/g6df9idkl97cvi6z3c67bpklr2c734mp-audiobookshelf-2.2.18.drv' failed to build
warning: error: SQLite database '/nix/var/nix/db/db.sqlite' is busy
error: 7 dependencies of derivation '/nix/store/3nf3i59wx9ijaycxg0aazxk11gcbfr9b-env.drv' failed to build
error: 1 dependencies of derivation '/nix/store/p3i70sljvq3qg0m3b0nr4jaa0rviq893-review-shell.drv' failed to build

I'm not sure if it makes sense to split the update (1.7.0 -> 1.8.0) out of this into it's own PR since the CUDA fix alone shouldn't trigger the rebuild of all these packages and/or target staging instead (because of the amount of rebuilds)?
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Yeah I can do that, should I target staging with the update? (I think the cuda part can target master, it shouldn't require a rebuild for all depending packages)

There are basically no rebuilds, master is fine.

Result of nixpkgs-review pr 226666 --extra-nixpkgs-config '{ cudaCapabilities = [ "8.6" ]; }' run on x86_64-linux 1

8 packages failed to build:

manim
manim.dist
obs-studio-plugins.obs-ndi
pixinsight
python310Packages.dm-sonnet
python310Packages.dm-sonnet.dist
python310Packages.tensorflow-datasets
python310Packages.tensorflow-datasets.dist

106 packages built:

MIDIVisualizer
arcanPackages.all-wrapped
arcanPackages.arcan
arcanPackages.arcan-wrapped
arcanPackages.cat9-wrapped
arcanPackages.durden-wrapped
arcanPackages.ffmpeg
arcanPackages.ffmpeg.bin
arcanPackages.ffmpeg.data
arcanPackages.ffmpeg.dev
arcanPackages.ffmpeg.doc
arcanPackages.ffmpeg.lib
arcanPackages.ffmpeg.man
arcanPackages.pipeworld-wrapped
arcanPackages.prio-wrapped
arcanPackages.xarcan
audiobookshelf
corrscope
corrscope.dist
ffcast
ffmpeg_4-full
ffmpeg_4-full.bin
ffmpeg_4-full.data
ffmpeg_4-full.dev
ffmpeg_4-full.doc
ffmpeg_4-full.lib
ffmpeg_4-full.man
ffmpeg_6-full
ffmpeg_6-full.bin
ffmpeg_6-full.data
ffmpeg_6-full.dev
ffmpeg_6-full.doc
ffmpeg_6-full.lib
ffmpeg_6-full.man
flowblade
frei0r
handbrake
haruna
hikounomizu
imagination
jellyfin
jellyfin-ffmpeg
jellyfin-ffmpeg.bin
jellyfin-ffmpeg.data
jellyfin-ffmpeg.dev
jellyfin-ffmpeg.doc
jellyfin-ffmpeg.lib
jellyfin-ffmpeg.man
libsForQt5.kdenlive
libsForQt5.mlt
libsForQt5.mlt.dev
libsForQt5.soundkonverter
liquidsoap
mlt
obs-studio
obs-studio-plugins.advanced-scene-switcher
obs-studio-plugins.droidcam-obs
obs-studio-plugins.input-overlay
obs-studio-plugins.looking-glass-obs
obs-studio-plugins.obs-3d-effect
obs-studio-plugins.obs-backgroundremoval
obs-studio-plugins.obs-command-source
obs-studio-plugins.obs-gstreamer
obs-studio-plugins.obs-hyperion
obs-studio-plugins.obs-livesplit-one
obs-studio-plugins.obs-move-transition
obs-studio-plugins.obs-multi-rtmp
obs-studio-plugins.obs-nvfbc
obs-studio-plugins.obs-pipewire-audio-capture
obs-studio-plugins.obs-shaderfilter
obs-studio-plugins.obs-source-clone
obs-studio-plugins.obs-source-record
obs-studio-plugins.obs-teleport
obs-studio-plugins.obs-vaapi
obs-studio-plugins.obs-vintage-filter
obs-studio-plugins.obs-vkcapture
obs-studio-plugins.wlrobs
ocamlPackages.frei0r
olive-editor
peek
printrun
printrun.dist
python310Packages.mlt
python310Packages.moderngl-window
python310Packages.moderngl-window.dist
python310Packages.pydub
python310Packages.pydub.dist
python310Packages.pyglet
python310Packages.pyglet.dist
python310Packages.pytmx
python310Packages.pytmx.dist
python311Packages.mlt
python311Packages.moderngl-window
python311Packages.moderngl-window.dist
python311Packages.pydub
python311Packages.pydub.dist
python311Packages.pyglet
python311Packages.pyglet.dist
python311Packages.pytmx
python311Packages.pytmx.dist
restream
shotcut
sunshine
synfigstudio
tone
video-trimmer

@SomeoneSerge could you comment on whether this works or not?

Result of nixpkgs-review pr 226666 --extra-nixpkgs-config '{ cudaCapabilities = [ "8.6" ]; }'

Darn, I forgot cudaSupport = true.
It builds and looks reasonable, but I didn't test the runtime


Release a new version

Hello, with the merging of #264. A new release is needed for tokei to be able to publish a new version onto crates.io

Done!


Confirm HttpUrl to Hashable, Codable protocols

The PR looks fine, but may I ask you why do you need to conform these protocols / what's the use-case? 🤔

I did debug view for my app with network logs and I had a struct with requests info and I needed it was Equatable etc


Make ResourceRegistry a non-generic type

Problem
Current ResourceRegistry has the following limitations:

Type alias is required to include this component assystem dependency.
One ResourceRegistry instance must be created per type, so instance for each needed typed must be injected in a system (which can be verbose).

Feature
Unify all ResourceRegistry under a single non-generic singleton.

It's finally not doable because of the generic system ResourceRegistry::update.


Overview command implementation in DeveloperGuide.adoc

Coverage remained the same at 67.598% when pulling 3e0cf32fd84916c36d98c082edb4d52a7cfe1eed on Kratious:dg-documentation into 4886b0066f1fa86bc7fb45028a8ca2854a009a01 on CS2103-AY1819S1-W16-2:master.


Lighting across devices

Possibilities for adding support for shared lighting between keyboard/mouse/gpu/rgb case light (ROG gpu/mb/strips light etc etc)

Shared lighting between keyboard and mouse is already possible with Aurora.
Answer from Antonpup for ROG Aura: "I do not know if they have an SDK. But if they do, I will definitely add support for it."
source: https://www.reddit.com/r/pcmasterrace/comments/4mohjq/aurora_unified_lighting_effects/d3x7r1e
And README.md says: "Planned Features/Support: SteelSeries devices, LightFX devices, LightPack"

My general stance on adding support for devices, as @brainbug89 stated is, "If it has an SDK, I can add support for it".


Add mass actions - delete and approve

Let's tweak this a bit (:
"Delete fleets" modal
If users have selected a "mixed" list of fleets that contain both “regular” fleets and fleets that are managed by resource syncs and can't be deleted, we should show a notification:
"Resource syncs manage some of the selected fleets and they cannot be deleted. To remove those fleets, delete the resource syncs from the related repositories inside the "Repositories" tab."
Confirmation text:
"The following fleets will be deleted and as a result, the devices managed by them will be left unmanaged.
Are you sure you want to delete the listed fleets?"
"Approve pending devices" modal
Please change the modal header to: "Approve pending devices"
If users have selected a "mixed" list of devices that contain both "Pending approval" devices and devices that were already approved, we should show a notification:
"Some of the selected devices were already approved and will be excluded."
Confirmation text:
"Make sure you recognise and expect the following devices before approving them.
Are you sure you want to approve the listed devices?
We should have a smarter naming mechanism.
We should rethink the "Region" field necessity.
We should explain that the "Labels" will be added to all the devices and won't override them
General feedback
It will be nice to show a table for both fleets and devices in the modals.
We should think about a nicer way to recognize pending devices (maybe by type?)


Front page should have code sample

Content Feature Request
Summary
A cardinal sin of programming language websites is not providing a code sample. The new site has 2 tiny code samples buried on secondary pages. It should have a prominent runnable code sample on the front page (like the old site does), or at the very least a prominent link to a page dedicated to showing off runnable code samples.
Motivation
As a developer, knowing what the language actually looks like is important. And the fact that Rust has the capability to offer runnable code samples is really compelling because it lets the prospective user play with the language without installing anything.
Drawbacks
The only real drawback I can think of is it takes up space. Having a prominent link to a secondary page full of runnable code samples minimizes the space usage, at the cost of not offering any code examples to someone who skims the page looking for them (which is what I usually do immediately upon encountering a website for a new language).
Maintenance
This will be maintained the same way the code sample on the current rust-lang.org site has been maintained.
Unresolved Questions
The current code example on rust-lang.org isn't great. It's mostly just a bunch of println!() statements, which don't even show off formatting since they're just printing static strings. It would be nice to update this to a more interesting code example. Perhaps a tiny program that uses the regex crate to do some manipulation of standard input, since the Rust Playground already exposes that crate?

closing as is duplicate with already closed issue. https://github.com/rust-lang/beta.rust-lang.org/issues/396


Converting Newborn Demographic Data

Story
Sentence
As a public health lab, so that newborn demographic data can be utilized, I need the TI service to convert the data to a format the lab supports.
Pre-conditions

Only a single, fake public health lab is supported.

Acceptance Criteria

The newborn demographic data is converted to a well known format of our choosing.

Tasks
Research

[x] Refine list of questions for PHLs to answer about data formats (questions below)
[x] Decide on a format
[x] Is loss of extraneous patient IDs (and other fields) acceptable when sending order details to ReportStream and subsequently the PHLs?

Engineering

[x] Generate an example FHIR blob that would be sent to ReportStream.  Put it in the /examples directory.  Use the similar information that would be gleaned from our example newborn patient FHIR resource used in our e2e test. - @halprin
[x]  Convert demographics to the lab order - @halprin
[x] Send data to ReportStream - @jorg3lopez

[x] Base level code to authenticate and send the FHIR resource - @jorg3lopez
[x] (to complete) Fix-up the authentication flow so that it works - @jorg3lopez, @halprin

[x] Dynamically determine which ReportStream environment to send to - @halprin
[x] Local version of sending data to the hard drive (LocalFileLabOrderSender) @tjohnson7021
[x] e2e tests to test the file created from "sending" the order to the local hard drive - @halprin, @tjohnson7021
[x] Correctly pick between the local hard drive "sender" implementation versus the ReportStream sender implementation when we are running locally versus running in a deployed environment. - @tjohnson7021
[x] terraform to support key/auth infrastructure - @halprin
[x] Tackle code smells in SonarCloud (ignore generic exception ones for now?) - @halprin
[x] Modify SonarCloud's quality gate for our own use (in PRs and for the repo as a whole) - @halprin
[x] Watch Carlos' deepdive videos (1, 2) on the RS Universal Pipeline. - @halprin, @tjohnson7021
[x] Update our sample HL7 ADT message to have a correct event code in the EVN segment. - @halprin
[x] Onboard to CDC Azure environment @halprin
[x] Look into IParser class (Thread safety: Parsers are not guaranteed to be thread safe. Create a new parser instance for every thread or every message being parsed/encoded.) - also check the IFhirPath - @tjohnson7021
[x] Ensure changes to Terraform doesn't break the deployment - @halprin, @JohnNKing
[x] Look at ReportStream's FHIR -> HL7 OML conversion.  Run the CLI and document what is missing.  Add additional tasks to this story for conversions we need to add.  Use the HL7v2 to FHIR mapping as a guide.

[x] Patient race using our US Core Race extension. - @halprin
[x] Patient birth time. - @tjohnson7021
[x] Multiple Birth Order. @tjohnson7021
[x] Next of kin's telecom. @jorg3lopez
[x] Convert the Service Request. - @halprin

[x] Add the ISO8601 timestamp to our logging. - @halprin

Definition of Done
Engineering

[x] Threat model updated - @halprin
[x] Code refactored for clarity and no design/technical debt - @jorg3lopez
[x] Adhere to separation of concerns; code is not tightly coupled, especially to 3rd party dependencies.
[x] Source code is merged to the main branch.
[x] Unit test coverage of our code >= 90%
[x] Code is reviewed or developed by pair; 1 approval is needed but consider requiring an outside-the-pair reviewer.
[x] Build process updated
[x] Feature toggles created and/or deleted.  Document the feature toggle.
[x] Source code documentation created when the code is not self-documenting. - @halprin
[x] API documentation generated
[x] Code quality checks passed
[x] Security & privacy gates passed
[x] Load tests passed - @tjohnson7021
[x] Documentation and diagrams created or updated - @tjohnson7021
[x] API(s) are versioned
[x] Debug logging - @halprin

Research Questions
Is it okay if the outbound message have some fields stripped away? (e.g. multiple identifiers for patient)

Hey there all in this @ channel (and specifically @ Jason and @ Jon), we're starting to embark on an MVP where we send newborn demographic information to public health labs.  We're trying to figure out what format would be more useful for PHLs: an HL7v2 ADT message or an incomplete HL7v2 OML message.  So, we have some questions around this topic.

Can any LIMS systems accept HL7v2 ADT messages in any way?
What would be easiest to ingest into LIMS systems: an HL7v2 ADT message or an incomplete HL7v2 OML message?
What is the simplest, minimal set of data needed for incoming HL7v2 OML orders?

Maybe take a more confirmatory approach.  State that we're going to do an incomplete OML, state our reasoning why, and our future plans.  See if they confirm our approach or not.

Hey there everyone in this @ channel.  We wanted to get some feedback on the approach we are currently taking with our newborn screening electronic order minimum viable product.  The long term path we are thinking about right now is that we would combine hospital HL7v2 ADT messages (which contains demographics, next of kin, etc.) with hospital order messages (HL7v2 OML) in order to form a complete order message to be able to send to the Public Health Lab.  Some decisions and assumptions we are looking for feedback on:

Begin with mapping the ADT message to OML, which will produce an incomplete order message.

Assumption: While we know some or most PHLs want to or are able to receive only a complete OML message, there is a higher chance that a PHL would find value in or be able to ingest an incomplete OML message rather than a complete ADT message.

Next, focus on the capability to ingest a OML message, and combine that message with the ADT message in order to send the complete order message to the PHL.

Assumption: The ADT message will often have ADT data that is not contained on the hospitals’ standard OML message, such as the ADT message consistently having next of kin information.  By combining messages for the hospital, this will lower implementation burden for hospitals.

ADT vs. Lightweight OML

(@ channel people, but also call out Jason and Jon from JMC)

(provide some front matter at the beginning of the message to provide context)

Can LIMS systems accept HL7v2 ADT messages at all?

What is the simplest, minimal set of data needed for incoming HL7v2 OML orders?

What would be easiest to integrate into LIMS systems: an HL7v2 ADT message or an incomplete HL7v2 OML message?

Older questions below...

What data formats for orders do labs support for incoming orders? (HL7 v2? Custom XML? CSV?)
What is the simplest, minimal set of data needed for incoming orders?
Does the format supported vary across labs or LIMS?
Can ADT-like data be accepted? (without LIMS customization)
~Can the demographic data be stored and later combined with the specimen information?~
Can a partial order by accepted?

Are there other resources or shared services we can leverage? (e.g. from APHL)

Decisions

Convert internal FHIR to HL7 v2 (LOI)
TODO: We need to decide on a particular format for our initial prototype (likely depending upon our first partner)

Notes

Optional: Any reference material or thoughts we may need for later reference

This story is represented on the roadmap as "Order FHIR => HL7 OML #79"

This Story helps complete the requirement:
MVP-REQ-04 - Each intermediary will create an MVP with the capability to support when the facility receives the entire order, and the intermediary is responsible for validating and transforming the order for PHL

This Story helps complete the requirement:
MVP-REQ-05 - Each intermediary will create an MVP wherein the system accepts all order-related information from the facility. The intermediary is responsible for receiving the order, performing validation, and carrying out transformations for PHL LIMS


Examples fail to authorize

I'm not able to authorize through http://<IP_ADDRESS>:3000/login.
(I didn't test bearer variants as I don't need to use them)
Expected behavior
http://<IP_ADDRESS>:3000/login should redirect me to the twitter authorization screen with appropriate parameters.
Actual behavior
Something is wrong with the parameters, the screen says "Something went wrong".
Steps to reproduce the behavior

Run npm install in the examples directory, with "ts-node": "^10.9.1" (the original spec for ts-node didn't work)
Create .env as following:

CLIENT_ID=<REDACTED>
CLIENT_SECRET=<REDACTED>

Run any example and jump to the login URL.

What is the callback URL in your Twitter OAuth2 settings?

Thank you for pointing out the callback URL, I forgot to add the URL used by examples.
After setting the URL, everything goes well!
Thank you again for your help!

You’re welcome 😉


fix(mjml-browser): typeerror when using inline styles and juicePreserveTags

fixes #2653
To Reproduce
Steps to reproduce the behavior:

Create the following package.json file:

{
  "name": "mjml-browser-juice-preserve-tags-issue",
  "scripts": {
    "start": "http-server"
  },
  "dependencies": {
    "http-server": "^14.1.1",
    "mjml-browser": "^4.13.0"
  }
}

Create the following index.html file in the same directory:

Run npm install
Run npm start
Open your browser to http://localhost:8080/
Open the developer console
See the following error in the developer console:

Uncaught TypeError: Cannot set properties of undefined (setting 'EXAMPLE')

The expected behavior is that the MJML is rendered to HTML with the following body:

Example

Thanks for considering my PR!

👋 Hi
Thanks you so much for this PR (and the detailed step to reproduce+test) !
I have a small question about the lockfile pointing to https://crayon-207931957862.d.codeartifact.us-west-2.amazonaws.com:443/ never seen this before, is this something from your yarn configuration ?
Thanks !

Oh shoot, good catch! That is something from my yarn configuration. I will fix it!


Is it possible to get the 'select' sit next to the 'input'?

I think below is the intuitive way to enter phone number

instead of making it two separate lines.

Hello! Thanks for opening an issue with us! As this seems like more of a support question i will urge that you ask this question on our forum. Thanks for using Ionic!


Implement a Manual Event Pump API to Enable Non-Blocking Applications

This is a feature request to extend the OSApp API to allow external message pumping.
The goal is to allow NApp to be integrated into programs that already have their own event loop (async runtimes, game engines, etc.). This proposal would make osapp_run non-blocking and expose an API function callable by the program's main thread to manually process events.
The default would remain exactly as it works now, manual pumping would be an option. This is already partially in place for Windows, but not for other platforms.
Current Implementation
This is my understanding of the current implementation, which might be wrong (please correct me).

All platforms (macOS, Windows, GTK) implement the same interface for OSApp, in particular they all have an osapp_run function.
All platforms accept the flag app->with_run_loop, however it is ignored for macOS (src) and GTK (src), and for Windows it is always true and calls osgui_message_loop
Platforms launch apps like this:

On Windows, there's a while loop in osapp_run that manually pumps events by calling osgui_message_loop
On macOS, osapp_run calls [(NSApplication*)app run];, which is a blocking call (Cocoa handles pumping internally)
On GTK, osapp_run calls g_application_run, which is a blocking call (GTK handles pumping internally)

Proposed changes
First, implement osgui_message_loop on all platforms:

On Windows, this exists already, and seems to be the only implementation
On macOS, instead of calling just [NsApp run], instead call it and then call [NSApp stop:nil]; from within the applicationDidFinishLaunching hook. This enables manual pumping. Then create a osgui_message_loop_imp function that dequeues events from [NSApp nextEventMatchingMask ...] and pumps them to [NSApp sendEvent:event];
On GTK, instead of calling g_application_run, do the same setup, but create a osgui_message_loop_imp function that keeps calling g_main_context_iteration to cause GTK to pump events internally. This call must be made with g_main_context_iteration in non-blocking mode, otherwise the internal pump blocks until the next event.

Then, add an app->blocking flag that is TRUE by default. This flag must be respected in the osgui_message_loop_imp implementations. If it is TRUE, then the message loops need to be blocking, as is the case for Windows today (src). However, when it is FALSE, the message loop must return after processing events in the queue.
Finally, the osgui_message_loop function should be available via the public API so that in non-blocking mode, the parent program can call it.
Result
Now applications can launch NApp in two different ways:

Blocking (default, current behavior): Call osmain, and NApp/OSApp handles the event loop - nothing changes and no code changes are required for current apps
Non-blocking (set app->blocking to false): Call osmain, which immediately returns. The calling app then calls osgui_message_loop from its own event loop or scheduler to keep the OSApp instance alive. When it's done, it calls the terminate API to clean up.

This is how libraries like GLFW work today, and indeed I'm currently integrating NApp into an engine that has a competing event loop in the main thread. Here are details on the changes required:

converting [NsApp run] into non-blocking calls (based directly on what GLFW does)
converting g_application_run into non-blocking calls

All in all, these changes should not require much additional code, OSApp is almost there and the concept of a message loop function is already in place.

Hi @turbo!
I am very surprised by this issue. Both for the proposal itself, and for the level of detail when proposing the solution. Thank you for the time you have dedicated and your involvement in the project.
It is a necessary feature, which will open the use of NAppGUI to existing applications, with their own runLoop. A few years ago, in an early version of NAppGUI I implemented this support (Windows only) to create an experimental interface for a Rhinoceros 3D plugin. The const bool_t with_run_loop parameter of osapp_init_imp is a legacy from those times.
I'll get into this as soon as possible.
Please email me with your Discord username. We have created a server with a small community of active users, where we have several open development lines.
Thanks again, and welcome to NAppGUI

My Discord user is summarity (or send an invite to<EMAIL_ADDRESS>🙂.

Work in progress.
Integrate NAppGUI windows into third party apps. Will be ready for next NAppGUI 1.5


ARROW-1563: [C++][FOLLOWUP] Use std::function instead of declaring auxiliary helper classes

Codecov Report

Merging #2475 into master will increase coverage by 1.17%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #2475      +/-   ##
==========================================
+ Coverage   86.31%   87.48%   +1.17%
==========================================
  Files         308      246      -62
  Lines       47011    43297    -3714
==========================================
- Hits        40576    37877    -2699
+ Misses       6363     5420     -943
+ Partials       72        0      -72

Impacted Files
Coverage Δ

cpp/src/arrow/compute/compute-test.cc
99.34% <100%> (-0.02%)
:arrow_down:

rust/src/record_batch.rs

go/arrow/datatype_nested.go

rust/src/array.rs

go/arrow/math/uint64_amd64.go

go/arrow/internal/testing/tools/bool.go

go/arrow/internal/bitutil/bitutil.go

go/arrow/memory/memory_avx2_amd64.go

rust/src/error.rs

rust/src/lib.rs

... and 54 more

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 588c1fa...d94fb95. Read the comment docs.

+1


Should the JobName move of Parameters

I was asking if the interface could change were the we pass the name of the job at the time of registration instead.
queue.registerJob(
            parameters: AnotherParameters.self,
            jobName: "SomeJobName"
            maxRetryCount: 4)
        { (parameters: AnotherParameters, _) in
        }

Originally posted by @thoven87 in https://github.com/hummingbird-project/swift-jobs/pull/14#discussion_r1729013979

We need to ensure that the correct parameter type is sent to a job. If I setup a job as follows
queue.registerJob(
            parameters: Parameters.self,
            jobName: "SomeJobName"
            maxRetryCount: 4)
        { parameters, _ in
        }

I want to ensure you can't do the following ie make a job request with a different parameter structure
struct DifferentParameters {
    ... something different from Parameters
}
let parameters = DifferentParameters()
queue.push(jobName: "SomeJobName", parameters: parameters)

If you were allowed to do that you would be polluting the job queue with invalid data which would not decode correctly.
So I need to associate the name with the correct parameter type. You don't need to use the JobParameters type to do this though. It is used to centralize this in one type, But you have other options
You can create a JobDefinition (this type is used internally to store jobs)
let job = JobDefinition(id: "testBasic") { (parameters: MyParameters, context) in
    // do job
}
jobQueue.registerJob(job)
jobQueue.push(job.id, myParameters)

or
You can break it down into its constituent parts.
extension JobIdentifier where Parameters == Int {
    static var test: Self { .init("test") }
}
jobQueue.registerJob(id: .test) { _, _ in
    // do job
}
jobQueue.push(.test, 5)

This along with the JobDefinition allow you to use any type as parameters but these methods also have their own issues as well. The JobDefinition requires you to store the id as a variable somewhere. Splitting up the Job definition into parameters, id, and closure means it spread across multiple places in your code which could get messy.

We need to ensure that the correct parameter type is sent to a job. If I setup a job as follows
queue.registerJob(
            parameters: Parameters.self,
            jobName: "SomeJobName"
            maxRetryCount: 4)
        { parameters, _ in
        }

I want to ensure you can't do the following ie make a job request with a different parameter structure
struct DifferentParameters {
    ... something different from Parameters
}
let parameters = DifferentParameters()
queue.push(jobName: "SomeJobName", parameters: parameters)

If you were allowed to do that you would be polluting the job queue with invalid data which would not decode correctly.
So I need to associate the name with the correct parameter type. You don't need to use the JobParameters type to do this though. It is used to centralize this in one type, But you have other options
You can create a JobDefinition (this type is used internally to store jobs)
let job = JobDefinition(id: "testBasic") { (parameters: MyParameters, context) in
    // do job
}
jobQueue.registerJob(job)
jobQueue.push(job.id, myParameters)

or
You can break it down into its constituent parts.
extension JobIdentifier where Parameters == Int {
    static var test: Self { .init("test") }
}
jobQueue.registerJob(id: .test) { _, _ in
    // do job
}
jobQueue.push(.test, 5)

This along with the JobDefinition allow you to use any type as parameters but these methods also have their own issues as well. The JobDefinition requires you to store the id as a variable somewhere. Splitting up the Job definition into parameters, id, and closure means it spread across multiple places in your code which could get messy.

I the problem now. Thanks Adam for the clear explanation. Would it still be an issue where if the push func take the parameter type instead of a string? ex:
queue.registerJob(
            parameters: AnotherParameters.self,
            maxRetryCount: 4)
        { (parameters: AnotherParameters, _) in
           /// Perform job
        }

  someJob.push(AnotherParameters.self, .init(....))

When you push a job, you need to know the job id and the parameters you are passing to the job. You can currently call
jobQueue.push(parameters: MyJobParameters(...))

because the JobParameters type includes the job identifier. If JobParameters doesn't have the job name then push wouldn't know which job you are starting.
I haven't used the parameters type as the identifier for job because currently you can have multiple jobs using the same type (as long as you aren't using JobParameters). JobParameters was introduced later and designed to encapsulate all the data associated with a job.

When you push a job, you need to know the job id and the parameters you are passing to the job. You can currently call
jobQueue.push(parameters: MyJobParameters(...))

because the JobParameters type includes the job identifier. If JobParameters doesn't have the job name then push wouldn't know which job you are starting.
I haven't used the parameters type as the identifier for job because currently you can have multiple jobs using the same type (as long as you aren't using JobParameters). JobParameters was introduced later and designed to encapsulate all the data associated with a job.

Understood, then this issue can be closed. Thanks Adam!


Asyncio error when hosting marimo behind google IAP

Describe the bug
Hey Marimo team,
We've been trying to host a Marimo notebook (using marimo run) in Google Cloud/Kubernetes, and have run into this issue which seems internal to Marimo. (see error log below). The template page loads, but none of the subsequent api calls to actually run the notebook code seem to work. For context, I've been able to successfully load this notebook locally, and have also successfully loaded it when port forwarding to the kubernetes service (the same one behind the public endpoint). But when we run it with our public endpoint, I get this error.
On a possibly related note, we have Google IAP handling auth for the public endpoint, which I think causes the websockets requests to fail (since they can't authenticate) and fallback to http requests. I see a lot of /api/kernel/instantiate/ requests failing with 404, for example (but some get 200).
Any ideas you might have here would be much appreciated. Thanks!
ERROR:asyncio:Exception in callback None()
handle: <Handle cancelled>
Traceback (most recent call last):
  File "/usr/lib/python3.10/asyncio/events.py", line 80, in _run
    self._context.run(self._callback, *self._args)
  File "/.../python/.venv/lib/python3.10/site-packages/tornado/platform/asyncio.py", line 192, in _handle_events
    handler_func(fileobj, events)
  File "/.../python/.venv/lib/python3.10/site-packages/marimo/server/sessions.py", line 207, in reader
    (op, data) = self.read_conn.recv()
  File "/usr/lib/python3.10/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/usr/lib/python3.10/multiprocessing/connection.py", line 421, in _recv_bytes
    return self._recv(size)
  File "/usr/lib/python3.10/multiprocessing/connection.py", line 379, in _recv
    chunk = read(handle, remaining)
OSError: [Errno 9] Bad file descriptor

Version
marimo-0.0.1a0-py3-none-any.whl
Code to reproduce
No response

hey @regisverdin, how many instances of your container are you running? the server has internal state (including the active sessions) and GCP could be distributing your requests across instances.
if you jump in https://discord.gg/rAhpfKwuaN, i can also help debug

We ended up updating to a newer marimo version, which had better logging and revealed a bunch of issues on our side. The main one being that IAP needed to have "Enable HTTP OPTIONS" activated.


Disable TLS on ES while using 6.1.3_0

Is there a way currently to disable TLS on the Elasticsearch endpoint only, while using the most recent image? I see some older issues and threads saying this is possible using some older images - would like to avoid using that.
I'm terminating TLS on my Ingress, and would love to leave communication from Fluentd/Fluentbit to HTTP only within the cluster. Sorry if I'm missing something obvious somewhere, but this is driving me mad!
Great job on the operator :)

Hey @neurot1cal I think we've got this all fixed up right now in head. I need to make a job to build a :master tag so you can test latest changes easier.

Ok :master tags for the operator are getting built automatically now. Please give it a try and let me know how it goes.

@stevesloka Strange... Getting crashloop backoff when trying to start up the elasticsearch-operator container;
helm install --name elasticsearch-operator es-operator/elasticsearch-operator --namespace logging -f operator-values.yaml

operator-values.yaml
# Default values for elasticsearch-operator.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
image:
  repository: upmcenterprises/elasticsearch-operator
  tag: 0.0.12
  pullPolicy: Always
#  pullSecret:
resources:
  limits:
    cpu: 100m
    memory: 128Mi
  requests:
    cpu: 100m
    memory: 128Mi
rbac:
  enabled: false

☁  operator [features/outputdirs] ⚡ k describe -n logging po/elasticsearch-operator-5c9c444f5f-dr5xg
Name:           elasticsearch-operator-5c9c444f5f-dr5xg
Namespace:      logging
Node:           k8s-linuxpool1-17595707-4/<IP_ADDRESS>
Start Time:     Wed, 23 May 2018 09:33:05 -0700
Labels:         name=elasticsearch-operator
                pod-template-hash=1757000919
                release=elasticsearch-operator
Annotations:    <none>
Status:         Running
IP:             <IP_ADDRESS>
Controlled By:  ReplicaSet/elasticsearch-operator-5c9c444f5f
Containers:
  elasticsearch-operator:
    Container ID:   docker://2796ff37ec50fc26762f1de31cc2a3634c39f0df721a491fb7703e5f6e72a47c
    Image:          upmcenterprises/elasticsearch-operator:0.0.12
    Image ID:       docker-pullable://upmcenterprises/elasticsearch-operator@sha256:4050e6cb608ddc77a561232fadbfc12e74006f8409e46f77f7f4abff33660411
    Port:           8000/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    2
      Started:      Wed, 23 May 2018 09:34:43 -0700
      Finished:     Wed, 23 May 2018 09:34:44 -0700
    Ready:          False
    Restart Count:  4
    Limits:
      cpu:     100m
      memory:  128Mi
    Requests:
      cpu:      100m
      memory:   128Mi
    Liveness:   http-get http://:8000/live delay=10s timeout=10s period=10s #success=1 #failure=3
    Readiness:  http-get http://:8000/ready delay=10s timeout=5s period=10s #success=1 #failure=3
    Environment:
      NAMESPACE:  logging (v1:metadata.namespace)
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-zph62 (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          False
  PodScheduled   True
Volumes:
  default-token-zph62:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-zph62
    Optional:    false
QoS Class:       Guaranteed
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type     Reason                 Age              From                                Message
  ----     ------                 ----             ----                                -------
  Normal   Scheduled              3m               default-scheduler                   Successfully assigned elasticsearch-operator-5c9c444f5f-dr5xg to k8s-linuxpool1-17595707-4
  Normal   SuccessfulMountVolume  3m               kubelet, k8s-linuxpool1-17595707-4  MountVolume.SetUp succeeded for volume "default-token-zph62"
  Normal   Pulling                2m (x4 over 3m)  kubelet, k8s-linuxpool1-17595707-4  pulling image "upmcenterprises/elasticsearch-operator:0.0.12"
  Normal   Pulled                 2m (x4 over 2m)  kubelet, k8s-linuxpool1-17595707-4  Successfully pulled image "upmcenterprises/elasticsearch-operator:0.0.12"
  Normal   Created                2m (x4 over 2m)  kubelet, k8s-linuxpool1-17595707-4  Created container
  Normal   Started                2m (x4 over 2m)  kubelet, k8s-linuxpool1-17595707-4  Started container
  Warning  BackOff                1m (x8 over 2m)  kubelet, k8s-linuxpool1-17595707-4  Back-off restarting failed container

Durp - Left our rbac enabled: true. :)

@stevesloka es-client pods are in CrashLoopBackOff;

@stevesloka Things are spun up now, but it looks like it's still using HTTPS for 9200 on the client nodes;

Here's my values.yaml;

Can you test again? I just pushed another PR.

Same deal. Does my chart and install sequence look right?

#Add repo
helm repo add es-operator https://raw.githubusercontent.com/upmc-enterprises/elasticsearch-operator/master/charts/

#Install ES operator
helm install --name elasticsearch-operator es-operator/elasticsearch-operator --namespace logging -f operator-values.yaml
helm upgrade elasticsearch-operator es-operator/elasticsearch-operator -f operator-values.yaml

#Install ES cluster
helm install --name elasticsearch es-operator/elasticsearch --namespace logging -f elasticsearch-values.yaml
helm upgrade elasticsearch es-operator/elasticsearch --namespace logging -f elasticsearch-values.yaml

Did you delete all the objects + elasticsearch crd before installing it again? Seems like ssl configuration are cached somewhere

@gianrubio Good catch, helm delete --purge doesnt actually delete the CRD. Trying again...

also can you take helm out of the picture? Just create the operator and then the crd to test.

@stevesloka Ok. Still not working with helm. Here's my approach, I'm creating the controller and then applying the es-cluster-azure.yaml in /examples and it's not building the clusters. Any ideas?
controller.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: elasticsearch-operator
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: elasticsearch-operator
rules:
- apiGroups: ["extensions"]
  resources: ["deployments", "replicasets", "daemonsets"]
  verbs: ["create", "get", "update", "delete", "list"]
- apiGroups: ["apiextensions.k8s.io"]
  resources: ["customresourcedefinitions"]
  verbs: ["create", "get", "update", "delete", "list"]
- apiGroups: ["storage.k8s.io"]
  resources: ["storageclasses"]
  verbs: ["get", "list", "create", "delete", "deletecollection"]
- apiGroups: [""]
  resources: ["persistentvolumes", "persistentvolumeclaims", "services", "secrets", "configmaps"]
  verbs: ["create", "get", "update", "delete", "list"]
- apiGroups: ["batch"]
  resources: ["cronjobs", "jobs"]
  verbs: ["create", "get", "deletecollection", "delete"]
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list", "get", "watch"]
- apiGroups: ["apps"]
  resources: ["statefulsets", "deployments"]
  verbs: ["*"]
- apiGroups: ["enterprises.upmc.com"]
  resources: ["elasticsearchclusters"]
  verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: elasticsearch-operator
  namespace: operator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: elasticsearch-operator
subjects:
- kind: ServiceAccount
  name: elasticsearch-operator
  namespace: operator
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: elasticsearch-operator
  namespace: operator
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: elasticsearch-operator
    spec:
      containers:
      - name: operator
        image: upmcenterprises/elasticsearch-operator:0.1.0
        imagePullPolicy: Always
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        ports:
        - containerPort: 8000
          name: http
        livenessProbe:
          httpGet:
            path: /live
            port: 8000
          initialDelaySeconds: 10
          timeoutSeconds: 10
        readinessProbe:
          httpGet:
            path: /ready
            port: 8000
          initialDelaySeconds: 10
          timeoutSeconds: 5
      serviceAccount: elasticsearch-operator

es-cluster-azure.yaml
apiVersion: enterprises.upmc.com/v1
kind: ElasticsearchCluster
metadata:
  name: es-cluster
spec:
  kibana:
    image: docker.elastic.co/kibana/kibana-oss:6.1.3
  cerebro:
    image: upmcenterprises/cerebro:0.6.8
  elastic-search-image: upmcenterprises/docker-elasticsearch-kubernetes:6.1.3_0
  client-node-replicas: 3
  master-node-replicas: 2
  data-node-replicas: 3
  network-host: []
  zones: []
  data-volume-size: 10Gi
  java-options: "-Xms1024m -Xmx1024m"
  use-ssl: false
  snapshot: []
  storage:
    storage-class: default
  resources:
    requests:
      memory: 512Mi
      cpu: 500m
    limits:
      memory: 1024Mi
      cpu: '1'

kubectl create ns operator
kubectl apply -f ./controller.yaml -n operator
kubectl apply -f ./es-cluster-azure.yaml -n operator

☁  k get pods -n operator
NAME                                      READY     STATUS    RESTARTS   AGE
elasticsearch-operator-7d96cf6f7d-86zr4   1/1       Running   0          11m

What do the logs on the operator look like?

I was using network-host: [] instead of network-host: <IP_ADDRESS>. Fixed and it appears to be creating now;
E0525 16:15:41.154511       7 reflector.go:205] github.com/upmc-enterprises/elasticsearch-operator/pkg/k8sutil/k8sutil.go:262: Failed to list *v1.ElasticsearchCluster: v1.ElasticsearchClusterList: Items: []v1.ElasticsearchCluster: v1.ElasticsearchCluster: Spec: v1.ClusterSpec: NetworkHost: ReadString: expects " or n, but found [, error found in #10 byte of ...|rk-host":[],"resourc|..., bigger context ...|:6.1.3"},"master-node-replicas":2,"network-host":[],"resources":{"limits":{"cpu":"1","memory":"1024M|...
time="2018-05-25T16:15:42Z" level=info msg="Process Elasticsearch Event ADDED"
time="2018-05-25T16:15:42Z" level=info msg="--------> Received ElasticSearch Event!"
time="2018-05-25T16:15:42Z" level=info msg="Found cluster: es-cluster"
time="2018-05-25T16:15:42Z" level=info msg="use-ssl false"
time="2018-05-25T16:15:42Z" level=info msg="Using [upmcenterprises/docker-elasticsearch-kubernetes:6.1.3_0] as image for es cluster"
time="2018-05-25T16:15:42Z" level=info msg="use-ssl false"
time="2018-05-25T16:15:42Z" level=info msg="Discovery Service not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="Service es-data-svc-es-cluster not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="elasticsearch-es-cluster not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="cerebro-es-cluster not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="kibana-es-cluster not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="Deployment es-client-es-cluster not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="StatefulSet es-master-es-cluster-default not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="StatefulSet es-data-es-cluster-default not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="kibana-es-cluster not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="Deployment cerebro-es-cluster not found, creating..."
time="2018-05-25T16:15:42Z" level=info msg="--------> ElasticSearch Event finished!"

@stevesloka Looks like it's respecting use-ssl false now;
time="2018-05-25T17:59:24Z" level=info msg="Found cluster: es-cluster"
time="2018-05-25T17:59:24Z" level=info msg="use-ssl false"
time="2018-05-25T17:59:24Z" level=info msg="Using [upmcenterprises/docker-elasticsearch-kubernetes:6.1.3_0] as image for es cluster"
time="2018-05-25T17:59:24Z" level=info msg="use-ssl false"
time="2018-05-25T17:59:24Z" level=info msg="Discovery Service not found, creating..."
time="2018-05-25T17:59:24Z" level=info msg="Service es-data-svc-es-cluster not found, creating..."
time="2018-05-25T17:59:24Z" level=info msg="elasticsearch-es-cluster not found, creating..."
time="2018-05-25T17:59:24Z" level=info msg="cerebro-es-cluster not found, creating..."
time="2018-05-25T17:59:24Z" level=info msg="kibana-es-cluster not found, creating..."
time="2018-05-25T17:59:24Z" level=info msg="Deployment es-client-es-cluster not found, creating..."
time="2018-05-25T17:59:24Z" level=info msg="StatefulSet es-master-es-cluster-default not found, creating..."
time="2018-05-25T17:59:24Z" level=info msg="StatefulSet es-data-es-cluster-default not found, creating..."
time="2018-05-25T17:59:24Z" level=info msg="--------> ElasticSearch Event finished!"

Master and data are coming up, but client is in a crashloop;
k get pods
es-client-es-cluster-848878dbf8-fxw8j   0/1       CrashLoopBackOff   3          1m
es-data-es-cluster-default-0            1/1       Running            0          1m
es-master-es-cluster-default-0          1/1       Running            0          1m

☁  k describe pod es-client-es-cluster-848878dbf8-fxw8j
Name:           es-client-es-cluster-848878dbf8-fxw8j
Namespace:      default
Node:           k8s-linuxpool1-10932256-2/<IP_ADDRESS>
Start Time:     Fri, 25 May 2018 10:59:25 -0700
Labels:         cluster=es-cluster
                component=elasticsearch-es-cluster
                name=es-client-es-cluster
                pod-template-hash=4044348694
                role=client
Annotations:    <none>
Status:         Running
IP:             <IP_ADDRESS>
Controlled By:  ReplicaSet/es-client-es-cluster-848878dbf8
Containers:
  es-client-es-cluster:
    Container ID:   docker://3f851c30543640582a567c30e33f355880333ff5c989671c3c5eec37d8d5aa3e
    Image:          upmcenterprises/docker-elasticsearch-kubernetes:6.1.3_0
    Image ID:       docker-pullable://upmcenterprises/docker-elasticsearch-kubernetes@sha256:0b2bb7f5d4fda99823ada33a70ac4c536faf85630410ef26d08e8c4f417a35fa
    Ports:          9300/TCP, 9200/TCP
    Host Ports:     0/TCP, 0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       OOMKilled
      Exit Code:    137
      Started:      Fri, 25 May 2018 11:03:01 -0700
      Finished:     Fri, 25 May 2018 11:03:08 -0700
    Ready:          False
    Restart Count:  5
    Limits:
      cpu:     1
      memory:  1Gi
    Requests:
      cpu:      500m
      memory:   512Mi
    Liveness:   http-get http://:9200/_nodes/_local delay=10s timeout=30s period=10s #success=1 #failure=15
    Readiness:  http-get http://:9200/_nodes/_local delay=10s timeout=30s period=10s #success=1 #failure=15
    Environment:
      NAMESPACE:                          default (v1:metadata.namespace)
      CLUSTER_NAME:                       es-cluster
      NODE_MASTER:                        false
      NODE_DATA:                          false
      HTTP_ENABLE:                        true
      SEARCHGUARD_SSL_TRANSPORT_ENABLED:  false
      SEARCHGUARD_SSL_HTTP_ENABLED:       false
      ES_JAVA_OPTS:                       -Xms1024m -Xmx1024m
      STATSD_HOST:
      DISCOVERY_SERVICE:                  elasticsearch-discovery-es-cluster
      NETWORK_HOST:                       <IP_ADDRESS>
    Mounts:
      /data from storage (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-gs86l (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          False
  PodScheduled   True
Volumes:
  storage:
    Type:    EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
  default-token-gs86l:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-gs86l
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type     Reason                 Age              From                                Message
  ----     ------                 ----             ----                                -------
  Normal   Scheduled              4m               default-scheduler                   Successfully assigned es-client-es-cluster-848878dbf8-fxw8j to k8s-linuxpool1-10932256-2
  Normal   SuccessfulMountVolume  4m               kubelet, k8s-linuxpool1-10932256-2  MountVolume.SetUp succeeded for volume "storage"
  Normal   SuccessfulMountVolume  4m               kubelet, k8s-linuxpool1-10932256-2  MountVolume.SetUp succeeded for volume "default-token-gs86l"
  Normal   Pulling                3m (x4 over 4m)  kubelet, k8s-linuxpool1-10932256-2  pulling image "upmcenterprises/docker-elasticsearch-kubernetes:6.1.3_0"
  Normal   Pulled                 3m (x4 over 4m)  kubelet, k8s-linuxpool1-10932256-2  Successfully pulled image "upmcenterprises/docker-elasticsearch-kubernetes:6.1.3_0"
  Normal   Created                3m (x4 over 4m)  kubelet, k8s-linuxpool1-10932256-2  Created container
  Normal   Started                3m (x4 over 4m)  kubelet, k8s-linuxpool1-10932256-2  Started container
  Warning  BackOff                2m (x7 over 3m)  kubelet, k8s-linuxpool1-10932256-2  Back-off restarting failed container

Not able to get any logs from k logs es-client-es-cluster-848878dbf8-fxw8j. Any ideas?

Working now!
☁  ~  curl http://<IP_ADDRESS>:9200
{
  "name" : "38394fe9-f6a7-4450-81bd-86202d0c093e",
  "cluster_name" : "es-cluster",
  "cluster_uuid" : "yGTGu20TQ4aqGURsgvTwWA",
  "version" : {
    "number" : "6.1.3",
    "build_hash" : "af51318",
    "build_date" : "2018-01-26T18:22:55.523Z",
    "build_snapshot" : false,
    "lucene_version" : "7.1.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

@stevesloka Cerebro and Kibana are failing to start now, looks like due to "es-certs-es-cluster" secret not being found;
☁  operator [features/outputdirs] ⚡ k describe po/cerebro-es-cluster-668df68998-qc8zq -n operator
Name:           cerebro-es-cluster-668df68998-qc8zq
Namespace:      operator
Node:           k8s-linuxpool1-10932256-2/<IP_ADDRESS>
Start Time:     Fri, 25 May 2018 11:21:17 -0700
Labels:         component=elasticsearch-es-cluster
                name=cerebro-es-cluster
                pod-template-hash=2248924554
                role=cerebro
Annotations:    <none>
Status:         Pending
IP:
Controlled By:  ReplicaSet/cerebro-es-cluster-668df68998
Containers:
  cerebro-es-cluster:
    Container ID:
    Image:         upmcenterprises/cerebro:0.6.8
    Image ID:
    Port:          9000/TCP
    Host Port:     0/TCP
    Command:
      bin/cerebro
      -Dconfig.file=/usr/local/cerebro/cfg/application.conf
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Liveness:       http-get http://:9000/%23/connect delay=1s timeout=30s period=10s #success=1 #failure=10
    Readiness:      http-get http://:9000/%23/connect delay=1s timeout=30s period=10s #success=1 #failure=10
    Environment:    <none>
    Mounts:
      /elasticsearch/config/certs from es-certs-es-cluster (rw)
      /usr/local/cerebro/cfg from es-cluster-cerebro (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-shcjz (ro)
Conditions:
  Type           Status
  Initialized    True
  Ready          False
  PodScheduled   True
Volumes:
  es-cluster-cerebro:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      es-cluster-cerebro
    Optional:  false
  es-certs-es-cluster:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  es-certs-es-cluster
    Optional:    false
  default-token-shcjz:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-shcjz
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     <none>
Events:
  Type     Reason                 Age               From                                Message
  ----     ------                 ----              ----                                -------
  Normal   Scheduled              1m                default-scheduler                   Successfully assigned cerebro-es-cluster-668df68998-qc8zq to k8s-linuxpool1-10932256-2
  Normal   SuccessfulMountVolume  1m                kubelet, k8s-linuxpool1-10932256-2  MountVolume.SetUp succeeded for volume "es-cluster-cerebro"
  Normal   SuccessfulMountVolume  1m                kubelet, k8s-linuxpool1-10932256-2  MountVolume.SetUp succeeded for volume "default-token-shcjz"
  Warning  FailedMount            16s (x8 over 1m)  kubelet, k8s-linuxpool1-10932256-2  MountVolume.SetUp failed for volume "es-certs-es-cluster" : secrets "es-certs-es-cluster" not found

grr ok, can make a change for that. Sorry for all the back and forth here.

@stevesloka No worries. We need X-Pack here, so might need to go with a different chart. How hard would that be to add in? And allow for Ingress annotations so I can use Envoy. :)


option for a fully nonnull scala binding

add an option to the scala generator, which emits options for nullable types using None as substitute for null.

this would introduce scalability issues, since options introduce new objects


Grid not showing up as expected

I am 100% sure that this is a PEBKAC case, but I'm not sure where else to turn:
require 'glimmer-dsl-libui'
include Glimmer

window("Test", 500, 500) {
  grid {

    area {
      left 1
      top 0

      rectangle(0, 0, 150, 500) {
        fill 0xff0000
      }
    }

    non_wrapping_multiline_entry {
      left 0
      top 0

      text "asdf"
    }
  }
}.show

Shows up as the attached image.
What's happening: the rectangle is all the way to the left
What should happen: the rectangle should begin within its spot in the grid.
Obviously, I recognize that this is just my unfamiliarity with library, but I'm hoping for some guidance on where to turn to.

I guess I have a couple usage questions:

how do I specify the width of an arbitrary element (in this case non_wrapping_multiline_entry?
how do I get it to show up after the rectangle? or even below the rectangle? changing the order to be top 0, left 0 for the area and top 1, left 0 for the multiline_entry just gets me the same as the image above.

Here's another example; it should be a green rectangle above a red rectangle, but the red rectangle doesn't appear.
require 'glimmer-dsl-libui'

class Test
  include Glimmer

  def launch
    window("Test", 500, 500) {
      margined true

      grid {

        area {
          left 0; xspan 1
          top  0; yspan 1
          rectangle(0, 0, 500, 200) {
            fill 0x00ff00
          }
        }

        area {
          left 0; xspan 1
          top  1; yspan 1

          rectangle(0, 0, 500, 200) {
            fill 0x0000ff
          }
        }

      }

    }.show
  end
end

Test.new.launch

The last scenario you shared is definitely not supported. It is mentioned in the Glimmer DSL for LibUI API gotchas:
https://github.com/AndyObtiva/glimmer-dsl-libui#api-gotchas

It seems that libui does not support nesting multiple area controls under a grid as only the first one shows up in that scenario. To workaround that limitation, use a vertical_box with nested horizontal_boxs instead to include multiple areas in a GUI.

From doing some testing, it seems non_wrapping_multiline_entry does not play well with grid either, but entry and label do.
I personally learned to avoid using grid and just use a combination of horizontal_box and vertical_box, sometimes including empty label controls if I needed to add blank space.
Given that the underlying C libui library is still alpha, it seems like the grid layout is not ready for prime time yet, especially when including area or non_wrapping_multiline_entry in it.
On the other hand, Glimmer DSL for SWT's grid layout is 100% feature complete and solid. You could try it instead if you're willing to build apps with JRuby.

Hello, Layout! sample: https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/docs/reference/GLIMMER_SAMPLES.md#hello-layout
Glimmer DSL for SWT Layouts: https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#layouts

But, going back to Glimmer DSL for LibUI, like I mentioned, I would recommend just using a combination of horizontal_box and vertical_box.
If you could provide me with a quick mockup or description of the graphical user interface you are trying to build, maybe I could advise you on how to build it using Glimmer DSL for LibUI.
If you haven't already, I highly recommend checking out the project examples:

https://github.com/AndyObtiva/glimmer-dsl-libui/blob/master/docs/examples/GLIMMER-DSL-LIBUI-BASIC-EXAMPLES.md
https://github.com/AndyObtiva/glimmer-dsl-libui/blob/master/docs/examples/GLIMMER-DSL-LIBUI-ADVANCED-EXAMPLES.md

That's the fastest way to learn it.
Tetris is a good example of using area and non-area controls: https://github.com/AndyObtiva/glimmer-dsl-libui/blob/master/docs/examples/GLIMMER-DSL-LIBUI-ADVANCED-EXAMPLES.md#tetris

Fantastic! Thank you very much for the response.

From doing some testing, it seems non_wrapping_multiline_entry does not play well with grid either, but entry and label do.
I personally learned to avoid using grid and just use a combination of horizontal_box and vertical_box, sometimes including empty label controls if I needed to add blank space.
Given that the underlying C libui library is still alpha, it seems like the grid layout is not ready for prime time yet, especially when including area or non_wrapping_multiline_entry in it.

This is what I was looking to hear — glad I'm not crazy.
Unfortunately, I'm building a GUI for a tool I wrote that leans on the NArray C library in a non-trivial way, so I can't use JRuby/SWT. I've been wrestling with grid and have gotten it to finally work, although it wasn't easy. Here's what I have so far:

I would like to use a combination of horizontal_box and vertical_box, but I don't know how to give them uneven space (like the table on the left and the large graph of vertexes and edges) — my attempts for the above image end up splitting the screen in half. However, you manage to do it in tetris.rb, so I'm going to play around some more and see what I can make happen.
Thanks again!

Wow! This GUI you built looks amazing! You're some sort of a genius to have figurd this out. Could I include that screenshot in Glimmer DSL for LibUI's Applications? Also, is it an open-source software project by any chance?  Would you mind at least sharing how you got the grid working (no need to share other non-view code if you don't want to)?
By the way, with horizontal_box and vertical_box, in order to ensure not all controls have the same size, you set the property stretchy false for ones that shouldn't stretch to take up all available remaining space. However, I just tested it with area, and unfortunately, the stretchy option applied to table (to prevent it from stretching) does not work correctly when an area is inside the same horizontal_box along with it. I reported the issue (and other issues) to the upstream libui-ng C library project: https://github.com/libui-ng/libui-ng/issues/216

I'm so glad you like it, thank you so much! Please feel free to include the screenshot wherever you want!
I would like it to be open source, but I'm trying to use this software to maybe start a company, so I can't quite release it yet until I figure out how to somehow find work with the underlying software.
That said, I'm working on rewriting the GUI to use MVP, so I can definitely make the GUI open source. I'll have it up shortly and let you know.

It doesn't have to be open-source at all. I only asked just in case so I'd learn more about the project. But, I respect closed-source software too, especially when it's for a business. I work for a company with closed source software, so I totally understand. You don't have to open-source it.
Thank you for allowing me to share the screenshot. I added it under Glimmer DSL for LibUI Applications:
https://github.com/AndyObtiva/glimmer-dsl-libui/tree/master#electric-avenue

Here's the GUI code for it (I just tried to rewrite it to be more like MVP with observers, but it's tough — I'm not used to this style, or GUI programming in general).
https://github.com/seydar/electric_gui

OK, I will take a look when I get a chance.

I took a look.
Your app.rb generally looks good. I like how you abstracted components out into methods.
In Glimmer DSL for LibUI terminology, this technique is called Method-Based Custom Keywords. Or, more casually, method-based custom controls (components).
Also, I liked your usage of data-binding and how it pulled data cleanly from pure presenters (overall.rb and congestion.rb). It was very well done.
I noticed that you declared histogram.rb (and plotter.rb) as a Presenter. However, it is used as a View given that it is rendering GUI. Usually, Presenters present information that is summarized from Models. And, Presenters generally don't mix in Glimmer. They're a layer below Glimmer (which is only mixed into Views in general).
You could have avoided that by extracting this bit of code from app.rb into histogram.rb, and putting histogram.rb under a views directory.
    @hist = area {
      left x; xspan xs
      top  y; yspan ys
      vexpand true

      on_draw do |area|
        rectangle(0, 0, area[:area_width], area[:area_height]) {
          fill 0xFFFFFF
        }

        @histogram.plot area
      end
    }

The same could have been done for plotter.rb:
    @plot = area {
      left x; xspan xs
      top  y; yspan ys

      on_draw {|area|
        @plotter.scale_area area, PLOT
        self.desc = grid_description

        # Background
        rectangle(0, 0, area[:area_width], area[:area_height]) {
          fill 0xffffff
        }

        # Graph
        @plotter.plot_flows

        # Info
        @plotter.plot_info_box
      }

      on_mouse_up do |area_event|
        @plotter.select_info_box(area_event[:x], area_event[:y])
        @plot.queue_redraw_all
      end
    }

To do that, you could use the other Glimmer DSL for LibUI custom control technique, which is called Class-Based Custom Keywords, or class-based custom controls. Glimmer will automatically convert such classes into underscored keywords. So, if you declare a Histogram custom control, you can later use it with histogram in a View that mixes Glimmer. A Plotter class becomes plotter in Glimmer View code.
This code is a small example of how to build a class-based custom control (it generates the address_view keyword):
class AddressView
  include Glimmer::LibUI::CustomControl

  options :address

  body {
    vertical_box {
      address.each_pair do |attribute, value|
        label_pair(model: address, attribute: attribute, value: value)
      end
    }
  }
end

This can later be used from another View like this:
  window {
    horizontal_box {
      address_view(address: shipping_address)
      address_view(address: billing_address)
    }
  }

To learn more how to build class-based custom controls, I highly recommend checking out the examples/class_based_custom_controls.rb example:
https://github.com/AndyObtiva/glimmer-dsl-libui/blob/master/docs/examples/GLIMMER-DSL-LIBUI-ADVANCED-EXAMPLES.md#class-based-custom-controls
Another bit of feedback is app.rb could have taken advantage of the new Glimmer DSL for LibUI module for building applications Glimmer::LibUI::Application (aka Glimmer::LibUI::CustomWindow):
https://github.com/AndyObtiva/glimmer-dsl-libui#usage
It expects declaring the GUI code cleanly inside body, and it takes care of the rest whe you call ClassName.launch (it also supports before_body and after_body hooks in case there is a need to execute code before or after initialization of the body, so any code in initialize goes into before_body if you refactor).
require 'glimmer-dsl-libui'

class SomeGlimmerApp
  include Glimmer::LibUI::Application

  body {
    window('hello world', 300, 200) {
      button('Button') {
        on_clicked do
          puts 'Button Clicked'
        end
      }
    }
  }
end

SomeGlimmerApp.launch

In summary:

Your declaration of View components via methods in app.rb is great! That technique is called method-based custom controls.
Your usage of data-binding with clean presenters overall.rb and congestion.rb is great.
app.rb could optionally use include Glimmer::LibUI::Application instead of include Glimmer to automate some of the boilerplate work. Any code that was in initialize would move to before_body if you make this refactoring.
histogram.rb (and other similar presenters that mix in Glimmer to build View GUI like plotter.rb) should become a class-based custom control and live in a views directory.
If there is logic that is needed to be done to produce data for View components, it should be separated into clean presenters that do NOT mix in Glimmer. This is OPTIONAL and is not always necessary. Sometimes, the logic is simple enough to just live inside the View (custom control) classes.
You can add a models directory to store Model classes that you rely on in the Presenters as a lower layer that provides the base data before it is summarized in a form that could be rendered in a View. This is not needed if your Model layer is actually living outside the application in some library (like in electric_avenue.rb)

I hope that I provided enough feedback. If you have any further questions, feel free to ask.
Cheers.


Unable to grant owner access to User members - Cloud Resource Manager API

The Cloud Identity and Access Management documentation  mention the following two points that seem to be contradicting each other

Cloud Resource Manager IAM methods only support granting the owner role to user and serviceAccount
A user cannot be granted owner access using setIamPolicy(). The user must be granted the owner role using the Cloud Platform Console and he must explicitly accept the invitation.

I am interested to grant owner access to user members in a Developer Console project. For this I am using Cloud Resource Manager API. I have tried to implement this in Python and Google Apps Script using Service Account authorization + domain wide delegation.
In both cases, the program is raising HTTP 400 error with following error:

status: INVALID_ARGUMENT
details: "type.googleapis.com/googlecloudresourcemanager.projects.v1beta1.ProjectIamPolicyError", "SOLO_MUST_INVITE_OTHERS".

Strangely, I am able to perform this action in Google API Explorer successfully!
So,

Why is this happening?
Is it possible to grant owner access to user members using API?

That second point seems to say that is just can't be done programmatically. Is that the method you are successfully calling in API Explorer?

Greetings!  If this is still an issue, please do let us know!

Hi @ksurya ,
I am also facing the same issue;
The below command fails:
gcloud projects add-iam-policy-binding linuxacademy-3 --member<EMAIL_ADDRESS>--role roles/owner
Is there any alternative for this; if yes, How to add this in my Python Code.
Please help me here..!
Regards,
Rohith


Production: Database error because of too many clients

Yesterday, the website showed an internal error. Probably related are many many messages
in the PostGreSQL logs:
[...]
postgres_1      | 2020-02-11T16:36:29.045202882Z 2020-02-11 16:36:29.045 UTC [28082] FATAL:  sorry, too many clients already
postgres_1      | 2020-02-11T16:43:55.384648517Z 2020-02-11 16:43:55.384 UTC [28098] FATAL:  sorry, too many clients already
postgres_1      | 2020-02-11T16:50:51.442620437Z 2020-02-11 16:50:51.442 UTC [28113] FATAL:  sorry, too many clients already
postgres_1      | 2020-02-11T16:56:47.498261314Z 2020-02-11 16:56:47.498 UTC [28126] FATAL:  sorry, too many clients already

I don't know what has caused this - I think these messages are related to the internal error, since a restart only of the database fixed it.

Unfortunately this happens again:
django_1        | 2020-06-11T22:19:02.883567546Z Traceback (most recent call last):
django_1        | 2020-06-11T22:19:02.883572223Z   File "/opt/conda/lib/python3.7/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection
django_1        | 2020-06-11T22:19:02.883577138Z     self.connect()
django_1        | 2020-06-11T22:19:02.883581745Z   File "/opt/conda/lib/python3.7/site-packages/django/db/backends/base/base.py", line 195, in connect
django_1        | 2020-06-11T22:19:02.883586592Z     self.connection = self.get_new_connection(conn_params)
django_1        | 2020-06-11T22:19:02.883591239Z   File "/opt/conda/lib/python3.7/site-packages/django/db/backends/postgresql/base.py", line 178, in get_new_connection
django_1        | 2020-06-11T22:19:02.883596163Z     connection = Database.connect(**conn_params)
django_1        | 2020-06-11T22:19:02.883600788Z   File "/opt/conda/lib/python3.7/site-packages/psycopg2/__init__.py", line 126, in connect
django_1        | 2020-06-11T22:19:02.883605663Z     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django_1        | 2020-06-11T22:19:02.883617442Z psycopg2.OperationalError: FATAL:  sorry, too many clients already

The fix from last time seems to be in place. Maybe the number of connections have to be increased?

The application did not stop, but this error could accumulate somehow as in the past.

Happened again when starting release v0.10.1 the first time. As workaround I've increased the
number of connections and the shared buffer:
    entrypoint: /docker-entrypoint.sh -c "shared_buffers=2GB" -c "max_connections=2000"

I don't know yet what caused the problem.

Didn't happen since December 9th last year, when we started out new setup. Closing.


rpmbuild: refactored scripts to build/test RPMs

Move docker/buildit.sh to scripts/build-rpms.sh
Change build-rpms.sh to take in two arguments:

The first is mandatory and points to the cmake build tree root
The second is optional and points to the source tree root.
If omitted, it defaults to the CWD
Change how cmake/make is invoked by using command line arguments to
point to source tree, build tree, or both.

Change test-rpms.sh to:

Take in path to directory where opae*.rpm should be found.
If it fails to install the RPMs, the script will error out.
Capture exit codes of calling installed
exectuables. Logging of unexpected exit codes will be shown at the
end.

Change docker files to copy build/test scripts to /scripts directory
Change GH actions to call the containers with the proper arguments

Coverage remained the same at 67.348% when pulling 7a91af1315e8db5173234dd810f9b71574ec9b2a on rrojo/build_test_rpms into 58e63138576650df8db9ae0f4f0098b4331f3139 on master.

Here is a manual run the GitHub workflow "Build RPMs" that is affected by this change:
https://github.com/OPAE/opae-sdk/runs/1971407575?check_suite_focus=true


Cronjob needs the options --text --non-interactive

The cronjob deployed by this module needs the command line options '--text --non-interactive' to avoid PythonDialogBug occurring under certain platforms.  I get this under CentOS 7.  The issue filed below with certbot reports it occurring under Ubuntu 14.04.
https://github.com/certbot/certbot/issues/1154

PR #58 should address this.


not all releases support str8, so there are compatibility issues.

Could you please add a compatibility switch to force clojure-msgpack to create str16 serializations instead of str8.

@ginahagg yes, I'll add a compatibility mode flag

Thank you :)

Just published version 1.2.0 which adds the :compatibility-mode flag (see README.md). Apologies for the delay.

Thank you so much :) Much appreciated.

You're welcome, thanks for the report!


Determine minibuffer height by actual text height

This aims to fix #151 and #146.

I have added this to the changelog entry of #133 because ideally this would have be included there. The height problem didn't appear before because the height was determined by the contents.

I discovered the height issues were already present before #133 so I added it this to the Bugs fixed section in the changelog.


Deprecates the long-dead mc admin console command

Corrects most references to point to the current command.
Additional references to deprecated command fixed by PR #1198 .
We should merge 1198 at the same time we merge this one.
Staged:

http://<IP_ADDRESS>:9000/staging/admin-logs/linux/reference/deprecated/mc-admin-console.html

Originally deprecated in https://github.com/minio/mc/releases?q=4132
Command moved again in https://github.com/minio/mc/releases/tag/RELEASE.2022-12-02T23-48-47Z.