Group sentences by length?

If the sentences of a document or group of documents were sorted by length, could those of the same length be run through the same computation graph?
It looks like quite a few methods would need to change signatures in order to work with a group of sentences so that the grouping can be propagated all the way down to the metal routines.  Would it be worth it?

I think  this is a great idea. This is a common trick in deep learning to speed up things.
Before we get into changing method signatures, I wonder what speedup we're looking at here. Would it be possible to run a simple test with a simple dynet model to understand what time we're looking at in cleaning up/recreating the comp graph?

Here are some further thoughts.  The code modifications for changing just one of the mtl predictions are shown in branch https://github.com/clulab/processors/tree/kwalcock/groupSentences.  They are fairly extensive but manageable.  In running modifications on the very small collection of quite small test documents included in a processors test directory, the following numbers were collected.

Document
Sentence Count
Unique Sentence Lengths
Savings

1
19
17
11%

2
13
13
0%

3
20
15
25%

4
13
13
0%

5
13
12
8%

6
11
11
0%

7
10
10
0%

8
12
11
8%

9
13
10
23%

10
1
1
0%

So, document 1 usually requires 19 computation graphs (per mtl object), 1 for each sentence, but it might make do with 17 because that's how many different sentence lengths there are.  If reusing a computation graph made the operation (forward pass) completely free, which it isn't, and grouping sentences of like length was completely free, which it isn't, then one might save the amount of time in the fourth column.  For documents of these fairly short lengths, the savings seems unlikely to be worth the effort.  However, these ancient test documents are probably significantly smaller than what we usually see so that the chance of duplicate lengths is small.  Also, perhaps extra emphasis should be placed on the worst case, long document, which might have significantly fewer sentence lengths than sentences.  The reading times definitely have a long tail in which a few long documents slow down the time to completion of the entire job.  (Sometimes the documents get sorted by length and read longest first to avoid problems like this.)  It might be that the document style of some corpora favor relatively short sentences with a tighter distribution, especially compared to literary documents like those in https://core.ac.uk/download/pdf/162100435.pdf.  It seems useful to extend the chart above to an actual corpus that has been read with particular attention to large documents.

Thanks!
Yes, seeing data on "real" documents would be nice!
Also, if savings are meaningful, we could pad sentences to increase the number of sentences of same length. For example, we could pad all sentences < 20 tokens such that they become 20 tokens in length.

I recall that from class.  My first concern was cases where the more quickly calculated answer matches the slower answer exactly.

If I understand this correctly, the srlSentence method (https://github.com/clulab/processors/blob/c0af4ba81249f16d63652af70580211d88b1a7f9/main/src/main/scala/org/clulab/processors/clu/CluProcessor.scala#L282) will run mtlSrla.predict() on the very same sentence for each of the predicates of the sentence.  I'm watching the predicates go by and see this many per sentence: 6, 5, 3, 16, 8, 6, 5, 4, 7, 9, 8.  At these quantities I think there would be savings even if different sentences are seldom the same length.  It's probably worth it for the single sentences already.  I almost have code complete to run all the mtl parts on groups of sentences, but it would be fairly easy to test just this part independently.

This code in that same srlSentence method is very strange:
      val headPositions = new ArrayBuffer[Int]()
      val pred = predicateIndexes(pi)
      for(i <- words.indices) {
        headPositions += pred
      }

it seems to boil down to this, which is just an array of the very same redundant number:
val headPositions = Array.fill(words.length)(predicateIndexes(pi))

Is that the intent?

Yes that was my intent :)
On Thu, Jul 1, 2021 at 00:23 Keith Alcock @.***> wrote:

This code in that same srlSentence method is very strange:
  val headPositions = new ArrayBuffer[Int]()
  val pred = predicateIndexes(pi)
  for(i <- words.indices) {
    headPositions += pred
  }

it seems to boil down to this, which is just an array of the very same
redundant number:
val headPositions = Array.fill(words.length)(predicateIndexes(pi))
Is that the intent?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/clulab/processors/issues/514#issuecomment-871737472,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAI75TWRU2QKVI7BUL3JGIDTVODNRANCNFSM47GJDCIA
.

