Relocate BinderHub specific config nested to jupyterhub.hub.services.binder

Bug description
Binderhub makes use of jupyterhub.hub.services.binder.oauth_no_confirm and some more. I consider it a bad practice to locate configuration that is specific to the BinderHub Helm chart nested within the configuration options of its dependent Helm charts. I'll provide three motivations:

Z2JH has introduced schema validation that helps users catch errors whenever they pass config to the chart that isn't recognized by the chart. This has been very helpful and catched a lot of issues already, even in binderhub and mybinder.org-deploy which we maintain - for example config that was passed and ignored.
For this helms schema validation to work, it must either accept or reject unrecognized config like this, there is no middle ground.
The reason this fails in 1.1.0 but didn't in 1.0.0 is because the schema wasn't as rigorous as it is in 1.1.0, which I consider to be a feature now of 1.1.0 rather than something we want to revert.

By BinderHub locating config passed under jupyterhub, it strongly indicates that that config relates to that Helm chart. But, in this case it doesn't. That makes the configuration hard to understand and think about.

With Z2JH 1.1.0 as a dependency of BinderHub, I can make the need to configure jupyterhub.hub.services.binder with an explicit API token optional. When it becomes optional, users won't need to configure anything under jupyterhub.hub.services.binder, and for them to setup something specific there becomes even weirder.

https://github.com/jupyterhub/zero-to-jupyterhub-k8s/pull/2312
#1337

Due to the above motivations, I suggest we relocate the configuration - that we make a breaking change. I have not come up with a suggestion as to where though, but it should not be nested under jupyterhub.
This is the validation error we get with the 1.1.0 schema of Z2JH.
Error: values don't meet the specifications of the schema(s) in the following chart(s):
jupyterhub:
- hub.services.binder: Additional property oauth_client_id is not allowed
- hub.services.binder: Additional property oauth_no_confirm is not allowed
- hub.services.binder: Additional property oauth_redirect_uri is not allowed

How to reproduce
Run the tests with JupyterHub 1.1.0 as a dependency, see #1340's failures.
Suggested solution
To relocate the config outside the jupyterhub helm chart's config.

@bitnik @sgibson91 @manics @yuvipanda if this config's new location is decided, then I can implement this change which will be breaking though.
I would like to make this breaking change rather than revert or relax the schema validation in z2jh as it feels like a downstream influence on z2jh that isn't justified in this case.

Who uses this config? I did a quick search in this repository for oauth_no_confirm but that just finds config files, not code that makes use of these values. Do you know?

Answering my own question: it looks like these values are  used in https://github.com/jupyterhub/jupyterhub/blob/main/jupyterhub/services/service.py. If the user of this information is jupyterhub, it doesn't seem so weird that the place to configure it is part of the jupyterhub helm chart as well. Can we instead add these keys as part of the schema for what a valid service's config looks like?

jupyterhub.hub.services.binder.oauth_no_confirm doesn't seem used in any way.

jupyterhub.hub.services.binder.oauth_redirect_uri sets an env var that is actually consumed, but oauth_client_id setting the JUPYTERHUB_CLIENT_ID ends up not being consumed.
https://github.com/jupyterhub/binderhub/blob/b7eba931cf61a80d8dc516568699d406c6cae2a9/helm-chart/binderhub/templates/deployment.yaml#L108-L111
https://github.com/jupyterhub/binderhub/blob/b7eba931cf61a80d8dc516568699d406c6cae2a9/binderhub/app.py#L824-L826

If the user of this information is jupyterhub, it doesn't seem so weird that the place to configure it is part of the jupyterhub helm chart as well. Can we instead add these keys as part of the schema for what a valid service's config looks like?

jupyterhub.custom is a place where a dependency helm chart can add whatever they like, there it become quite obvious that it may not be official jupyterhub configuration. I'd very much like to have a clear separation of what is actually jupyterhub Helm chart recognized config, and what isn't.

I think of schema validation as like linting and code formatting- if you're starting from scratch it makes sense to be as strict as possible and enforce it, but if you're adding it to an existing repo there's a balance between something that's completely clean, and something that minimises breaking changes for others.
I don't have enough information to say whether the breaking change is justified yet. As pointed out by @betatim a property is referenced in JupyterHub- how does JupyterHub anticipate this will be used by services? Ignore what BinderHub does, we want the schema to work for other JupyterHub services too- if it's irrelevant should we remove it from JupyterHub since we've got v2 on the way in which case a corresponding breaking change here sounds justified.
What do you think of making a non-breaking PR that adds the current config values to the schema for services (or allows arbitrary additional keys), and if we decide a breaking change is justified make that in a separate PR later?

Ahhh okay, looking closer at this now with @betatim's reference to the service.py file in jupyterhub, I see that there are loads of configuration that wasn't listed in the documentation but possible. If z2jh would update its schema for everything of that it would be silly duplication of config etc.
I'm feeling very confident that the right thing to do is to close this issue and let additional properties on hub.services be allowed than those defined in the z2jh schema.
Thanks @betatim and @manics! I'll submit a PR to z2jh and want to cut 1.1.1 with it merged.


onRowsRendered custom usage with InfiniteLoader and List

I am working my way through trying to figure out if I can have a custom "onRowsRendered" function.
As per documentation examples, both list and InfiniteLoader utilize onRowsRendered={onRowsRendered}
 {({ onRowsRendered, registerChild }) => (
             <List className="table table-bordered"
               ref={registerChild}
             onRowsRendered={onRowsRendered}
....

However I cannot seem to figure out / find a documented way of customising / modfying the fuction. I am trying to grab the startIndex and stopIndex values, however that completely stops the Infinite loader functionality.
A better example of what I am trying to achieve that works:
    onRowsRendered={({ startIndex, stopIndex }) =>
      this.setState({startIndex: startIndex + 1, stopIndex: stopIndex})
       }

, I need same + Infinite Loader still working  👍
Now it just seems like both Infinite loader and List make user of onRowsRendered property and one cancels out the other. I do realize it's a very rare case, but would love to know if this is a bug or am I just being silly.
And for those wondering why would I need this.. Is to display number of items (From ... To..) which are currently visible, and as users scrolls up / down they update.

you should make some "proxy" to make it works.
something like this:
 <InfiniteLoader                         isRowLoaded={isRowLoaded}                         loadMoreRows={loadMoreRows}                         rowCount={rowCount}                         >                         {({ onRowsRendered, registerChild }) => (                             <AutoSizer>                                 {({ height, width }) => (                                     <List                                          onRowsRendered={({ startIndex, stopIndex }) => {                                             onRowsRendered({ startIndex, stopIndex });                                             _.debounce(handleRowsRendered({ startIndex, stopIndex }),500);                                         }}                                         ref={registerChild}                                         rowCount={rowCount}                                         rowHeight={73}                                         rowRenderer={rowRenderer}                                         width={width}                                         height={height}                                     />                                 )}                             </AutoSizer>                          )}                     </InfiniteLoader>


Updates pywal to version 3.1.0

Motivation for this change
Fixes #44925.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Fits CONTRIBUTING.md.

@Mr-SD Please change the commit message to pythonPackages.pywal: 2.0.5 -> 3.1.0

@GrahamcOfBorg build python2.pkgs.pywal python3.pkgs.pywal

No attempt on x86_64-linux (full log)
The following builds were skipped because they don't evaluate on x86_64-linux: python2.pkgs.pywal, python3.pkgs.pywal
Partial log (click to expand)
Cannot nix-instantiate `python2.pkgs.pywal' because:
error: attribute 'pywal' in selection path 'python2.pkgs.pywal' not found

Cannot nix-instantiate `python3.pkgs.pywal' because:
error: attribute 'pywal' in selection path 'python3.pkgs.pywal' not found

No attempt on aarch64-linux (full log)
The following builds were skipped because they don't evaluate on aarch64-linux: python2.pkgs.pywal, python3.pkgs.pywal
Partial log (click to expand)
Cannot nix-instantiate `python2.pkgs.pywal' because:
error: attribute 'pywal' in selection path 'python2.pkgs.pywal' not found

Cannot nix-instantiate `python3.pkgs.pywal' because:
error: attribute 'pywal' in selection path 'python3.pkgs.pywal' not found

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: python2.pkgs.pywal, python3.pkgs.pywal
Partial log (click to expand)
Cannot nix-instantiate `python2.pkgs.pywal' because:
error: attribute 'pywal' in selection path 'python2.pkgs.pywal' not found

Cannot nix-instantiate `python3.pkgs.pywal' because:
error: attribute 'pywal' in selection path 'python3.pkgs.pywal' not found

Success on x86_64-darwin (full log)
Attempted: pywal
Partial log (click to expand)
> Create special escape sequence with alpha. ... ok
test_all_templates (tests.test_export.TestExportColors)
> Test substitutions in template file. ... ok
test_css_template (tests.test_export.TestExportColors)
> Test substitutions in template file (css). ... ok

----------------------------------------------------------------------
Ran 29 tests in 0.147s

OK

Success on aarch64-linux (full log)
Attempted: pywal
Partial log (click to expand)
test_all_templates (tests.test_export.TestExportColors)
> Test substitutions in template file. ... ok
test_css_template (tests.test_export.TestExportColors)
> Test substitutions in template file (css). ... ok

----------------------------------------------------------------------
Ran 29 tests in 0.492s

OK
/nix/store/kycr5lji3cm2v84a52zxl7j2f7qbj6s0-pywal-3.1.0

Success on x86_64-linux (full log)
Attempted: pywal
Partial log (click to expand)
> Generate a colorscheme. ... ok
test_gen_colors_fail (tests.test_colors.TestGenColors)
> Generate a colorscheme and fail. ... ERROR:root:Imagemagick couldn't generate a palette.
ERROR:root:Try a different image or backend.
ok

----------------------------------------------------------------------
Ran 29 tests in 0.539s

OK

@dotlambda Done


Firestore: Make DocumentSnapshot.fromDocument(...) public

Hi, this is one more issue related to the GCP Java Frameworks team's reactive Spring Data project.
In order to convert documents to java objects we would like to be able to create a DocumentSnapshot from a Document so we can then call DocumentSnapshot.toObject(...)
Note, that currently it requires FirestoreImpl which is package-private.
If possible, a static method that converts a Document to java object would be preferable.

@dmitry-s  This is a publicly usable from here: https://github.com/googleapis/google-cloud-java/blob/master/google-cloud-clients/google-cloud-firestore/src/main/java/com/google/cloud/firestore/Internal.java#L54


Showroom in wyam.io

 Issue by Klepeto
Thursday Dec 07, 2017 at 21:24 GMT
Originally opened as https://github.com/Wyamio/Wyam.Web/issues/62

What about page in wyam.io  with links to webs built with wyam? It would be nice to see what others made with this site generator.

 Comment by daveaglick
Thursday Dec 07, 2017 at 21:42 GMT

Like this one :smile:: https://wyam.io/docs/resources/built-with-wyam
Now that the list has gotten fairly long, it should probably be promoted on the home page or something so people can actually find it. Any suggestions how to make it more prominent?

 Comment by Klepeto
Thursday Dec 07, 2017 at 22:09 GMT

I was exactly in Resource folder and somehow overlooked  Built with wyam..ah...
I think it should be in main navigation - Next to Documentation,  Recipes, Modules and API... It is kind of portfolio, it should be first-visit visible...


trigger build

Hmm.. we should get you access to Jenkins @mpollmeier . Can you file a request ticket in itsupport repo and assign to Davy?

@vlad-alexandru-ionescu this is built on travis.ci, where I can trigger a build, but only an actual commit will trigger a release. my preference would be that I can push directly to master, and I'd argue that's ok because I often do release-specific changes that can't be tested on a branch anyway.
thanks for approving!

Got it - forgot about that :-)


TermControl does not receive enough _CursorPositionChanged events

Windows Terminal version (or Windows build number)
1.12
Other Software
No response
Steps to reproduce

Start Terminal in debug mode
Set a breakpoint at TermControl::_CursorPositionChanged
Enter some input (without any newlines)

Expected Behavior
The breakpoint at TermControl::_CursorPositionChanged should get hit
Actual Behavior
The breakpoint does not get hit, it only gets hit when the input contains a newline

I believe @DHowett had a suspicion for when this may have regressed

Indeed! We stopped doing it when we added position deferral. This results in the IME not tracking the cursor position when it changes within a line.

This results in the IME not tracking the cursor position when it changes within a line

That sounds... pretty bad actually. Should this be fixed for 1.12 Stable?

Yes, we should. Good catch!


fix(jest-types): compat with @types/node v16

https://github.com/facebook/jest/issues/11640

CLA signed

Codecov Report

Merging #11645 (f3e5564) into master (7a64ede) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #11645   +/-   ##
=======================================
  Coverage   69.01%   69.01%
=======================================
  Files         312      312
  Lines       16335    16335
  Branches     4734     4734
=======================================
  Hits        11273    11273
  Misses       5034     5034
  Partials       28       28

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 7a64ede...f3e5564. Read the comment docs.

@72636c hi, fixed ))

