WIP: feature: download all logs for listed workflows

Checklist:

[x] Either (a) I've created an enhancement proposal and discussed it with the community, (b) this is a bug fix, or (c) this is a chore.
[x] The title of the PR is (a) conventional, (b) states what changed, and (c) suffixes the related issues number. E.g. "fix(controller): Updates such and such. Fixes #1234".
[ ] I have written unit and/or e2e tests for my change. PRs without these are unlike to be merged.
[x] Optional. I've added My organization is added to the USERS.md.
[x] I've signed the CLA and required builds are green.

This is just a proof of concept.

I dropped the "download all logs" button below the filters. There's almost certainly a better place.

I structured the log archive as workflow name -> node id.
This is meant to solve half of https://github.com/argoproj/argo/issues/2258 - downloading all logs in a given time range. It could theoretically solve the other half (download all logs for a given workflow template) if we just labeled our workflows according to their workflow template.
Right now I'd just like feedback on 1) is this a useful feature and if so 2) how should it be implemented?
Assuming the answer is "yes, this is a useful feature," here are my questions about implementation:

Should there be a new /logs/ endpoint, or should it be incorporated in an existing endpoint?
Should the endpoint ask for an arbitrary list of workflows, or should it accept other filters (time range, label) and calculate matching workflows server-side?
Should there be a way to invoke the endpoint from the CLI as well as the GUI?
Where should the download button(s) go?
What should the button(s) look like?
Should the button(s) disappear when there are no matching workflows, or should they just be disabled?
Is it okay that a new client is spun up to download every single artifact, or should we try to reuse clients (for performance)?
Is my recursive log-artifact-discovery process alright, or is there some better approach?
Should log files be named after the node ID or the step name? Would possible step names be compatible with all target OS filesystems?

Wow super excited for this! Great feature

@simster7 thanks! Is there anyone I should @ to glance over the implementation questions?
If y'all have no preferences, I'll happily go with my gut and see how it goes.  :-)