In the branch kwalcock/groupSentences (https://github.com/clulab/processors/tree/kwalcock/groupSentences), CluProcessors, Metal, and Layers are revised to work on multiple sentences at a time if they are the same length.  They also to the multiple predicates at a time for the same sentences.  The number of AnnotatedSentences being processed by mtlSrla.predict is nearly 7 (6.96 when zeros are not counted).  Nevertheless, it doesn't have any effect on performance.  It seems like dynet is not able to take advantage of the situation and I don't yet know why.  Perhaps something in Layers is unnecessarily updating values that haven't changed so that calculations are repeated anyway.

Stage
Grouped Time
Ungrouped Time

chunking
0:00:00:00.000
0:00:00:00.000

clear
0:00:00:00.000
0:00:00:00.000

discourse
0:00:00:00.000
0:00:00:00.000

group
0:00:00:00.009
0:00:00:00.011

lemmatize
0:00:00:00.988
0:00:00:01.129

parse
0:00:01:07.905
0:00:01:07.274

recognizeNamedEntities
0:00:00:34.185
0:00:00:34.004

resolveCoreference
0:00:00:00.000
0:00:00:00.000

srl
0:00:03:43.483
0:00:03:40.369

tagPartsOfSpeech
0:00:00:34.357
0:00:00:34.668

totals
6.02 minutes
5.96 minutes

Hmm. I'll take a look soon.

I went through your branch carefully, and I think the code is correct.
My only explanation now is that the ComputationGraph.renew() call is indeed cheap. Cheaper than the overhead added to sort and group the sentences. But this seems to disagree with the savings numbers you have in this thread... Any ideas of where the differences come from?


Typings Exports missing from index

[x ] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior
importing parts of material-ui should be available from the top level folder
Current Behavior
The following list produces a typescript error ".../material-ui/index has no exported member "
InputAdornment (I believe this has already been resolved) #8959
Theme
StyleRulesCallback
TableFooter
TablePagination## Your Environment

Tech
Version

Material-UI
@next

React
16.2.0

@Andy4ward Do you want to submit a pull request for fixing this?

@oliviertassinari quite new to react/javascript/material-ui/git etc. so not sure i know how to do that as I only installed material-ui through npm

@Andy4ward IT's pretty straightforward: https://github.com/mui-org/material-ui/blob/v1-beta/CONTRIBUTING.md#getting-started

@mbrookes thanks for the link
@oliviertassinari i think this has been done now. Please let me know if there are any issues


On Rocky9 kubernetes worker node, the haproxy external check script times out and doesn't start

Report
I am unable to set up PerconaXtraDBCluster because the haproxy external check script times out.
I confirmed that this problem occurs on Kubernetes worker nodes of Rocky9. This problem doesn't occur on Kubernetes worker nodes of Ubuntu 20.04.
I seem to haproxy happen in busy loop. Because cpu resource is very increase.
Of course, when I run check_pxc.sh within the haproxy pod, I can confirm that it connects to the mysql cluster normally.
I found that this problem happen in Amazon EKS(amazon linux 2023 with kubernetes 1.29).
https://github.com/amazonlinux/amazon-linux-2023/issues/693
Please let me know if we need more informations.
More about the problem
I attached haproxy log, cr.yaml, ps command log in haproxy container and manually run external-check-script log.
Explore-logs-2024-09-10 16_44_39.txt
ps-command-on-haproxy-pod.txt
test-cluster00-haproxy00.txt
manually-run-external-check-script.txt
Steps to reproduce

setup pxc operator (I confirmed 3 version "1.13.0", "1.14.0" and "1.15.0")
kubectl apply -f test-cluster00-haproxy00.yaml. (running pod on Rocky9 kubernetes worker node)

Versions

Kubernetes 1.29.6 (problem occurs in Rocky9 worker node. doesn't problem occurs in Ubuntu 20.04 worker node)
Operator 1.130, 1.14.0 and 1.15.0 (I confirmed 3 versions)
Database 1.130, 1.14.0 and 1.15.0 (I confirmed 3 versions)

Anything else?
No response

I found that this issue occurs when the worker node is using a large amount of memory (over 300GB in my environment).
This issue has been confirmed to occur with haproxy and slapd.
Resolution:
If you change the value of LimitNOFILE in the containerd.service on the Kubernetes worker node from infinity to 65535, haproxy will start.
Thanks,
Aki


Search file contents...

I'd like to see Files (the app) search file contents such as Microsoft Word documents in a particular path. I imagine that it would require tapping into the search system of Windows itself to do this since Windows Search indexes file contents.

It's planned. A research system is under development. It will be possible to search for indexed content.

Should be possible already, by typing something like "content:YOURSEARCH"

It would also be good if it finds music when I search for an artist or a genre

Merging with #7124


bugfix: concurrent map read and map write

Codecov Report

Merging #167 (454229c) into main (34d7ca9) will decrease coverage by 1.42%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #167      +/-   ##
==========================================
- Coverage   12.01%   10.59%   -1.43%
==========================================
  Files          17       17
  Lines        1681     1794     +113
==========================================
- Hits          202      190      -12
- Misses       1460     1585     +125
  Partials       19       19

Flag
Coverage Δ

unittests
10.59% <ø> (-1.43%)
:arrow_down:

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

Impacted Files
Coverage Δ

pkg/controller/controller.go
30.37% <0.00%> (-4.71%)
:arrow_down:

pkg/agent/discovery/discovery.go
8.43% <0.00%> (-3.13%)
:arrow_down:

pkg/agent/discovery/lvm.go
0.00% <0.00%> (ø)

pkg/agent/discovery/snapshot.go
0.00% <0.00%> (ø)

pkg/scheduler/algorithm/cache/node.go
0.00% <0.00%> (ø)

pkg/scheduler/algorithm/cache/types.go
61.66% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


[BUG] ISR dispatch and GPTIMER problematic enable (IDFGH-13527)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report
### Issue Description:
We are encountering an issue with the ESP32 GPTimer system when attempting to execute two timers in rapid succession, both being set from within an ISR. Specifically, the first GPTimer (gptimer_triacs) always executes perfectly, but the second GPTimer (gptimer_triacs_all_off) sometimes fails to execute entirely. No errors are reported during the arming or setting of the timers, but the callback for gptimer_triacs_all_off occasionally does not get dispatched.
### Code Overview:
The following GPTimers are created and configured:
// Global configuration for both timers
gptimer_config_t IRAM_ATTR timer_config_us_up = {
    .clk_src = GPTIMER_CLK_SRC_DEFAULT,
    .direction = GPTIMER_COUNT_UP,
    .resolution_hz = 1 * 1000 * 1000, // 1MHz, 1 tick = 1us
    .intr_priority = 3,
    .flags.intr_shared = false,
};

// Creating and configuring the first timer (gptimer_triacs)
gptimer_new_timer(&timer_config_us_up, &gptimer_triacs);
gptimer_event_callbacks_t callback_source_for_triacs_arm = {
    .on_alarm = execute_alarm_for_triacs_arm,
};
gptimer_register_event_callbacks(gptimer_triacs, &callback_source_for_triacs_arm, NULL);
gptimer_enable(gptimer_triacs);

// Creating and configuring the second timer (gptimer_triacs_all_off)
gptimer_new_timer(&timer_config_us_up, &gptimer_triacs_all_off);
gptimer_event_callbacks_t callback_source_for_triacs_disarm_all = {
    .on_alarm = timer_disabletriacs,
};
gptimer_register_event_callbacks(gptimer_triacs_all_off, &callback_source_for_triacs_disarm_all, NULL);
gptimer_enable(gptimer_triacs_all_off);

### Timer Arming in ISR:
Inside an ISR, both timers are re-armed sequentially:
// Re-arm and start gptimer_triacs
gptimer_stop(gptimer_triacs);
gptimer_set_raw_count(gptimer_triacs, 0);
gptimer_alarm_config_t us_triac_dispatch = {
    .alarm_count = diff,  // TRIAC timing
};
gptimer_set_alarm_action(gptimer_triacs, &us_triac_dispatch);
gptimer_start(gptimer_triacs);

// Re-arm and start gptimer_triacs_all_off
gptimer_stop(gptimer_triacs_all_off);
gptimer_alarm_config_t us_dispatch_all_triacs_off = {
    .alarm_count = diff_off,  // Delay for TRIACs off
};
esp_err_t ret = gptimer_set_raw_count(gptimer_triacs_all_off, 0);
if (ret != ESP_OK) {
    printf("Failed to set raw count for gptimer_triacs_all_off: %s\n", esp_err_to_name(ret));
}
ret = gptimer_set_alarm_action(gptimer_triacs_all_off, &us_dispatch_all_triacs_off);
if (ret != ESP_OK) {
    printf("Failed to set alarm action for gptimer_triacs_all_off: %s\n", esp_err_to_name(ret));
}
ret = gptimer_start(gptimer_triacs_all_off);
if (ret != ESP_OK) {
    printf("Failed to start gptimer_triacs_all_off: %s\n", esp_err_to_name(ret));
}

Problem Summary:

gptimer_triacs: Executes perfectly every time.
gptimer_triacs_all_off: Sometimes does not execute at all, meaning the callback (timer_disabletriacs) does not get called.

This issue persists even though:

Both timers are configured similarly with appropriate priority levels (tested with priorities 1, 2, and 3).
The timers are armed and started in sequence with no errors reported.
The delay (diff_off) for gptimer_triacs_all_off is roughly 250μs after gptimer_triacs.

Test Conditions:

Frequency: The system operates at 60Hz.
Dimmable Range Example: If the dimmable range is set to 7500μs in an 8333μs 60Hz zone, with a 30% duty cycle, the timings would be:
- gptimer_triacs: 5250μs
- gptimer_triacs_all_off: 5500μs
Even under these conditions, the issue occurs.

Observations:

The problem persists regardless of whether the .intr_priority flag is set to 1, 2, or 3.
The .flags.intr_shared option was tested both as true and false, with no difference in behavior.
There are no visible errors during the setting or starting of the timers, and yet gptimer_triacs_all_off sometimes fails to fire.

Request for Guidance or any Changes to Try to Solve Addressed Issue
We are seeking clarification on whether there are known issues with GPTimer under the following conditions:

Simultaneous re-arming of multiple GPTimers from within an ISR.
Rapid succession of timers being re-armed and executed (e.g., within 250 microseconds of each other) with 2 or more GPTimers.

Is there any potential for a race condition or other underlying issue that could cause the second timer not to dispatch its callback? Any advice or suggested debugging steps to identify why this is happening would be greatly appreciated.

Startup as:
D (10410) gptimer: new group (0) @0x3ffcf090
D (10410) gptimer: new gptimer (0,0) at 0x3ffe3de0, resolution=1000000Hz
D (10410) gptimer: new gptimer (0,1) at 0x3ffe3ea4, resolution=1000000Hz

I think there is no problem with sharing resources between two separate timers. Can you provide a simple reproduction project? Also, which version of the idf and which chip are you using? I will try to reproduce it.

Hi, the problem is among the GPTIMER dispatch, it has a serious problem.
gptimer_config_t IRAM_ATTR timer_config_us_up = {
.clk_src = GPTIMER_CLK_SRC_DEFAULT,
.direction = GPTIMER_COUNT_UP,
.resolution_hz = 1 * 1000 * 1000, // 1MHz, 1 tick = 1us
.intr_priority = 3,   //3 tons of error, 1 still with some errors
.flags.intr_shared = false,
};
timer_creation_result = gptimer_new_timer(&timer_config_us_up, &gptimer_timelapse_action);
gptimer_event_callbacks_t callback_source_timelapse = {
.on_alarm = time_lapse_action,
};
gptimer_register_event_callbacks(gptimer_timelapse_action, &callback_source_timelapse, NULL);
gptimer_alarm_config_t us_triac_dispatch2 = {
.reload_count = 0,
.alarm_count = 75,
.flags.auto_reload_on_alarm = true,
};
gptimer_set_alarm_action(gptimer_timelapse_action, &us_triac_dispatch2);
gptimer_enable(gptimer_timelapse_action);
gptimer_start(gptimer_timelapse_action);
int IRAM_ATTR onoff = 1;
static bool IRAM_ATTR time_lapse_action(gptimer_handle_t timer, const gptimer_alarm_event_data_t *edata, void *user_data) {
int64_t testing = esp_timer_get_time();  // Record the current time
xQueueSendFromISR(gpio_evt_queue_zc, &testing, NULL);
if (onoff){
GPIO.out_w1ts = (1 << 26);  // Enable  GPIO output high
}
else {
GPIO.out_w1tc = (1 << 26);  // Clear GPIO output low
}
onoff = !onoff;
return true;
}
Ocisloscope DS1104z with 100MHz 1GSa/s
With this example running we can capture a lot of dispatch failure, timer trigger and actions with odd behavior with a 75us continous dispatch as in above code:

GPTIMER double act in dispatch, so its dispatch double at 5us even in a miss act.

Miss the dispatch twice concurrent

To have a minimum ammount of failures the highest level 1 is needed to have small ammount of error.
There is no free error GPTImer at all.

@filzek
Your variables are tagged as IRAM_ATTR.
Is it not supposed to be DRAM_ATTR since they are data and not instruction ?

@filzek Your variables are tagged as IRAM_ATTR. Is it not supposed to be DRAM_ATTR since they are data and not instruction ?

@florentbr in this case makes no difference as the size part of the memory read and write is always exacly the same, it could have a problem with a uint/string larger type, but for int family there is no such as problem.
In the timer handle and others strucs the compiler moves it to the correct aligned part as well, it does it since sdk v3.

Hi @filzek
I tested it with your configuration and didn't find this problem. Did you configure the options CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM=y and  CONFIG_GPTIMER_ISR_IRAM_SAFE=y?
Beacues gptimer_timelapse_action is user's callback function which we call it in the gptimer_default_isr. We need to ensure both of them are in the IRAM.

@filzek Does the comment in https://github.com/espressif/esp-idf/issues/14418#issuecomment-2345334206 help?

CONFIG_GPTIMER_ISR_IRAM_SAFE

@AxelLin, we have already configured it to use IRAM. The issue seems to be directly related to how the SDK manages processes. Shifting all applications, including WiFi and BLE, to core 0 and isolating only the TIMER and ISR on core 1 helps reduce the problem, but it still persists.

@filzek Can this commit https://github.com/espressif/esp-idf/commit/0f8e6f68c3b2b592ad20da6048942d61d23967a8 sovle you problem ?

I have a similar problem, regularily the GPTimer is delayed (about 2 times per seconds but vary)
i configured the timer for 50kHz (priority 1)
Because i'm driving stepper motor using the GPTimer, i need a very stable timer..which is clearly not..
hope the callback is called directly from ISR ?

How many microseconds of delay are there each time? And have you tried installing GPTimer on another core or putting your code to IRAM? @rickou

ok, so i just make some measurements.
i got quite large delay every 250ms

Detail:

during all the steps I also get some times longer than expected, for ex:

reminder, the timer ISR rate is 50kHz, and i use simple variable to toggle the pin

in addition, i replaced calls to GPIO function to direct register acces, replaced the sqrtf calls by my own implementation in IRAM
no changes observed..
but i still have some calls to xthal regarding saving float coprocessor registers, but i have no alternatives for theses functions:
-xthal_get_cpenable
-xthal_save_cp0
-xthal_set_cpenable
-xthal_restore_cp0

driving stepper motor using the GPTimer

Have you tried this example?

reminder, the timer ISR rate is 50kHz

So the alarm interval is around 20us, which is a high real time requirement IMO. I'm afraid you can hardly achieve it. The biggest problem is, we have many code that can disable the interrupt (enter critical section).

Have you tried this example?

Just trying to implement my own version.. 😜

reminder, the timer ISR rate is 50kHz

So the alarm interval is around 20us, which is a high real time requirement IMO. I'm afraid you can hardly achieve it. The biggest problem is, we have many code that can disable the interrupt (enter critical section).

yes, but ESP run quite faster... on 2 cores ! so 20us should not be a real problem.. ok for some small drifts..
critical sections should be very very limited in time so 20us should be an eternity regarding this.
and in my case, i get around 300us...
to be honest, i'm more comfortable with much smaller MCU like PIC or STM32. ok i don't use Wifi and OS.. but using interrupts should not be so different...


Project Status

I am looking for the right TS command framework for me and am curious about the future of this project.

Hi! Appreciate your interest. This is my go-to command line argument parser as of today. Haven't found anything nicer than this so far. Some internal projects at work use this as well with great results.

I have found it useful as well, thanks for the work. I have just run into a few issues and was curious about the velocity of the project. Thanks for your reply.


Introduce protocol aliases for the request-response protocol

Each request-response protocol may have aliases/fallback names which are used for negotiation if the main protocol is not supported by both peers

https://github.com/altonen/litep2p/commit/e284a3f1a84a45b56d911b760114bd45354226c5


adding case insensitive check for mac

change validation to ignore  MAC address case while comparing .
This code is a Contribution to the OpenConfig Feature Profiles project ("Work") made under the Google Software Grant and Corporate Contributor License Agreement ("CLA") and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia's intellectual property are granted for any other purpose. This code is provided on an as is basis without any warranties of any kind.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 55.385%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1188

Relevant Lines:
2145

💛  - Coveralls

Pull Request Functional Test Report for #1635 / f8118a85e4cb1f629fcc2447e2b804c6fb647a7e
Virtual Devices

Device
Test
Test Documentation
Job

Arista cEOS

TE-1.1: Static ARP

Cisco 8000E

TE-1.1: Static ARP

Cisco XRd

TE-1.1: Static ARP

Juniper cPTX

TE-1.1: Static ARP

Nokia SR Linux

TE-1.1: Static ARP

Help

@bkreddy143 I don't see checkDUTEntry func in ATE test here. Do you happen to know why? (which one is more update to date code?)

@jasdeep-hundal who is working on ATE -> OTG migration and might have more context.

@xw-g , I just glanced through both ate and otg script and looks like ate case validation is happening only in ixia with egress tracking options enabled in flow and in case of otg mac validation is happening in dut and traffic validation is in OTG.  so , OTG has two functions testFlow() and CheckDUTEntry() where as ATE script has only testFlow() .  These changes came from multiple commits .

OTG test is more up-to-date here. (I'm not sure the functionality is even available in the ATE version.) The ATE version definitely doesn't meet all the requirements defined the README.

do need to update ate_test with checkDUTEntry() ? wanted to know how to proceed on this PR.

@xw-g , @jasdeep-hundal  please let me know how to proceed on this PR.

business logic wise, I think it's ok not to check case sensitivity. @jasdeep-hundal if not other concern, please help merge. Thanks.

no objection from @jasdeep-hundal


Lane centre polylines in nuscenes after conversion seem to be uncentred wrt map

Hello,
I have converted a nuscenes scenario, and when i am printing out the whole map element I get this strange behavior, the lanes' center lines are not centered with the other map elements.

I think it might be an error on how to compute the map_centre of the polylines in converter/nuscenes.utils.py?
result[SD.TRACKS], map_center = get_tracks_from_frames(nuscenes, scene_info, frames, num_to_interpolate=5) ....... Normalize place all object to (0,0)     map_center = np.array(interpolate_tracks["ego"]["state"]["position"][0])     map_center[-1] = 0     normalized_ret = {}     for id, track, in interpolate_tracks.items():         pos = track["state"]["position"] - map_center         track["state"]["position"] = np.asarray(pos)         normalized_ret[id] = track

I confirmed this error. It is introduced in a recent PR. I have fixed it now. Please pull the latest code

Thank you so much!


asyncio support

I'd like to add asyncio support to this library. Is this something you'd be interested in?
It would be a different submodule, since it would require at least 3.3. If you don't want any external dependencies, then the submodule would require at least version 3.4.

It can be a submodule, that would work only if 3.4 is present. Yep, pls propose a pull request, we'll see.


Document proper meaning of OPENQA_URL constant

I learned this the hard way 😅

Uh,I still don't understand

Ok, help me rephrase. It is about this piece of code https://github.com/openSUSE/qem-bot/blob/00b400050c974de1fc818acec04a57a1919febff/openqabot/openqa.py#L34
And it is apparently just a filter when to skip updating the dashboard with the newly created openQA jobs during scheduling.


Interfaces and Types must define one or more fields => NOT true

In our Grapql Schema we have empty interfaces and types with no members.
This is causing the following error:
Type {{Interface or Type}} must define one or more fields.
at Ai (main.js:129)
at main.js:129
at Yi (main.js:129)
at main.js:129
at ya (main.js:129)
at Aa (main.js:129)
at n.updateIntrospection (main.js:129)
at n.fetchIntrospection (main.js:129)
at n.componentDidUpdate (main.js:129)
at Jr (main.js:57)
cr @ main.js:57
Nr.t.callback @ main.js:57
ar @ main.js:57
ir @ main.js:57
Jr @ main.js:57
zr @ main.js:57
(anonymous) @ main.js:57
n.unstable_runWithPriority @ main.js:66
Dl @ main.js:57
Ol @ main.js:57
Sl @ main.js:57
Pl @ main.js:57
Et @ main.js:57
I woud say this is a bug. Interfaces and types are still valid even if they do not have any members.

@mikaelparkefelt GraphQL requires that the interface is always not empty:

An Interface type must define one or more fields.
https://graphql.github.io/graphql-spec/draft/#sel-HAHblBFBABABxB4a


sw.js inline import ?url filecontent, it should be return a file url.

Describe the bug
sw.js inline import ?url filecontent, it should be return a file url.
Reproduction
npm create svelte sw-inline-reproduction
cd sw-inline-reproduction
echo 'import l from "./service-worker.js?url";console.log(l)' > src/service-worker.js
npm run build
cat .svelte-kit/output/client/service-worker.js

you will see the service-worker.js file include to the ?url filecontent
Logs
const a = "data:application/javascript;base64,aW1wb3J0IGwgZnJvbSAiLi9zZXJ2aWNlLXdvcmtlci5qcz91cmwiO2NvbnNvbGUubG9nKGwpCg==";
console.log(a);

System Info
System:
    OS: Linux 5.10 Debian GNU/Linux 11 (bullseye) 11 (bullseye)
    CPU: (16) x64 AMD Ryzen 7 5700G with Radeon Graphics
    Memory: 18.65 GB / 30.72 GB
    Container: Yes
    Shell: 5.1.4 - /bin/bash
  Binaries:
    Node: 18.14.2 - /usr/bin/node
    Yarn: 1.22.19 - /usr/bin/yarn
    npm: 9.5.0 - /usr/bin/npm
  Browsers:
    Chrome: 110.0.5481.177
    Firefox: 102.8.0esr
  npmPackages:
    @sveltejs/adapter-auto: ^2.0.0 => 2.0.0
    @sveltejs/adapter-static: ^2.0.1 => 2.0.1
    @sveltejs/kit: ^1.9.1 => 1.9.1
    svelte: ^3.54.0 => 3.55.1
    vite: ^4.1.4 => 4.1.4

Severity
serious, but I can work around it
Additional Information
I have import a large wasm file (size 1.6M) in sw.js, if inline the wasm file will make sw.js load slow. (assetsInlineLimit: 0 option is not working for sw.js)
My current solution is to copy the wasm files to the static directory and manually set the wasmUrl

I have updated the Reproduction step, now it easily reproduce

Started investigating in https://github.com/sveltejs/kit/pull/9285


Unable to integrate disqus comments

Hi
I am not able to integrate the Disqus with my site, although all my configurations seem correct
source: https://github.com/tranlyvu/tranlyvu.github.io
host: https://www.netlify.com
site : https://distributedsystemsblog.com
_config.yml
comments:
  provider               : "disqus" # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "custom"
  disqus:
    shortname            : distributedsystemsblog-com

# Defaults
defaults:
  # _docs
  - scope:
      path: ""
      type: docs
    values:
      layout: single
      read_time: true
      share: true
      comments: true
      toc: true
      toc_label: "Table of Contents"
      sidebar:
        nav: "docs"

    # _posts
  - scope:
      path: ""
      type: posts
    values:
      layout: single
      toc: true
      toc_label: "Table of Contents"
      author_profile: true
      author: Tran Ly Vu
      read_time: true
      comments: true
      share: true
      related: true

Blind guess: You need to set JEKYLL_ENV=production when building on Netlify.

Confirmed: Your site builds correctly with comments enabled when JEKYLL_ENV=production.

Confirmed: Your site builds correctly with comments enabled when JEKYLL_ENV=production.

Thanks

@iBug I deploy with JEKYLL_ENV=production , I see that there is now comments but assets are not loaded , i.e. https://distributedsystemsblog.com
Do you know why?

Set your baseurl: “” instead of leaving it empty.
Unsure what's the culprit but definitely not this theme.

This might be the cause, but after all baseurl isn't meant to be optional.
https://github.com/jekyll/github-metadata/blob/c0d0fa8057c02bb5de23af90b4b8c27e529350d7/lib/jekyll-github-metadata/metadata_drop.rb#L67

Set your baseurl: "" explicitly to an empty string instead of leaving it empty.

@mmistakes I think this is worth being added to this theme's fantastic and comprehensive documentations (maybe comments in the _config.yml file as well) as this impacts a lot of users since jekyll-github-metadata is a "default plugin" of GitHub Pages.

@iBug Thanks @iBug , it worked


Allowing for 'false' values in config.

Fixes issue mentioned at https://github.com/openzipkin/zipkin/pull/1903#issuecomment-372857764.

Not sure why I had a test failure in Travis... it passed on my box :(

circleci likely failed due to degraded service (it timed out)

Thanks! I will add a unit test to your PR

ok 3 hours to figure out how to test false === false, but... at least next time we need an api test we know what to copy/paste :)

thanks much!

Yw!  Thank you for adding the test :)


[Bug]: Cannot update snapshots when testing ts_project

What happened?
When I run jest_test with a ts_project as a target instead of source files, updating snapshots fails.
I have the following logs:
$ bazel run //lib:test_update_snapshots
INFO: Analyzed target //lib:test_update_snapshots (377 packages loaded, 7350 targets configured).
INFO: Found 1 target...
INFO: From JsRunBinary lib/__snapshots__/out:
 PASS  lib/src/say-hello.spec.js
  sayHello
    ✓ should match snapshot (2 ms)

 › 1 snapshot written.
Snapshot Summary
 › 1 snapshot written from 1 test suite.

Target //lib:test_update_snapshots up-to-date:
  bazel-bin/lib/test_update_snapshots_update.sh
INFO: Elapsed time: 7.288s, Critical Path: 5.50s
INFO: 2005 processes: 1362 internal, 3 linux-sandbox, 638 local, 2 worker.
INFO: Build completed successfully, 2005 total actions
INFO: Build completed successfully, 2005 total actions
Copying directory /home/****/.cache/bazel/_bazel_****/332a89fded1c3dae890fec05ef02de2c/execroot/__main__/bazel-out/k8-fastbuild/bin/lib/test_update_snapshots_update.sh.runfiles/__main__/lib/__snapshots__/out to lib/__snapshots__ in /home/nathan/programming/playground/bazel_jest_issue
cp: cannot stat '/home/****/.cache/bazel/_bazel_****/332a89fded1c3dae890fec05ef02de2c/execroot/__main__/bazel-out/k8-fastbuild/bin/lib/test_update_snapshots_update.sh.runfiles/__main__/lib/__snapshots__/out/*': No such file or directory

Version
Development (host) and target OS/architectures:
WSL on Windows 11
64 bit
Output of bazel --version:
bazel 5.3.2
How to reproduce
Repro: https://github.com/nathanosdev/bazel_jest_snapshot_repro

Any other information?
Thank you for your great work on these rules so far! I really love the direction that Bazel is bringing frontend technology.
Fund our work

[x] Sponsor our open source work by donating a bug bounty

Does this work outside bazel? I think the __snapshots__ directory needs to be a subdirectory of the directory the test files are in.
Thanks for the reproduction repo 👍

Does this work outside bazel? I think the __snapshots__ directory needs to be a subdirectory of the directory the test files are in.

Yes, it works if I convert the TS files to JS and run npx jest in the lib folder. The snapshots are created in lib/src/__snapshots__/. It also works if I use JS and remove rules_ts. It's only breaking once I add rules_ts to the pipeline.

If I upgrade everything in your repo (rules_js+ts+jest) and mkdir lib/src/__snapshots__ it seems to work for me...

Note that bazel requires the mkdir unlike outside bazel, which might be why it was working for you with npx?

What worked for you? Were the snapshots written to disk when running bazel test //lib:test_update_snapshots?
For me, the logs say that it works, but nothing is actually written to disk.
I've updated the repro: https://github.com/nathanosdev/bazel_jest_snapshot_repro
$ mkdir -p ./lib/src/__snapshots__/
$ bazel run //lib:test_update_snapshots # looks like it works
$ bazel test //lib:test # still fails

As a sidenote, having to manually create __snapshots__ is not an ideal DX. I hope this can be improved in a future version 👍

If you set snapshots = ["__snapshots__"] instead of snapshots = True then the manual creation is not necessary. This could use some better documentation. It is mentioned, https://docs.aspect.build/rules/aspect_rules_jest/docs/rules#snapshots, but it could be made more clear.
The reason the creation is necessary with True is the hood that looks for all snapshot directories for that test target with glob(["**/__snapshots__"]): https://github.com/aspect-build/rules_jest/blob/3d76b1763b6326f31bb1ebb73a50b2f4b3087f05/jest/defs.bzl#L175

I was already aware of that option, I think the documentation is clear on that, but it's not a nice transition for an existing project that already has 100s of components, each with their own __snapshots__ folder to move to a single __snapshots__ folder.
I understand there's some difficulties in this area anyway and Bazel is very picky sometimes, so I'm not complaining. Only hoping that it can be improved in the future :)

Unfortunately, it is a hard requirement for Bazel to know all of the inputs & outputs in the graph during the analysis phase so it either needs to be told explicitly what the outputs are (which __snapshots__ folder are created by the test) or it can attempt to discover it with glob but in that case the folders need to exist to be found. There is no way around that defined inputs/outputs requirements with Bazel as that is fundamental to the contract.
It could be improved in the future, however, with tooling that parses the specs and determines which once create snapshots and then updates the BUILD files accordingly.

@nathanosdev your cli snippet works for me and I can't reproduce the original error🤔
I simply did:
$ git clone git@github.com:nathanosdev/bazel_jest_snapshot_repro.git
$ cd bazel_jest_snapshot_repro
$ bazel test //...
$ mkdir -p ./lib/src/__snapshots__/
$ bazel run //lib:test_update_snapshots
$ bazel test //...

🤷

System variables? Those shouldn't effect bazel unless they are declared inputs, so I'm not sure.

I tried again on my other computer, wasn't working. I updated the latest Bazel, it worked. I rolled back to the previous version 5.3.2 and it was still working 🤷 So it looks like updating the rules fixes the issue, whatever other issue I had seems to be transient.
Thanks everyone 👏 I'll close the issue.


chore(consensus): Signature Definitions

Description
Simplifies signature definitions.
Closes #59.

📚 $\text{Stack Overview}$
Pulls submitted in this stack:

#281 👈
main

This comment was automatically generated by st.


Support profile embedding

ex.
<TwitterProfile profileUrl="https://twitter.com/vercel" showTweets={3} />

Unfortunately this would require Twitter API v2 + we want to keep this library as simple as possible so it won't be added 😅
Closing this for now, but appreciate the feature request!

@steven-tey are you sure? Profile/timeline embedding is supported by Twitter
Tweets by vercel


"Atom Editor" is all that shows?

Hello! I am on MacOS and I wanted to use this package so people would stop getting on my case for replying only so slowly :) Unfortunately, this does not seem to work... My suspicion is that "Custom Client ID" is not set properly. I also get empty log files...?
<EMAIL_ADDRESS>/V/S/A/atom-discord $ wc log.txt
       2       0       2 log.txt