@SimenB please, help me about problem with https://github.com/facebook/jest/issues/11640

Can a maintainer please provide an update on this? This is causing ecosystem-wide disruption. I've documented only a few instances here.
Also, what is being done to ensure that this does not occur again in the future?

Having issues with ts checking too with errors:
Namespace 'NodeJS' has no exported member 'ConsoleConstructor'
Namespace 'NodeJS' has no exported member 'InspectOptions'

@SimenB @jest-bot Please review

@SimenB bump, status?

@cpojer please review.

Any updates for this fix?

Could you add a changelog entry? I didn't quite understand what needs to be done)

Add an entry here describing your change: https://github.com/facebook/jest/blob/master/CHANGELOG.md

@SimenB hello, I was updated branch, please review me

@SimenB hello, I was updated branch after review))

There appears to be two types that was missed
node_modules/@jest/types/build/Config.d.ts:312:38 - error TS2694: Namespace 'NodeJS' has no exported member 'Global'.

312     extraGlobals: Array<keyof NodeJS.Global>;
                                         ~~~~~~

node_modules/@jest/types/build/Global.d.ts:93:62 - error TS2694: Namespace 'NodeJS' has no exported member 'Global'.

93 export interface Global extends GlobalAdditions, Omit<NodeJS.Global, keyof GlobalAdditions> {

NodeJS.Global appeared to have been removed here and I asked what the replacement is, but I think NodeJS.Global can be replaced with typeof globalThis.

Feel free to send a PR 👍

Is this a breaking change? it seems like Global is now defined as:
export interface Global extends GlobalAdditions, Omit<typeof globalThis, keyof GlobalAdditions> {
    [extras: string]: unknown;
}

breaking our existing declaration of variables set to this.global of the NodeEnvironment:
declare global {
  namespace NodeJS {
    interface Global {
      driver: TestDriver;
      reset(): Promise<void>;
    }
  }
}

class ITEnvironment extends NodeEnvironment {
  async setup(): Promise<void> {
    await super.setup();

    this.global.driver = new TestDriver(...);

    this.global.reset = async () => {
      await this.global.driver.reset();
    };
  }
}
...

that used to work fine until now, but now we're getting:
error TS2571: Object is of type 'unknown'.

           await this.global.driver.reset();
                 ~~~~~~~~~~~~~~~~~~

with jest ~27.1.0 and @types/node at 14.14.0.
Is this by design? are typed exports from global not supported anymore?


Add a rake task to push database metrics to prometheus

I often find myself wanting to know "how many published editions are there for this document type?", or "how many published editions do we have for each publishing app?", or things of that nature.
Currently these questions can be answered at a point in time by querying a database, but there's no easy way to see how the values change over time.
It's also not easy to compare numbers from different databases - for example, is the number of editions in publishing-api's database with publishing_app=whitehall the same of the number of editions in the same state in whitehall?
The idea here is to have each publishing app and publishing-api report a metric of "editions_in_database_total". Each publishing app should set the "database" label to be the app name, and set the other labels as consistently as possible with publishing-api.
We'll run this rake task as a cron job, and it will push metrics to prometheus via the pushgateway. The rake task also renders the metrics as text, to make debugging and testing easier.
The database query in publishing-api is fairly expensive (it has to do a large heap scan of editions, which takes around 30 seconds), so we shouldn't run the cron job more than around once an hour.
Explain analyse output for the query
Currently the output of the task looks like this:
Found 2103 combinations of labels
# TYPE editions_in_database_total gauge
# HELP editions_in_database_total Count of editions in various databases labeled by state, document_type etc.
editions_in_database_total{database="publishing-api",state="draft",content_store="draft",document_type="aaib_report",publishing_app="specialist-publisher",locale="en"} 34.0
editions_in_database_total{database="publishing-api",state="draft",content_store="draft",document_type="about",publishing_app="whitehall",locale="cy"} 1.0
...

2103 combinations of labels sounds like a lot, but Prometheus is fine with much larger cardinalities than this, at least according to this answer
This will allow us to produce a Grafana dashboard that does things like this:

⚠ This repo is Continuously Deployed: make sure you follow the guidance ⚠

I deployed this to integration and ran the rake task - sure enough, the numbers have appeared in prometheus, and I can use them in Grafana ✨

What was the reasoning behind use push gateway rather than implementing a gauge that can be scraped at /metrics?

What was the reasoning behind use push gateway rather than implementing a gauge that can be scraped at /metrics?

Because it's coming from the database, it's not specific to an instance / pod, so we'd end up with multiple series, which we'd then have to merge using a reporting rule (or otherwise be very careful about things like sum()).
The other thing is that the SQL query is pretty slow (about 30 seconds), so we can't put it on the rendering path of a scrape response. We'd have to have some kind of background loop running the query on an interval and writing to the gauge, and it's not immediately obvious how best to do this.
The prometheus best practices guide on pushing metrics does its best to warn people off pushing metrics, but I think we're okay by this definition:

Usually, the only valid use case for the Pushgateway is for capturing the outcome of a service-level batch job. A "service-level" batch job is one which is not semantically related to a specific machine or job instance (for example, a batch job that deletes a number of users for an entire service). Such a job's metrics should not include a machine or instance label to decouple the lifecycle of specific machines or instances from the pushed metrics.

All that said, I'd be happy to re-implement it as a scrapable metric if we can think of a good pattern for that though.


hello，How to use this model to detect continuous sign language

Excuse me, what is the meaning of "detect" here ?

Excuse me, what is the meaning of "detect" here ?

I mean translating into sign language with a model, orrecognition

You can try the instructions of inference in Readme


God has left the game.

I do. https://git.procrastination.life/Pako/Cancer


Fix typo in documentation of gpu_do

A missing quote made the rendering of a code snippet not occur.

Thank you!


Add more default language

Localized Nibs from Matt Gemmell includes English, French, German, Dutch, Italian, Catalan, Danish, Brazilian Portuguese, Swedish, Finnish, Spanish, Serbian, Japanese and Korean
http://mattgemmell.com/source/

@everybody
#1: I haven't found a way yet to automate processing the translated tokens from the Nibs into json language files. If somebody has an idea, feel free to contribute.
#2: I have noticed that the menu structure changed since these nib files were created. So there are some new tokens that would be missing anyway.


Only called first time

Hello, I have a paginate-loader component that is using this mixin for infinite scroll, however it seems to only be called the first time it enters the viewport...
Here is my paginate-loader component...
import Ember from 'ember'
import InViewportMixin from 'ember-in-viewport'

PaginateLoaderComponent = Ember.Component.extend InViewportMixin,
  didEnterViewport: ->
    log 'entered'
    # Call the 'loadMore' action that is passed into the component.
    @sendAction 'loadMore'

export default PaginateLoaderComponent

in my templates/route.hbs
          {{#each stores as |store|}}}
          ...
          {{/each}}
          {{#paginate-loader loadMore=(route-action 'loadMore')}}
          loading...
          {{/paginate-loader}}

So when I scroll down and the paginate-loader comes into view the first time, it loads more data and it goes out of view... however scrolling down further until it comes into view again does NOT trigger the didEnterViewport function again... Why is this? How can I have it called every time?

Either set viewportSpy to true in your config/environment or set it on the component itself:
module.exports = function(environment) {
  var ENV = {
    viewportConfig: {
      viewportSpy: true
    }
  };
};

doh missed the setting for spying... do I need to unbind everything on route change or is that handled automatically if I set the spy to true?

It will unbind it for you when the component's element is destroyed.

thanks!


Rating Plugin only working in Playlist (Linux)

On Linux, the Plugin works as expected, but only in the Playlist of VLC. But for example in the "My Music" tab of vlc, the rating column is empty, and when i try and rate a playing music file in the same tab, nothing happens.

This seems to be a limitation with VLC's LUA interface. The API does not seem to provide a way to manipulate entries in the "My Music" tab. I've double-checked https://vlc.verg.ca/ and https://code.videolan.org/videolan/vlc/-/tree/master/share/lua. Passing anything other than "playlist" to vlc.playlist.gets() yields nil for me.

The thing is, the Plugin knows what song is played and shows it correctly
in the rating window. But if I try to rate, it does not write anything to
the rating file, although it knows what audio file is played.
Also another question: Why does your Plugin automatically Pause music when
the rating window is opened?
Pragmatic Software @.***> schrieb am So., 5. Feb. 2023,
22:31:

This seems to be a limitation with VLC's LUA interface. The API does not
seem to provide a way to manipulate entries in the "My Music" tab. I've
double-checked https://vlc.verg.ca/ and
https://code.videolan.org/videolan/vlc/-/tree/master/share/lua. Passing
anything other than "playlist" to vlc.playlist.gets() yields nil for me.
—
Reply to this email directly, view it on GitHub
https://github.com/pragma-/vlc-ratings/issues/3#issuecomment-1418270434,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQEXELEMHDEAHBFEVR363WDWWAL4PANCNFSM6AAAAAAURWN6AQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

That's just been the way I use my rating plugin. I open the plugin when I open VLC and I leave it open until I'm done.
Feel free to edit the plugin to behave the way you prefer.


Add counters page

If the nettrace contains EventCounters they could be displayed on a graph.

Dup of https://github.com/verdie-g/dotnet-events-viewer/issues/10.


Suggestion: Unused Variables

I know there is a reference indicator above a variables, but you only seen it, if you right in front of that variable. Would be nice to be able the analyze the hole solution and list all unused variables.

I agree. Analyzing the whole solution will be somewhat of a winter project because I want to display the results in a nice way.
If you look at the TypeScript there is an object called summary. This is what I am planing on creating and send as json to a webpage or excel.
Keep the great ideas comming please.

Started to work on it. I have a basic version working that detects unused variables. Added two new objects. alLine and alCodePart. Still playing with the latter. Should get it to work I guess.


update RegEx to require RSS in order to process the line

Running the script against an existing log file produces errors due to None being converted to an int
The RSS is marked as optional in the RegEx:
https://github.com/xrmx/pyuwsgimemhog/blob/dac943abab3e403a3b45e3a81d4f962db456f9db/pyuwsgimemhog/pyuwsgimemhog.py#L9-L14
But treated as required here:
https://github.com/xrmx/pyuwsgimemhog/blob/dac943abab3e403a3b45e3a81d4f962db456f9db/pyuwsgimemhog/pyuwsgimemhog.py#L33
The record should just be skipped and never recorded, right?

Thanks! indeed it makes very little sense to crash later :)


Add list view and a markdown readme

Hi Shaun,
I use your url-shortener since a lot of years. Currently I need a list view and I enhance your script.
Also I add a readme in markdown format to read it much better on github.
Maybe you enjoy the enhancement.
Best.

:+1: on the addition of a list view, though some stuff in there seems unnecessary to me (probably just don’t fully understand the context or usage).
This can probably delete README.txt to avoid any confusion.

@jeffbyrnes Thanks for the helping comments. I have centralized the constants. My idea was currently, not to much changes in the original source. Also now I have add a update readme and remove the readme.txt, replaced by the md-file. Maybe now is it more clear.

@bueltge you’re welcome. Thanks for the explanation w/r/t the constants; perhaps an interactive rebase & some additional detail in the commit message would be helpful for the long term?

Thanks. Which long term do you mean? Is a commit message from my side not clear enough, to much changes or wrong, not understandable commit message?

@bueltge the commit message itself is what I meant; that could say more about what your intent is, and why, you did it that way.
Definitely like how you now have moved all the constants to their own, single file. Much better to have them just once!
Are you familiar with interactive rebasing?

No, currently I'm not with the interactive rebasing. Maybe you have a hint, link for me?
I think, I understand you goal, that the commit is clear for all readers there have interest, not to short and without details about why.

@bueltge exactly that, in fact. Two resources to learn about interactive rebasing:

Thoughtbot’s “Git Interactive Rebase, Squash, Amend and Other Ways of Rewriting History”
Atlassian’s “Rewriting history” tutorial

It’s a tricky concept. To help you out, I went ahead & did a bit of rebasing of your commits myself. I’ll open another PR for this exact same work, and you can compare & use it as an example.

And there we are. Please feel free to take a look! All credit to you, I just moved things around and cleaned things up a bit, expanded on the commit messages, and broke the version bump out to its own commit.
An aside to that, in most projects it’s considered best practice to let the maintainer handle changing the version number, updating the docs, and releasing said new version through whatever means they use. That said, here, it seems alright.


Cluster DNS failure between nodes microk8s 1.26.0

Summary

Three node bare metal cluster, microk8s 1.26.0 on Ubuntu 22.04.  Two worker nodes, one master.  Installed mayastor using:
microk8s enable mayastor
A number of the constituent pods get stuck in Init:0/x, awaiting successful probes of other services within mayastor, which are running but they can't get a response through the network.  For example:
microk8s.kubectl get pods -n mayastor -o wide
NAME                                     READY   STATUS     RESTARTS        AGE   IP              NODE             NOMINATED NODE   READINESS GATES
mayastor-fztq2                           0/1     Init:0/3   0               23m   <IP_ADDRESS>   node-1
csi-controller-54ccfcfbcc-vxrbx          0/3     Init:0/1   0               23m   <IP_ADDRESS>   node-3
mayastor-csi-rhd78                       2/2     Running    0               23m   <IP_ADDRESS>   node-1
mayastor-csi-wqq2j                       2/2     Running    0               23m   <IP_ADDRESS>   node-2
etcd-ck6p44g5tm                          1/1     Running    0               22m   <IP_ADDRESS>     node-2
core-agents-55d76bb877-2jtvn             1/1     Running    0               23m   <IP_ADDRESS>     node-1
msp-operator-74ff9cf5d5-gdmz6            1/1     Running    0               23m   <IP_ADDRESS>     node-1
rest-77d69fb479-grnqh                    1/1     Running    0               23m   <IP_ADDRESS>     node-2
mayastor-f22ms                           1/1     Running    0               23m   <IP_ADDRESS>   node-2
mayastor-csi-8wc5b                       2/2     Running    0               23m   <IP_ADDRESS>   node-3
mayastor-5xlw8                           0/1     Init:1/3   0               23m   <IP_ADDRESS>   node-3
etcd-operator-mayastor-65f9967f5-f96j5   1/1     Running    6 (7m21s ago)   23m   <IP_ADDRESS>     node-1
microk8s.kubectl get services -A -o wide
NAMESPACE        NAME              TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)                  AGE   SELECTOR
default          kubernetes        ClusterIP      <IP_ADDRESS>                443/TCP                  13h
kube-system      kube-dns          ClusterIP      <IP_ADDRESS>               53/UDP,53/TCP,9153/TCP   13h   k8s-app=kube-dns
metallb-system   webhook-service   ClusterIP      <IP_ADDRESS>               443/TCP                  13h   component=controller
minio-operator   operator          ClusterIP      <IP_ADDRESS>               4222/TCP,4221/TCP        13h   name=minio-operator,operator=leader
minio-operator   console           ClusterIP      <IP_ADDRESS>              9090/TCP,9443/TCP        13h   app=console
jupyter          hub               ClusterIP      <IP_ADDRESS>              8081/TCP                 13h   app=jupyterhub,component=hub,release=jupyterhub
jupyter          proxy-api         ClusterIP      <IP_ADDRESS>              8001/TCP                 13h   app=jupyterhub,component=proxy,release=jupyterhub
jupyter          proxy-public      LoadBalancer   <IP_ADDRESS>   <IP_ADDRESS>   443:32672/TCP            13h   component=proxy,release=jupyterhub
mayastor         core              ClusterIP      None                        50051/TCP                17m   app=core-agents
mayastor         rest              ClusterIP      <IP_ADDRESS>               8080/TCP,8081/TCP        17m   app=rest
mayastor         etcd-client       ClusterIP      <IP_ADDRESS>              2379/TCP                 16m   app=etcd,etcd_cluster=etcd
mayastor         etcd              ClusterIP      None                        2379/TCP,2380/TCP        16m   app=etcd,etcd_cluster=etcd
Note the three mayastor pod replicas, where only node-2 (the master) has started successfully.  Checking logs:
microk8s.kubectl logs mayastor-f22ms registration-probe -n mayastor
nc: bad address 'core'
Waiting for registration service...
nc: bad address 'core'
Waiting for registration service...
(many repeats)
nc: bad address 'core'
Waiting for registration service...
core (<IP_ADDRESS>:50051) open
The ones that haven't started successfully:
microk8s.kubectl logs mayastor-fztq2 registration-probe -n mayastor
nc: bad address 'core'
Waiting for registration service...
nc: bad address 'core'
Waiting for registration service...
nc: bad address 'core'
(forever)
microk8s.kubectl exec -i -t mayastor-fztq2 --container registration-probe -n mayastor -- /bin/sh
/ # nslookup core
Server:    <IP_ADDRESS>
Address 1: <IP_ADDRESS>
(long wait)
nslookup: can't resolve 'core'
What Should Happen Instead?

I would expect the address to resolve immediately and return enabling the mayastor pods to start.

Hi @ctromans, thanks for reporting the issue. We have seen in the past and the root cause was a vxlan related issue which breaks packet checksums.
Can you check to see if the following resolves your issue:
sudo microk8s kubectl patch felixconfigurations default --patch '{"spec":{"featureDetectOverride":"ChecksumOffloadBroken=true"}}' --type=merge

Thanks @neoaggelos, that seems to have done the trick and it is working now.  Thank you so much for your help.

Good to hear, is it OK to close the issue then?


Handle additional linked stream condition

Followup for #1297 to handle one more condition where a DynamicMap which returns an (Nd)Overlay itself has linked streams.

Looks good and the tests are passing. Merging.


feat: Darts practice exercise

@bushidocodes What might be a good thing to do sooner rather than later, is to fix the build and setup CI.
For the first one, this is the build output:
The `exercises.practice.practices` key is missing:
/home/runner/work/wasm/wasm/config.json

The `exercises.practice.prerequisites` key is missing:
/home/runner/work/wasm/wasm/config.json

The `tags` array is empty:
/home/runner/work/wasm/wasm/config.json

The first two are my mistake, I should have caught them.
For the third one, check the docs at https://exercism.org/docs/building/tracks/config-json#h-tags
I can help with CI if you'd like.

@ErikSchierboom, I took a shot at this in #4. I was pleased to see the wasmtime runtime option!


Feature request: Config Function

Following up from Discord, being able to define config similarly to how vite does it, via a function that takes request and env would be very useful!

@evanderkoogh this is supported, no? https://github.com/evanderkoogh/otel-cf-workers/blob/main/src/sdk.ts#L130
Might be worth updating the readme with isntructions on how to use this. Especially since I imagine using headers provided from context.env will be the default for most people.

I am in the middle of a massive refactor and that particular code hasn't been released yet, so I haven't updated the readme just yet.
But I will absolutely do when the code is stable again.

This is now in the latest “alpha” release 1.0.0-alpha.3.
And way cooler than I expected, you can create a configuration for every single request, because you are passed the trigger for that request.


C++ Metagen task should catch exceptions and properly log errors

A customer has reported a crash in the Metagen task in 64-bit (when /p:Platform=x64):
https://developercommunity.visualstudio.com/content/problem/1057418/выполнение-задачи-metagen-завершено-с-ошибкои.html
From looking at the Metagen task there are a couple of issues that I see:
https://devdiv.visualstudio.com/DevDiv/_git/VS?path=/src/vc/projbld/CppTasks/Common/MetaGen.cs

It should be returning !Log.HasLoggedErrors instead of hardcoding true: https://source.dot.net/#Microsoft.Build.Utilities.Core/TaskLoggingHelper.cs,e828a76d6ec75c83,references
It only catches FileNotFoundException, and it should be catching all exceptions - I’m thinking there’s another exception that is not getting caught here.

We have investigated and the assembly being loaded by Metagen is 1.2 GB in size, so 32-bit MSBuild was running out of memory. Switching to 64-bit MSBuild has resolved the issue.
I'm closing since this is C++ specific and an internal bug is probably better.


Window aggregations for decimal ranges: different output from CPU and GPU

This is dumbed-down repro of the failure:
diff --git a/integration_tests/src/main/python/window_function_test.py b/integration_tests/src/main/python/window_function_test.py
index a9fcb1a6d..1018f0b74 100644
--- a/integration_tests/src/main/python/window_function_test.py
+++ b/integration_tests/src/main/python/window_function_test.py
@@ -825,9 +825,7 @@ def test_window_aggs_for_ranges_timestamps(data_gen):
 # In a distributed setup the order of the partitions returned might be different, so we must ignore the order
 # but small batch sizes can make sort very slow, so do the final order by locally
 @ignore_order(local=True)
-@pytest.mark.parametrize('data_gen', [_grpkey_longs_with_nullable_decimals,
-                                      _grpkey_longs_with_nullable_larger_decimals,
-                                      _grpkey_longs_with_nullable_largest_decimals],
+@pytest.mark.parametrize('data_gen', [_grpkey_longs_with_nullable_largest_decimals],
                          ids=idfn)
 def test_window_aggregations_for_decimal_ranges(data_gen):
     """
@@ -842,22 +840,11 @@ def test_window_aggregations_for_decimal_ranges(data_gen):
     Some other aggregation functions are thrown in for variety.
     """
     assert_gpu_and_cpu_are_equal_sql(
-        lambda spark: gen_df(spark, data_gen, length=2048),
+        lambda spark: gen_df(spark, data_gen, length=10),
         "window_agg_table",
         'SELECT '
-        ' COUNT(1) OVER (PARTITION BY a ORDER BY b ASC RANGE BETWEEN 10.2345 PRECEDING AND 6.7890 FOLLOWING), '
-        ' COUNT(1) OVER (PARTITION BY a ORDER BY b ASC), '
-        ' COUNT(1) OVER (PARTITION BY a ORDER BY b ASC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), '
-        ' COUNT(1) OVER (PARTITION BY a ORDER BY b ASC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING), '
-        ' COUNT(1) OVER (PARTITION BY a ORDER BY b DESC RANGE BETWEEN 10.2345 PRECEDING AND 6.7890 FOLLOWING), '
-        ' COUNT(1) OVER (PARTITION BY a ORDER BY b DESC), '
-        ' COUNT(1) OVER (PARTITION BY a ORDER BY b DESC RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), '
-        ' COUNT(1) OVER (PARTITION BY a ORDER BY b DESC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),'
-        ' COUNT(c) OVER (PARTITION BY a ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), '
-        ' SUM(c)   OVER (PARTITION BY a ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), '
-        ' MIN(c)   OVER (PARTITION BY a ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), '
-        ' MAX(c)   OVER (PARTITION BY a ORDER BY b RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW), '
-        ' RANK()   OVER (PARTITION BY a ORDER BY b) '
+        ' COUNT(1) OVER (PARTITION BY a ORDER BY b ASC RANGE BETWEEN 10.2345 PRECEDING AND 6.7890 FOLLOWING) AS C01, '
+        ' COLLECT_LIST(a) OVER (PARTITION BY a ORDER BY b ASC RANGE BETWEEN 10.2345 PRECEDING AND 6.7890 FOLLOWING) AS C02 '
         'FROM window_agg_table',
         conf={})

The output of the failure:
CPU OUTPUT: [Row(C01=0, C02=[]), Row(C01=1, C02=[-3502159106106506455]), Row(C01=1, C02=[-2697073954890740236]), Row(C01=1, C02=[207981845540287738]), Row(C01=1, C02=[393905103838704542]), Row(C01=1, C02=[6084712057446794809]), Row(C01=1, C02=[7198729688045931692]), Row(C01=1, C02=[7528354001793048440]), Row(C01=1, C02=[7618709293599214015]), Row(C01=1, C02=[9223372036854775807])]
GPU OUTPUT: [Row(C01=1, C02=[-3502159106106506455]), Row(C01=1, C02=[-2697073954890740236]), Row(C01=1, C02=[207981845540287738]), Row(C01=1, C02=[393905103838704542]), Row(C01=1, C02=[6084712057446794809]), Row(C01=1, C02=[7198729688045931692]), Row(C01=1, C02=[7528354001793048440]), Row(C01=1, C02=[7618709293599214015]), Row(C01=1, C02=[9223372036854775807]), Row(C01=1, C02=[9223372036854775807])]

I added a collect_list column to see the values responsible for different counts.
Notably first range partition is empty on the CPU
[Row(C01=0, C02=[])
and GPU has duplicate same-valued partitions Row(C01=1, C02=[9223372036854775807]), Row(C01=1, C02=[9223372036854775807])]
To reproduce on a Databricks instance run
./jenkins/databricks/build.sh
TEST_PARALLEL=0 TEST=test_window_aggregations_for_decimal_ranges ./jenkins/databricks/test.sh

Hmm. Could we collect the input rows that produce this failure?

Also, curious to know how the results differ from running on 3.2.

It looks like bad results from DB 11.3.
Consider this input table:
scala> sql("SELECT a, b FROM mytable ORDER BY a, b ").show(false)
+--------------------+----------------------------------------+
|a                   |b                                       |
+--------------------+----------------------------------------+
|-3502159106106506455|178948592359934346889619126860358357.16 |
|-2697073954890740236|-14788092719200259601207285740189879.20 |
|207981845540287738  |781405200142955182390062110035763229.07 |
|393905103838704542  |-331482683706215057823303255025087967.94|
|6084712057446794809 |602500549554953867653504371893334285.14 |
|7198729688045931692 |-6431358794198321623349699958434018.45  |
|7528354001793048440 |459322046488261343050823571995397560.20 |
|7618709293599214015 |-919100851330713162026924530116154572.90|
|9223372036854775807 |11342371013783243717493546650944543.47  |
|9223372036854775807 |999999999999999999999999999999999999.99 |
+--------------------+----------------------------------------+

Note the following regarding the input:

All the values for a are distinct except for the last two rows (i.e.<PHONE_NUMBER>854775807). If grouped/partitioned by a, the last two rows would fall in the same group.
The difference between the b for the last rows is very large<PHONE_NUMBER>99999999999999999999999999.99 -<PHONE_NUMBER>3783243717493546650944543.47 == 9.886576289862167E35). If the window size is small, these two rows will not contribute to the same window.

Consider the following window aggregation:
SELECT a,
       b,
       COUNT(1) OVER ( PARTITION BY a
                       ORDER BY b ASC
                       RANGE BETWEEN 10.2345 PRECEDING AND 6.7890 FOLLOWING) AS CNT_1
FROM mytable

We expect the aggregation to produce all 1s, because of points 1 and 2 above.
The results from Apache Spark 3.2 (CPU) appear to be right:
+--------------------+----------------------------------------+-----+
|a                   |b                                       |CNT_1|
+--------------------+----------------------------------------+-----+
|-3502159106106506455|178948592359934346889619126860358357.16 |1    |
|-2697073954890740236|-14788092719200259601207285740189879.20 |1    |
|207981845540287738  |781405200142955182390062110035763229.07 |1    |
|393905103838704542  |-331482683706215057823303255025087967.94|1    |
|6084712057446794809 |602500549554953867653504371893334285.14 |1    |
|7198729688045931692 |-6431358794198321623349699958434018.45  |1    |
|7528354001793048440 |459322046488261343050823571995397560.20 |1    |
|7618709293599214015 |-919100851330713162026924530116154572.90|1    |
|9223372036854775807 |11342371013783243717493546650944543.47  |1    |
|9223372036854775807 |999999999999999999999999999999999999.99 |1    |
+--------------------+----------------------------------------+-----+

The DB 11.3 (CPU) results appear to be off:
+--------------------+----------------------------------------+-----+
|a                   |b                                       |CNT_1|
+--------------------+----------------------------------------+-----+
|-3502159106106506455|178948592359934346889619126860358357.16 |1    |
|-2697073954890740236|-14788092719200259601207285740189879.20 |1    |
|207981845540287738  |781405200142955182390062110035763229.07 |1    |
|393905103838704542  |-331482683706215057823303255025087967.94|1    |
|6084712057446794809 |602500549554953867653504371893334285.14 |1    |
|7198729688045931692 |-6431358794198321623349699958434018.45  |1    |
|7528354001793048440 |459322046488261343050823571995397560.20 |1    |
|7618709293599214015 |-919100851330713162026924530116154572.90|1    |
|9223372036854775807 |11342371013783243717493546650944543.47  |1    |
|9223372036854775807 |999999999999999999999999999999999999.99 |0    |
+--------------------+----------------------------------------+-----+

The GPU runs with this input pass on Spark 3.2.

The DB 11.3 (CPU) results appear to be off:

@mythrocks - Just wondering if you happen to run the same query on DB 11.3 on GPU? Were the results same as Spark3.2 ?
If that's the case then it means GPU is producing correct results so  should we skip/xfail these tests for now and possibly open an issue with Databricks?

Yep. The GPU results are as we see on Spark 3.2. That's the reason for the test failures.
I would suggest xfail if DB 11.3.

Why are we comparing to upstream 3.2 and not upstream 3.3?

Why are we comparing to upstream 3.2 and not upstream 3.3?

Primarily inertia on my part, because I have 3.2 on hand. But also because this is a basic operation whose behaviour should not have varied between 3.2 and 3.3.
But your point is taken. Thank you for pointing that out.
scala> sc.version
res6: String = 3.3.1

scala> sql(" SELECT a, b, COUNT(1) OVER ( PARTITION BY a ORDER BY b ASC RANGE BETWEEN 10.2345 PRECEDING AND 6.7890 FOLLOWING) AS CNT_1 FROM mytable").show(false)+--------------------+----------------------------------------+-----+
|a                   |b                                       |CNT_1|
+--------------------+----------------------------------------+-----+
|-3502159106106506455|178948592359934346889619126860358357.16 |1    |
|-2697073954890740236|-14788092719200259601207285740189879.20 |1    |
|207981845540287738  |781405200142955182390062110035763229.07 |1    |
|393905103838704542  |-331482683706215057823303255025087967.94|1    |
|6084712057446794809 |602500549554953867653504371893334285.14 |1    |
|7198729688045931692 |-6431358794198321623349699958434018.45  |1    |
|7528354001793048440 |459322046488261343050823571995397560.20 |1    |
|7618709293599214015 |-919100851330713162026924530116154572.90|1    |
|9223372036854775807 |11342371013783243717493546650944543.47  |1    |
|9223372036854775807 |999999999999999999999999999999999999.99 |1    |
+--------------------+----------------------------------------+-----+

All 1's on Apache Spark 3.3, with CPU. This is in congruence with the GPU results.

We should look at the plan and configs to make sure it's a function of versions or just some tunable

The issue originates in the upstream, and can be reproduced comparing the CPU alone 3.3.1 vs 3.4.0-SNAPSHOT on the two-row input
from pprint import pprint
data = [
  ('9223372036854775807', '11342371013783243717493546650944543.47'),
  ('9223372036854775807', '999999999999999999999999999999999999.99')
]
df1 = spark.createDataFrame(data, 'a STRING, b STRING')
df2 = df1.select(df1.a.cast('LONG'), df1.b.cast('DECIMAL(38,2)'))
df2.createOrReplaceTempView('test_table')
df = sql('''
  SELECT
    COLLECT_LIST(a) OVER (
      PARTITION BY a
      ORDER BY b ASC
      RANGE BETWEEN 10.2345 PRECEDING AND 6.7890 FOLLOWING
    ) AS CNT_1
  FROM
    test_table
  ''')
res = df.collect()
df.explain(True)
pprint(res)

3.3.1 output is as expected:
[Row(CNT_1=[9223372036854775807]), Row(CNT_1=[9223372036854775807])]

3.4.0-SNAPSHOT (87a235c2143449bd8da0acee4ec3cd99993155bb) output
[Row(CNT_1=[9223372036854775807]), Row(CNT_1=[])]

test_window_aggregations_for_big_decimal_ranges has the same symptom

Filed https://issues.apache.org/jira/browse/SPARK-41793

@sameerz how are we going to mark this as a blocker for 3.4 and databricks 11.3?

It is fine to keep this test as xfailed, it is a corner case and we appear to be doing the right thing, whereas Spark 3.4 / DB 11.3 are not.  Let's make sure to document this for our 23.02 release.

The new behavior may be correct


Crawling only the first of multiple identical  elements

Hi Pascal,
I have a site with multiple identical <section> tags on the same level. The content that I want to parse is in the first one. How can I do that?
Tried with combinations of StripAfterTransformer, StripBeforeTransformer and StripBetweenTransformer but nothing did it. Am I missing something in the documentation. Is there some way to use non greedy regex?
Thanx

Both StringBeforeTransformer and StripAfterTransformer will discard content before/after the first match.  So if your <section> is the first one, it should work.  Can you share your config?
As an alternative, you can try ReplaceTransformer with regex of your choice.  For instance, you can try something like this (not tested):
<transformer class="com.norconex.importer.handler.transformer.impl.ReplaceTransformer">
    <replace>
        <fromValue>[CDATA[<section>(.*?)</section>]]</fromValue>
        <toValue>$1</toValue>
    </replace>
</transformer>

If you want to store the content directly to a field instead, you can also use a tagger, like TextPatternTagger.

Sorry for the late response. I was offline for the weekend.
Here is the "problem":
The impl of StripAfterTransformer takes the 64K chunk and does the deletion after the matched part. Than the second chunk is being processed the same way but it doesn't now that in the first one there has been a match already and goes over the chunk as it is a new content! So if the second chunk doesn't have a match it is being concatenated to the first, strpped one. And so on and so on.
I don't know if this is by design, but IMO it is missleading and actually the only thing you can do is increase the maxReadSize. Which is also not great, because you can not know upfront how big your biggest document will be.
Setting maxReadSize to 500K solved my problem. Memory usage goes up, but who cares nowadays about that :)
Cheers

Many people actually. :-) It is not rare to have setups with many crawlers with tons of threads on the same server, processing many documents at once. Memory can get eaten fast.
64K is a default that handles the majority of scenarios. We'll look at increasing it if it becomes an issue with too many people.  The simplest solution is to change the default like you did with maxReadSize.  Another approach would be to build a transformer that reads the file as a stream instead of a String.   Unfortunately, regular expressions do not work the best with streams.
We can make it a feature request if you like to have a version working with streams and doing exact matches (as opposed to regex).  Then the size would not be a concern.
For now, since it is per design and you found what the solution for this was, I am closing this issue.


Daemon error handling

I think it might be cleaner if we use ? and return Result<String, Box<dyn Error>> within the methods?

@aguillenv @dfellis created https://github.com/alantech/alan/issues/472 to track the refactoring of the error handling for the rest of the AVM


Do I need a license to use dependabot-core in Azure Devops to monitor repos used for production deployments?

As mentioned in the title, I was under impression that I can use dependabot-core to monitor my repo but the license here  stated that: "This license lets you use and share this software for free, with a trial-length time limit on commercial use". so looking for a confirmation or pointing to whom shall I contact?

From what I understand, you can use it as long as you do not sell any product with this (example : if you try to build your own clone of dependabot)
Relevant : https://github.com/dependabot/dependabot-core/issues/3645#issuecomment-839916100

As @yeikel helpfully pointed out, https://github.com/dependabot/dependabot-core/issues/3645#issuecomment-839916100 addresses this.


Socket should be in /run/user/XXXX/polybar

Checklist

[x] I have read the appropriate section in the contributing
guidelines
[x] I believe this issue is a problem with polybar itself and not a misconfiguration on my part.
[x] I have searched for other open and closed issues that
may have already reported this problem.
[x] I have checked the known issues page for this problem.

Describe the bug
Polybar creates its IPC socket in /tmp. This presents two problems:

This is vulnerable to a symlink attack
Many files may be present, forcing polybar-msg to process a long list of files

Expected behavior:
Polybar should create its socket in /run/user/XXXX/polybar/.
Actual behavior:
It creates it in /tmp.
I am willing to provide a patch if you agree with me.

I think that's a good idea. Thanks for proposing this :)
I do have some questions/concerns though:

Are there distros that do not have a /run/ filesystem (e.g. systems without systemd)?
We can't just stop using the fifos in /tmp because it would break backwards compatibility. Most people probably exclusively use polybar-msg, so this wouldn't be a concern, but unfortunately the location of fifo is kind of part of our API.
As a transition, we could deprecate the use of the file in /tmp and create a symlink to /run/.... for the time being. I don't really know how we would notify the user that their current way of sending IPC is deprecated though. We should probably not directly make the fifo path part of the API and expose something like i3's i3 --get-socketpath but with an additional PID argument.

All distributes have /run (or /var/run if we want to support older alternatives). However, some may not have /run/user/XXXX. /run is only writable by root. Therefore, if they don't have it, it would be a problem. In fact, the location is not a standard. What's a standard is that $XDG_RUNTIME_DIR should be available for this purpose and writable by the user. This is part of XDG Base Directory Specification:

There is a single base directory relative to which user-specific runtime files and other file objects should be placed. This directory is defined by the environment variable $XDG_RUNTIME_DIR.

I didn't think about users not using polybar-msg (myself included). This seems quite a hassle. I was expecting something super easy. If we never are able to deprecate the old location, this seems pointless to do the change. Also, do we have users without $XDG_RUNTIME_DIR? I think this is pretty common. i3 is using that for example and fallback to /tmp. The change is from 2011 without a transition, but this is a bit different since people are unlikely to use the socket directly from a script.

I didn't think about users not using polybar-msg (myself included). This seems quite a hassle.

Yes, it's a bit unfortunate.

I was expecting something super easy. If we never are able to deprecate the old location, this seems pointless to do the change

It's not that we can never remove it, but just not in a regular release. In the next major release (4.0) we'll be able to remove all deprecations.

Also, do we have users without $XDG_RUNTIME_DIR? I think this is pretty common. i3 is using that for example and fallback to /tmp. The change is from 2011 without a transition, but this is a bit different since people are unlikely to use the socket directly from a script.

I have no idea how widespread XDG_RUNTIME_DIR is. It seems systemd systems set it, I don't know about other init systems. But we should have a fallback anyway. Either to /tmp or maybe somewhere in the user directory like ~/.cache/polybar which would make only the current user have access to it.
I don't know what the situation for i3 was, but they probably had i3 --get-socketpath back then as well.

I was expecting something super easy. If we never are able to
deprecate the old location, this seems pointless to do the change

It's not that we can never remove it, but just not in a regular
release. In the next major release (4.0) we'll be able to remove all
deprecations.

Oh, that's fine then!

Also, do we have users without $XDG_RUNTIME_DIR? I think this is
pretty common. i3 is using that for example and fallback to /tmp.
The change is from 2011 without a transition, but this is a bit
different since people are unlikely to use the socket directly from
a script.

I have no idea how widespread XDG_RUNTIME_DIR is. It seems systemd
systems set it, I don't know about other init systems.

XDG_RUNTIME_DIR is indeed set by pam_systemd.so. Using a Devuan Live
CD (XFCE desktop without systemd), it's also here, so at least, it's not
exclusive to systemd.

But we should have a fallback anyway. Either to /tmp or maybe
somewhere in the user directory like ~/.cache/polybar which would
make only the current user have access to it.

An alternative would be to use a /tmp/polybar-XXXX directory (like
i3). This prevents symlink attacks as well. But your proposition seems
better and I don't see any argument against it.

XDG_RUNTIME_DIR is indeed set by pam_systemd.so. Using a Devuan Live
CD (XFCE desktop without systemd), it's also here, so at least, it's not
exclusive to systemd.

That's good to know.

An alternative would be to use a /tmp/polybar-XXXX directory (like
i3). This prevents symlink attacks as well. But your proposition seems
better and I don't see any argument against it.

I'm fine with either.

FD spec says that ~/.cache (or more specifically $XDG_CACHE_HOME) should only contain "user-specific non-essential (cached) data", so stuffing a FIFO there seems like a poor choice.
Obeying $XDG_RUNTIME_DIR and using /tmp/polybar-XXXX as a fallback seems like the best choice IMO.

Hmm, in that case we shouldn't use ~/.cache. Creating a directory in /tmp is the way to go then. However, we can't use mktemp with a pattern because we won't know where the file was created afterwards, so the directory would probably need to be something like /tmp/polybar-<PID>/

@vincentbernat Have you already done any work on this? Because we might need to swtich over to using UNIX domain sockets for our IPC channel (see #2504). If you haven't started on this yet, I will do this and do the switch to sockets and the change of the file location in one step.
I will also deprecate both the manual syntax for ipc messages and sending IPC messages directly to the pipe without using polybar-msg.

I did nothing. :)


Slider RTL with min on the left and max on the right

Steps to reproduce

Visit the demo and try it out

Demo: http://jsfiddle.net/ewfb0vgs/1/
Expected behaviour
Basically I want to have a slider that show the selection on the right, but have the min on the left and the max on the right. I know that floor should be the min, and ceil the max, but if using rightToLeft then it automatically inverts the poles, which is not what I want.
Ideally, I would like to be able to specify that I want rightToLeft: true only on the selection bar
Actual behaviour
It is actually impossible to use the slider this way.

Sorry my bad I checked the doc but didn't see the showSelectionBarEnd option

Indeed,  rightToLeft target users from country where the read from right to left.


Update configuration management to use confy for file-based configuration.

Summary
Update the program to read configuration from a file using confy instead of reading environment variables with dotenv.
Description
Currently, the program reads configuration from environment variables using dotenv. To improve flexibility and ease of configuration, it's proposed to switch to reading configuration from a file using the confy crate. This change will allow users to define configurations in a separate file, enhancing readability and maintainability.
Acceptance Criteria
Which criteria has to be reached to be accepted

[x] Update the program to use confy for configuration management.
[x] Ensure that the program reads configuration values correctly from the specified file.
[x] Maintain compatibility with existing functionality.
[ ] Ensure clear documentation is provided for configuring the program using confy.

Tasks
Which tasks are included to add this feature

[x] Integrate confy crate into the project.
[x] Implement logic to load configuration from a file using confy.
[ ] Update documentation to reflect changes in configuration setup.

Dependencies
Which dependencies are introduced to the project

[x] Add confy crate as a dependency.

Estimates
Estimated effort for completion: 2 hours
Additional Information
Switching to confy for configuration management will enhance the flexibility and maintainability of the program, making it easier for users to manage configurations. This change aligns with best practices for Rust programming and improves the overall user experience.

Except for the documentation, all subtasks of the issue have been completed. As the project documentation has its own milestone, I would classify this task as completed.


powershell use in windows and WORKING_DIRECTORY instead of cd

As mentioned in #174, this works for me on windows with out-of-source builds.

:+1


Cache first queries that error execute twice in suspense mode

Describe the bug
When a cache-first query fails and we are using suspense the query is executed twice.
I am not sure if this is actually a bug or the same behaviour as network-only since error queries are not cached so please close it if not.
Reproduction
https://codesandbox.io/p/sandbox/crazy-roman-86cdyn
Urql version
urql v4.0.5
Validations

[X] I can confirm that this is a bug report, and not a feature request, RFC, question, or discussion, for which GitHub Discussions should be used
[X] Read the docs.
[X] Follow our Code of Conduct

This is expected, yes. Since errors aren't cached, once the component remounts the request is executed again on mount


Files should end with newline

For one, because github shows a little red indicator when they don't.

Thank you!


Let the client retrieve the data

Move the retrieval function to the client side, generating javascript that fetches the data.

Do we have an example for this. This might be related to asking lodspeakr to resolve URIs or call a SADI service.


OBSStudioClient.ObsClient.SetInputSettings has some invalid arguments

Hey,
i'm new on OBS Websocket 5.0.0 and i would like use "SetSourceSettings", but on recent version of websocket the request are replaced by "SetInputSettings", but when i make the request i recived this message error: "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'The best overloaded method match for 'OBSStudioClient.ObsClient.SetInputSettings(string, System.Collections.Generic.Dictionary<string,object>, bool)' has some invalid arguments'.

Code:
var settinsgs = await client.SetInputSettings("Image12", JsonConvert.DeserializeObject<dynamic>("{file: '/home/admin123/Pictures/Pokemon-Legends-Arceus-Profile-Picture.webp'}"), false);//SendRequestAndWaitAsync()

I would like know, what i'm doing wrong.
Thanks

Looking at the error, it's most like not your fault. :-)
I will check out what's wrong!
Thanks for the notice!


Bind for <IP_ADDRESS>:80 failed: port is already allocated

Hi,
When I tried this: https://cuprak.info/2017/10/09/debugging-aws-lambda-with-netbeans/#comments
I have this issue:

I have this screens with commands to help us:

Looks like you have SAM CLI already running in this port. Kill the previous instance and restart. It should work.
Also check docker ps for any running Docker containers. Kill them as well.
I am going to close this Issue because this is not a bug in SAM CLI.

No solved. I need run sam local start-api  (without -d 5858)  to see correct template in my brower (http://localhost:3000/products)...

with -d 5858

### what about docker-proxy:????? https://github.com/ONLYOFFICE/Docker-DocumentServer/issues/39


use setUpAll and tearDownAll to reduce test durations

Scope & Purpose
Use setUpAll and tearDownAll for many more of the AQL tests

[x] Bug-Fix for devel-branch (i.e. no need for backports?)
[x] The behavior in this PR can be (and was) manually tested (support / qa / customers can test it)
[x] The behavior change can be verified via automatic tests

Testing & Verification
This change is already covered by existing tests, such as shell_server_aql.
https://jenkins01.arangodb.biz/view/PR/job/arangodb-matrix-pr/6478/

https://jenkins01.arangodb.biz/view/PR/job/arangodb-matrix-pr/6482/


Fix ruby_solver NoMethodError: undefined method  for nil:NilClass

Fixes issue #64

The error at least in my experience was due to a dependency of mine that was missing one of its own dependencies. Thus, I am closing this PR since the issue this resolves seems to be something that needs to be investigated further and this would just mask the problem.


Bidirectional custom layer for QRNNS

Added bidirectional custom layer for QRNNs and an example of how to use it.

Can't this be done by adjusting the QRNN class to work with keras.Bidirectional ?


fail to view logs of exited pods

Container Linux by CoreOS alpha (1339.0.0)
rkt Version: 1.25.0
appc Version: 0.8.10
Go Version: go1.7.3
Go OS/Arch: linux/amd64
Features: -TPM +SDJOURNAL
rkt list --full showed exited pot and I failed to view it's log.
with rkt list I fetched the following uuid of the pod, couldn't find it with machinectl
914c4f3f-6e3a-44c2-a111-bfc91ceb411a
tried the following:
# journalctl -m _MACHINE_ID=914c4f3f-6e3a-44c2-a111-bfc91ceb411a
-- No entries --
# journalctl -M rkt-914c4f3f-6e3a-44c2-a111-bfc91ceb411a
Failed to open root directory: No machine 'rkt-914c4f3f-6e3a-44c2-a111-bfc91ceb411a' known
# journalctl -u rkt-914c4f3f-6e3a-44c2-a111-bfc91ceb411a
-- No entries --

also created an issue on stackoverflow but no response ye.
http://stackoverflow.com/questions/42765095/viewing-log-of-exited-pod

@kfirufk The easiest way I've found to view those logs is journalctl --dir /var/log/journal/${uuid}. The uuid there is the full rkt uuid with the hyphens removed.

According to https://github.com/coreos/rkt/blob/master/Documentation/commands.md#stopped-pod, journalctl -m _MACHINE_ID= is the proper invocation but the uuid should be without hypens.

journalctl -m _MACHINE_ID= returns No Entries, and in /var/log/journal I don't have the uuid of the failed kubedns pod.
once I try to check for the UUID before the kubedns pod exits, both options return the proper log, but once the kubedns pod restarts and gets a new UUID, i can't check previous logs with previous UUID.
any ideas?

rkt list will show all exited (and not yet gc'ed pods). journalctl -m will shows all logs from all journals.
If the _MACHINE_ID filter doesn't show anything anymore you can try removing it, but my guess is that the old pod has already been gc'ed.

trying to find out how to prevent pods from auto gc to confirm that this is the case. do you know if it's a global rkt related configuration or should I browse the kubernetes docs for that ?

Ahmmmm.. If I can see the exited pod with rkt list --full, it means that it wasn't garbage collected yet but I can't view the logs

In rkt list, does it show as exited or exited garbage? Exited pods can be in the garbage while still showing in list, meaning they've been marked for removal but not removed. Marking it for removal involves moving it, therefore breaking the journal symlink. See #2445.
If that's not it, double-checking the symlink in /var/log/journal points somewhere sane would still be a good debugging step.

ok.. you where right :) i just noticed the 'exited'.. not the rest of the sentence.
when kubedns fails, it goes directly to 'exited deleting' and then to 'exited garbage'.
before I close the ticket, got any idea how to prevent the pod from being deleted immediately after failure ?

@kfirufk check if the rkt-gc.timer is what's doing it (systemctl list-timers, or status rkt-gc.timer). It's enabled by default, but can and should be disabled if Kubernetes is managing your rkt pods.

awesome.. now I can view the logs.. one last thing.
I actually needed to add to /var/lib/coreos-install/user_data
the following:
    - name: rkt-gc.timer
      enable: false
      command: stop

i need to actually stop the service at boot time, just 'enable:false' still starts it. is there a way to tell my coreos not to start rkt-gc.timer in a cleaner way ?

@kfirufk The reason that happens is that cloud-init runs after boot and thus the "enable" races with the timer itself.
Ignition solves that problem. You can read more here: https://coreos.com/ignition/docs/latest/what-is-ignition.html
Using ignition to mask rkt-gc.timer will ensure that it never starts in the first place.

Thanks for everything


Update Terraform azurerm to v3.5.0

PR #2272
PR #2334

Fixed https://github.com/seattle-uat/civiform/pull/2641


Remove trailing " from template string

https://github.com/infinyon/fluvio-website/blob/17ce0492de46fddb8a3ee67588d006d8761d1b99/scripts/fluvio-cms/src/connectors/mod.rs#L232
This stray quote shows up in all of the beta connector pages

Resolved by https://github.com/infinyon/fluvio-website/pull/529


Possible to map "type" to a field in AzDo for JIRA AzDo migrator

While migrating issues from JIRA to AzDo
In a JIRA configuration with many custom issue types we would like for the issue type information to be available after a migration (even though we might not use the same issue types in AzDo).
Description of the solution we would like
We would like for it to be possible to specify a field mapping from source type to your own field that you can configure in AzDo.
An alternative solution we have considered
Exporting all of the JIRA issues in the format that JIRA responds with in order to write a separate script to update the mapped json-data.

Hello @wallymathieu !
The Jira Migrator PRO and Atlassian Migration Suite offerings from Jira both contain a helpful utility that retrieves the issue metadata and all available states and fields per issue type, as well as the expected schema for each field. Reach out to us at<EMAIL_ADDRESS>to make an inquiry! See this section for more insformation: https://github.com/solidify/jira-azuredevops-migrator?tab=readme-ov-file#jira-azure-devops-migrator-pro


Open Folder Has No Cancel Button

There is no easy way to close this dialog with the mouse (like an X or a cancel button).
The dialog appears when opening a remote repository and then clicking on File -> Open Folder....

This AFAIK, the design of the vscode simple file dialog (which is what is used in that image).

@chrmarti do you still own the quick pick? The simple file dialog uses the property ignoreFocusOut, and if we say that the simple file dialog should have a cancel button, then every quick pick that uses ignoreFocusOut should also probably have a cancel button.

I believe @TylerLeonhardt owns the quickpick now

if we say that the simple file dialog should have a cancel button, then every quick pick that uses ignoreFocusOut should also probably have a cancel button.

I agree with this statement. However, I don't like the idea of a cancel button cluttering quick picks that don't have a title bar when hitting Esc is available.

That said... it looks like we may need to do something for this because of https://github.com/microsoft/vscode/issues/125284#event-4831907037

Let's dupe this to #125284


Merging 2023-03 development branch to master for 2023-03 release (1.1.1)

Story Title
Merging 2023-03 development branch to master for 2023-03 release (1.1.1) (didn't create an issue for this, just a merge.)

Investigating failed unit tests.


Add Hash#has_value?

Ruby has has_value?. Is it a rejected one in crystal?
If it is reasonable, should I add Env#has_value? and SimpleHash#has_value?? ref: https://github.com/crystal-lang/crystal/issues/2331

@ruza-net hmm, it ain't GitHub flavored Markdown version, it's being parsed by Crystal doc generator which doesn't support it, I think...

@ruza-net, it isn't the same thing: your version compares only the first value.

@MaloJaffre I don't understand you properly.

Oh I see, the stmt gets executed only if the expression is true, mine return bool immediately. My bad I was programming in Python a Long time :)

Thank you all! Make sure the pattern in https://github.com/crystal-lang/crystal/pull/3138/commits/3e80dbcebc8e84dc252c70e94325b00be1908a34.

@kachick Thank you!

Thanks to merge! :)


Feedback refactor: BlockStore restructure

Some feedback from dig:

Adopting bytes::Bytes for BlockStore is not a terrible idea. It's even no_std.
IpldCodec is pulling in a perhaps unnecessarily heavy dependency on libipld. What about making that simply a u64?
put_block in practice is often taking &self instead of &mut self, since most people put concurrency primitives inside of their blockstore.

cc @organizedgrime @laudiacay because I know you were looking at blockstore stuff too.

i agree with point 2 & 3
don't have an opinion on 1


[Backport release-23.11] apptainer: 1.2.5 -> 1.3.2

Description of changes
Fix CVE-2024-3727 in a dependent Go module.
Backport #315423
Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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

[ ] 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
[X] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

@ofborg build apptainer-overriden-nixos apptainer-overriden-nixos.tests

Result of nixpkgs-review pr 319649 run on x86_64-linux 1

2 packages built:

apptainer
apptainer-overriden-nixos


TEXT containing linefeed characters cannot be commited.

Describe the bug
TEXT containing linefeed "\n" cannot be committed, showing an error ( SQL syntax error ).
To Reproduce
Steps to reproduce the behavior:

Create a table having TEXT field.
Show the table in DATA tabl.
Double click the TEXT field to open up the editor.
lnput multiple lines so that it contains linfeed characters.
Click "Update" to see the error.

Expected behavior
Edited data is correctly committed without modification.
Screenshots
Application (please complete the following information):

Version 0.1.10
Distribution: Snap Store

Desktop (please complete the following information):

OS: Ubuntu
Version 21.04

Additional context
It also happens with macOS.

I'm trying to reproduce this error with no luck.
I tried from Windows 10 and Ubuntu 21.04.
Is maybe the same syntax error from your last report?

It is possible.
Because the error message was the same.

v0.1.11 just released. Can you tell me if with this version the issue occurs?

I confirmed it no longer happens in 0.1.11.


Search says "queued", no results displayed in non-Chrome browsers

Several users (including @acaceres2176 and @atowler as well as some third parties) are reporting that using Profiler in Firefox results in the search results showing "Queued" and no results ever appear. The search does run, though, and the results are available in the archive. The same search in Chrome shows the results in realtime as intended.

A user who reported this indicated that he solved it by refreshing the page. I wonder if this is SSE timeout and not reconnecting?


Document a coding style for use of object-orientation in Snabb

Snabb is a growing project and there is room for many things in it :)  Still, if there are solutions that we agree upon as being particularly snabby, we should document them.
One of these areas is object orientation.  My proposal is to write up a document with the conclusions of this issue and PR it.  However at present it's just a discussion.  Here's a draft:

An object in Snabb is data with associated methods.  If you implement a data type in Snabb, we encourage you to set a common Lua metatable on all instances of that type, and to add methods to that metatable exposing the object's functionality.
It's also possible to expose object functionality via functions exported from a module which take an object as an explicit argument.  Doing this or not is up to you.
If a module exports functionality that does not logically operate on an object, such functionality should however be exported as a plain function.  Notably, constructors fall into this category.  So for example if you implement a trie:
local trie = require('lib.trie')

-- The constructor doesn't operate on an object, so it's just a function exported by the module.
local t = trie.new()

-- On the other hand, an "add" method on the trie does operate on an object, so it's a method.
t:add('foo')

-- Maybe there is an add function also exported by the trie module; if you feel like it.
trie.add(t, 'bar')

Thoughts @alexandergall ?

I agree (and pledge guilty for having abused "class methods" for non-object related functions). I see your point concerning the constructor, too. That could be easily implemented with lib.lua.class as well (just a pain to change all the modules that currently use the method style, but that's on me).

Yeah probably we should include some implementation notes as well, for example how to provide this api using lib.lua.class and so on.  No need for urgent changes, but agreement is a good thing to look for :)

Good discussion!
I would like to flag this whole topic as controversial. It is recommending a coding style that is unlike the core modules e.g. packet and link. This needs to be addressed somehow.
The broader discussion could take place under the umbrella of #734 including e.g. should we update the packet and link modules to follow this example too?
I will advocate for Occam's Razor i.e. the technically simplest and most minimal solution that actually covers our requirements. If that requires procedures, classes, subclasses, class methods, multimethods, predict disaptch, etc, then so be it. But I would presume everything to be unnecessary complexity until proven otherwise.
The risk I see is that we will introduce concepts that make one part of the community comfortable at the expense of another part of the community, and if we do this inconsistently over time then everybody will end up uncomfortable. To understand the whole Snabb source tree should you already be familiar with Java, Python, Smalltalk, CLOS, etc and recognize ideas that are borrowed from these languages? That is the kind of transitive complexity that I want to avoid.
I would also like to be explicit about where the rules apply and where they don't. For example documented APIs may be expected to strictly follow the recommendations, and core modules too, but not internal code within apps or programs where we defer to the author's creative impulses instead.
I observe that the lib.lua.class code has been controversial and I think it's because the first version PR'd already used classes and subclasses and people didn't have the chance to "see the working out" and understand what value those concepts are bringing to the table.