@mac9416 this looks good, accessing logs is one of the key use cases for the UI (you'd never imagine this would you). We currently have three ways to do this:

The "Logs" button for each node.
The artifacts tab.
Creating a link to Splunk (or other facility) in the menu bar using config/links.

Do you think any of those could meet your use case?

Ok. Having thought about this a bit now I think you/we can 10x this.
My feelings is that people like to work with the whole workflow.

For live logs, we can produce a new panel that shows all the logs in a way similar to argo log my-wf --follow. Useful for monitoring a running wf, but not scope of this PR. This will not work complete wfs where pods have been deleted.
For completed workflows we should have a new panel that allows you to download artifacts for the workflow. It could list the artifacts, provide you with check boxes to choose which ones you want, and a option to select all by name or type (e.g. name=main-log) and that gives you a tar.

Thoughts?

The "logs" button for each node and the artifacts tab do not satisfy our use case, because we want to collect logs from many workflows over a time range. The menu bar link would help us expose our own solution, but we'd love to contribute the feature upstream/natively if it would be useful to others.
They key feature we need is downloading all logs within a certain time range. Our workflows are short (in steps), but we run a lot of them. So bundling a set of artifacts for one workflow won't satisfy this use case.
The second most important feature is downloading logs within a certain time range, filtered by WorkflowTemplate. We could accomplish this by filtering on labels.
I love your idea of a panel for selecting/bundling artifacts for a single workflow. And I think the server-side code for that feature could be reused to trivially implement a "download all logs within X time range" button.
tl;dr I'd love to implement a bundle-artifacts-within-workflow feature. The critical accompanying piece for us would be a bundle-log-artifacts-across-workflows feature. Does this seem like a feature you'd like to see?

I think you use case could potentially implemented as a new "artifacts services" that allows you to list and search for artifacts and a CLI commands and UI page on top of it.

So "artifacts services" would consist of two endpoints:

/list-artifacts/ accepts startedBy, startedBefore, workflowNames, artifactNames, and labels filters and returns JSON of artifact info
/bundle-artifacts accepts a JSON array of objects describing the artifacts to get (workflowName, nodeId, and artifactName

Then there would be CLI and UI tools to access those features.
Is that in line with what you're thinking?

broadly yes - I think we'd need to create a new .proto file for this so it is exposed over GRPC. It could probably replace the hand coded artifact-service. So the operation would probably be...
// GetArtifact
// GetArtifactByUUID
// ListArtifacts
// GetArtifacts

That sounds pretty sweet. I learned golang last week, so proto files are next.  :wink: I'll poke around and see what I can build.

Challenge with GRPC - not suited to downloading files. Maybe better to have standard endpoints. Maybe just ListArtifacts should be GRPC?

Gotcha. Yeah that makes sense to me.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.:white_check_mark: mac9416:x: Michael CrenshawMichael Crenshaw seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

@mac9416 how goes your investigation please?

@alexec I've got a new artifacts grpc service set up and a new artifacts tab in the UI. Only thing I need for an mvp is a working button. I'll try to push it this afternoon.
It's gonna be rough around the edges, but hopefully moving in the right direction.

@mac9416 how's this going?

@alexec ran into (what looks like) the Swagger version mismatch build error and haven't had time to pick it back up. I'll take another swing at it today and probably bug you some more in Slack.  :-P

I'm tidying up old PRs - do you still want to pursue?

@alexec not in the near future. Just ran out of the ability to justify the time. Hopefully I'll get to circle back to it sometime!


bogus or missing JSC_USED_GLOBAL_THIS warning with ADVANCED_OPTIMIZATIONS

This issue was imported from Closure Compiler's previous home at http://closure-compiler.googlecode.com
The original discussion is archived at:
http://blickly.github.io/closure-compiler-issues/#909

Repro:
// warning
document.body.onclick = function() {
    this.removeAttribute('style');
};

// no warning
document.body.onclick = function() {
    (function(a) {
        a.removeAttribute('style');
    })(this);
};

Honestly this specific case just means we need to improve the extern type information. The type of this should be inferred by both OTI and NTI.
https://github.com/google/closure-compiler/blob/master/externs/browser/w3c_dom1.js#L671-L707

The global-this warning warns only on property accesses, that's why it doesn't warn for the second case. And for the first case, I think it warns because the assignment isn't a general method declaration (on a prototype property) but rather a one-off assignment to an object, and I'm guessing the pattern isn't recognized.


Result model: Loudly deprecate not needed attributes and remove already deprecated ones

The result model (robot.result.TestSuite) got separate objects for representing control structures (For, If, ...) only in RF 4.0 (#3749). Before that control structures were modeled as keywords with a type attribute telling what they actually represent. For backwards compatibility the new objects got keywords specific attributes like name. These attributes were deprecated from the beginning and it's not finally time to remove them.
This change will require changing our log file generation code, because it handles control structures as keywords, but that's not too big a problem. The change obviously affects all external tools handling control structures as keywords as well making the change backwards incompatible. We couldn't do it in a bug fix or even in a feature release, but doing it in a major release ought to be fine.

UPDATE: It turned out that we hadn't properly deprecated all the attributes. Some only used our custom @deprecated decorator, but the decorator didn't do anything. Instead of removing these attributes, we decided to change the decorator so that now there's an actual deprecation warning. Those attributes that already emitted deprecation warnings were removed.

Control structures were earlier masked to look like keywords. Nowadays they are considered totally different and their attributes name, kwnane, libname, doc, args, assign, tags and timeout have been "loudly" deprecated.


Fix(fpm-writer): change building block required library to sap.fe.core

When adding a building block validate minimum required sap.fe.core library in manifest.json, not sap.fe.macros.

I think we should rename test 'validate sap.fe.templates manifest dependency'? https://github.com/SAP/open-ux-tools/blob/fix/building-block-required-library/packages/fe-fpm-writer/test/unit/building-block.test.ts#L75

Thanks, updated that


Running AST on a downstream task.

Dear Yuan,
Thank you for creating this SOTA model for audio processing.
I want to run AST on an Audio dataset. I have prepared the data in a similar manner as the data prepared for ESC50 dataset. I wanted to run the model but then I noticed that you took dataset specific mean and std to normalize the dataset. Can you please share the method you used to find these two metrics.
Regards
Saif

Dear Yuan,
Thank you for creating this SOTA model for audio processing.
I want to run AST on an Audio dataset. I have prepared the data in a similar manner as the data prepared for ESC50 dataset. I wanted to run the model but then I noticed that you took dataset specific mean and std to normalize the dataset. Can you please share the method you used to find these two metrics.
Regards
Saif

Were you able to run the model on a downstream task? If so could you share it please?

Hi there,
I am quite sure that the AST model should work for downstream tasks - as we tested the AudioSet pretrained model on SpeechCommands task and ESC-50 task in the paper and both achieved SOTA. But there is something that needs to take care of, e.g., normalization, learning rate, learning rate scheduler, specaug parameters, etc.
I am busy working on something else now but hopefully I can provide guidance on how to do that in a few days.
Best,
Yuan

Hi there,
I have uploaded the sample code of how to compute the dataset mean and std. Please see ast/src/get_norm_stats.py, it is very simple.
I also add a section in the readme file on how to use pretrained model for downstream tasks, please take a look if you are interested.
-Yuan

Hi Yuan,
Thank you for the prompt action to process the data for downstream tasks.
I followed the procedure mentioned in the Readme and I am able to run the AST on small dummy dataset. I will update the results and the final details here, once I train the actual dataset.
While processing the normalization stats, I was getting some minor issues. I have wrinkled them out and created this pull request for the same. I hope with this addition, anyone can use AST for downstream tasks.
Regards,
Saif

Hi Saif,
Thanks for fixing the issue. I have merged that to the main branch.
-Yuan

Hey @jvel07,
Yes, I prepared the data in a similar way like Yuan. I did some changes based on my data. You can look at the relevant  changes to the files here.
Hope it helps.
Regards
Saif


[ISSUE]

Describe your problem:
It seems this code doesn't work anymore. I don't know why?
error message:
db= pg.arguments[0]
~~~~~~~~~~~~^^^
TypeError: 'NoneType' object is not subscriptable
Reproducing the problem:
from flet import app, Page, Text, TextThemeStyle, TextField,FilledButton,WEB_BROWSER
from flet_navigator import FletNavigator, PageData, ROUTE_404
def main_page(pg: PageData) -> None:
pg.page.add(Text(f'Main Page.', style=TextThemeStyle.DISPLAY_MEDIUM))
text = TextField()
db= pg.arguments[0]
print(db)
# print(school_db.get_grade())

pg.page.add(text, FilledButton('Send.', on_click=lambda _: pg.navigator.navigate(f'second_page?text={text.value}', pg.page)))

def second_page(pg: PageData) -> None:
pg.page.add(Text(f'Second Page!', style=TextThemeStyle.DISPLAY_SMALL))
for parameter in pg.parameters:
    pg.page.add(Text(f'{parameter}: {pg.parameters[parameter]}'))

def route_404(pg: PageData) -> None:
... # 404 Page Content.
def login_page(pg: PageData) -> None:
pg.navigator.navigate("main_page", pg.page, (1,))
def main(page: Page) -> None:
# Initialize navigator.
flet_navigator = FletNavigator(page, # Specify page.
{
'/': login_page, # Main page route,
'main_page': main_page, # Main page route,
'second_page': second_page, # Second page route,
ROUTE_404: route_404 # 404 page route
}, lambda route: print(f'Route changed!: {route}') # Route change handler (optional).
)
# Render current page.
flet_navigator.render(page)

app(target=main)
Media (optional):
Screenshot or video..
flet_navigator version, flet version, OS:
FletNavigator version, Flet Version, OS..
Additional:
...

and it seems set_route_data and get data don’t work on complex objects like instance of a class

My use case is that I have a class variable that holds a connection to a remote database(supabase), I want to pass this variable among different pages.

It happens because of bad redirect:
pg.page.add(FilledButton("login", on_click=lambda _: pg.navigator.navigate("main_page", pg.page, (1,))))

And now everything works. Try to navigate to other pages via buttons or something else, its better for user and more secure.

If I am in the “main_page”, and I want to redirect the data [1,] to the 2nd page using set_route_data,  do I write set_route_data(“main_page”, [1,]) or set_route_data(“second_page”, [1,])? Or I can put any string name?

No, you should set route name as string, in what route you're storing data.

I am confused. For example, I need to pass a database object to a sequence of pages, say there are 5 pages in my project.  Do I set like this: in the first page , set_route_data(“first page”, obj), in the 2nd page I get it by get_route_data(“first page”, obj)?  And again when I need to pass it to the 3rd page, do I set it again like set_route_data(“second page”, obj)… and so on until the 4th to 5th, I then write set_route_data(“fourth data”, obj)?
is this set_route_data, get_route_data, a alternative to .navigator. Navigate (“some page”, pg.page, obj)?

Basically you can have your database saved on main page (set_route_data('main_page')), and then you can use get_route_data from any other Page. And no, this isn't alternative to arguments in navigate function.

But I can also use navigator to pass on this database obj to different pages ,right?  Which way is better?

Personally I created 'shared\db.py' folder\file, initialized database there and used 'from shared.db import db'. I think its better to share database between pages. Do however you like.

Thanks. following your advice, I modified my codes. much neater and cleaner and faster now.

Vey nice. I modified. Much better now.

Glad to hear!


TypeError: 'setTimeout' called on an object that does not implement interface Window

Hi, I am making a Firefox addon and I am using jspdf but i have a problem with the method save. My code is something like that.
boton_toPDF.addEventListener("click",function(e){
	var pdf = new jsPDF('p', 'px', 'a4');
	element_editor = document.getElementsByClassName("ql-editor")[0];
	var y = 50;
	for(var j=0; j<element_editor.childNodes.length; j++){
		var nodo =  element_editor.childNodes;
		var texto_parrafo = nodo[j].innerText;
		pdf.setFontType("normal");
		var pageHeight = pdf.internal.pageSize.height;
		for (var i = 0; i < splitTitle.length; i++) {
			if (y > pageHeight-tam_fuente) {
				y = 50;
				pdf.addPage();
			}
			pdf.text(20, y, splitTitle[i]);
			y = y + tam_fuente+1.42;
		}
	}
	if(entrada_nombre_pdf.value != ""){
		pdf.save(entrada_nombre_pdf.value+'.pdf'); /* <--- Here the problem*/
	}
	else{
		pdf.save('traduccion.pdf');  /*<--- Here the problem*/
	}
});

I reviewed the browser console and this showed the following.

TypeError: 'setTimeout' called on an object that does not implement interface Window. jspdf.debug.js:17666:9

I reviewed the browser console and showed the following.
I tried
I solved the problem when i  went to the line where are the problem and change
if (can_use_save_link) {
        object_url = get_URL().createObjectURL(blob);
        setImmediate(function () {          /*Line 17666 */
          save_link.href = object_url;
          save_link.download = name;
          click(save_link);
          dispatch_all();
          revoke(object_url);
          filesaver.readyState = filesaver.DONE;
        }, 0);
        return;
      }

for this
if (can_use_save_link) {
        object_url = get_URL().createObjectURL(blob);
        setTimeout(function () {
          save_link.href = object_url;
          save_link.download = name;
          click(save_link);
          dispatch_all();
          revoke(object_url);
          filesaver.readyState = filesaver.DONE;
        }, 0);
        return;
      }

I change the function call setTimeout instead that setImmediate and it worked. But for summit the addon i can not change the source code, and for that i would like to know some another way to solve it without change the source code.

Sorry for my bad English


iOS 8 设备能收的 payload 长度是 2KB 而不是 256B

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW1

Each remote notification includes a payload. The payload contains information about how the system should alert the user as well as any custom data you provide. In iOS 8 and later, the maximum size allowed for a notification payload is 2 kilobytes; Apple Push Notification service refuses any notification that exceeds this limit. (Prior to iOS 8 and in OS X, the maximum payload size is 256 bytes.)

貌似 Apple 已经在去年 9 月左右部署了这一改动，信鸽这边能不能去掉 256 字节的限制？

我反馈给项目组


Issue #45 - Seed.init should raise a warning when the seed is lon…

Hey @johngrantuk now that PyOTA v2 is out, I'd like to get this guy out the door for the 2.0.1 release.  Is there anything I can help with?

Hi, sorry for the lack of progress, I've had limited free time unfortunately. I hope to get a bit of time on Sunday but can't guarantee it. Won't be offended if someone else gets there before me!

Hey @johngrantuk looks like somebody snuck in and took care of #45 .  I have to close this PR; sorry!
I really appreciate your contributions to PyOTA, and I hope to see you again here soon (:


[ign-gui2] Workflow updates

Add labeler workflow
Add triage workflow
Add Ubuntu CI workflow with Codecov upload
Update badges
Port CODEOWNERS

Tests are running, but only a fraction of them pass due to https://github.com/ignitionrobotics/ign-gui/issues/58. Coverage reports are being generated, but like a few other libraries, Codecov is mysteriously not commenting back.
We shouldn't block this PR because of these.

Codecov Report

:exclamation: No coverage uploaded for pull request base (ign-gui2@a9284b5). Click here to learn what that means.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             ign-gui2      #56   +/-   ##
===========================================
  Coverage            ?   14.56%
===========================================
  Files               ?       13
  Lines               ?     1332
  Branches            ?        0
===========================================
  Hits                ?      194
  Misses              ?     1138
  Partials            ?        0

Continue to review full report at Codecov.

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

Codecov is mysteriously not commenting back.

Oh hey! Codecov is mysteriously commenting back!


How to use with wasm-pack?

I have a small test project and use wasm-pack --target web to expose it to the browser. Is it possible ot use wasm-pack instead of just compile-wasm to generate a wasm that this PHP extension can read?

Currently wasm-pack is JS centric, it generates at package.json and JavaScript code to expose a good APIs.
If we could have the same code written in PHP I think it would work.
Cc @ashleygwilliams @alexcrichton

We are working on WebIDL bindings, with the hope to ease passing non-integer data between Wasm and its host (here, PHP). I think it's a relevant way to go. Maybe wasm-pack can support WebIDL bindings in the future. Let's see!

wasm-pack doesn't but wasm-bindgen which is the underlying tool does, it generates JS based on WebIDL.


Error: If encoding is specified then the first argument must be a string

buffer.js:69
      throw new Error(
      ^

Error: If encoding is specified then the first argument must be a string
    at new Buffer (buffer.js:69:13)
    at Readable.<anonymous> (/private/tmp/freight-server/node_modules/archiver/lib/util/index.js:32:15)
    at emitNone (events.js:91:20)
    at Readable.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:975:12)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickDomainCallback (internal/process/next_tick.js:122:9)

Fires at freight create -u=http://<IP_ADDRESS>:8872/
$ node -v
v6.3.1

I hit this problem too. Using node v.4.6.x seems to fix this problem. Maybe .nvmrc could be beneficial here?


[UI] Need white space in class browser text area

A little bit of margin on top and left would improve the readability.

Closing this since it's fixed.


modules/keymaps: add "buffer" option to mapConfigOptions

This allows to define buffer-local keymaps, which is specially useful when combined with keymapsOnEvents.

Is this supposed to work ?
:h nvim_set_keymap states that `      • {opts}  Optional parameters map: Accepts all |:map-arguments| as keys
except , values are booleans (default false). Also:

And To set a buffer-local mapping, use |nvim_buf_set_keymap()|.

I tested the change with vim.keymap.set, where :h vim.keymap.set() states:
Also accepts:
• {buffer}? (`integer|boolean`) Creates buffer-local mapping,
  `0` or `true` for current buffer.

A quick grep through the repo found no usages of nvim_set_keymap, only vim.keymap.set, but I could have missed something.
(I've thought about typing the option either bool int, but I don't see a use-case where setting a specific buffer number would be useful.)

A quick grep through the repo found no usages of nvim_set_keymap, only vim.keymap.set, but I could have missed something.

Oh, yes, you are completely right. I had forgotten about this. We used to use nvim_set_keymap.

(I've thought about typing the option either bool int, but I don't see a use-case where setting a specific buffer number would be useful.)

True, I don't see whether that would be useful...
Any opinion @traxys @MattSturgeon ?

I've thought about typing the option either bool int, but I don't see a use-case where setting a specific buffer number would be useful.

I assume they accept int for backwards compatibility reasons? Or do they allow specifying which buffer to create the mapping in using a buffnr?
I personally don't see the use-case, but it'd be better to match upstream typing if there's actual functionality there. Otherwise I agree, keep it simple.

I assume they accept int for backwards compatibility reasons? Or do they allow specifying which buffer to create the mapping in using a buffnr?

For me it is the latter, i.e. to give a buffer id.

I personally don't see the use-case, but it'd be better to match upstream typing if there's actual functionality there. Otherwise I agree, keep it simple.

Although it makes no sense to me to set a binding for buffer x at nix build time, I don't mind if we type it the same way as upstream. Maybe @traxys will have a stronger opinion on that.

I'd rather not expose the "int", people would be able to access it using rawLua, and it does not make sense in nixvim I think


Application freezes only on first analytics logEvent call after fresh application install

[REQUIRED] Step 2: Describe your environment

Xcode version: 10.1
Firebase SDK version: 6.0.0 (latest)
Firebase Component: Analytics
Component version: 6.0.0

[REQUIRED] Step 3: Describe the problem
We are trying to configure our application to use Firebase Analytics and GoogleTagManager to report analytics events.
After a fresh install of the application, when trying to log a custom event, the application hangs. In subsequent launches of the application, the events are always logged without problem.
Deleting the app and installing fresh will often result in the first custom event logged to firebase to cause an app freeze.
Steps to reproduce:

Configure your application to use Firebase Analytics along with Google Tag Manager.
Install them both via cocoapods by adding the following to your podfile.

use_frameworks!
platform :ios, '12.0'

def import_pods
    pod 'Firebase/Analytics'
    pod 'GoogleTagManager'
end

execute pod install to setup project
Add Firebase supplied GoogleService-Info.plist to the Xcode project
Download and add the configured GoogleTagManager container to the Xcode project
Initialize Firebase in application AppDelegate via call to FirebaseApp.configure()
Perform call to log custom firebase analytics event by Analytics.logEvent(_ name: String, parameters: [String : Any]?)

After first logEvent call, application will hang but will not crash.
When running via simulator the following output can be scene with debug enabled (-FIRDebugEnabled)
2019-05-23 14:57:05.049719-0400 AppName[20939:1116742] [BoringSSL] nw_protocol_boringssl_input_finished(1543) [C4.1:2][0x7fb8b3d39080] Peer disconnected during the middle of a handshake. Sending errSSLClosedNoNotify(-9816) alert
2019-05-23 14:57:05.058921-0400 AppName[20939:1116742] TIC TCP Conn Failed [4:0x600000ea5800]: 3:-9816 Err(-9816)
2019-05-23 14:57:05.060957-0400 AppName[20939:1116742] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9816)
2019-05-23 14:57:05.061082-0400 AppName[20939:1116742] Task <0F5152F7-86F3-4356-A4E0-11337A42BF3F>.<1> HTTP load failed (error code: -1200 [3:-9816])
2019-05-23 14:57:05.061274-0400 AppName[20939:1116809] Task <0F5152F7-86F3-4356-A4E0-11337A42BF3F>.<1> finished with error - code: -1200

When running on a physical device, the same app freeze is seen but the boringssl logs are not logged.

After further debugging, it is found this issue only occurs when GoogleTagManager is used in conjunction with Firebase analytics.
When removing GTM from the podfile, building the pods and re-running the tests, the issue is never encountered.

Hello,
I was wondering if this issue has been investigated?

@geoffclifton Thanks for the report and sorry about the delayed response.  There's no update yet. This issue is being tracked internally at b/134524065.

@geoffclifton Was your GoogleTagManager container configured to be triggered by that particular custom event?

@htcgh yes the GoogleTagManager is configured to be triggered for the custom events fired.
The issue is not specific to a certain one of the events, but happens only on the first trigger of a custom event after app install. After relaunching the app, custom events are sent without issue.
If the user deletes the app, and reinstalls, the problem will be encountered again on first fire of a custom event.

@geoffclifton Can you share a sample project that reproduces the hang? I can't seem to reproduce it.

@htcgh I will have to try to replicate this problem in a sample project.
Is there anything unique which only occurs on the first custom event firing after install which could point us in the right direction?

@geoffclifton On the first launch after install, both GoogleTagManager and FirebaseAnalytics create their own SQLite database files and GTM downloads the latest version of the container. Aside from that, the logic on the first and subsequent app launches is the same.

@htcgh thanks for the information.
I’m currently working to create a sample app which demonstrates the issue.
Thanks.

It may also be helpful to run the time profiler and seeing what's causing the hang on the main thread.

I am seeing this same issue using Firebase/Analytics and GTMSessionFetcher currently.

Anthony, can you share an Instruments time profiler trace?

Next time I can get this to repro again I will!


all: enable dependabot

Main repo already uses it, why does this one not? ent has had two releases already.

Thanks @masseelch 🙏🏻


Improve display of ACCESS and WIDA data

Here's some things we could do here:

Investigate mismatches between LEP status and testing data
Show WIDA name instead of blanket "Limited English" in profile
Update importer to preserve information about various tests like:
ACCESS 2018 Winter (+comprehension)
WIDA Model Test (+comprehension)
WIDA Screener (-comprehension)
Improve local development data to match

Done a long time ago!


Fix alg matching in pick_key

I noticed this problem when trying to verify JWT signatures with key entries that specified "alg". The simple solution was to make "alg" wildcard match like the "kid".
Another improvement could also be to supply the "alg" when picking keys for JWT signature verification. But I'vent examined the code enough to see if it has some other implications.

Could you provide a test mimicking your use case ?

I added a test case at end of test_5_jwt.py. The scenario is that I download a JWKS with public keys from an OIDC sever that has "alg" set.

Ping, is it possible to get this merged?

Thanks a lot! Could you also publish the release?

Will do later today


irq_add_shared_handler assertion fix #724

fixes #724

I'm still hitting this assert (after applying this patch)...
ui_from = 0x20000324
ui_to = 0x20000314
delta = 0x7ffffff6
...while attempting to add a 2nd shared handler to the same irq.

I'm still hitting this assert (after applying this patch)...
ui_from = 0x20000324 ui_to = 0x20000314 delta = 0x7ffffff6
...while attempting to add a 2nd shared handler to the same irq.

No, a case of stale code somewhere along cmake, picoprobe and the target.
Works now.


Prevent invalid behavior for file reviewing when loading more files

The problem was that later loaded files got the same ID, which confused the browsers when clicked.
Additionally auto-update the go-licenses.json.
Fixes #21228.
Fixes #20681.

I've noticed that this problem is present at least once more in this block (there are multiple other occurrences of {{i}} in the same range), however, I don't know where this might all be called, so I left it untouched for now.
If someone knows where the other ones are called, please feel free to fix it either in this PR or a new one.

I've noticed that this problem is present at least once more in this block (there are multiple other occurrences of {{i}} in the same range), however, I don't know where this might all be called, so I left it untouched for now. If someone knows where the other ones are called, please feel free to fix it either in this PR or a new one.

Good catch, I think these {{$i}} should be fixed together. If you do not mind, I can submit my changes on this PR.

I have nothing against that.

One more thing .... should we remove the background of the checked viewed input?
It looks a little strange ....

Or maybe this (like GitHub)

I don't think it's a good idea to remove it completely as it definitely helps with skimming through a PR,
but if you want to enhance it, I'm all for it.
I'm not really a designer, so better designs are always welcome.

Ah, the other changes didn't require any JS changes at all?

Ah, the other changes didn't require any JS changes at all?

Yes, if I understand correctly, the other changes are only for SVG/CSV diff, to toggle the source. These IDs are used by data-toggle-selector, luckily they are on the same page.

I don't think it's a good idea to remove it completely as it definitely helps with skimming through a PR, but if you want to enhance it, I'm all for it. I'm not really a designer, so better designs are always welcome.

How do you think about this?

Fine with me.

Lastly, the go-licenses.json was automatically updated.

Odd, must be a bug in go-licenses, our go dependencies did not change since last generation.

Lastly, the go-licenses.json was automatically updated.

Odd, must be a bug in go-licenses, our go dependencies did not change since last generation.

I also experience such problem. I just ignore(reset) that file everytime. It's good to get it in.

gopkg.in/yaml.v3 v3.0.1

Well, it's inside our go.mod, and it wasn't inside go-licenses.json previously…

Well, it's inside our go.mod (
https://github.com/go-gitea/gitea/blob/0a9a86b94307fe95661060cdfe36026e296dc69e/go.mod#L106
), and it wasn't inside go-licenses.json previously…

Might be because gopkg.in is down sometimes, so the license fetcher can not fetch license from there. We should probably exclude licenses from there if the service is unstable.


nl_NL translation is empty. Should be either dropped completely or copied from 'nl'

the 'nl' language code translation is complete, but the 'nl_NL' translation is empty. On my system, without any CMS_LANGUAGES setting and LANGUAGES set to ('nl', 'Nederlands'), the nl_NL pack seems to get picked up, thus resulting in the english fallback language.
I wonder if there is a real need to maintain both 'nl' and 'nl_BE' because officially they are the same language and I've never ran into an issue where the distinction between 'nl' in Belgium and 'nl' in The Netherlands is necessary.

Hi @driesdesmet, there is no need to maintain both, and we're going to remove the duplicated languages  on Sunday. We will release a patch version which includes this shortly

Excellent. I'd be happy to help for Dutch (Nederlands) but that translations seems to be complete for 3.1.

Yes, translations are complete, but reporting bugs it's also great part of the contribution :)

Bogus translation removed from travis.
This will be fixed in next patch versions


refactoring

📝 Changed routes:

/posts

(view full size)

Commit cd5d63fcf35964b8ab2c332732709fc6af5cedea (https://sirius-next-r249yjr36-bookman0001.vercel.app).


Error on lsvirtualenv

$ lsvirtualenv
scipy
=====

-bash: /Users/robinho/.virtualenvs//bin/activate: No such file or directory
showvirtualenv [env]

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/19872884-error-on-lsvirtualenv?utm_campaign=plugin&utm_content=tracker%2F339910&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F339910&utm_medium=issues&utm_source=github).

https://bitbucket.org/dhellmann/virtualenvwrapper/pull-request/33/fixes-265/diff


 It feels like pressing a square layer on top of the original image.

When the denoising intensity of the face image and the overall image is inconsistent, the fix is that the body and face on the screen are inconsistent in a square appearance.

When the denoising intensity of the face image is inconsistent with the overall image, when repairing the face, the entire square area near the face and the face is repaired, resulting in inconsistency with the body and is very obtrusive

Please change this function to a circle, otherwise there will sometimes be obvious traces of modification at the 4 corners of the square

@tunxin @k52252467
Thanks for the feedback.
I added an "Apply inside mask only" option.
Please try it.


Add layer attributions to print

Always adds the attributions of the layers to the parameters so that they are included in a printout
@terrestris/devs please review

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add ability to disable eventing on specific databases and tables.

The problem faced currently?
Debezium gets overwhelmed when we enable eventing on a project with multiple databases.
How can we solve it?
Add ability to optionally disable eventing altogether on selected database and tables. By default eventing will be on for everything.

If you want this feature to be implemented, give it a thumbs up reaction, so that we can determine which features are important to you.
👍

Eventing will ve removed entirely from sc


How does one use the trained weights on a test image

Hello everyone,
Thanks for the amaing research, I already learned a lot by reading the paper and related work.
As far as I am understanding the code here, it is all about training the network to posewarp.
But how do you actually apply it on an image?
best regards

Just take the model, and call model.predict on a new image. The first output of hte model is the predicted image.

I believe the inference image along with source and target pose should be used as argument in model.predict(). The exact format of the input can be generated after modifying the data_generation script for inference.

The result is (4,256,256,3) that means the batch size is 4 and therefore each 256x256x3 is an output image, you just need to slice it.
The range of the output must be [-1,1] as the model has a tanh activation at the end for target foreground. In the data_generation script the input image and ground truth is converted to be in the range of [-1,1] from [0,255] using the following transformation:
I0 = (I0 / 255.0 - 0.5) * 2.0
So, I believe just if you reverse this transformation I0 = (I0/2.0 + 0.5)*255.0 you will get the output to be in the range of [0,255], which will be a 'uint8' RGB image.

1. The result is (4,256,256,3) that means the batch size is 4 and therefore each 256x256x3 is an output image, you just need to slice it.

2. The range of the output must be [-1,1] as the model has a tanh activation at the end for target foreground. In the data_generation script the input image and ground truth is converted to be in the range of [-1,1] from [0,255] using the following transformation:
   `I0 = (I0 / 255.0 - 0.5) * 2.0`
   So, I believe just if you reverse this transformation `I0 = (I0/2.0 + 0.5)*255.0` you will get the output to be in the range of [0,255], which will be a 'uint8' RGB image.

thank you that color space transformation helped me !


Simplify Viewport::_set_size

Viewport.to_screen_rect is used only in a single location to compare it to Rect2i().
When called from SubViewport, to_screen_rect is always equal to Rect2i(). When called from Window, to_screen_rect is always different from Rect2i().
So the comparison to_screen_rect != Rect2i() can be replaced by Object::cast_to<Window>(this).
This allows the removal of Viewport.to_screen_rect and the simplification of Viewport::_set_size.

Thanks!


post training CLI

What does this PR do?
Add post training related CLI to client SDK
Scope of the change
This PR doesn't intent to change

src/llama_stack_client/lib/cli/inference/inference.py
src/llama_stack_client/lib/cli/models/models.py
src/llama_stack_client/resources/post_training/post_training.py
src/llama_stack_client/types/post_training_supervised_fine_tune_params.py

the changes to above files are just auto formatting
user experience
Since kick off supervised finetune job need to setup several configs and hyper-parameters, to make user experience friendly, we provide an example script under examples/post_training/supervised_fine_tune_client.py to kick off the post training job
test
kick off training
python supervised_fine_tune_client.py "devgpu018.nha2.facebook.com" 5000 "1236" "meta-llama/Llama-3.2-3B-Instruct"

get job list
llama-stack-client --endpoint http://devgpu018.nha2.facebook.com:5000 post_training list

get job status
llama-stack-client --endpoint http://devgpu018.nha2.facebook.com:5000 post_training status --job-uuid "1235"

get job artifacts
llama-stack-client --endpoint http://devgpu018.nha2.facebook.com:5000 post_training artifacts --job-uuid "1235"

I am surprised about the formatting changes to the generated code. We should not be formatting any stainless generated code because it is going to cause a forever conflict.

Let me revert these format changes and try to figure out how to avoid formatter touching those files

Address comment by disabling the auto format on save in IDE


Demangling: add a workaround for MSVC ICE

The MSVC 2019 compiler seems to trip over an ICE with the implicit conversion from const TypeLookupError & to TypeLookpError &&.  This allows us to make further progress.

@swift-ci please test Windows platform

@swift-ci please test

@al45tair found a much better solution.


feat(db): adds new init method for network

slept on the 'scope' change here and still don't like it. reverting in new per


add the generate release announcement message command

command to generate the rancher release announcement messages:
release generate rancher release-message --tag v2.8.8-alpha2 --previous-tag v2.8.8-alpha1 --prime-only --action-run-id<PHONE_NUMBER>1

`v2.8.8-alpha2` is available based on this commit ([link](https://github.com/rancher/rancher/commit/release/v2.8))!
* Link of commits between last 2 RCs. ([link](https://github.com/rancher/rancher/compare/v2.8.8-alpha1...v2.8.8-alpha2))
* Completed GHA build ([link](https://github.com/rancher/rancher/actions/runs/10857046301)).
* Images with -rc:
    * rancher/aks-operator v1.2.5-rc.1
    * rancher/cis-operator v1.0.15-rc.2
    * rancher/eks-operator v1.3.5-rc.1
    * rancher/gke-operator v1.2.5-rc.1
    * rancher/rancher-webhook v0.4.11-rc.2
    * rancher/security-scan v0.2.17-rc14
    * rancher/system-agent v0.3.9-rc.4-suc
    * rancher/wins v0.4.18-rc2
* Components with -rc:
    * SYSTEM_AGENT_VERSION v0.3.9-rc.4
    * WINS_AGENT_VERSION v0.4.18-rc2
    * AKS-OPERATOR v1.2.5-rc.1
    * EKS-OPERATOR v1.3.5-rc.1
    * GKE-OPERATOR v1.2.5-rc.1
    * RKE v1.5.13-rc.2

Not going forward with this. It would add unnecessary bloat to the codebase, considering it's about the same amount of work to do this message manually vs using this cmd


Solo Machine Client Needs Love

The Solo Machine client of ICS06 is underdocumented and largely unused, but offers awesome powers.
The Cosmos-SDK documentation page actually 404s (see link here).
Principally it allows a Cosmos account key (including multisig!) to function as its own blockchain, connected over IBC. Which means it can create assets however it likes and send them to other blockchains. It can also be used as a proxy client to bridge to other blockchains before a full blown ICS02 client implementation is ready for that chain.
Todo:

[ ] Client support for Solo machines in Go
[ ] Client support for Solo machines in Rust
[ ] Client support for Solo machines in JS
[ ] Add documentation for solo machines to Cosmos-SDK IBC docs

The solomachine client got much more love in the ibc-go/v7 release.
In particular see:

https://github.com/cosmos/ibc-go/pull/1865
https://github.com/cosmos/ibc-go/pull/1687

Solomachines written in Go, Rust or JS are all supported by the on-chain Go code - implementations written in Rust and JS can compile the protos to their desired languages using available tooling. As long as solomachines communicate using the protobuf API then compatibility is all g 👍
cc @colin-axner, can we close this? wdyt?

I discussed with @colin-axner and we decided it is fine to close the issue.


data.bloxone_dns_views.example_by_attribute.id is not available

Hello, Once we have created the dns view via terraform we want to create authorative zone to this dns view. The only way to do it is to mention the view with the DNS view id (dns/views/XXXXXXX) and this is a very unique ID which reset once you recreated the dns view. What we want to do is to not have any dependencies to the ID so not fix it but rather get it back from the data source:
data "bloxone_dns_views" "example_by_attribute" {
filters = {
"name" = "example_view"
}
}
Unfortunately the data.bloxone_dns_views.example_by_attribute.id doesn't get the id :/ ... Please could you help us on this subject ?
Many thanks.

view     = data.bloxone_dns_views.azprd.results.id
│
│ Can't access attributes on a list of objects. Did you mean to access attribute "id" for a specific element of the list, or across all elements of the list?
│ Error: Unsupported attribute
│
│   on azure.tf line 11, in module "iac--bloxone-authzoneazure":
│   11:   view     = data.bloxone_dns_views.azprd.id
│
│ This object has no argument, nested block, or exported attribute named "id".

@SamirT-hub data source typically returns an array of objects. In your example, you should be doing this instead to get the id
view = data.bloxone_dns_views.azprd.results.0.id

Yes after some time using the output we found also this possibility data.bloxone_dns_views.azprd.results.*.id[0] :). Thank you !


Added iox registry and slo computer open source tools from Last9

iox-registry is terraform for telemetry and SLO Computer allows calculating the error rate, budgets and SLOs using CLI tool.

Please confirm this pull request meets the following requirements:

[ ] I followed the contributing guidelines: https://github.com/github/explore/blob/master/CONTRIBUTING.md.
[ ] I have no affiliation with the project I am suggesting (as a maintainer, creator, contractor, or employee).

Which change are you proposing?

[ ] Suggesting edits to an existing topic or collection
[ ] Curating a new topic or collection
[ ] Something that does not neatly fit into the binary options above

Editing an existing topic or collection
I'm suggesting these edits to an existing topic or collection:

[ ] Image (and my file is *.png, square, dimensions 288x288, size <= 75 kB)
[ ] Content (and my changes are in index.md)

Please replace this line with an explanation of why you think these changes should be made.

Curating a new topic or collection

[ ] I've formatted my changes as a new folder directory, named for the topic or collection as it appears in the URL on GitHub (e.g. https://github.com/topics/[NAME] or https://github.com/collections/[NAME])
[ ] My folder contains a *.png image (if applicable) and index.md
[ ] All required fields in my index.md conform to the Style Guide and API docs: https://github.com/github/explore/tree/master/docs

Please replace this line with an explanation of why you think this topic or collection should be curated.

Something that does not neatly fit into the binary options above

[ ] My suggested edits are not about an existing topic or collection, or at least not a single one
[ ] My suggested edits are not about curating a new topic or collection, or at least not a single one
[ ] My suggested edits conform to the Style Guide and API docs: https://github.com/github/explore/tree/master/docs

Please replace this line with an explanation of your proposed changes.

Please note: we will close your PR without comment if you do not check the boxes above and provide ALL requested information.

Closing this as none of the checkboxes have been checked in the PR template.


drone plugin not working on windows 2019 server

Note, I also posted this in the discourse group at : https://discourse.drone.io/t/gitea-release-plugin-on-windows-2019/9238
I'm not able to run the gitea release plugin for drone on windows 2019.
docker run --rm  plugins/gitea-release:1.0-windows-amd64
docker: Error response from daemon: hcsshim::CreateComputeSystem 44984ffc41fb3fe04fe8de525469a9cc02e4267aa8de82bec904fce
2b5b23d63: The container operating system does not match the host operating system.

I tried to build the plugin myself by adjusting the .drone.windows.yml file, but it already fails in the first step:
- name: vet
  pull: always
  image: golang:1.13-windowsservercore-1809
  commands:
  - go vet ./...
  environment:
    GO111MODULE: on
  volumes:
  - name: gopath
    path: C:\\gopath

but then I get

1 | 1.13-windowsservercore-1809: Pulling from library/golang
-- | --
1 | 1.13-windowsservercore-1809: Pulling from library/golang
1 | 1.13-windowsservercore-1809: Pulling from library/golang
2 | Digest: sha256:c592fdb70b31de6c83f3c9757ddd89d829b730d491226aa47bc5dbc7cc55369e
3 | Status: Downloaded newer image for golang:1.13-windowsservercore-1809
4 | + go vet ./...
5 | go: downloading code.gitea.io/sdk/gitea v0.13.2
6 | go: downloading github.com/joho/godotenv v1.3.0
7 | go: downloading github.com/sirupsen/logrus v1.7.0
8 | go: extracting code.gitea.io/sdk/gitea v0.13.2
9 | go: extracting github.com/sirupsen/logrus v1.7.0
10 | go: downloading github.com/urfave/cli v1.22.5
11 | go: extracting github.com/urfave/cli v1.22.5
12 | go: extracting github.com/joho/godotenv v1.3.0
13 | build github.com/drone-plugins/drone-gitea-release: cannot load code.gitea.io/sdk/gitea: rename<EMAIL_ADDRESS><EMAIL_ADDRESS>The system cannot find the path specified.

That sounds more like an issue where golang fails to properly fetch the build dependencies.

@tboerger the gitea release plugin hasn't been migrated to the plugin library so I don't think whatever is there on dockerhub is right.

But the mentioned issue doesn't look like it's related to the plugin itself. It's simply go modules that fails to properly prepare the deps.

The drone-plugins repos that have been migrated use the exec runner for Windows builds. We don't support a docker runner build of any Windows variants of the plugins so if there is a request for this plugin to work on Windows the plugin should be updated and built properly.

But the mentioned issue is not related to the pipeline at all, go vet fails to execute. To migrate it to the plugin lib is a different topic.

Hey @johanvdw could you please try and build out #29 for your uses?
I migrated this plugin to the plugin lib so we should be able to add Windows versions of the plugin but I don't have a Gitea server to actually test on. So if you could verify everything works that'd be great.

@donny-dont you can always do tests with try.gitea.io ;)

Hey @johanvdw could you please try and build out #29 for your uses?
I migrated this plugin to the plugin lib so we should be able to add Windows versions of the plugin but I don't have a Gitea server to actually test on. So if you could verify everything works that'd be great.

I'm a bit puzzled how I should test this. I see the Dockerfiles for windows, but where/how can I build the binary file:
ADD release/windows/amd64/drone-gitea-release.exe


[Feature] Please implement Send for PineconeError struct

Is this your first time submitting a feature request?

[X] I have searched the existing issues, and I could not find an existing issue for this feature
[X] I am requesting a straightforward extension of existing functionality

Describe the feature
The fact that the error type PineconeError does not implement Send makes it very difficult to work with these APIs in a multi-threaded application. Even just trying to make consecutive pinecone calls in the same in context becomes challenging as you can see from the below compiler error
   = help: the trait `std::marker::Send` is not implemented for `(dyn StdError + 'static)`, which is required by `{async block@src/adaptors/pinecone/apis.rs:11:89: 29:6}: std::marker::Send`
note: future is not `Send` as this value is used across an await
  --> src/adaptors/pinecone/apis.rs:16:84
   |
13 |         if let Ok(index_list) = self.list_indexes().await {
   |                                 ------------------------- has type `std::result::Result<IndexList, PineconeError>` which is not `Send`
...
16 |                     if let Ok(mut index) = self.index(index.name.as_str()).await {
   |                                                                                ^^^^^ await occurs here, with `self.list_indexes().await` maybe used later
```.

### Describe alternatives you've considered

You have to call `unwrap` on the error

### Who will this benefit?

_No response_

### Are you interested in contributing this feature?

yes

### Anything else?

It would also be great if you could implement `Clone` for `PineconeError`. Would make it a lot easier to work with

@jhamon @spacejam @iamannamai @emily-emily This actually makes it quite challenging to use the crate in a production setting. Is there anyway we can get this sorted or if there's a workaround

@ragyabraham thanks for filing this enhancement. There's been a new version of the client published that hopefully satisfies the requirements here: https://github.com/pinecone-io/pinecone-rust-client/releases/tag/v0.1.2
Let us know if you're still running into issues.


Identity mixer for direct motor control

Summary:
While implementing an identity mixer that navigates around the controller and gives direct motor access I encountered a weird motor mapping result.

Collapsed code section for the current implementation.

  enum
  {
    ESC_CALIBRATION = 0,
    QUADCOPTER_PLUS = 1,
    QUADCOPTER_X = 2,
    HEX_PLUS = 3,
    HEX_X = 4,
    OCTO_PLUS = 5,
    OCTO_X = 6,
    Y6 = 7,
    X8 = 8,
    TRICOPTER = 9,
    FIXEDWING = 10,
    PASSTHROUGH = 11,
    IDENTITY = 12,
    NUM_MIXERS,
    INVALID_MIXER = 255
  };

  const mixer_t identity_mixing =
  {
    {M, M, M, M, NONE, NONE, NONE, NONE},

    { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // F -> M1 Mix
    { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // x -> M2 Mix
    { 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // y -> M3 Mix
    { 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // z -> M4 Mix
    490
  };

  const mixer_t *mixer_to_use_;

  const mixer_t *array_of_mixers_[NUM_MIXERS] =
  {
    &esc_calibration_mixing,
    &quadcopter_plus_mixing,
    &quadcopter_x_mixing,
    &hex_plus_mixing,
    &hex_x_mixing,
    &octocopter_plus_mixing,
    &octocopter_x_mixing,
    &Y6_mixing,
    &X8_mixing,
    &tricopter_mixing,
    &fixedwing_mixing,
    &passthrough_mixing,
    &identity_mixing
  };

Expected behaviour:
Since I am sending offboard commands and disabled MIN_THROTTLE, I expected that F affects motor 1 and x motor 2  etc. (likewise how the mixing for quadcopter_x_mixing works with e.g. F distributing on all motors.)
While for a single command of each input channel (F, x, y, z ) only one motor started turning, the result was however the following mapping with the arrow indicating the forward direction of the quad and (cl = clockwise and ccl=counterclockwise)
(y - ccl)                   (z - cl)

                   ---------->

(F - cl)                    (x - ccl)

This seems weird, I expected the following
(m3: y - ccl)                 (M4: z - cl)

                   ---------->

(M2: x - cl)                   (M1: F - ccl)

so it seems that M1 and M2 are flipped.
Tests:
Before flashing ROSflight I used Betaflight to verify the wiring and hardware setup and the motors looked correct both in terms of rotation and numbering. (Although it was using dShot back then, but the motor identification looked good). Comparing the identity mixing to the quadcopter_x_mixing it seems that x is now instead mapping to 1 or something is wrong with my motor assignments. Related frame layout reference.
Did something go wrong in the implementation of the mixer or is it possibly hardware related?
Edit: I also noticed that I did not see the PASS_THROUGH logging in the ROS node based on the mode_string from rosflightIO in line 336
Edit2: The mapping for omnibus f4 sd from betaflight and from airbourne (revof4.h) looks the same.

Betaflight OmnibusF4SD mapping
ROSflight Airbourne / revo f4 mapping

In case someone else wants to port a betaflight base to ROSflight, the necessary adaption for the motor ordering are the following.
Comparing the flightlayouts, it seems that betaflight has 2 -> 1  and 1 -> 2 which is changed by updating airbourne_f4/include/revo_f4.h and switching the sequency of the pwm_hardware_struct_t such that

Collapsed code section below.

const pwm_hardware_struct_t pwm_config[PWM_NUM_CHANNELS] = {
    {
        GPIOB,
        GPIO_Pin_1,
        GPIO_PinSource1,
        TIM3,
        TIM_Channel_4,
        GPIO_AF_TIM3,
        TIM3_IRQn,
        TIM_IT_CC4,
    }, // PWM2 -> //PWM 1
    {
        GPIOB,
        GPIO_Pin_0,
        GPIO_PinSource0,
        TIM3,
        TIM_Channel_3,
        GPIO_AF_TIM3,
        TIM3_IRQn,
        TIM_IT_CC3,
    }, // PWM1 -> // PWM2
    {
        GPIOA,
        GPIO_Pin_3,
        GPIO_PinSource3,
        TIM9,
        TIM_Channel_2,
        GPIO_AF_TIM9,
        TIM1_BRK_TIM9_IRQn,
        TIM_IT_CC2,
    }, // PWM3
    {
        GPIOA,
        GPIO_Pin_2,
        GPIO_PinSource2,
        TIM2,
        TIM_Channel_3,
        GPIO_AF_TIM2,
        TIM2_IRQn,
        TIM_IT_CC3,
    }, // PWM4
    {
        GPIOA,
        GPIO_Pin_1,
        GPIO_PinSource1,
        TIM5,
        TIM_Channel_2,
        GPIO_AF_TIM5,
        TIM5_IRQn,
        TIM_IT_CC2,
    }, // PWM5
    {
        GPIOA,
        GPIO_Pin_0,
        GPIO_PinSource0,
        TIM5,
        TIM_Channel_1,
        GPIO_AF_TIM5,
        TIM5_IRQn,
        TIM_IT_CC1,
    }, // PWM6
    {
        GPIOC,
        GPIO_Pin_9,
        GPIO_PinSource9,
        TIM8,
        TIM_Channel_4,
        GPIO_AF_TIM8,
        TIM8_CC_IRQn,
        TIM_IT_CC4,
    }, // RC 6 (Flexi-10)
    {
        GPIOC,
        GPIO_Pin_8,
        GPIO_PinSource8,
        TIM8,
        TIM_Channel_3,
        GPIO_AF_TIM8,
        TIM8_CC_IRQn,
        TIM_IT_CC3,
    }, // RC 5 (Flexi-9)
    {
        GPIOC,
        GPIO_Pin_7,
        GPIO_PinSource7,
        TIM8,
        TIM_Channel_2,
        GPIO_AF_TIM8,
        TIM8_CC_IRQn,
        TIM_IT_CC2,
    }, // RC 4 (Flexi-8)
    {
        GPIOC,
        GPIO_Pin_6,
        GPIO_PinSource6,
        TIM8,
        TIM_Channel_1,
        GPIO_AF_TIM8,
        TIM8_CC_IRQn,
        TIM_IT_CC1,
    }, // RC 3 (Flexi-7)
    {
        GPIOB,
        GPIO_Pin_15,
        GPIO_PinSource15,
        TIM12,
        TIM_Channel_2,
        GPIO_AF_TIM12,
        TIM8_BRK_TIM12_IRQn,
        TIM_IT_CC2,
    }, // RC2 (Flexi-6) // Note: Conflicts with PPM. Do not use if PPM is enabled. This may cause unsafe behavior
    {
        GPIOB,
        GPIO_Pin_14,
        GPIO_PinSource14,
        TIM12,
        TIM_Channel_1,
        GPIO_AF_TIM12,
        TIM8_BRK_TIM12_IRQn,
        TIM_IT_CC1,
    }, // RC1 (Flexi-5) // Used for PPM RC
    {
        GPIOA,
        GPIO_Pin_8,
        GPIO_PinSource8,
        TIM1,
        TIM_Channel_1,
        GPIO_AF_TIM1,
        TIM1_CC_IRQn,
        TIM_IT_CC1,
    }, // Buzzer
};

References:

Betaflight motor remapping guide
ROSflight motor layouts


systemd_unit generates invalid units when passing a hash

Description
systemd_unit generates invalid systemd units when passing a hash as the content. The official docs say you can use a hash and provide an example: https://docs.chef.io/resource_systemd_unit.html
Chef Version
Chef Infra Client 15.6.10
Replication Case
Use the following in a recipe:
systemd_unit 'bitcoind.service' do
  content({
    Unit: {
      Description: "Bitcoin Core daemon",
      Documentation: ["https://bitcoincore.org"],
      After: "network.target"
    },
    Service: {
      User: "bitcoind",
      Type: "exec",
      ExecStart: "/snap/bin/bitcoin-core.daemon",
      PIDFile: "/home/bitcoind/snap/bitcoin-core/common/.bitcoin/bitcoind.pid",
      Restart: "on-failure",
    },
    Install: {
      WantedBy: "multi-user.target"
    }
  })
end

This generates the following systemd unit file:
[Unit]
Description = Bitcoin Core daemon
Documentation = https://bitcoincore.org
After = network.target

[Service]
User = bitcoind
Type = exec
ExecStart = /snap/bin/bitcoin-core.daemon
PIDFile = /home/bitcoind/snap/bitcoin-core/common/.bitcoin/bitcoind.pid
Restart = on-failure

[Install]
WantedBy = multi-user.target

This causes the following error:
$ systemctl status bitcoind
[snip]
/etc/systemd/system/bitcoind.service:8: Failed to parse service type, ignoring: exec

This is caused by the iniparse library, that adds spaces around the equal signs: https://github.com/chef/chef/blob/262026a09745719784d7fc4b140228912307b4de/lib/chef/resource/systemd_unit.rb#L71-L81
Rewriting the Type line to omit the spaces around the equal sign fixes it:
Type=exec

The generates systemd service should not have spaces around the equal signs.

@gregkare I have fixed spaces around the equal sign in this PR, but this issue will be still there because after running above recipe by using action: [:create, :enable] .
To resolve this issue you need to run action start or restart.


isScrollingOptOut prop options + rename

the current approach is tricky, if we user custom cellRangeRenderer, we probably omit that opt out, I'd suggest we can simply pass isScrolling = undefined when calling cellRangeRenderer if isScrollingOptOut is true, BTW I prefer the term usingIsScrolling from react-window

follow up to #1131

Upon further thought. The point of the isScrollingOptOut is to not rerender cells on scroll end. Thus calling it with a value of undefined would mean that we are still calling cellRenderer
cc: @nihgwu: what do you think?


[help] How do I use Noko_Node_Get_Struct in another project?

What problem are you trying to solve?
This commit from Nokogiri caused our application to start failing on SAML requests.
This is due to the saml2 gem that we use, and a transitive dependency there called nokogiri-xmlsec-instructure. This project uses Data_Get_Struct, but since this commit in Nokogiri, it will now make that data an incorrect type, causing a TypeError:
      TypeError:
        wrong argument type Nokogiri::XML::Element (expected Data)

You can see this happen when running the tests on nokogiri-xmlsec-instructure.
I've attempted to submit [a pull request])(https://github.com/instructure/nokogiri-xmlsec-instructure/pull/13) to fix this issue, but I am unsure if what I'm doing is correct or even possible. I'm more of a Ruby-guy than a C-guy.
How can I change this gem so that I can continue using the latest and greatest Nokogiri releases that you all keep producing? ❤

Whoa, sorry you're having problems, that's unexpected.
I will add the saml2 and/or xmlsec-instructure projects to the set of downstream projects we run CI against so that I have good signal on this going forward.
Let me take a look -- it may take a few hours though, today's a bit busy for me.

https://github.com/sparklemotion/nokogiri/pull/2595 is going through CI now which adds xmlsec to the suite

I submitted PR https://github.com/instructure/nokogiri-xmlsec-instructure/pull/14 upstream

I'm not sure what else I can do at this point, how can I help?

Wow that's more than I expected. Thank you for helping out here :) We will use a fork with your commit in it -- that'll suit for our purposes.

Wow that's more than I expected

Well, I feel bad that we broke something, we try pretty hard not to.


Can you make a video how to use the bot?

Hey there
Can you make a video how to use the bot, because I don't know hot to set it up in Python.
Thanks

Step 1: install python from official python website. When installing, choose "download pip"
Step 2: download project dependencies by using pip:
1. Open command line.
2. Type the following one-by-one:
pip install selenium==4.2.0
pip install undetected-chromedriver==3.0.3
pip install webdriver-manager==3.5.4
pip install Pillow==9.0.1
Step 3: Make sure the webdriver launches Google Chrome correctly by running either quickstart.py or auto_swipe.py.
Step 4: Write your own python script that will do tinder job. Examples of how to do so are scripts "quickstart.py" and "auto_swipe.py".


PHP warning in documentation output

There is php warning at the bootom of page  http://facebook.github.io/php-webdriver/namespaces/default.html
"Documentation is powered by phpDocumentor and authored on Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /Users/whhone/github/php-webdriver/vendor/twig/twig/lib/Twig/Extension/Core.php on line 89 July 12th, 2014 at 03:34."

Removed this warning from that page... At some point we'll rebuild all of them and make sure it's not there across everything.  Thanks.


[Documentation] Default values on struct members

https://shader-slang.com/slang/user-guide/conventional-features.html
On this page there is a note mentioning
Note
Slang currently does not allow default values on struct members, but we intend to support them in the future.

But then later on
https://shader-slang.com/slang/user-guide/convenience-features.html
Member Init Expressions
Slang supports member init expressions:

struct MyType
{
    int myVal = 5;
}

Aren't they referring to the same thing? should the docs be updated?

The current semantics around initializers is not consistent or sound. There is an ongoing work to clean this up, and this will be fully supported once that work is complete.
See PR: https://github.com/shader-slang/slang/pull/5215
And language design: https://github.com/shader-slang/slang/blob/master/docs/proposals/004-initialization.md


complex maintenance stuff + choleski

docs tests, streamlining

Test are not passing, i'll wait a bit to merge

sure i pleaing with somthing i never tried before

preparing a .table method which is s sort of .perl but with a table view like in octave

choleski is commented out because  i need another method to test matrices if they are positive, or there is no choleski decomp

Merging that part first,
thanks!

ran into sack of problem becasue vclone is not deep, i will have to make my own clone

i have to make own clone first to fix methods who already use it,
i propose to call it AoA clone since it only works on that structure

sure i can some things take out but the cloning stuff has to go in because it actually fixes broken stuff
yes i added som minor things but also fixed typos just tell me what to remove
actually even in german the proper term seems to be submatrix mean in the sense i used it. but i have to check more sources.

waite a sec there is one last typo


Add pyproject.toml for Custom Node Registry

We are working with dr.lt.data and comfyanon to build a global registry for custom nodes (similar to PyPI). Eventually, the registry will be used as a backend for the UI-manager. All nodes go through a verification process before being published to users.
The main benefits are that authors can

publish nodes by version and users can safely update nodes knowing ahead of time if their workflows will break or not
automate testing against new commits in the comfy repo and existing workflows through our CI/CD dashboard

Action Required:

[ ] Go to the registry. Login and create a publisher id. Add the publisher id into the pyproject.toml file.
[ ] Write a short description.
[ ] Merge the separate Github Actions PR and run the workflow.

If you want to publish the node manually, install the cli and run comfy node publish
Check out our docs if you want to know more about the registry. Otherwise, feel free to message me on discord at haohao_81202 or join our server if you have any questions!

hey @SamKhoze, wanted to send a small nudge and ask if you had any questions!

@SamKhoze, wondering if there's any way we can support you on this PR!


issue with building the modnet demo 'getPluginCreator could not find plugin InstanceNormalization_TRT version 1'

hi
I am on xavier NX jetpack 4.4DP (so tensorrt 7.1)
I have build successfully (I think) all the steps for Modenet until this one:
LD_LIBRARY_PATH=$(pwd)/onnx-tensorrt/build onnx-tensorrt/build/onnx2trt modnet.onnx -o modnet.engine -d 16
then I got an error message:
ERROR] INVALID_ARGUMENT: getPluginCreator could not find plugin InstanceNormalization_TRT version 1
While parsing node number 219 [InstanceNormalization -> "721"]:
--- Begin node ---
input: "718"
input: "719"
input: "720"
output: "721"
name: "InstanceNormalization_219"
op_type: "InstanceNormalization"
attribute {
  name: "epsilon"
  f: 1e-05
  type: FLOAT
}

--- End node ---
ERROR: /media/tetsfr/SSD/tensorrt_demos/modnet/onnx-tensorrt/builtin_op_importers.cpp:1636 In function importInstanceNormalization:
[8] Assertion failed: plugin != nullptr && "InstanceNormalization plugin was not found in the plugin registry!"

Do you what that could be related to?

[ERROR] INVALID_ARGUMENT: getPluginCreator could not find plugin InstanceNormalization_TRT version 1

It looks like the "InstanceNormalization_TRT" plugin is missing (from /usr/lib/aarch64-linux-gnu/libnvinfer_plugin.so).  This is most likely because InstanceNormalization_TRT is not included in older builds of TensorRT.
I myself have tested the MODNet code against both JetPack-4.5 and JetPack-4.5.1.  Would you be able to use one of those instead?

Ok thanks, I ll try your great code once I can install Jetpack 4.5, but for now I am stuck with 4.4DP, too many dependencies on this version.
Closing the issue since root cause and solution to fix are clear. Thanks again for your amazing repository!


docs:Update previous links to the protobuf API of pouch_with_cri_intr…

…oduction.Md
Signed-off-by: xieydd<EMAIL_ADDRESS>
Ⅰ. Describe what this PR did
Update previous links to the protobuf API of pouch_with_cri_introduction.Md
Ⅱ. Does this pull request fix one issue?

None
Ⅲ. Describe how you did it
Change the doc content
Ⅳ. Describe how to verify it
None
Ⅴ. Special notes for reviews
None

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi， @xieydd
Thanks for the pull request. Why do you close this. I think we need what you did. Please feel free to tell me if you need any help.

@allencloud Just update a Link. you can update it ,or I reopen the request
The link of protobuf API in /pouch_with_cri_introduction.md

and
The link of install dragonfly client and install dragonfly server in pouch_with_dragonfly.md


python312Packages.zha: 0.0.8 -> 0.0.9

Diff: https://github.com/zigpy/zha/compare/refs/tags/0.0.8...0.0.9
Changelog: https://github.com/zigpy/zha/releases/tag/0.0.9
Description of changes

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

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

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

2 packages built:

python312Packages.zha
python312Packages.zha.dist


[DE] The word gets split in the sentence for a given intent

When the input is suche in deutschland, it gets split deutsch land. I've reproduced this issue in eu.luis.ai.

Hi @fanidamj,
this repo is only for the Recognizers-Text project. The issue you're mentioning is a LUIS issue not related to the entity recognizers here.
Perhaps https://github.com/Microsoft/Cognitive-LUIS-Windows or https://github.com/Microsoft/LUIS-Samples would be better places to ask?
I'll close this issue here, ok?


Setting up development environment

Hi Simon,
I've set up the vagrant environment but struggling to find the correct make commands and folder.
From which folder should I be running make commands?
I've tried the root folder, '/src/apps/sequencer', 'build/stm32/release' and a few others.
If you could give some pointers on generating either UPDATE.DAT files or just the hex files that would be great!
Im interested in contributing/customising for firmware for my own needs. Id like to work on launchpad pro integration where the 'User' page is the performer GUI and the note/virtual fader pages are still available over the hardware midi ports.

I have just updated the main README with a guide on how to setup the development system and some overview of the source code structure. Please let me know if there are any obvious mistakes as I did this in a bit of a rush. I hope it's enough to get people going.


std.range.chunks for InputRanges (buffered)

Hey all,
this is very vague proposal to allow chunks to be used on transient InputRanges that can't be saved (e.g. byLine). The current implementation has (at least) one major flaw, but I wanted to put this initial version up so we can start a discussion. Therefore I would like to know where you stand on such addition (if properly done)?
Moreover there a couple of things that I would like your feedback on:

proper by reference buffering (maybe there is a better way to have such a buffering - AFAIK currently primitive values and structs are copied)
conflicts with chunks from std.stdio (that's why it is named chunkss - for some reason the overloading doesn't work so nicely as for the normal chunks in Range)
is it recommended to put the struct into a function or not (I have seen both styles in Phobos)
I have added a template flag that users can use if they want to obtain a non-transient buffer - is such a flag common in phobos and do you also regard it as useful?

Thanks for your input,

Here's a copy of the post from the forum, to give you the motivation
<EMAIL_ADDRESS>tl;dr: It would be nice if chunks would accept only an InputRange too.
Let me show you a common pattern that I often use:
We want to iterate over two lines in a pair and compute the difference between them, e.g.
1 2
2 3

=> 2
stdin.byLine.map!(x => x.split(' ').map!(to!int)).chunks(2)).map(x =>
abs(x.front.sum - x.dropOne.front.sum);
);
This currently doesn't compile, because chunks doesn't buffer, it saves the state of the forward range. However adding support for normal Input Ranges  can easily done using a buffer - it will of course require more memory as the .save implementation, however handling of ForwardRanges won't be affected.
I have seen this has been discussed more often [2,3]. The only argument against it was in [3] the missing manpower.
However I have already written such a simple buffering [4] in the past and would be happy to wrap this up nicely and (hopefully) bring it into a "phobos" shape - any thoughts/concerns?
[1] https://issues.dlang.org/show_bug.cgi?id=15759
[2] https://issues.dlang.org/show_bug.cgi?id=6621
[3]<EMAIL_ADDRESS>[4] https://github.com/greenify/d-itertools/blob/4afbc804e8b50c797fa206969dc3b4934911a0b9/source/splitwise.d

Are you familiar with cache and cacheBidirectional? It looks like they could be improved to do what you want.

I will open a new PR once I have time to work on cache - thanks @MetaLang


localtunnel library does not connect to hosted localtunnel instance

Specifying my own hostname and subdomain on the client does not work for some reason
       var pipeline = new HttpRequestProcessingPipelineBuilder()
            .Append(new HttpHostHeaderRewritingRequestProcessor("lt.moonlighting.dev"))
            .Build();

        var endpointFactory = new HttpsTunnelEndpointFactory("lt.moonlighting.dev", 443);

i then specify the subdomain:
        var tunnel = await client
            .OpenAsync(tunnelConnectionHandler, subdomain: $"random-api")
            .ConfigureAwait(false);

and for some reason it does not connect. If I use the CLI tool it works perfectly
Correction, it connects, but to loca.lt which is not the specified domain though...

You are trying to specify your localtunnel server as the remote endpoint. You need to set the base address to the server instead. See here:
using Localtunnel;
using Localtunnel.Endpoints.Http;
using Localtunnel.Handlers.Kestrel;
using Localtunnel.Processors;
using Microsoft.Extensions.Logging;

// Create logger factory to enable logging
var loggerFactory = LoggerFactory.Create(x => x.AddConsole().SetMinimumLevel(LogLevel.Trace));

var baseAddress = new Uri("https://lt.moonlighting.dev/"); // HERE

// You can also pass null as the loggerFactory to disable logging
using var client = new LocaltunnelClient(baseAddress, loggerFactory); // and HERE

// Build the processor pipeline
var pipeline = new HttpRequestProcessingPipelineBuilder()
    // Rewrite the host header to match the target server's host
    .Append(new HttpHostHeaderRewritingRequestProcessor("test.angelobreuer.de"))
    .Build();

// Contact the destination server using HTTPS
var endpointFactory = new HttpsTunnelEndpointFactory("test.angelobreuer.de", 443);

// Build tunnel connection handler
var tunnelConnectionHandler = new KestrelTunnelConnectionHandler(pipeline, endpointFactory);

// Open the tunnel
var tunnel = await client
    .OpenAsync(tunnelConnectionHandler)
    .ConfigureAwait(false);

// Start accepting requests
await tunnel
    .StartAsync()
    .ConfigureAwait(false);

// Keep tunnel running
await Task.Delay(-1).ConfigureAwait(false);

apologies for sounding like a tool ... but what would "test.angelobreuer.de" in this instance be?

This would be the site the tunnel will forward traffic to. So I you would open the tunnel page in the browser, the tunnel would proxy traffic to the page (here: test.angelobreuer.de).
The library allows you to do anything with the traffic you want, the HttpTunnelEndpointFactory and HttpsTunnelEndpointFactory are predefined implementations that forward the traffic to another web server.

Thanx for the quick reply.
I am using this in container while debugging :)
Does it then make sense to have:
new HttpHostHeaderRewritingRequestProcessor("localhost")
and
var endpointFactory = new HttpsTunnelEndpointFactory("localhost", <DOCKER PORT>);

Yes, that would be correct. The HttpHostHeaderRewritingRequestProcessor is used for domains that select the destination server by checking the Host header. One would use the HttpsTunnelEndpointFactory if the destination is a secured server (TLS) or HttpTunnelEndpointFactory for plain HTTP traffic.

Stale


Powerline symbols for badwolf theme in GUI mode are all white

I'd like to use VimR as my default neovim interface. However, when using the badwolf theme, all of the powerline 'arrow' symbols are white, which is not the case when running neovim in a terminal. The issue is pictured below (VimR is on top, exhibiting the incorrect colors, iTerm 2 is on the bottom, showing the proper behavior).

is this another issue with :echo has("gui_running")?

Hmm. I thought I investigated that and determined that it was not. However, I just checked again, and both :echo has("gui") and :echo has("gui_running") both report 0. That indicates to me that this is not, in fact, an issue with vim-airline-themes, but instead should be raised on VimR's issue tracker. Sorry about the extraneous issue!


Image not shown correctly after removing some other images from Table via removal of Rows

This issue is a:

[x] Issue with the OpenXml library
[ ] Question on library usage

Description
Related stackoverflow question: here. However when the process document is uploaded to SharePoint Online and if viewed in "Edit" mode the images are shown correctly but view mode again corrupts the images inside the table.
Table before removal of rows:

Table after removal of rows and in SharePoint Online "Edit mode":

Table after removal of rows and in SharePoint Online "View mode" / After downloading the file:

As shown in the last image, the images are missing however, upon inspection using OpenXML Productivity tool, it was confirmed that the imageParts in the processed document is continued to persist.
Can anyone please explain why does this happen? And how to solve this problem?

This sounds similar to #931


Pytest assertion error when comparing datetimes in parser unit tests

I don't quite understand how our CI missed this one:
            assert (html := html_mapping.get(versioned_parser)), f"Missing test HTML for parser version {version_name}"
            # compare data
            extraction = versioned_parser().parse(html.content, "raise")
            for key, value in version_data.items():
>               assert value == extraction[key]
E               assert datetime.datetime(2023, 4, 28, 19, 20, 36) == datetime.datetime(2023, 4, 28, 19, 20, 36, tzinfo=tzlocal())
tests/test_parser.py:173: AssertionError
Process finished with exit code 1

This error happens in the test for the FAZ. I am unsure how to solve this.

CI passes on master so i guess it's something on your side. Could you provide the entire pytest report?

I am not quite sure if this is what you asked for, but I hope it helps anyway. I already took a look at possible  python version differences, but I couldn't find any in https://docs.python.org/3/library/datetime.html
/home/aaron/.conda/envs/fundus/bin/python /opt/pycharm-professional/plugins/python/helpers/pycharm/_jb_pytest_runner.py --path /home/aaron/Code/Python/Fundus/tests
Testing started at 10:39 ...
Launching pytest with arguments /home/aaron/Code/Python/Fundus/tests --no-header --no-summary -q in /home/aaron/Code/Python/Fundus

============================= test session starts ==============================
collecting ... collected 116 items

tests/test_collection.py::TestCollection::test_iter_empty_collection
tests/test_collection.py::TestCollection::test_iter_collection_with_empty_publisher_enum
tests/test_collection.py::TestCollection::test_iter_collection_with_publisher_enum
tests/test_collection.py::TestCollection::test_publisher_enum_with_wrong_enum_value
tests/test_collection.py::TestCollection::test_publisher_spec_without_source
tests/test_collection.py::TestCollection::test_duplicate_publisher_names_in_same_collection
tests/test_collection.py::TestCollection::test_supports
tests/test_collection.py::TestCollection::test_search
tests/test_parser.py::test_supported_publishers_table PASSED [  0%]PASSED [  1%]PASSED [  2%]PASSED [  3%]PASSED [  4%]PASSED [  5%]PASSED           [  6%]PASSED             [  6%]
tests/test_parser.py::TestBaseParser::test_empty_parser
tests/test_parser.py::TestBaseParser::test_functions_iter
tests/test_parser.py::TestBaseParser::test_attributes_iter
tests/test_parser.py::TestBaseParser::test_supported_unsupported
tests/test_parser.py::TestParserProxy::test_empty_proxy
tests/test_parser.py::TestParserProxy::test_proxy_with_same_date
tests/test_parser.py::TestParserProxy::test_len
tests/test_parser.py::TestParserProxy::test_iter
tests/test_parser.py::TestParserProxy::test_latest
tests/test_parser.py::TestParserProxy::test_call
tests/test_parser.py::TestParserProxy::test_mapping
tests/test_parser.py::TestParser::test_annotations[DieWelt]
tests/test_parser.py::TestParser::test_annotations[MDR]
tests/test_parser.py::TestParser::test_annotations[FAZ]
tests/test_parser.py::TestParser::test_annotations[Focus]
tests/test_parser.py::TestParser::test_annotations[Merkur]
tests/test_parser.py::TestParser::test_annotations[SZ]
tests/test_parser.py::TestParser::test_annotations[SpiegelOnline]
tests/test_parser.py::TestParser::test_annotations[DieZeit]
tests/test_parser.py::TestParser::test_annotations[BerlinerZeitung]
tests/test_parser.py::TestParser::test_annotations[Tagesschau]
tests/test_parser.py::TestParser::test_annotations[DW]
tests/test_parser.py::TestParser::test_annotations[Stern]
tests/test_parser.py::TestParser::test_annotations[NTV]
tests/test_parser.py::TestParser::test_annotations[NDR]
tests/test_parser.py::TestParser::test_annotations[Taz]
tests/test_parser.py::TestParser::test_annotations[Bild]
tests/test_parser.py::TestParser::test_annotations[WAZ]
tests/test_parser.py::TestParser::test_annotations[ORF]
tests/test_parser.py::TestParser::test_annotations[APNews]
tests/test_parser.py::TestParser::test_annotations[CNBC]
tests/test_parser.py::TestParser::test_annotations[TheIntercept]
tests/test_parser.py::TestParser::test_annotations[TheGatewayPundit]
tests/test_parser.py::TestParser::test_annotations[FoxNews]
tests/test_parser.py::TestParser::test_annotations[TheNation]
tests/test_parser.py::TestParser::test_annotations[WorldTruth]
tests/test_parser.py::TestParser::test_annotations[FreeBeacon]
tests/test_parser.py::TestParser::test_annotations[WashingtonTimes]
tests/test_parser.py::TestParser::test_annotations[TheNewYorker]
tests/test_parser.py::TestParser::test_annotations[Reuters]
tests/test_parser.py::TestParser::test_annotations[OccupyDemocrats]
tests/test_parser.py::TestParser::test_annotations[TheGuardian]
tests/test_parser.py::TestParser::test_parsing[DieWelt]
tests/test_parser.py::TestParser::test_parsing[MDR]
tests/test_parser.py::TestParser::test_parsing[FAZ]
tests/test_parser.py::TestParser::test_parsing[Focus]
tests/test_parser.py::TestParser::test_parsing[Merkur]
tests/test_parser.py::TestParser::test_parsing[SZ]
tests/test_parser.py::TestParser::test_parsing[SpiegelOnline]
tests/test_parser.py::TestParser::test_parsing[DieZeit]
tests/test_parser.py::TestParser::test_parsing[BerlinerZeitung]
tests/test_parser.py::TestParser::test_parsing[Tagesschau]
tests/test_parser.py::TestParser::test_parsing[DW]
tests/test_parser.py::TestParser::test_parsing[Stern]
tests/test_parser.py::TestParser::test_parsing[NTV]
tests/test_parser.py::TestParser::test_parsing[NDR]
tests/test_parser.py::TestParser::test_parsing[Taz]
tests/test_parser.py::TestParser::test_parsing[Bild]
tests/test_parser.py::TestParser::test_parsing[WAZ]
tests/test_parser.py::TestParser::test_parsing[ORF]
tests/test_parser.py::TestParser::test_parsing[APNews]
tests/test_parser.py::TestParser::test_parsing[CNBC]
tests/test_parser.py::TestParser::test_parsing[TheIntercept]
tests/test_parser.py::TestParser::test_parsing[TheGatewayPundit]
tests/test_parser.py::TestParser::test_parsing[FoxNews]
tests/test_parser.py::TestParser::test_parsing[TheNation]
tests/test_parser.py::TestParser::test_parsing[WorldTruth]
tests/test_parser.py::TestParser::test_parsing[FreeBeacon]
tests/test_parser.py::TestParser::test_parsing[WashingtonTimes]
tests/test_parser.py::TestParser::test_parsing[TheNewYorker]
tests/test_parser.py::TestParser::test_parsing[Reuters]
tests/test_parser.py::TestParser::test_parsing[OccupyDemocrats]
tests/test_parser.py::TestParser::test_parsing[TheGuardian]
tests/test_parser.py::TestParser::test_reserved_attribute_names[DieWelt]
tests/test_parser.py::TestParser::test_reserved_attribute_names[MDR]
tests/test_parser.py::TestParser::test_reserved_attribute_names[FAZ]
tests/test_parser.py::TestParser::test_reserved_attribute_names[Focus]
tests/test_parser.py::TestParser::test_reserved_attribute_names[Merkur]
tests/test_parser.py::TestParser::test_reserved_attribute_names[SZ]
tests/test_parser.py::TestParser::test_reserved_attribute_names[SpiegelOnline]
tests/test_parser.py::TestParser::test_reserved_attribute_names[DieZeit]
tests/test_parser.py::TestParser::test_reserved_attribute_names[BerlinerZeitung]
tests/test_parser.py::TestParser::test_reserved_attribute_names[Tagesschau]
tests/test_parser.py::TestParser::test_reserved_attribute_names[DW]
tests/test_parser.py::TestParser::test_reserved_attribute_names[Stern]
tests/test_parser.py::TestParser::test_reserved_attribute_names[NTV]
tests/test_parser.py::TestParser::test_reserved_attribute_names[NDR]
tests/test_parser.py::TestParser::test_reserved_attribute_names[Taz]
tests/test_parser.py::TestParser::test_reserved_attribute_names[Bild]
tests/test_parser.py::TestParser::test_reserved_attribute_names[WAZ]
tests/test_parser.py::TestParser::test_reserved_attribute_names[ORF]
tests/test_parser.py::TestParser::test_reserved_attribute_names[APNews]
tests/test_parser.py::TestParser::test_reserved_attribute_names[CNBC]
tests/test_parser.py::TestParser::test_reserved_attribute_names[TheIntercept]
tests/test_parser.py::TestParser::test_reserved_attribute_names[TheGatewayPundit]
tests/test_parser.py::TestParser::test_reserved_attribute_names[FoxNews]
tests/test_parser.py::TestParser::test_reserved_attribute_names[TheNation]
tests/test_parser.py::TestParser::test_reserved_attribute_names[WorldTruth]
tests/test_parser.py::TestParser::test_reserved_attribute_names[FreeBeacon]
tests/test_parser.py::TestParser::test_reserved_attribute_names[WashingtonTimes]
tests/test_parser.py::TestParser::test_reserved_attribute_names[TheNewYorker]
tests/test_parser.py::TestParser::test_reserved_attribute_names[Reuters]
tests/test_parser.py::TestParser::test_reserved_attribute_names[OccupyDemocrats]
tests/test_parser.py::TestParser::test_reserved_attribute_names[TheGuardian]
tests/test_parser.py::TestUtility::test_generic_author_parsing
tests/test_pipeline.py::TestPipeline::test_crawler_with_empty_collection PASSED             [  7%]PASSED           [  8%]PASSED         [  9%]PASSED        [ 10%]PASSED  [ 11%]PASSED           [ 12%]PASSED  [ 12%]PASSED                   [ 13%]PASSED                  [ 14%]PASSED                [ 15%]Later
PASSED                  [ 16%]PASSED               [ 17%]PASSED       [ 18%]PASSED           [ 18%]PASSED           [ 19%]PASSED         [ 20%]PASSED        [ 21%]PASSED            [ 22%]PASSED [ 23%]PASSED       [ 24%]PASSED [ 25%]PASSED    [ 25%]PASSED            [ 26%]PASSED         [ 27%]PASSED           [ 28%]PASSED           [ 29%]PASSED           [ 30%]PASSED          [ 31%]PASSED           [ 31%]PASSED           [ 32%]PASSED        [ 33%]PASSED          [ 34%]PASSED  [ 35%]PASSED [ 36%]PASSED       [ 37%]PASSED     [ 37%]PASSED    [ 38%]PASSED    [ 39%]PASSED [ 40%]PASSED  [ 41%]PASSED       [ 42%]PASSED [ 43%]PASSED   [ 43%]PASSED           [ 44%]PASSED               [ 45%]FAILED               [ 46%]
tests/test_parser.py:142 (TestParser.test_parsing[FAZ])
datetime.datetime(2023, 4, 28, 19, 20, 36) != datetime.datetime(2023, 4, 28, 19, 20, 36, tzinfo=tzlocal())

Expected :datetime.datetime(2023, 4, 28, 19, 20, 36, tzinfo=tzlocal())
Actual   :datetime.datetime(2023, 4, 28, 19, 20, 36)
<Click to see difference>

self = <tests.test_parser.TestParser object at 0x7ff17d70d280>
publisher = <DE.FAZ: 3>

    def test_parsing(self, publisher: PublisherEnum) -> None:
        # enforce test coverage
        attrs_required_to_cover = {"title", "authors", "topics", "publishing_date"}

        comparative_data = load_test_case_data(publisher)
        html_mapping = load_html_test_file_mapping(publisher)

        for versioned_parser in publisher.parser:
            # validate json
            version_name = versioned_parser.__name__
            assert (
                version_data := comparative_data.get(version_name)
            ), f"Missing test data for parser version '{version_name}'"

            for key, value in version_data.items():
                if not value:
                    raise ValueError(
                        f"There is no value set for key '{key}' in the test JSON. "
                        f"Only complete articles should be used as test cases"
                    )

            # test coverage
            supported_attrs = set(versioned_parser.attributes().names)
            missing_attrs = attrs_required_to_cover & supported_attrs - set(version_data.keys())
            assert not missing_attrs, f"Test JSON does not cover the following attribute(s): {missing_attrs}"

            assert (html := html_mapping.get(versioned_parser)), f"Missing test HTML for parser version {version_name}"
            # compare data
            extraction = versioned_parser().parse(html.content, "raise")
            for key, value in version_data.items():
>               assert value == extraction[key]
E               assert datetime.datetime(2023, 4, 28, 19, 20, 36) == datetime.datetime(2023, 4, 28, 19, 20, 36, tzinfo=tzlocal())

tests/test_parser.py:173: AssertionError
PASSED             [ 47%]PASSED            [ 48%]PASSED                [ 49%]PASSED     [ 50%]PASSED           [ 50%]PASSED   [ 51%]PASSED        [ 52%]PASSED                [ 53%]PASSED             [ 54%]PASSED               [ 55%]PASSED               [ 56%]PASSED               [ 56%]PASSED              [ 57%]PASSED               [ 58%]PASSED               [ 59%]PASSED            [ 60%]PASSED              [ 61%]PASSED      [ 62%]PASSED  [ 62%]PASSED           [ 63%]PASSED         [ 64%]PASSED        [ 65%]PASSED        [ 66%]PASSED   [ 67%]PASSED      [ 68%]PASSED           [ 68%]PASSED   [ 69%]PASSED       [ 70%]PASSED [ 71%]PASSED [ 72%]PASSED [ 73%]PASSED [ 74%]PASSED [ 75%]PASSED [ 75%]PASSED [ 76%]PASSED [ 77%]PASSED [ 78%]PASSED [ 79%]PASSED [ 80%]PASSED [ 81%]PASSED [ 81%]PASSED [ 82%]PASSED [ 83%]PASSED [ 84%]PASSED [ 85%]PASSED [ 86%]PASSED [ 87%]PASSED [ 87%]PASSED [ 88%]PASSED [ 89%]PASSED [ 90%]PASSED [ 91%]PASSED [ 92%]PASSED [ 93%]PASSED [ 93%]PASSED [ 94%]PASSED [ 95%]PASSED [ 96%]PASSED [ 97%]PASSED    [ 98%]
tests/test_pipeline.py::TestPipeline::test_crawler_with_collection

======================== 1 failed, 115 passed in 0.60s =========================
PASSED [ 99%]PASSED [100%]
Process finished with exit code 1

Thanks for clarifying the title, I will try to provide additional information/provide reproducibility.

I can confirm that this happens on a clean install and python3.8. I used the following versions:
(fundus_3_8) aaron:Fundus/ (master✗) $ pip freeze                                                                                [11:54:23]
aiohttp==3.8.4
aiosignal==1.3.1
async-timeout==4.0.2
attrs==23.1.0
certifi==2023.5.7
charset-normalizer==3.1.0
click==8.1.3
colorama==0.4.6
cssselect==1.1.0
decorator==5.1.1
dill==<IP_ADDRESS>
dotmap==1.3.30
exceptiongroup==1.1.2
FastWARC==0.12.2
feedparser==6.0.10
frozenlist==1.3.3
ftfy==6.1.1
-e git+ssh://git@github.com/flairNLP/fundus.git@92bef68d23f781d9ae4bba824927c9a06414b946#egg=fundus
idna==3.4
iniconfig==2.0.0
langdetect==1.0.9
lxml==4.9.2
more-itertools==9.1.0
multidict==6.0.4
packaging==23.1
pluggy==1.2.0
pytest==7.4.0
python-dateutil==2.8.2
requests==2.28.2
sgmllib3k==1.0.0
six==1.16.0
tomli==2.0.1
tqdm==4.65.0
typing_extensions==4.7.1
urllib3==1.26.16
validators==0.20.0
wcwidth==0.2.6
yarl==1.9.2

I had a go at this, and it is weird. The problem has been narrowed down a lot. The article does provide timezone-data, but our JSON does not. These dates are parsed using two different methods. Maybe we should change this?
Anyway, the main problem is: This test should fail everywhere, this is my reasoning:
The HTML contains data which indicates a timezone, which is successfully recognized by the parser. The JSON data does not contain a timezone, which is recognized by the parser as well.
Therefore, the values should not compare equal, as stated by the documentation(https://docs.python.org/3/library/datetime.html):
If one comparand is naive and the other is aware, TypeError is raised if an order comparison is attempted. For equality comparisons, naive instances are never equal to aware instances.
But this does not fail the CI. How?
I will gather additional data once we meet in person.

Here is a small update from my side: Running pytest on a fresh installation, I get the same error as @Weyaaron.
Exact system:
  Operating System: openSUSE Leap 15.3
       CPE OS Name: cpe:/o:opensuse:leap:15.3
            Kernel: Linux 5.3.18-150300.59.106-default
      Architecture: x86-64

I can confirm that act(A tool that runs the CI locally)  acts the same. It does not fail with the current setup, although it should. This is further evidence that the CI is not working as intended. Maybe we should write a bug report? But I am not sure to whom.

This was fixed with 19766e3f6c34304265140bbbd3f202c92613b5e1