Discord shows "Atom Editor" properly, but it doe snot seem to get the information to show stuff like "Working on %project%".
How can I get the Client ID of my instance so I can verify that the default actually matches?

First, for logging please check on the logging option in troubleshooting menu.
Second, if you want to use custom client, please set that to the App ID of https://discordapp.com/developers/applications/


Fixed issue #226

Fixed issue #226

@opticod  Please have a look on this too when you get some time.

@vishwesh3, we can merge all enhancement and new-features once our current version 2.5.0 is released in playstore. We are currently merging only critical bug fixes. Thanks for your patience.

Thanks


RGB need UX consideration

1.Done

Need a scanner in send Flow

https://xd.adobe.com/view/513aecc1-ec34-4259-bf3e-956ddb5b60f3-0469/screen/51abb76e-95fe-4519-847c-9aa5e66f2b3f/

Verified this issue in Tribe app v 2.3.0(619)


Module '"reflow"' has no exported member 'Canvas'.

I'm submitting a...

[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report
[ ] Performance issue
[ ] Feature request
[ ] Documentation issue or request
[ ] Other... Please describe:

Current behavior

Expected behavior

No errors should appear in console
Minimal reproduction of the problem with instructions
I just installed the latest version of the library

What is the motivation / use case for changing the behavior?

Environment

Libs:
- react version: X.Y.Z
- realayers version: X.Y.Z

Browser:
- [ ] Chrome (desktop) version XX
- [ ] Chrome (Android) version XX
- [ ] Chrome (iOS) version XX
- [ ] Firefox version XX
- [ ] Safari (desktop) version XX
- [ ] Safari (iOS) version XX
- [ ] IE version XX
- [ ] Edge version XX

For Tooling issues:
- Node version: XX
- Platform:

Others:

Should this be import { Canvas } from 'reaflow'; instead of import Canvas from 'reaflow';


A question about test result

Hello, after I read your test code, I found that your test code seemed to only compute the PSNR value but cannot produce the denoised images. Therefore, I want to know how to modify the test code to realize my demand. Could you tell me the solution? thx.

Sorry for the missing code to dump images. Please refer to line 31 in test.py, you can take out the "pred" item and convert it into a numpy array, so that you can save the predicted images.


Fix #39 m8 authentication screen issue

Remove javascript and redirect to project website instead of trying to close the window since this is not allowed by browsers anymore. This PR fixes #39 .

Coverage remained the same at 34.37% when pulling 4fb885ffa0ede311ead3a5931b17f29b88245d96 on fix/#39-monoskope-auth-screen-issue into 5ca9b2a6d48a0c02e848dcc3cc1f6649c0075e32 on main.


Unable to make a transactions when log in via the Adapter method (Phantom wallet)

I have a transaction calling function, and it works fine when I log in by entering the Phrase Seed. However, it encounters an error when I log in with the Phantom wallet.
Error details:
Log Reason: Transaction signature verification failure
Log ServerErrorCode: -32003

@tieugame2110 you should be using Web3.Wallet.SignAndSendTransaction rather than directly using the Rpc. The wallet wrapper contains the logic to deduplicate signatures and handle the cross platform signature.
See here for a minting example.


Init player for widevine + player

There is a guide to implement in Swift widevine + shaka player using a content with DRM?
I'm getting an error and this is my configuration:
class PlayerViewController: BaseViewController, UIGestureRecognizerDelegate {
var playerView: ShakaPlayerView?
var player: ShakaPlayer?
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)

    guard let shakaPlayer = try? ShakaPlayer() else {
        print("Error creating player")
        return
    }

    self.player = shakaPlayer
    self.player?.add(self)
    self.player?.client = self
    let shakaPlayerView = ShakaPlayerView(player: self.player)
    shakaPlayerView.frame = self.view.bounds
    self.playerView = shakaPlayerView
    self.containerPlayerView.addSubview(self.playerView!)

    self.configureAndLoadAssetWithAutoplay()

}