Maybe it's helpful to the discussion if I explain my motivation to go that particular path in the lib.protocol code. It was obvious to me that there will be lots of opportunities for code-reuse in the handling of protocol headers and the class model with actual inheritance seemed like a good fit. I'd be curious how people who don't like this approach would have written that code. I don't have any strong feelings towards any style, but I do care a lot about re-using code.
AFAICS, there are currently not many other parts of the Snabb codebase that would benefit from a non-trivial class hierarchy, but I do observe that at least the intel10g app uses inheritance internally and I actually find that code hard to read because the hierarchy is not obvious. I think that a more modular approach for writing drivers would be beneficial in general, e.g. separating generic from hardware-specific code. That might give us a better idea about what coding style to prefer.

I'd be curious how people who don't like this approach would have written that code.

I observe that when people have dug into that code they tend to develop a better appreciation for it. It is very carefully and thoughtfully written. I can believe that it would be awkward to factor that code in a more "cave man" style and that the object-orientation is really solving a problem.
I also like reuse. My fear with class.lua is that we will casually create object-oriented class hierarchies as one does in other languages like Java even when they are not required. That would not seem idiomatic for Snabb ("Snabby") to me.

at least the intel10g app uses inheritance internally and I actually find that code hard to read because the hierarchy is not obvious