func configureAndLoadAssetWithAutoplay(startTime: Double = 0.0) {
    var urlMedia = getMediaUrl()
    var license = getLicense()

    self.player?.configure("drm.servers.com\\.widevine\\.alpha", with: license)

    self.player?.logLevel = ShakaPlayerLogLevel.V2
    self.player?.load(urlMedia,
                      withStartTime: startTime,
                      andBlock: { error in
                        if let error = error {
                            print("Error loading manifest: \(error.message)")
                        } else {
                            self.player?.currentTime = 0
                            self.player?.play()
                        }
                      })
}

}
extension PlayerViewController: ShakaPlayerClient {
func onPlayer(_ player: ShakaPlayer, bufferingChange is_buffering: Bool) {
if (is_buffering) {
self.loadingIndicator.isHidden = false
self.loadingIndicator.startAnimating()
} else {
self.loadingIndicator.isHidden = true
self.loadingIndicator.stopAnimating()
}
}
func onPlayer(_ player: ShakaPlayer, error: ShakaPlayerError) {
    self.displayAlertAndExit(title: "Shaka Player Error", message: error.message)
}

}
extension PlayerViewController: ShakaPlayerNetworkFilter {
func stringArrayToData(stringArray: [String]) -> Data? {
return try? JSONSerialization.data(withJSONObject: stringArray, options: [])
}
func onPlayer(_ player: ShakaPlayer,
networkRequest request: ShakaPlayerRequest,
of type: ShakaPlayerRequestType,
with block: @escaping ShakaPlayerAsyncBlock) {
if (type == ShakaPlayerRequestType.license) {
request.headers[Globals.PlayerKeys.KEY_ACCESS_TOKEN] = token
request.headers[Globals.PlayerKeys.KEY_DEVICE_ID] = xtvupdevice
request.headers[Globals.PlayerKeys.KEY_EVENT_ID] = eventId
// This cert.bin is the widevine from widevine
if let data: Data = getFile(forResource: "cert", withExtension: "bin") {
request.body = data
}
}
block(nil)
}
func onPlayer(_ player: ShakaPlayer,
networkResponse response: ShakaPlayerResponse,
of type: ShakaPlayerRequestType,
with block: @escaping ShakaPlayerAsyncBlock) {
block(nil)
}
}

What error are you seeing?  You can still follow the basic tutorial, since Widevine support doesn't require much work.  You just need to set license servers.  If you need a license filter, you can look at that tutorial.


Semaphore acquire deadlock & timeout handling fixed

Fix #1: Due to the limited size of the ForkJoinThreadpool used by the plugin, there is a high risk of deadlocks / low throughput if many or all threads are waiting to acquire a semaphore, and none or just a few threads are available to actually trigger the custom code or release semaphores again.
Fix #2: The timeout handling for acquireSemaphore with body is broken: The body gets executed after a timeout and the (not acquired) semaphore gets released.

Will this PR be merged?  I've encountered the problems described here and wondering the updated plugin will be available. Well, at least the code. :)

You can build the plug-in yourself from the source of this PR: https://github.com/rschuetz/concurrent-step-plugin

@rschuetz  - True, I can do that. Given how useful these commands can be, I'll probably do that. This approach was much better defined than the workarounds that I saw in the Jenkins forums.


fix: fix undefined "generator.filename" option

fixes #100

@RyanClementsHax Could you reopen and review this PR, please?
With https://github.com/nrwl/nx/pull/12276 and the fallbacks in this PR, the issue #100 should be solved👍

Hi there @RyanClementsHax ! Can you please take a look at this, and please reopen? Let me know if you need any help reviewing! It would really help with the Nx integration!

Thank you SO much @RyanClementsHax !!!! :D

No prob thanks for helping to test :)