I struggle with that code and am sometimes surprised about which functions are really being called in different configurations and which registers are really available. This leads to awkwardness in changes like 9c8b1025f049d3803b7aa03dc4ed2b754a4459d5.
With the benefit of hindsight I feel that inheritance complicates the code in intel10g for me and that is why in the I350 driver I factored everything into one app and used if on configuration parameters to decide e.g. whether to initialize the device or not. That driver has fewer features and so I may be cheating a bit, I am not sure yet. I really enjoy the creative process of looking for ways to eliminate clever ideas and make things more low-brow/cave-man/down-to-earth. This is not always possible though... "as simple as possible, but not simpler" as the saying goes.
In the meta-sense though I am also really glad that we have not prematurely standardized all of this stuff and so we have an interesting assortment of programming techniques in our repository that we can talk about. I think we need to preserve the feeling that the person actually solving the problem has a lot of latitude to make design decisions.

I will advocate for Occam's Razor i.e. the technically simplest and most minimal solution that actually covers our requirements. If that requires procedures, classes, subclasses, class methods, multimethods, predicate dispatch, etc, then so be it. But I would presume everything to be unnecessary complexity until proven otherwise.

I think this is a straw man argument :)  This PR advocates attaching FFI metatables to data types, that's all.  It's done in in such a way that you can use functions or methods, and the resulting procedural interface is harmonious with those in core.packet etc AFAICT.
However I would like to go further, and to advocate globally for preferring method syntax where it's obvious what the data types are.  For example if you know P is a packet, then use p:free() rather than packet.free(p).  You might choose to use packet.free(p) if you feel that it's not obvious that P is a packet and you want to help the reader know where the free function is coming from.
The reason for this is to reduce interface ceremony.  As a use example:
local histogram = require('core.histogram')
...
local h = histogram.new(1e-6, 1)
h:add(42)
for count, lo, hi in h:iterate() do
  ...