The issue that this fixed is currently present in the @storybook/nextjs framework. I can make a PR to copy this change over to that as well.

I'd be happy to review any PRs :)


feat: include cms-adapter when adding @o3r/localization

@kpanot is doing a PR to remove the use of comment-json if you can get rid of it also where you add it


Fix issue #139: S3: Switch to official eSPI_TFT library

S3 support meanwhile part of bodmer/TFT_eSPI.
Remove temporary patched versiom which had
compile time warnings.

Thanks!


[TUBEMQ-511]Replace the conditional operator (?:) with mid()

At present, many places in the code implementation use conditional operators(? : ) for value checking, but it's not very readable, and the MixedUtils.mid() function is used instead

+1 pending on test result.

+1 pending on test result.

Codecov Report

Merging #396 (4075cdb) into master (9de68b6) will decrease coverage by 0.05%.
The diff coverage is 0.00%.

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

Codecov Report

Merging #396 (4075cdb) into master (9de68b6) will decrease coverage by 0.05%.
The diff coverage is 0.00%.

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


[occm] Switch DevStack to use OVN

What this PR does / why we need it:
/hold
This aims to update DevStack configs to deploy OVN instead of ML2/OVS. OVN is the Neutron default for several releases and I believe we should test against it. Also it will enable us to test the OVN Octavia Provider too which is not available when DevStack is configured with ML2/OVS.
Which issue this PR fixes(if applicable):
fixes #
Special notes for reviewers:
Release note:
OCCM is now tested against OpenStack Antelope configured with OVN.

This is totally a work in progress, I need to learn how the CI works.

/test openstack-cloud-controller-manager-e2e-test

@dulek nothing special , install devstack using customerized scripts then install k3s and run the test ..

/test openstack-cloud-controller-manager-e2e-test

Okay, this feels like it was too easy, but it does seem to work correctly.

/test openstack-cloud-controller-manager-e2e-test

/test openstack-cloud-controller-manager-e2e-test

/test openstack-cloud-controller-manager-e2e-test

/retest
I don't see why fatal: [<IP_ADDRESS>]: UNREACHABLE! could be fault of this patch.

/retest

/test openstack-cloud-controller-manager-e2e-test

@dulek Guessing there's a real problem here.

/test openstack-cloud-controller-manager-e2e-test
try again, and yes, we need check the failure if still fail

Let's see if ovn-octavia is the culprit of the timeouts.

Apparently it is… Okay, let's stir this a bit more then.

/test openstack-cloud-controller-manager-e2e-test

/test openstack-cloud-controller-manager-e2e-test

/test openstack-cloud-controller-manager-e2e-test

/test openstack-cloud-controller-manager-e2e-test

At least the error was new.
/test openstack-cloud-controller-manager-e2e-test

/test openstack-cloud-controller-manager-e2e-test
/hold cancel
Alright, this is ready now!

/test openstack-cloud-csi-manila-e2e-test
/test openstack-cloud-csi-cinder-e2e-test

@dulek do you mind squash the commits so we can merge this ? Thanks a lot for your effort in fix this ~

@dulek do you mind squash the commits so we can merge this ? Thanks a lot for your effort in fix this ~

The commits are divided logically, but sure, I can squash them.

/test openstack-cloud-keystone-authentication-authorization-test
/test openstack-cloud-csi-manila-sanity-test
/test openstack-cloud-csi-manila-e2e-test
/test openstack-cloud-csi-cinder-sanity-test
/test openstack-cloud-csi-cinder-e2e-test
/test openstack-cloud-controller-manager-e2e-test


Tighten up parameter_validation Enum checking

To validate enums, PV checked that a value was between BEGIN and END, OR that it was greater than 1,000,000,000.  Any value greater than this number would pass.  New version checks against a list of explicit values.

Great idea @mikes-lunarg, will add this in a future patch series.


Broken link README

The first Link of the README "Howto" is broken.

Fixed, thank you for the notice.


 The EnableEncodedStrings has no impact on Text run.
Type of change
Closing issues
To automatically close an issue: closes #IssueNumber

This is not Internal though, right? If it would benefit end users, so can we change the title?

This is not Internal though, right? If it would benefit end users, so can we change the title?

No user uses binary writer, so it's still internal.


[DEV] add ruff for linting and combine linters into one workflow

ruff replaces isort, flake8 and pylint and performance is like 100% very noticeable with pre-commit.

autofixing in precommit (unused import, etc.)
10x faster

this pr's should be merged before:
https://github.com/lnbits/lnbits/pull/1871
https://github.com/lnbits/lnbits/pull/1874

Codecov Report

Merging #1875 (9828934) into main (f096b51) will decrease coverage by 6.60%.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main    #1875      +/-   ##
==========================================
- Coverage   55.73%   49.14%   -6.60%
==========================================
  Files          48       48
  Lines        7328     7328
==========================================
- Hits         4084     3601     -483
- Misses       3244     3727     +483

Files Changed
Coverage Δ

lnbits/db.py
79.68% <ø> (+2.50%)
:arrow_up:

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

This file should also be removed: https://github.com/lnbits/lnbits/blob/ruff/flake.lock

Todo:
* remove file: https://github.com/lnbits/lnbits/blob/ruff/flake.lock

flake.lock is needed for nix packages

* remove comment: https://github.com/lnbits/lnbits/blob/ruff/lnbits/wallets/__init__.py#L3

done

* remove comment: https://github.com/lnbits/lnbits/blob/ruff/lnbits/app.py#L509

done

* `poetry.lock` still has some `isort`

i cannot do anything about that, some other library depends on that, maybe its ruff itself :)


doc: should use master tag for binfmt

the latest tag for binfmt was updated 2 years ago, users should use the master tag which is updated regularly.

the latest tag for binfmt was updated 2 years ago, users should use the master tag which is updated regularly.

cc @tonistiigi
Can we just have a new latest tag?

hi @AkihiroSuda, from https://github.com/tonistiigi/binfmt/issues/165#issuecomment-2030398232, it looks like the latest is not updated on purpose for historical reasons, what should we do for this one?
should we document it to use the master tag, or the versioned one? it may not be a good choice to use the legacy tag latest, WDYT?

Let's merge this, but we may revert this later


Test for the Bus dead lock

This PR adds a test for the deadlock found in the DispatchingQueue.add(..).
The test is at DispatchingQueueSynchronisationTest.deadlock().
The test is currently disabled, as the issue is not fixed. It is expected that the Inbox feature will address this dead lock.

@armiol, PTAL.


error during data featurize.py?

I had glove.840B.300d.txt unzip from glove.840B.300d.zip, is this right?
python3 featurize.py --datadir data --outdir featurized  --glove-path ../glove.840B.300d.txt
Using TensorFlow backend.
Constructing vocabularies...
Finished...
Building word embedding matrix...
Traceback (most recent call last):
File "featurize.py", line 317, in
preprocess()
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 722, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.6/site-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "featurize.py", line 273, in preprocess
vocab.construct_embedding_matrix(glove_path)
File "/Users/GloballyNormalizedReader/vocab.py", line 85, in construct_embedding_matrix
missing_word_value=lambda: 0.0)
File "/Users/GloballyNormalizedReader/vocab.py", line 219, in load_word_vectors
word2vec = FastWord2vec.get(path)
File "/Users/GloballyNormalizedReader/vocab.py", line 202, in get
WORD2VEC = FastWord2vec(path)
File "/Users/GloballyNormalizedReader/vocab.py", line 141, in init
binary=True)
File "/usr/local/lib/python3.6/site-packages/gensim/models/keyedvectors.py", line 207, in load_word2vec_format
vocab_size, vector_size = map(int, header.split())  # throws for invalid file format
ValueError: invalid literal for int() with base 10: ','