end

It's clear that h is a histogram, so the method syntax reduces the degree to which the user is battered with the word "histogram".  Compare to:
local histogram = require('core.histogram')
...
local h = histogram.new(1e-6, 1)
histogram.add(h, 42)
for count, lo, hi in histogram.iterate(h) do
  ...
end

or worse:
local histogram = require('core.histogram')
-- someone will do this eventually
local histogram_add = histogram.add
...
histogram_add(h, 42)

or worse:
local histogram = require('core.histogram')
-- someone will do this too
local add = histogram.add
...
add(h, 42)

And of course if there's no local require, like #734 proposes, then there's no ceremony at all:
local h = snabb.histogram.new(1e-6, 1)
h:add(42)
for count, lo, hi in h:iterate() do
  ...
end

And it's all super-low-tech.  I find this very snabby but others may disagree :)

However I would like to go further, and to advocate globally for preferring method syntax where it's obvious what the data types are.

Good!
Let's decide on a canonical style that works for everybody. This will require some due diligence on JIT efficiency to make people comfortable but hopefully we understand things well enough to do that now.


Highlighting not reloading on buffer reload

This is a bug from the original repository https://github.com/p00f/nvim-ts-rainbow/issues/112
This bug happens whenever a buffer is reloaded and it's content changes, this could happen by using a formatter, using git to checkout an open file, or any other actions that modifies an open file from outside of Neovim.
I have submitted 2 fixes for the issue https://github.com/mrjones2014/nvim-ts-rainbow/pull/8 https://github.com/nvim-treesitter/nvim-treesitter/issues/4187
Essentially, when the rainbow plugin reloads, it seems that the tree has not been reparsed, and so the function full update uses the previous tree to create the highlights.
The changes to treesitter are needed because the detach function is only called after the first reload. So if a buffer is reloaded more than once then there still may be invalid highlights.
For simplicity, if you want to check my branch without checking out a different treesitter branch you can add
vim.api.nvim_buf_clear_namespace(bufnr, nsid, 0, -1)

to the start of the M.attach function.

I believe this is fixed by #8

I believe this is fixed by #8

work like a charm


Do you train only linear classification head or finetune the whole Llama model?

Hi,
Thank you, guys, for providing us with the code, it is very useful for my research.
I have a few questions about your training:

1/ Here, what is the prompt for LS-LLaMA-2-7B? and where can I find this?
2/ Do you train only the linear classification head or fine-tune the whole Llama model?
3/Could you provide us with the zero and few-shot Llama code?
I hope you can answer my question, it is fascinating to find out these.
Best,
Tin

hi @ngthanhtin , sorry for the delayed reply.

For all LS-* models, we did not use a prompt.
We train the linear head and use LoRA for efficient tuning.
For the zero or few shot settings, here is our prompt template:

You are a text classification system, please help me with the classification task.
Task: identify the classification label from the given sentence.
Only support {{ labels|length }} labels, including: {{ labels|join(', ') }}.
{% if hint is not none %}
Explanation and examples: {{ hint }}
{% endif %}
Output format: label.

Following is the given sentence: {{ text }}
Output:

Thank you so much! @SeanLee97


simplify and fix getting-started page in main docs

fixes #428
N.B. should be backported to the release/23.7 branch and docs rebuilt.

Yes, I think we do. I'll add it to 23.11 and also to the template.