mldl@mldlUB1604:~/ub16_prj/GloballyNormalizedReader$ python3 featurize.py --datadir data --outdir featurized  --glove-path ../DrQA/glove.840B.300d.zip
Using TensorFlow backend.
Constructing vocabularies...
Finished...
Building word embedding matrix...
Traceback (most recent call last):
File "featurize.py", line 317, in
preprocess()
File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 722, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "featurize.py", line 273, in preprocess
vocab.construct_embedding_matrix(glove_path)
File "/home/mldl/ub16_prj/GloballyNormalizedReader/vocab.py", line 85, in construct_embedding_matrix
missing_word_value=lambda: 0.0)
File "/home/mldl/ub16_prj/GloballyNormalizedReader/vocab.py", line 219, in load_word_vectors
word2vec = FastWord2vec.get(path)
File "/home/mldl/ub16_prj/GloballyNormalizedReader/vocab.py", line 202, in get
WORD2VEC = FastWord2vec(path)
File "/home/mldl/ub16_prj/GloballyNormalizedReader/vocab.py", line 141, in init
binary=True)
File "/usr/local/lib/python3.5/dist-packages/gensim/models/keyedvectors.py", line 206, in load_word2vec_format
header = utils.to_unicode(fin.readline(), encoding=encoding)
File "/usr/local/lib/python3.5/dist-packages/gensim/utils.py", line 240, in any2unicode
return unicode(text, encoding, errors=errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 11: invalid start byte
mldl@mldlUB1604:~/ub16_prj/GloballyNormalizedReader$
mldl@mldlUB1604:~/ub16_prj/GloballyNormalizedReader$

@loveJasmine I think this might be because the embedding file from glove might still be zipped (I decompressed it a few months back, so I'd have to check this again to verify).
In the meantime my current sense is that this should work:
unzip ../DrQA/glove.840B.300d.zip
# creates unzipped ../DrQA/glove.840B.300d, which now is compatible with:
python3 featurize.py --datadir data --outdir featurized --glove-path ../DrQA/glove.840B.300d

Please let me know If it doesn't, I'd be happy to update the readme with steps to fix this! :)

        word2vec = gensim.models.KeyedVectors.load_word2vec_format(
            path,
            binary=True)   #so, this means it should be a bin file instead of *.txt

however, I change  binary=False with glove.840B.300d.txt, but it raise error yet, also report the file format issue

ali-186590cc37a5:DrQA $ md5 glove.840B.300d.zip
MD5 (glove.840B.300d.zip) = 2ffafcc9f9ae46fc8c95f32372976137
ali-186590cc37a5:DrQA $ md5 glove.840B.300d.txt
MD5 (glove.840B.300d.txt) = eec7d467bccfa914726b51aac484d43a
would you share you md5 value of  glove.840B.300d.zip and glove.840B.300d.txt

ali-186590cc37a5:GloballyNormalizedReader yike.ke$ md5 ../DrQA/glove.840B.300d.txt
MD5 (../DrQA/glove.840B.300d.txt) = eec7d467bccfa914726b51aac484d43a

it is a bug.
we shouldn't use load_word2vec_format to load a glove format file.
at least, we shoudd convert glove to word2vec format before load it by load_word2vec_format
please refer https://radimrehurek.com/gensim/scripts/glove2word2vec.html


Please invite me to the GitHub Community Organization

Name
Syeda Reeha Quasar
Discord Username (if applicable)
reeha#8819
Additional Context
We connected on a youTube live would love to be part of the community and contribute!

@syedareehaquasar did you accept the invitation?


HDDS-8979. error validating kustomization.yaml

What changes were proposed in this pull request?
Use kubectl apply -k instead of -f to get rid of error:
error: error validating "kustomization.yaml": error validating data: [apiVersion not set, kind not set]; if you choose to ignore these errors, turn validation off with --validate=false

(with --validate=false some other similar error is shown...)
https://github.com/apache/ozone/actions/runs/5463225307/jobs/9944167392#step:5:126
https://issues.apache.org/jira/browse/HDDS-8979
How was this patch tested?
Verified output no longer shows this error:
https://github.com/adoroszlai/hadoop-ozone/actions/runs/5465403252/jobs/9949414579#step:5:111

Thanks @GeorgeJahad for the review.


Tokens fly around too easily

As reported in a couple of places in the forums, including a youtube video.
This potentially means that the tokens will become somewhat challenging just to move around, as well as making it possible for them to get thrown out of the arena.

This would likely be fixed by some modified version of https://github.com/srobo/competition-simulator/pull/104

Token mass is currently set far too low at 1g - will implement a fix alongside #100, making it easier to adjust the values in the future.


Closures for expressions

Hi 👋
I tried to build a scriptable thing using Rhai. I want to restrict user input for expression only, so I used Engine::eval_expression. However, if the input has closures, it fails to parse.
I think it's because Rhai interprets closures as a declaring anonymous function, so it isn't regarded as an expression. Do I guess right? If it is, do you have plans to provide an option or a feature to allow closures in expressions?

When I tried following expression:
println!(
    "{:?}",
    engine.compile_expression("[1, 2, 3, 4].map(|x| x + 1)")
);

It prints Err(ParseError(BadInput(UnexpectedInput("|")), 1:18)). I think it's because of following code:
https://github.com/rhaiscript/rhai/blob/252567f84d138257c7896e6d17ad74146a08c8de/src/parser.rs#L3838-L3850
I think it disables the anonymous function feature. Isn't it?

Looks like it is so. I'll see if I can fix this

This is will fixed in the next major version.  Do you need it urgently or can you wait?

I can. Thank you!

This feature is now standard.


New Filter VOD and Series

Describe the bug
I changes my provider source from M#U to xtreme so I could take advantage of the new VOD and Series filters for non live TV content. The "live" and "vod" filters are working perfectly, but the "series" filter is returning nothing.
To Reproduce
Steps to reproduce the behavior:

Setup xtreme login to provider

  sources:

  - inputs:
     - type: xtream
       url: 'http://ccccc.com'
       headers:
         User-Agent: "Mozilla/5.0 (Linux; Tizen 2.3) AppleWebKit/538.1 (KHTML, like Gecko)Version/2.3 TV Safari/538.1"
         Accept: application/json
         Accept-Encoding: gzip
       username: user
       password: pass

Create Filter for VOD and Series:

- name: VOD
    value: (Type = vod)
  - name: TVTV
    value: (Type = series)

Create a TARGET for each filter:

targets:
        - name: TVVOD
          output:
            - type: m3u
              filename: tvvod.m3u
          filter: "!TVTV!"
          options: {ignore_logo: false}
          sort:
            groups:
              order: asc
        - name: MOVIES
          output:
            - type: m3u
              filename: nochannel.m3u
          filter: "!VOD!"
          options: {ignore_logo: false}
          sort:
            groups:
              order: asc

Create appropriate API for output:

user:
- target: MOVIES
  credentials:
  - username: movie
    password: movie1234
    proxy: reverse
    server: default
 - target: TVVOD
  credentials:
  - username: tv
    password: tv1234
    proxy: reverse
    server: default

Expected behavior
When I connect to pull m3u of for movies to see a list of VODs offered by my provider, which I do
When I connect to pull m3u for TVVOD, I get an empty list as no matches are made:
#EXTM3U
Debug Log is showing match found for series:
[2024-09-20T18:24:56Z DEBUG m3u_filter::filter] Match found: Type series-info
[2024-09-20T18:24:56Z DEBUG m3u_filter::filter] Match found: Type series-info
[2024-09-20T18:24:56Z DEBUG m3u_filter::filter] Match found: Type series-info
[2024-09-20T18:24:56Z DEBUG m3u_filter::filter] Match found: Type series-info
[2024-09-20T18:24:56Z DEBUG m3u_filter::filter] Match found: Type series-info
[2024-09-20T18:24:56Z DEBUG m3u_filter::filter] Match found: Type series-info
[2024-09-20T18:24:56Z DEBUG m3u_filter::filter] Match found: Type series-info

@iceman73 this is not a bug. If you have xtreeam source and m3u target, the series can only be resolved when you set the required option.
In XtreamCodes api  you get only the series information but not the episodes. You need to query each  series which results in a lot of queries. It could be that your provider blocls you because of flooding.
Thats why i dont recommend xtream_resolve_series option.
If you use xtream input and xtream target then it should work.

Ok I can easily change to xtreme out, I didnt catch this when I saw the updates, I just need live to be in m3u format for threadfin

In the README.md
m3u output has additional options Because xtream api delivers only the metadata to series, we need to fetch the series and resolve them. But be aware, each series info entry needs to be fetched one by one.
search for xtream_resolve_series in the README.md.

I now see it. I changes to output xtream, and like it even better for movies, so movies and series are working the way I want now and my live is a filtered m3u.
TY sorry for the confusion


Incorrect kerning

I've been playing around with Ebiten along with some of my own projects that also use the excellent x/image/font/opentype package, and I've noticed that the value returned by the face.Kern method is always a fixed amount, no matter the size of the font.
In other words, whether you set the font size as, say, 12pt or 72pt, the kern value returned never changes.
I believe that Ebiten is currently treating the value returned from face.Kern as a final number of pixels to adjust the fx position by here: https://github.com/hajimehoshi/ebiten/blob/main/text/text.go#L194
Unfortunately this means that the fx isn't adjusted enough when the font is large, and too much when the font is really small.
Because of this the kern value actually needs to be scaled up or down.
Since documentation on the method itself is a bit thin I've done some experiments myself and I've come to the conclusion that you can scale the kern value by a value derived using this formula:
kernScale := fixed.Int26_6(facePtSize * (faceDPI / fontUnitsPerEm) * 64.0)
fx += face.Kern(prevR, r).Mul(kernScale)

I'm not sure if this is 100% accurate, but it's worked well in various font tests I've done myself so far, and seems to result in much more accurate kerning than is currently happening.
It's still off by a pixel or two still when I compare against word processors etc., but that could be because of floating point inaccuracies, font hinting, etc.
The reason for bringing the font's units per em into this is because they typically vary between 1000 and 2048, so they're needed to get the correct scaling factor.
The fontUnitsPerEm value can be found using this method<EMAIL_ADDRESS>Of course, fixing this would mean that you need to cache the units/em value for each font and the point size of each font to pass in to do the calculation, but I think it would be worth doing if it results in more accurate font rendering.

Thank you for reporting!
Hm, that seems pretty odd since the package golang.org/x/image/font itself uses Kern values without scaling:
https://cs.opensource.google/go/x/image/+/775e3b0c:font/font.go;l=228;drc=3f4726a040e860b3702c9dab9e3b94cad413328f
This might be an issue in golang.org/x/image/font/opentype rather than Ebiten. What do you think?

This might be an issue in golang.org/x/image/font/opentype rather than Ebiten. What do you think?

Actually, as soon as I posted this issue I thought the same thing!
The API in the opentype package certainly seems like it's supposed to return the actual number of pixels, especially since that's what the other methods do (GlyphBounds etc.)
I'll try to post an issue about this for opentype a bit later and reference this issue in there as well.
If it can be fixed in opentype that would be much nicer.

Yeah, thanks! Let me close this issue.


Can the same be done for WebP?

Could webp-js exist?

It is possible to split animated WebP to static WebP frames. The WebP file format is pretty simple, you can see the https://github.com/davidmz/apng2webp/, it builds animated WebP from static frames. But to show these frames on canvas, browser must have WebP support (which implies native animated WebP support too).

Wow, cool!
I'll try this ASAP..

@voland62
Hi, did you try it??
I need to split Webp images ;((


SAQ Integration

Problem Statement
We recently migrated to use SAQ https://github.com/tobymao/saq as our asyncio task runner. It's been working great, but we don't have adequate visibility in Sentry.
Solution Brainstorm
An integration for SAQ built into Sentry-Python.
If wanted I could try and build a basic Sentry integration for SAQ and post it as a PR.

If wanted I could try and build a basic Sentry integration for SAQ and post it as a PR.

@grigi Yes, we are always open to PRs if you would like to try!
I will put this issue on our internal backlog, but since our team is quite busy at the moment with some larger projects, it would probably take us some time to create this integration. If you would like to open a PR, that would probably greatly speed up the process 🙂

Thanks @szokeasaurusrex
I wrote a quick integration for SAQ (based on the ARQ one) that suits our needs.
It's relatively simple, and it works with some local dev testing. Tried to keep the style the same as what was there.
Other than this (and defining the consts correctly) what else would be needed for a PR? I have no idea what level of testing would be needed for this to be accepted upstream. Apologies for the lazy dump here.
Things to note, SAQ only accepts keyword argument for functions, and all arguments/responses must be JSON serialisable. So I'm not handling *args as that's not supported. This might be bad practice, so no objections to having to put those back. I just removed anything that I wasn't using directly.

SaqIntegration
from __future__ import absolute_import

import sys

from sentry_sdk import Hub
from sentry_sdk._compat import reraise
from sentry_sdk._types import TYPE_CHECKING
from sentry_sdk.consts import OP
from sentry_sdk.hub import _should_send_default_pii
from sentry_sdk.integrations import DidNotEnable, Integration
from sentry_sdk.integrations.logging import ignore_logger
from sentry_sdk.utils import SENSITIVE_DATA_SUBSTITUTE, capture_internal_exceptions, event_from_exception, parse_version

try:
    from saq import __version__ as SAQ_VERSION
    from saq.queue import JobError, Queue
    from saq.worker import Worker
except ImportError:
    raise DidNotEnable("SAQ is not installed")

if TYPE_CHECKING:
    from typing import Any, Callable, Coroutine, Dict, Optional, Union

    from saq.job import Job
    from sentry_sdk._types import Event, EventProcessor, ExcInfo, Hint

OP.QUEUE_SUBMIT_SAQ = "queue.submit.saq"
OP.QUEUE_TASK_SAQ = "queue.task.saq"

class SaqIntegration(Integration):
    identifier = "saq"

    @staticmethod
    def setup_once():
        # type: () -> None

        try:
            version = parse_version(SAQ_VERSION)

        except (TypeError, ValueError):
            pass

        if version is None:
            raise DidNotEnable("Unparsable SAQ version: {}".format(SAQ_VERSION))

        if version < (0, 12):
            raise DidNotEnable("SAQ 0.12 or newer required.")

        patch_queue_enqueue()
        patch_worker_start()

        ignore_logger("saq")

def patch_queue_enqueue():
    # type: () -> None
    old_queue_enqueue = Queue.enqueue

    async def _sentry_queue_enqueue(self, job_or_func, **kwargs):
        # type: (Queue, Union[str, Job], **Any) -> Optional[Job]
        hub = Hub.current

        if hub.get_integration(SaqIntegration) is None:
            return await old_queue_enqueue(self, job_or_func, **kwargs)

        description = job_or_func if isinstance(job_or_func, str) else job_or_func.function
        with hub.start_span(op=OP.QUEUE_SUBMIT_SAQ, description=description):
            return await old_queue_enqueue(self, job_or_func, **kwargs)

    Queue.enqueue = _sentry_queue_enqueue

def _capture_exception(exc_info):
    # type: (ExcInfo) -> None
    hub = Hub.current

    if hub.scope.transaction is not None:
        if exc_info[0] == JobError:
            hub.scope.transaction.set_status("aborted")
            return

        hub.scope.transaction.set_status("internal_error")

    event, hint = event_from_exception(
        exc_info,
        client_options=hub.client.options if hub.client else None,
        mechanism={"type": SaqIntegration.identifier, "handled": False},
    )
    hub.capture_event(event, hint=hint)

def _make_event_processor(ctx, **kwargs):
    # type: (Dict[Any, Any], **Any) -> EventProcessor
    def event_processor(event, hint):
        # type: (Event, Hint) -> Optional[Event]

        hub = Hub.current

        with capture_internal_exceptions():
            job = ctx["job"]  # type: Job

            if hub.scope.transaction is not None:
                hub.scope.transaction.name = job.function
                event["transaction"] = job.function

            job.next_retry_delay()

            tags = event.setdefault("tags", {})
            tags["saq_task_id"] = job.id
            tags["saq_task_retry"] = job.retries > 1
            extra = event.setdefault("extra", {})
            extra["saq-job"] = {
                "task": job.function,
                "kwargs": (
                    kwargs if _should_send_default_pii() else SENSITIVE_DATA_SUBSTITUTE
                ),
                "attempts": job.attempts,
                "retries": job.retries,
                "queue": job.queue.name if job.queue else "default"
            }

        return event

    return event_processor

def _wrap_function(coroutine):
    # type: (Callable) -> Any
    async def _sentry_coroutine(ctx, **kwargs):
        # type: (Dict[Any, Any], **Any) -> Any
        hub = Hub.current
        if hub.get_integration(SaqIntegration) is None:
            return await coroutine(ctx, **kwargs)

        hub.scope.add_event_processor(
            _make_event_processor(ctx, **kwargs)
        )

        try:
            result = await coroutine(ctx, **kwargs)
        except Exception:
            exc_info = sys.exc_info()
            _capture_exception(exc_info)
            reraise(*exc_info)

        return result

    return _sentry_coroutine

def patch_worker_start():
    # type: () -> None
    old_worker_start = Worker.start

    def _sentry_worker_start(self):
        # type: (Worker) -> Coroutine
        hub = Hub.current

        if hub.get_integration(SaqIntegration) is None:
            return old_worker_start(self)

        self.functions = {
            name: _wrap_function(func) for name, func in self.functions.items()
        }

        return old_worker_start(self)

    Worker.start = _sentry_worker_start

@grigi Can you please consider opening a PR with the code in your comment, above? We can only add this code to the SDK if it is contributed via a pull request.


Blazor Hybrid .NET 8 Support

Can you please make the BlazorHybrid sample work with .NET 8 AOT?

I created a winforms project with blazor webview support following https://learn.microsoft.com/en-us/aspnet/core/blazor/hybrid/tutorials/windows-forms?view=aspnetcore-8.0, I believe it's very similar to the BlazorHybrid sample.
My project runs OK in debug/release build, but after publish (with AOT), it crashes:

System.NotSupportedException: COM Interop requires ComWrapper instance registered for marshalling.
at System.Runtime.InteropServices.ComWrappers.ComInterfaceForObject(Object) + 0x73
at System.Runtime.InteropServices.ComWrappers.ComInterfaceForObject(Object, Guid) + 0x20
at Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateCoreWebView2EnvironmentWithOptions(String, String, ICoreWebView2EnvironmentOptions, ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler) + 0xb3
at Microsoft.Web.WebView2.Core.CoreWebView2Environment.d__4.MoveNext() + 0xac

I really want webview2 in winforms can be AOT compiled.
I don't quite understand how this repo works, but I want to help if I can. I'm reading https://learn.microsoft.com/en-us/dotnet/standard/native-interop/comwrappers-source-generation, will it be helpful?
BTW, I check the source code, BlazorHybrid is disabled only for .net 8, does it mean it works in .net 7? (blazor webview only works from .net 8 https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.components.webview.windowsforms.blazorwebview?view=net-maui-8.0#applies-to)


Recommended pattern for bundling a plugin into an Operator

Is there a recommended pattern to bundle a dynamic console plugin into a Go-based operator?

We don't have an example for this today, although it's something we should look at adding since operators are a common way to deliver plugins.
If your operator already creates a service on the cluster, it's possible to use http.FileServer to serve the static plugin assets. Otherwise, you could add a sidecar container using any HTTP server like nginx or caddy. If your operator adds an console.openshift.io/plugins annotation to its CSV, console will prompt to enable the plugin on operator install. There's an example of the annotation in the enhancement here: https://github.com/openshift/enhancements/blob/master/enhancements/console/dynamic-plugins.md#delivering-plugins
Hope this helps.
cc @jhadvig @alimobrem

Thanks @spadgett, this helps! I'm close but not 100% there yet. If I can get it working I will gladly contribute an example using an Operator. 😃
I went the Nginx route and have generated a container image for my console plugin. In my operator's ./config/manifests/bases/ directory I've included a Deployment (using the nginx image), Service, and ConsolePlugin. When I run make bundle, only the Deployment and Service are generated under ./bundle/manifests.
If I deploy the bundle (without ConsolePlugin), manually add the ConsolePlugin, and enable it, everything works great! I need to figure out why make bundle isn't including that manifest... This could be simply my lack of knowledge around the Operator SDK.
Another question I have is around namespaces. At the moment I have hardcoded the namespace in my ConsolePlugin. If someone installs the operator into a different namespace, the ConsolePlugin won't match. Is there a way around that?
# Example spec from my ConsolePlugin
spec:
  service:
    name: cat-facts-console-plugin
    namespace: cat-facts-operator

@RyanMillerC Oh nice! Yes, this was definitely needed. I think we can link out to your personal GitHub repo for now and then update the link if we can move it somewhere better, maybe the openshift org?
As an aside, we've discussed creating a hello world operator for OpenShift console CI tests... We might consider using this instead, and it would let us test enabling plugins during operator install flows. @jhadvig @jcaianirh FYI
@alimobrem FYI

I was told redhat-cop is not a good place for example code. I'm open to moving the repo wherever makes the most sense. It would be awesome if I could still be a repo owner in the new location. I'm working on implementing a console plugin for the patterns operator. There's some things I'm doing there that I would like to copy over to cat facts when I have time.
In the meantime I will open a PR to add links for both my example and the service mesh plugin.
I haven't talked to the OLM team but I'm open to talking with them. Do you have a point of contact on their team?
Thanks! 😃


[resource manager] GET Connection attributes /v1/storages/conn-params

For registering a storge device , some storage platofrms may need extra attributes in connection parameters other than common parameters .
This API is to get the customized list from driver ..

/move sim


Remove incorrect ANSI escape code for LF

ANSI technically doesn't have an escape code for LF, since it just uses the 0x0A character. The regex \xA is incorrect (it should be \x0A) and is being treated as the two-character sequence "xA". But then once we've fixed that, replacing 0x0A with \n in removeAnsiEscapeCodes is a no-op. Better to just remove the str.replace(LF, '\n') call.
Fixes #12608.

Hi @rmunn, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, MSBOT;

Awesome - thanks!


consume support for scheduler plugin informerMode from upstream

Previously, the NUMA-aware scheduler plugin had d/s-specific code to enable the separate informer, which was in turn needed to get the full pod list vs the filtered pod list the scheduler framework provides. Thus, we had d/s specific enablement in the operator. Since commit 93c518b the upstream added support for the separate informer, consumed by the KNI scheduler since commit 780ea84. Remove the d/s specific enablement and set the proper configuration value.
We expect no changes from UX perspective. This is an internal change only.

/retest

/retest

@rbaturov retest won't help here
You haver some linter issues:
pkg/objectupdate/sched/sched.go:73: unnecessary trailing newline (whitespace)

This PR introduces changes required to fix the numaresources operator to consume the upstreamed separate informer support. Now, the informerMode field is passed through the topology-aware scheduler config map as expected from the scheduler to consume. The previous implementation of passing the informerMode field through the environment variable is removed.

This text is good, but still heavily skewed about the "who". IOW, it is summarizing the changes in plain english. This is not the content we should aim for. We should aim for text which describes the "why", giving context when needed to understand "why", why now? why is important? why is better than before (for a given definition of "better")?
We will (or we should...) go back and read git log and/or PR description to learn the motive and remember the context, not to get a quick grasp of the changes.
So what about something like
"Previously, the NUMA-aware scheduler plugin had d/s-specific code to enable the separate informer, which was in turn needed to get the full pod list vs the filtered pod list the scheduler framework provides. Thus, we had d/s specific enablement in the operator. Since commit XXX (TODO: figure it out) the upstream added support for the separate informer, consumed by the KNI scheduler since commit YYY (TODO: figure out). Remove the d/s specific enablement and set the proper configuration value.
We expect no changes from UX perspective. This is an internal change only."

Thanks for the PR! I left a few comments to improve over this good start. I'll wait for further review from both @Tal-or and @shajmakh !

no point in further retests until the quick and basic lanes (e.g. CI Linter) are happy

/retitle consume support for scheduler plugin informerMode from upstream

bad rebase it seems?

needs to be backported down to 4.14

Please add the CNF ticket in the PR header in order to sync it with Jira

Please add the CNF ticket in the PR header in order to sync it with Jira

I removed it. I'm unconvinced we should have this synchronization.

Please add the CNF ticket in the PR header in order to sync it with Jira

I removed it. I'm unconvinced we should have this synchronization.

This is mostly for stakeholders which are monitoring mainly with Jira so they'll have an easy way to associate the ticket with the PR

Please add the CNF ticket in the PR header in order to sync it with Jira

I removed it. I'm unconvinced we should have this synchronization.

This is mostly for stakeholders which are monitoring mainly with Jira so they'll have an easy way to associate the ticket with the PR

The question is if this project accepts these kinds of tags pointing to trackers external to the project.

/approve
we need to do this work to catch up with scheduler-plugins code upstream

let's start the backports once this code merges

/cherry-pick release-4.15

sweet


Installation issue

2017-08-27T20_45_26_005Z-debug.docx

How can this bug be reproduced?

Step one- Followed instructions on https://foundationpress.olefredrik.com/posts/tutorials/foundationpress-for-beginners
Step two - got to npm install
Step three got these errors
C:\Users\amyld>cd C:\vhosts\storks\FoundationPress-master

C:\vhosts\storks\FoundationPress-master>npm install
npm WARN deprecated<EMAIL_ADDRESS>express 2.x series is deprecated
npm WARN deprecated<EMAIL_ADDRESS>connect 1.x series is deprecated

<EMAIL_ADDRESS>install C:\vhosts\storks\FoundationPress-master\node_modules\node-sass
node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-57_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-57_binding.node":
HTTP error 404 Not Found
Hint: If github.com is not accessible in your location
try setting a proxy via HTTP_PROXY, e.g.
  export HTTP_PROXY=http://example.com:1234

or configure npm proxy via
  npm config set proxy http://example.com:8080

<EMAIL_ADDRESS>postinstall C:\vhosts\storks\FoundationPress-master\node_modules\node-sass
node scripts/build.js

Building: C:\Program Files\nodejs\node.exe C:\vhosts\storks\FoundationPress-master\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [ 'C:\Program Files\nodejs\node.exe',
gyp verb cli   'C:\vhosts\storks\FoundationPress-master\node_modules\node-gyp\bin\node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library=' ]
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| win32 | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "python2" in the PATH
gyp verb which failed Error: not found: python2
gyp verb which failed     at getNotFoundError (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:13:12)
gyp verb which failed     at F (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:68:19)
gyp verb which failed     at E (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:80:29)
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:89:16
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\index.js:42:5
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\windows.js:36:5
gyp verb which failed     at FSReqWrap.oncomplete (fs.js:152:21)
gyp verb which failed  python2 { Error: not found: python2
gyp verb which failed     at getNotFoundError (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:13:12)
gyp verb which failed     at F (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:68:19)
gyp verb which failed     at E (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:80:29)
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:89:16
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\index.js:42:5
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\windows.js:36:5
gyp verb which failed     at FSReqWrap.oncomplete (fs.js:152:21)
gyp verb which failed   stack: 'Error: not found: python2\n    at getNotFoundError (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:13:12)\n    at F (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:68:19)\n    at E (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:80:29)\n    at C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:89:16\n    at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\index.js:42:5\n    at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\windows.js:36:5\n    at FSReqWrap.oncomplete (fs.js:152:21)',
gyp verb which failed   code: 'ENOENT' }
gyp verb check python checking for Python executable "python" in the PATH
gyp verb which failed Error: not found: python
gyp verb which failed     at getNotFoundError (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:13:12)
gyp verb which failed     at F (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:68:19)
gyp verb which failed     at E (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:80:29)
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:89:16
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\index.js:42:5
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\windows.js:36:5
gyp verb which failed     at FSReqWrap.oncomplete (fs.js:152:21)
gyp verb which failed  python { Error: not found: python
gyp verb which failed     at getNotFoundError (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:13:12)
gyp verb which failed     at F (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:68:19)
gyp verb which failed     at E (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:80:29)
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:89:16
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\index.js:42:5
gyp verb which failed     at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\windows.js:36:5
gyp verb which failed     at FSReqWrap.oncomplete (fs.js:152:21)
gyp verb which failed   stack: 'Error: not found: python\n    at getNotFoundError (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:13:12)\n    at F (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:68:19)\n    at E (C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:80:29)\n    at C:\vhosts\storks\FoundationPress-master\node_modules\which\which.js:89:16\n    at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\index.js:42:5\n    at C:\vhosts\storks\FoundationPress-master\node_modules\isexe\windows.js:36:5\n    at FSReqWrap.oncomplete (fs.js:152:21)',
gyp verb which failed   code: 'ENOENT' }
gyp verb could not find "python". checking python launcher
gyp verb could not find "python". guessing location
gyp verb ensuring that file exists: C:\Python27\python.exe
gyp ERR! configure error
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
gyp ERR! stack     at PythonFinder.failNoPython (C:\vhosts\storks\FoundationPress-master\node_modules\node-gyp\lib\configure.js:483:19)
gyp ERR! stack     at PythonFinder. (C:\vhosts\storks\FoundationPress-master\node_modules\node-gyp\lib\configure.js:508:16)
gyp ERR! stack     at C:\vhosts\storks\FoundationPress-master\node_modules\graceful-fs\polyfills.js:284:29
gyp ERR! stack     at FSReqWrap.oncomplete (fs.js:152:21)
gyp ERR! System Windows_NT 10.0.15063
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\vhosts\storks\FoundationPress-master\node_modules\node-gyp\bin\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd C:\vhosts\storks\FoundationPress-master\node_modules\node-sass
gyp ERR! node -v v8.4.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
Build failed with error code: 1
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>postinstall: node scripts/build.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!      C:\Users\amyld\AppData\Roaming\npm-cache_logs\2017-08-27T20_45_26_005Z-debug.log
C:\vhosts\storks\FoundationPress-master>
What did you expect to happen?
foundation press to install
What happened instead?
got above errors
Please List the Following:

OS & version:  Windows 10 home no version number listed
Node version (node -v) [Node v4+ is required] : 8.4.0
FoundationPress version (see line 3 in package.json):2.10.2
Foundation version (see dependencies in package.json) :6.4.1

Include Test Case (if applicable):
Give us a link to a CodePen or JSFiddle that recreates the issue.

CodePen with Foundation 6 and MotionUI
CodePen with Foundation 6, Flexbox grid and MotionUI

This project requires Node.js v4.x.x to v6.11.x to be installed on your machine. Please be aware that you might encounter problems with the installation if you are using the most current Node version (bleeding edge) with all the latest features.

See: https://github.com/olefredrik/FoundationPress#requirements


Upgrade to PB 0.9.2 and Adhearsion develop throws method_missing on connection

callisto:ahn_liquid_call jsgoecke$ bundle exec ahn -
Starting Adhearsion server at /Users/jsgoecke/Dropbox/Development/ahn_liquid_call
[2012-02-18 08:25:07] WARN  Adhearsion::LinuxProcName: Error while attaching libc function prctl: Function 'prctl' not found in [libc.dylib]
[2012-02-18 08:25:07] INFO  Adhearsion::Initializer: Defining RAILS_ENV variable to <development>
/Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/foundation/object.rb:19:in `method_missing': undefined local variable or method `connection' for nil:NilClass (NameError)
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-xmpp-55855f2cb428/lib/adhearsion/xmpp/plugin.rb:17:in `block in <class:Plugin>'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/plugin/initializer.rb:24:in `instance_exec'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/plugin/initializer.rb:24:in `run'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/plugin.rb:164:in `block in init_plugins'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/plugin.rb:163:in `each'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/plugin.rb:163:in `init_plugins'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/initializer.rb:181:in `init_plugins'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/initializer.rb:50:in `start'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/initializer.rb:9:in `start'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/cli_commands.rb:113:in `start_app'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bundler/gems/adhearsion-68af0f23ddd2/lib/adhearsion/cli_commands.rb:55:in `start'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/thor-0.14.6/lib/thor/task.rb:22:in `run'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/thor-0.14.6/lib/thor/base.rb:389:in `start'
	from script/ahn:9:in `<main>'

I have to run with 'bundle exec ahn -' as when I try 'ahn -', I get:

ahn -
/Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/bundler-1.0.21/lib/bundler/runtime.rb:31:in `block in setup': You have already activated punchblock 0.9.1, but your Gemfile requires punchblock 0.9.2. Using bundle exec may solve this. (Gem::LoadError)
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/bundler-1.0.21/lib/bundler/runtime.rb:17:in `setup'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/bundler-1.0.21/lib/bundler.rb:110:in `setup'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/bundler-1.0.21/lib/bundler/setup.rb:7:in `<top (required)>'
	from /Users/jsgoecke/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
	from /Users/jsgoecke/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/gems/adhearsion-2.0.0.alpha2/bin/ahn:25:in `<top (required)>'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bin/ahn:19:in `load'
	from /Users/jsgoecke/.rvm/gems/ruby-1.9.3-p0/bin/ahn:19:in `<main>'

Turns out to be related to the adhearsion-xmpp gem and the need to run on the develop branch after a merge.


CdsElements memory leak issue

Describe the bug
In our project, we are using lot of cds-elements. Recently I was doing a memory profile and found that we have lot of detached HTML Elements and most of those are clarity core alert/button/icon elements.
I am not sure why these elements are still in memory even after they are removed in DOM.
How to reproduce
Sample repo: https://github.com/aravindh-nagarajan/angular-clarity-core-sample-project
Steps to reproduce the behavior:

Clone the above github repo
ng serve --open
Stay on the first page, you can see a alert element and button element:

Click on the second tab, cds elements are not present in dom, record memory snapshot:
(memory snapshot shows the existence of detached cds elements)

Click on the third tab, cds elements are not present in dom, record memory snapshot:
(memory snapshot shows the existence of detached cds elements)

Expected behavior
Expect not to see these elements in memory after they are removed from DOM.
Versions
Clarity project: Clarity Core
Clarity version: v6.x
Framework: - Angular
Framework version: Angular 13
Device:

Type: Macbook
OS: iOS
Browser Chrome

This may be related to this issue: https://github.com/vmware-clarity/core/issues/61
I might have a fix for icons, and then I'll check the other elements as well.


How do I "unwatch" or npm stop?

First of all, thanks for you work!
I'm trying to use watch cli as part of my npm scripts, like so:
"scripts": {
    "start": "node index",
    "js:watch": "watch 'npm start' lib/"
}

But then everytime a file changes, it gives the EADDRINUSE, as the server (node index) is already started... How can I accomplish this? What should I put in npm stop script or what should I pass to watch?
Thank you!

Typically the watch is used to trigger a step in the build process, not for controlling your node app.
So if you are using this to restart your server, you may wanna utilize [npm restart](https://docs.npmjs.com/cli/restart).
But there are other tools that may be better suited to control your app at this level, so you do not have to manage the process. One example is nodemon.
TBH, I have only used watch CLI for watching say my Sass or Less folders and rebuilding my assets. Not so much Sass anymore as it's watch arg has improved...But still use it for Less.

Granted this is for a build system, but this is one of the use case I use watch for: simply-evil-js package.json

Is it possible to stop, though?  That's the question; it's a legitimate need to be able to stop the current watch.


ParametricSoftPlus removed in Keras 2.0?

Was ParametricSoftPlus removed as an advanced activation in Keras2.0 or renamed?  I'm upgrading my NN to Keras2 and no longer have access to that activation function?
Here's the commit where it was removed?  https://github.com/fchollet/keras/commit/b118cef26fae748d5ec23c33b29e9989a7abbe17#diff-4ea1eab272323ecb1f250db1b8d83443
@fchollet Any recommendations on a replacement? Also, curious on why it was removed?

Thanks @the-moliver.   Will take a look. Appreciate the help.  I'm still curious why this activation function was removed from core keras.