Devise

I did the following:

I Removed current_user method in ApplicationController.
[Installed and setup devise]
The app can register a new user.
User can log in with a combination of email and password.
Hashed password are stored in the database.
email confirmation.
users reset password.
added my styling.

It works well here from my side,  below are the screenshots
you can use
email<EMAIL_ADDRESS>password: tom123
to login


Sign Up » Drop Password-Retyping in Favour of Reset-via-Email

As soon as we have an email-service running and password-resetting implemented, we can drop the second password field in the sign up form, imho. It adds extra effort necessary for the process and provides little value when resetting becomes possible.
Discussions on UxStackExchange:

Is a “repeat password” field necessary in a signup page?
Why should we ask the password twice during registration?

depends on #363

this requires:

email confirmation to activate the account (to verify there was no typo during account-creation)
password reset

As described in issue #363 we can't easily achieve this, since we use the provided password to encrypt the keystore on the owner (for now)

i think this option would not work for us, since we are only able to change a forgotten password with a previously linked recovery key, @fkleedorfer can we close this issue then since it is not really that great or feasible for us to implement? if we dont close this issue and want to change our handling to remove the retype pw fields altogether i think we should include it in the recovery/password change issues (#363)


Support Authenticated Buckets/Orgs

Description
Add checks for access to creating buckets, and when creating a new bucket set the access to the authenticated user.
Related Issue
Impl #41
Motivation and Context
So all new buckets are secure going forward.
How Has This Been Tested?
Added unit tests. Also ran some quick Postman checks locally.
Screenshots (if appropriate):
Types of changes

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

Checklist:

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

Note: i didn't remove any of the "auto-bucket creation" logic already in saving Objects. However it should be noted that only works in R2, so we'd eventually need another solution if expanding beyond that single storage medium.


Bring Travis and AppVeyor configurations in sync with the GLib one

👍

👍

@GuillaumeGomez all green

All green here now @GuillaumeGomez

Thanks!


Multiple characters

Not sure the of the viability of this in regards to the underlaying stuff, but it would be very useful with support for multiple personalities/bots.
Maybe not possible but would be awesome :)

So the underlying bot (oobabot)[https://github.com/chrisrude/oobabot] "supports" multiple bots, in the sense that you can run multiple instances at the same time on different tokens and it just works.  There's no UI for it, though, so it's more of a challenge to set up.
I'll think about if there's an easier way to make it work in the UI though.  Maybe better documentation on how to run the non-GUI version with multiple bots would be a good idea?

I spawned a 2nd bot using the CLI, but having a way to do this in the UI would be awesome. Maybe some sort of a dropdown to select different bots(.yml files). I looked through the gradio code and it may not be as easily to implement as I described, but would be a much needed feature.

I'd also love to see this doable in the UI! Would make it super easy to spin up various personalities.

I would also very much appreciate making this possible in the UI. Dave the Accountant is needed, but I'd also like to have a different bot elsewhere.


fix error where complex column contains null or list

Codecov Report
Attention: 645 lines in your changes are missing coverage. Please review.

Comparison is base (c9fcd60) 44.65% compared to head (4aa911b) 42.26%.
Report is 115 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #408      +/-   ##
==========================================
- Coverage   44.65%   42.26%   -2.40%
==========================================
  Files          34       42       +8
  Lines        2770     3438     +668
==========================================
+ Hits         1237     1453     +216
- Misses       1533     1985     +452

Flag
Coverage Δ

unittests
42.26% <32.81%> (-2.40%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Files
Coverage Δ

dbt_coves/__init__.py
100.00% <100.00%> (ø)

dbt_coves/config/config.py
90.90% <100.00%> (+0.90%)
:arrow_up:

dbt_coves/tasks/dbt/main.py
41.09% <100.00%> (+1.65%)
:arrow_up:

dbt_coves/tasks/extract/fivetran.py
38.70% <100.00%> (+2.04%)
:arrow_up:

dbt_coves/tasks/generate/main.py
100.00% <100.00%> (ø)

dbt_coves/tasks/generate/metadata.py
23.60% <100.00%> (+0.96%)
:arrow_up:

dbt_coves/tasks/generate/properties.py
34.12% <100.00%> (+1.06%)
:arrow_up:

dbt_coves/tasks/generate/templates.py
44.68% <100.00%> (+2.45%)
:arrow_up:

dbt_coves/tasks/load/base.py
57.89% <ø> (+24.56%)
:arrow_up:

dbt_coves/tasks/setup/main.py
100.00% <100.00%> (ø)

... and 24 more

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


breakpoints is invalid when use vscode debug

i use craco-cesium build the APP ,  edit with vscode ,then make a break point in the  APP ,  but the break point is invalid;
i guess the problem is the source-map,but can`t find the reson

i deal this proble by delete node_modules/resium/dist/*.map file, i think can delete *.map files; in the production environment,these files is unuseful,and can`t debug by vscode or chrome debug tool;

Do you mean Resium's source map is broken?

Do you mean Resium's source map is broken?

no, I dont think the source-map is broken;  I think Resiums source map effect craco-cesium/webpack build  self apps source-map; if the webpack or craco-cesium load the *.map, maybe   resiums  source map broken; when i delete resiumes source-map in the /node_modules/resiume.... ,webpack or caro-cesium can build right source-map;u also  can use my way;  use chrome-devtools or vscode  test the source-map, if can make breakpoint in the source-map;
in fact,I dont find the reason, i just delete node_modules/resium/dist/*.map file, i can debug resiumes souece-map, can make a breakpoint in resiums source-map with vscode; hope u can help me by location the problem ,
hahah.....


Adds management session functionality

Resolves Issue #57

Added open_management_session
Added close_management_session
Added test to test newly added functionality

closes #57
Signed-off-by: Michael J Boquard<EMAIL_ADDRESS>

Due to the changes recently merged into main, I'm going to close this PR and start a new one


Remove nokogiri from Gemfile

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew typecheck with your changes locally?
[x] Have you successfully run brew tests with your changes locally?

In the recent past, parts of brew used nokogiri to parse (and interact with) XML but #11599 and #11610 replaced usage of nokogiri with rexml. This PR removes nokogiri as a direct dependency in Gemfile and Gemfile.lock, bringing us back to where we were before it was added seven months ago.
I've also added a comment to the Gemfile, to try to make it clear that nokogiri shouldn't be added as a dependency. What do we think of this?

It's worth noting that nokogiri is a dependency of mechanize, so it will remain installed. If you use require "nokogiri" in brew, it still seems to work (even after running brew vendor-gems on this PR branch).
Looking to the future, we discussed adding a brew style check to disallowrequire "nokogiri" in brew and point folks to rexml for XML parsing. I may tinker with this at some point (not right now) but if anyone else wants to work on this, please feel free. [If we ever end up needing/wanting to use nokogiri for HTML parsing in the future, we would have to revisit this idea but it should be fine for now.]

Review period will end on 2021-07-01 at 01:26:33 UTC.

Review period skipped due to critical label.

This will need rebased to pass CI.


Input message disappears while gathering context

Before submitting your bug report

[X] I believe this is a bug. I'll try to join the Continue Discord for questions
[X] I'm not able to find an open issue that reports the same bug
[X] I've seen the troubleshooting guide on the Continue Docs

Relevant environment info
- OS:*
- Continue version:0.9.243
- IDE version:VS Code

Description
This only happens after editing a previously sent message. Use a context provider like @ web that takes time to see the effect. The input box will lose the text just entered until context is gathered
To reproduce
No response
Log output
No response

We should write a test for this once fixed.


Added guides and useful Architectures

@rabimba contribute here https://github.com/Ishaan28malik/Get-Dev-Resources