fix(bug): Modal popup incorrect position Issue

… action
📝 Description
This PR resolves issue #2090, where modal popup position is incorrect when adding event handler to action during left pannel is close as shown:
Issue:

Here the position of modal popup is incorrect.

Add a brief description.
💣 Is this a breaking change (Yes/No):

[ ] Yes
[x] No

🚧 How to migrate?
Don't need.
📝 Additional Information
The problem seems that the BaseModal width is set to 400px as shown in below snippet:
// Modal Component that is return
  return (
    <div css={css(modalWrapperStyle, _css)}>
      {_header}
      <Suspense>{renderBody}</Suspense>
      {extraElement}
    </div>
  )

// Style of Modal
export const modalWrapperStyle = css`
  width: 400px;
`

which causes the BaseModal(Popup) to move from left to rigth as the the actionList pannel min width and width is 255px. The reson is that on closing the left pannel only actionList Pannel width 255px width remains. which causes popup to move right.
By changing the width of the actionList and BaseModal the Popup remain in correct position.
Left pannel enable:

Left pannel disable:

lol

@ManishDait May be cuase other bug.Plz check EventHanlder Modal position when open on Inspect panel.

Hi @AruSeito, I've made some updates. Could you please review them and provide any feedback or suggestions if necessary?

Sorry, @ManishDait
The current changes do not meet our design specifications, I need to communicate with our designer

Ok

Dear user,
Thank you for taking the time to submit a pull request to our open-source project. We appreciate your contribution and enthusiasm for our project.
After careful consideration and discussion within our team, we think that changing the popup position, such as having it appear at the indicated location when there is insufficient space on the left side, would be a better option.

Looking forward to your update.


Bring BodySyntaxMapping in line with other source-map instances

rename to SourceMap
don't store the actual body inline, just return a pair

r? @flodiebold

bors r+


Add a warning when accessing theme prematurely and fix surfaced issues

As noted by @KoBeWi when working on https://github.com/godotengine/godot/pull/73447, we often have these issues due to theme items being accessed too early, inside of the class' constructor. On top of that, there is often code missing to update such items on theme changes. At the earliest, node can access its own theme fetching methods during NOTIFICATION_POSTINITIALIZE.
So with this PR I'm attempting to catch all these errors. First of all, I'm adding a warning to all get_theme_<item_type> and has_theme_<item_type> in both Control and Window. Maybe some other methods of those classes should have a warning added as well, but that's enough for a start. Warnings are only dispatched once to prevent spam, and suggest using NOTIFICATION_POSTINITIALIZE and NOTIFICATION_THEME_CHANGED.

Second of all, and as a result of the first step, quite a few places were exposed and needed an update. 🙃 In the GUI code, TextEdit, CodeEdit, and ColorPicker are notable for these issues. For the most part this is because I haven't touched them when reworking theme cache before. The *Edits had some caching already and felt quite complex, and ColorPicker was being refactored at the time. So instead of just patching things, I moved all theme accessors to the new theme cache rails, and that solved everything.
In the editor code all sorts of things happen, and I generally tried to patch things instead of reworking them, though in a couple of places implementing theme cache was the easiest option. All in all, opening the editor now yields no warnings for me. But there are probably some other nodes that don't get initialized immediately, though that should be handled with follow-up PRs.
While not critical, this clean-up should prevent theming related issues in the future, and helps keeping the codebase consistent and organized. Putting it on the 4.1 milestone, because I could've made stupid typos while working on this, but if you feel lucky, can also be merged in 4.0 👀

Multiple commits for obvious reasons. All commits are technically independent, but the first one is useful to test the other 3 (in any order).

because I could've made stupid typos while working on this

Well, what do you know, there were a couple of issues with TextEdit and CodeEdit. Should be good now.

Rebased on top of https://github.com/godotengine/godot/pull/74729, tested and noticed no warnings in PM @KoBeWi

Thanks!


Fixing async code fragment

The async example for a C# function does return a string where a Task<string> is expected. Changing to use Task.FromResult though the use of the async modifier would be fine too (however, it'd result in a warning of missing any await in the body, and I didn't want to add an await Task.Delay(x) to the code just to make that go away).

@bartdesmet,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

@bartdesmet : Thanks for your contribution to the Azure documentation! The author, @lindydonna, has been notified to review your proposed change.

@bartdesmet thanks for catching and fixing this bug. #sign-off for @lindydonna.


bump default target opset to 11

Closes #211.

Codecov Report

Merging #214 into master will decrease coverage by 0.04%.
The diff coverage is 85.71%.

@@            Coverage Diff             @@
##           master     #214      +/-   ##
==========================================
- Coverage   94.26%   94.22%   -0.05%
==========================================
  Files          37       37
  Lines        1900     1904       +4
  Branches      330      331       +1
==========================================
+ Hits         1791     1794       +3
  Misses         57       57
- Partials       52       53       +1

Flag
Coverage Δ

#unittests
94.22% <85.71%> (-0.05%)
:arrow_down:

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

Impacted Files
Coverage Δ

hummingbird/ml/_topology.py
89.83% <85.71%> (-1.08%)
:arrow_down:

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 9e2b4d6...c5277ad. Read the comment docs.


Init Websockets

closes #273

@Cahllagerfeld Looks like this could just be merged straight away as it's just adding dependencies.

Its just a draft, (hopefully) there are a few things added to the PR


[chore] added more examples.

Acceptance Checklist:

[x] All commits have been squashed to one.
[x] The commit message follows the guidelines in CONTRIBUTING.md.
[x] Documentation (README.md) and examples have been updated as needed.
[x] If this is a code change, a spec testing the functionality has been added.
[x] If the commit message has [changed] or [removed], there is an upgrade path above.

Coverage remained the same at 85.714% when pulling 66a004e966f722d75d4469de527aa3b76b17b0b9 on diasbruno:chore/added-more-examples into b67ad54db13a0a4a55f2e8781db8af7e548498d0 on reactjs:master.

Coverage remained the same at 85.714% when pulling 66a004e966f722d75d4469de527aa3b76b17b0b9 on diasbruno:chore/added-more-examples into b67ad54db13a0a4a55f2e8781db8af7e548498d0 on reactjs:master.

Coverage remained the same at 85.714% when pulling 66a004e966f722d75d4469de527aa3b76b17b0b9 on diasbruno:chore/added-more-examples into b67ad54db13a0a4a55f2e8781db8af7e548498d0 on reactjs:master.


Add Default constraint to PrimInt

I don't see any reason to intentionally leave off a Default trait bound, and it's useful to have. Note that this is technically a breaking change for anyone who has implemented PrimInt for their own types, so it should probably be part of num-traits 0.3 instead of 0.2.2.

I have no short-term plans to make breaking changes.  Rather than leaving a PR in limbo, can you file a tracking issue for this?  #36 also wanted Display and Debug.

Okay. I created issue #44.

Thanks!


Resolved code issues of gofmt and golint

Code quality: https://goreportcard.com/report/github.com/google/uuid

https://github.com/avelino/awesome-go/pull/3008


What is the correct way to use the require_soc2_review reviewer option?

Based on the option definitions, I assumed I could set it for the Github Actions version of the PR Agent like this:
PR_REVIEWER.REQUIRE_SOC2_REVIEW: true

However, I do not see the label on PRs that does not include a ticket identifier.
References
https://github.com/Codium-ai/pr-agent/blob/b33b8c12cd2bb049e34df9863f6261180e8d8afd/pr_agent/settings/configuration.toml#L27C1-L28

This feature is available only for PRO users, as clearly stated in several places(💎)
https://github.com/Codium-ai/pr-agent?tab=readme-ov-file#features-overview
https://github.com/Codium-ai/pr-agent/blob/main/docs/REVIEW.md#soc2-ticket-compliance-

Thanks! I missed the legend for the "pro" 💎 icon.

No problems.


Question: Manipulate items

@EdsonBueno Thanks a lot for the awesome library, I love it!
We have appendPage and appendLastPage methods to add items to infinite scroll. I have a delete button, when press it, I want to delete an item, is it possible to manipulate items? how?
I don't want to call refresh() method , I just want to delete an item

I found that itemList has a setter , WOW!


Create Contact

Hi, I am Jorge from Freelancer.com
I can see your account was closed in freelancer platform
I completed the task 2 days ago already, and am waiting you.
<EMAIL_ADDRESS>This is my email.
Can you contact me over this?


[Model Enhancement]: Leukaemia Classification using DL

Pull Request for DL-Simplified 💡
Issue Title : #569 Leukaemia Classification using DL

Info about the related issue (Aim of the project) : adding CNN-Attention model for Leukaemia Classification
Name: Arihant Bhandari
GitHub ID: Arihant-Bhandari https://github.com/Arihant-Bhandari
Email ID<EMAIL_ADDRESS>Idenitfy yourself: GSSoC 2024 Contributor

Closes: #569 Leukaemia Classification using DL
Describe the add-ons or changes you've made 📃
Added the CNN-Attention model, added the Accuracy-Loss plot, enhanced README file, changed typos in Chocolate Classififcation using DL README alongside this project.
Type of change ☑
What sort of change have you made:

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] Code style update (formatting, local variables)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update

How Has This Been Tested? ⚙
Accuracy: 85.8%
Loss: 0.39
Checklist: ☑

[x] My code follows the guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly wherever it was hard to understand.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.
[x] I have added things that prove my fix is effective or that my feature works.
[x] Any dependent changes have been merged and published in downstream modules.

hi @abhisheks008 please review this PR, thank you for your time and patience as always.
as required, changes have been made.

hi @abhisheks008 pls review, made requested changes.


Automated cherry pick of #8318

Cherry pick of #8318 on cloud.
/cc  @Willyfrog

/release-note-none


date handling in 1.0

This came up as a discrepancy between mithril-node-render and mithril's parseQueryString module in 1.0
https://jsfiddle.net/ACXgit/otmd6qL7/2/
Basically, parseQueryString("?date=2016-01-01") yields a Date object in parseQueryString but it yields a string in mithril-node-render

So upon further discussion, it came up that date parsing is really messy, so I decided to match parseQueryString behavior to mithril-node-render behavior


Certificates for minos.run?

Hi! I'm wanting to read your site/ docs, but my browser doesn't let me go there:

And I'm hoping you might be able to consider adding https for a secure connection. Thank you!

The website certificate was added, we can close the following issue


Update file location of SearchOptions

The SearchOptions interface is exported from src/api/Cards.ts. This updated the docs to link to the appropriate file

Whoops, thanks!


chore: import repository https://github.com/sagarshrestha24/andriod1.git

this commit will trigger a pipeline to generate the CI/CD configuration which will create a second commit on this Pull Request before it auto merges

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign
You can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

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


Admin view: Bar Chart

At the moment, bar charts can go outside the graph area :sweat_smile:

Has been fixed since commit 00210b5


Adds CombatPlugin support with Placeholder!

Adds CombatPlugin support so player's don't die on PlayerQuitEvent due to moving across borders
Adds PlaceholderAPI as dependency!
NOTE: forgot to ad PlaceholderAPI on pom.xml, can be an issue on startup, be aware <3

How does this work exactly? Which plugin is this integrating with?

DonutCombat receives the call from PlaceholderAPI which contains Player instance as parameter, the placeholder is called when the player is being teleported to another mammoth instance, if the placeholder is called with the specific player on parameter on playerquit he wont be killed due to leaving while in combat.


uqbar_process_lib version to latest

Looks like this PR is working with an older version of templates/: I've opened & merged #14 to bump the versions as you do here.


Publish 11/08/2021, 3:30 PM

Docs Build status updates of commit d836b38:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/Get-MailboxJunkEmailConfiguration.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Set-MailboxJunkEmailConfiguration.md
:white_check_mark:Succeeded
View (exchange-ps)

skype/skype-ps/skype/Get-CsOnlineAudioFile.md
:white_check_mark:Succeeded
View (skype-ps)

skype/skype-ps/skype/Import-CsOnlineAudioFile.md
:white_check_mark:Succeeded
View (skype-ps)

skype/skype-ps/skype/New-CsOnlineAudioFile.md
:white_check_mark:Succeeded
View (skype-ps)

skype/skype-ps/skype/Remove-CsOnlineAudioFile.md
:white_check_mark:Succeeded
View (skype-ps)

skype/skype-ps/skype/export-csonlineaudiofile.md
:white_check_mark:Succeeded
View (skype-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


quiting terminal doens't end program and also the underscore not visible

Issue Type: Bug
try runing node server and quit the program by ctrl+c, it doesn't end the program.. The port will be still in use.
VS Code version: Code 1.33.0 (0dd516dd412d42323fc3464531b1c715d51c4c1a, 2019-04-04T15:08:57.775Z)
OS version: Linux x64 4.15.0-47-generic snap

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz (4 x 1777)

GPU Status
2d_canvas: disabled_softwarechecker_imaging: disabled_offflash_3d: disabled_softwareflash_stage3d: disabled_softwareflash_stage3d_baseline: disabled_softwaregpu_compositing: disabled_softwaremultiple_raster_threads: disabled_offnative_gpu_memory_buffers: disabled_softwarerasterization: disabled_softwaresurface_synchronization: disabled_offvideo_decode: disabled_softwarewebgl: disabled_offwebgl2: disabled_off

Load (avg)
1, 1, 1

Memory (System)
15.37GB (5.69GB free)

Process Argv

Screen Reader
no

VM
0%

Extensions (1)

Extension
Author (truncated)
Version

gc-excelviewer
Gra
2.1.32

Underscore issue sounds like a duplicate of #35901
If it wasn't a duplicate I'd urge you to create a separate issue for it. "One issue per report" is part of the guidance at https://github.com/Microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions

If ctrl+c is causing the issue it must be node's fault, we simply tell the process (bash, node, w/e, we don't know what's on the other side) that ctrl+c was hit and it actions it.


No tag on docker hub

You got 0.1.1 here but not at https://hub.docker.com/r/starefossen/transporter/

Thanks for the ping @ssunzulily, I will look into it.

Fixed, I have added :0.1.1, :0.1 and :0 and :latest tags :)


In lines 201 and 202 of the code, both alpha and alpha_bar use the same set of parameters.

https://github.com/luost26/diffab/blob/c3e2966601bf8025025ab87717b31b08fdd4834e/diffab/modules/diffusion/transition.py#L201C9-L201C61

Yes. I had the same question about the calculation of the sequence posterior.
Can the authors please comment?


mobile: Remove the deprecated Stream::sendData and Stream::close

Risk Level: low
Testing: CI
Docs Changes: n/a
Release Notes: n/a
Platform Specific Features: mobile

/assign @abeyad


Jaeger ingester panics on convertProcess function

Describe the bug
The Jaeger ingester is panicking when taking data from kafka and attempting to write it into elasticsearch.
I believe the following code is the reason for the panic.
https://github.com/jaegertracing/jaeger/blob/4f55a70524b29ef87178b4deffbd5a99be5d017a/plugin/storage/es/spanstore/dbmodel/from_domain.go#L123
There seems to be no safeguards for a null process or null tags?
This is the following stack trace
{"level":"info","ts":1646779105.5014815,"caller":"consumer/processor_factory.go:65","msg":"Creating new processors","partition":31}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0xd94dc6]

goroutine 84516 [running]:
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.convertProcess(...)
	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:123
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.convertSpanEmbedProcess({0x0, 0xc0003c48a0, {0x1499618, 0xf23872}}, 0xc00c544690)
	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:64 +0x126
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.FromDomainEmbedProcess(...)
	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:43
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore.(*SpanWriter).WriteSpan(0xc0005f8cc0, {0x0, 0x0}, 0xc00c544690)
	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/writer.go:152 +0x7a
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.KafkaSpanProcessor.Process({{0x14ad480, 0x1dee2a8}, {0x14ad340, 0xc0005f8cc0}, {0x0, 0x0}}, {0x14af760, 0xc0111950e0})
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/span_processor.go:67 +0xd3
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator.(*retryDecorator).Process(0xc00008f180, {0x14af760, 0xc0111950e0})
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator/retry.go:110 +0x37
github.com/jaegertracing/jaeger/cmd/ingester/app/consumer.(*comittingProcessor).Process(0xc0085cfaa0, {0x14af760, 0xc0111950e0})
	github.com/jaegertracing/jaeger/cmd/ingester/app/consumer/committing_processor.go:44 +0x5e
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*metricsDecorator).Process(0xc00f38fa00, {0x14af760, 0xc0111950e0})
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/metrics_decorator.go:44 +0x5b
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start.func1()
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:57 +0x42
created by github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:53 +0x10c

To Reproduce
We aren't sure how to reproduce this as the only component panicking is the ingester.
We also haven't seen what set of traces are causing this.
The best way to attempt to reproduce this could be to send a trace to the collector without process tags. We just haven't tried that yet.
Expected behavior
We expect the Jaeger ingester to gracefully handle any "bad" data and give us the configuration to either panic or discard the data.
Screenshots
N/A
Version (please complete the following information):

OS: Amazon Linux 2 (5.4.176-91.338.amzn2.x86_64)
Jaeger version: 1.31.0 ( We were on 1.20.0 and didn't see this issue)
Elastic version: 7.16.2
Kafka version: quay.io/strimzi/kafka:0.25.0-kafka-2.8.0
K8s version: 1.19 ( We are also seeing this on 1.21)
Deployment: Kubernetes via Operator

What troubleshooting steps did you try?
We tried downgrading the ingesters back to 1.20.0 and saw the same issue.
We recreated the Jaeger deployment and still saw the issue.
The only temporary fix was clearing the kafka queue, which implies bad data is making it to the queue.
Additional context
We are going to add collector tags to everything which should force process tags if I am reading the doc correctly.
https://www.jaegertracing.io/docs/1.32/cli/#jaeger-collector-kafka
--collector.tags |
-- | --
One or more tags to be added to the Process tags of all spans passing through this collector. Ex: key1=value1,key2=${envVar:defaultValue}

It's certainly possible to add defensive check, but I would rather not do that because process=null is malformed span data that will cause problems later anyway, because all processing in Jaeger expects process.serviceName to be defined.

There are a few places that use the parent function (FromDomainEmbedProcess).
Couldn't we just add second return value of "error" and bubble it up to function that is trying to write the span?
The goal wouldn't be to pass the bad data or even transform it. We just want to inform the logs that a bad span made it to the Ingester and have the original caller of (FromDomainEmbedProcess) skip the write.

+1

Hi,
I'm having the exact same problem.
Did you solve it with the --collector.tags you mentioned?
I'm not sure which tag to add.
Thanks.

Please describe your setup - which SDK (lang, version) you're using to emit traces, and what the pipeline looks like (OTEL collector? Jaeger collector? Jaeger ingester? which protocol between the SDK and the backend?)

We are using jaeger for Thanos tracing. The current structure is thanos -> jaeger agent -> jaeger collector -> AWS msk -> jaegeringester -> elasticsearch.
When the ingester pod was failed, the log found that the key and value were null and that panic: runtime error: invalid memory address or nil pointer reference occurred.

What tracing SDK does Thanos code use?

Are you talking about the package that Thanos is using?
It uses below packages.

github.com/opentracing/basictracer-go
github.com/opentracing/opentracing-go
github.com/uber/jaeger-client-go
github.com/uber/jaeger-lib

Hi, I'm having the exact same problem. Did you solve it with the --collector.tags you mentioned? I'm not sure which tag to add.
Thanks.

No, we saw the same behavior after a few days after adding tags everywhere.
We decided to downgrade back to 1.20 and slowly upgrade over time to see when it was introduced.
As of writing we haven't experienced the behavior again, although our collectors are experiencing a different kind of panic. It happens infrequently enough for it to not cause problems.
I spoke to my team about this and I don't have the bandwidth to work on a solution to this for now.
Hopefully someone from the community picks this up. ( At least until I find the time )

Can someone provide me with guidance

take a debug base64 message and run it thru a debug flow?

I put a PR to sanitize spans with empty service name or null process. This should protect the pipeline from malformed spans submitted externally. It will not protect against malformed spans written directly to Kafka - we could do that too, but it changes the expectations of the deployment that Kafka is a public API into ingester, which would be a new guarantee and will require ingester to run preprocessing logic similar to collector.

I also experienced this issue.  It occurred twice and both times were during a kafka maintenance which caused the collector to buffer and unfortunately OOM.  After the kafka queue was cleared, both times, everything worked.  No changes on the client library side.

@seanw75 thanks for update. Did the Kafka maintenance cause data corruption in the queue? It seems that the collector OOM-ing should only result in lost data, not corrupted data in Kafka. Also, you're probably running with too high setting for the collector's internal queue capacity, you may want to tune is to that the collector would start dropping spans prior to enqueueing them rather than causing OOM.

@yurishkuro - Yeah, I had everything at the default from the operator for the collector regarding memory and internal queue - which obviously wasn't enough.  Already took steps to avoid OOM.  As for it being kafka data corruption or collector writing a corrupt record - Hard to tell - what I can say is that the kafka server has many other topics on it and this was the only one that experienced any type of corruption from what I could see.

The processing in the ingester is really barebones
https://github.com/jaegertracing/jaeger/blob/cdbdb926b669e3be9581b6389aff2d7e6b9e06f2/cmd/ingester/app/processor/span_processor.go#L61-L68
It feels weird to me to be adding data format validation at this point, especially if the root cause is data corruption, which can affect any other aspect of the span message, not just the null process that came up in the exception.

The collector seems to writing null message to Kafka topic, that seems to cause the panic in the ingester
{"level":"debug","ts":1650237044.222346,"caller":"consumer/consumer.go:138","msg":"Got msg","msg":{"Headers":null,"Timestamp":"0001-01-01T00:00:00Z","BlockTimestamp":"0001-01-01T00:00:00Z","Key":null,"Value":null,"Topic":"tools_tools_us_prod_jaeger_spans","Partition":2,"Offset":39319}}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x198f046]

goroutine 148 [running]:
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.convertProcess(...)
	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:123
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.convertSpanEmbedProcess({0x40, 0xc000518d80, {0x2094088, 0x1b1eaf2}}, 0xc0003b85a0)
	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:64 +0x126
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.FromDomainEmbedProcess(...)
	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:43
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore.(*SpanWriter).WriteSpan(0xc0005205a0, {0x0, 0x0}, 0xc0003b85a0)
	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/writer.go:152 +0x7a
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.KafkaSpanProcessor.Process({{0x20a8120, 0x29ebfc0}, {0x20a7fe0, 0xc0005205a0}, {0x0, 0x0}}, {0x20aa520, 0xc00028caa0})
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/span_processor.go:67 +0xd3
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator.(*retryDecorator).Process(0xc00019c230, {0x20aa520, 0xc00028caa0})
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator/retry.go:110 +0x37
github.com/jaegertracing/jaeger/cmd/ingester/app/consumer.(*comittingProcessor).Process(0xc0005d1bc0, {0x20aa520, 0xc00028caa0})
	github.com/jaegertracing/jaeger/cmd/ingester/app/consumer/committing_processor.go:44 +0x5e
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*metricsDecorator).Process(0xc00041c340, {0x20aa520, 0xc00028caa0})
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/metrics_decorator.go:44 +0x5b
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start.func1()
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:57 +0x42
created by github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start
	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:53 +0x10c

The processing in the ingester is really barebones
https://github.com/jaegertracing/jaeger/blob/cdbdb926b669e3be9581b6389aff2d7e6b9e06f2/cmd/ingester/app/processor/span_processor.go#L61-L68
It feels weird to me to be adding data format validation at this point, especially if the root cause is data corruption, which can affect any other aspect of the span message, not just the null process that came up in the exception.

The ingester - if seeing an invalid message, should just log and skip.

We are rolling out tracing to our production environment and seeing more and more panic jaeger investor (current backlog is ~25M messages)
How can I help to fix this bug?

@HaroonSaid - the only solution I know about is to lower your TTL in your kafka topic and have the corrupt kafka messages removed until there is a fix to the ingester to do some validation.  In my own experience, we only got this issue when we were doing maintenance on our kafka servers, that then caused the collector to OOM.  The segfault continued until we cleared out the kafka queue and then things stabilized.
That being said, something that may help Yuri is:

Are your kafka servers stable?
Is the connection between the collector and kafka stable?
Are your collectors stable (ie not OOMing)
What version of collector/ingester are you using?

At this point I don't know what is wrong with the messages that cause panic. We already skip messages that are cannot be deserialized. I have a fix for null Process fix that you can try, but if it's a random corruption, it won't help. Being isolated to the Process field does not sound like random to me.

Is there a way for me to deserialize the base64 message that looks like it might be a problem ?
I typically see a null message, followed by another message in the debug trace
My current workaround is to change the offset (increase by 1) re-run in debug mode find the next bad message skip and rerun until all bad messages have been skipped

Why is it base64?
We could certainly add a util that would read a message from a file, try to parse it into the data model, and then re-serialize that data model into JSON for inspection.

Why is it base64?
We could certainly add a util that would read a message from a file, try to parse it into the data model, and then re-serialize that data model into JSON for inspection.

When jaeger-ingester is run in debug mode (--log-level debug) it prints the incoming message.
The message value and key are encoded in base64.
I don't have a program to convert from base64 to span protobuf message.
I guess my question is,  If I have an input message - is there any way to feed it into the ingester to find what it's complaining about.   Did any developer create a simple program for debugging purposes?
if not - please provide some hints so that I can write it and call the appropriate library - and find out whats the offending message and write a workaround.

I am not aware of such single-message testing setup (sounds like a good idea), but you can always reproduce it by running Kafka locally and using Kafka CLI to write a message to a topic and letting ingester process it
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

would be good to have a docker-compose file for that ^

I am not aware of such single-message testing setup (sounds like a good idea), but you can always reproduce it by running Kafka locally and using Kafka CLI to write a message to a topic and letting the ingester process it
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

For me to run ingester locally, I still need to create a bad message.  the only bad message(s) that I have are the debug trace.  I still need a way to convert the debug trace message into a real message and stick it into Kafka to re-produce.
Just want to make sure, we are on the same page.  No one has written a debug trace (json) message to protobuf message convertor?

I thought you said you have base64-encoded message, which I assumed would be binary protobuf (otherwise why base64).
We don't have any standalone conversion utils.

The tracing going great in our production environment, we were processing several billion spans and suddenly we start seeing panic
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0xd93886]
"panic: runtime error: invalid memory address or nil pointer dereference
"
{"level":"info","ts":1652926531.4554677,"caller":"consumer/processor_factory.go:65","msg":"Creating new processors","partition":11}
{"level":"info","ts":1652926531.449849,"caller":"consumer/processor_factory.go:65","msg":"Creating new processors","partition":10}
{"level":"info","ts":1652926531.4402878,"caller":"consumer/consumer.go:110","msg":"Starting message handler","partition":10}
{"level":"info","ts":1652926531.4402316,"caller":"consumer/consumer.go:167","msg":"Starting error handler","partition":10}
{"level":"info","ts":1652926531.43911,"caller":"consumer/consumer.go:110","msg":"Starting message handler","partition":12}
{"level":"info","ts":1652926531.4390614,"caller":"consumer/consumer.go:167","msg":"Starting error handler","partition":12}
{"level":"info","ts":1652926531.4358554,"caller":"consumer/consumer.go:110","msg":"Starting message handler","partition":11}
{"level":"info","ts":1652926531.4358284,"caller":"consumer/consumer.go:167","msg":"Starting error handler","partition":11}
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:53 +0x10c
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:53 +0x10c
"created by github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start
"
"created by github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start
"
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:57 +0x42
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:57 +0x42
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start.func1()
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start.func1()
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/metrics_decorator.go:44 +0x5b
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/metrics_decorator.go:44 +0x5b
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*metricsDecorator).Process(0xc00008d040, {0x14af600, 0xc000130fa0})
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*metricsDecorator).Process(0xc000452780, {0x14af600, 0xc0000ce320})
github.com/jaegertracing/jaeger/cmd/ingester/app/consumer/committing_processor.go:44 +0x5e
github.com/jaegertracing/jaeger/cmd/ingester/app/consumer/committing_processor.go:44 +0x5e
github.com/jaegertracing/jaeger/cmd/ingester/app/consumer.(*comittingProcessor).Process(0xc0002960f0, {0x14af600, 0xc000130fa0})
github.com/jaegertracing/jaeger/cmd/ingester/app/consumer.(*comittingProcessor).Process(0xc000358360, {0x14af600, 0xc0000ce320})
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator/retry.go:110 +0x37
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator/retry.go:110 +0x37
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator.(*retryDecorator).Process(0xc00017f2d0, {0x14af600, 0xc000130fa0})
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator.(*retryDecorator).Process(0xc0001daa80, {0x14af600, 0xc0000ce320})
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/span_processor.go:67 +0xd3
github.com/jaegertracing/jaeger/cmd/ingester/app/processor/span_processor.go:67 +0xd3
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.KafkaSpanProcessor.Process({{0x14ad320, 0x1def2a8}, {0x14ad1e0, 0xc000288ea0}, {0x0, 0x0}}, {0x14af600, 0xc000130fa0})
github.com/jaegertracing/jaeger/cmd/ingester/app/processor.KafkaSpanProcessor.Process({{0x14ad320, 0x1def2a8}, {0x14ad1e0, 0xc0004cea20}, {0x0, 0x0}}, {0x14af600, 0xc0000ce320})
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/writer.go:152 +0x7a
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore.(*SpanWriter).WriteSpan(0xc000288ea0, {0x0, 0x0}, 0xc0003c8780)
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:43
"github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.FromDomainEmbedProcess(...)
"
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:64 +0x126
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.convertSpanEmbedProcess({0xc0, 0xc0000c4060, {0x1499478, 0xf23312}}, 0xc0003c8780)
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:123
"github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.convertProcess(...)
"
goroutine 95 [running]:
"
"
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0xd93886]
"panic: runtime error: invalid memory address or nil pointer dereference
"```

@juan-ramirez-sp Glad to hear, but to be clear, the fix is just preventing the crash by replacing empty Process with Process{ServiceName: "unknown"}, so that the spans can still be saved and inspected later for their origin. We have not found out the root cause of this issue.

I've confirmed we are getting the same error again.
All components are running 1.35.2, and we performed a direct upgrade.
github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.convertProcess(...) 	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:123 github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.convertSpanEmbedProcess({0x0?, 0xc000222ae0?, {0x15a7e88?, 0x1?}}, 0xc0000faff0) 	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:64 +0x126 github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel.FromDomain.FromDomainEmbedProcess(...) 	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/dbmodel/from_domain.go:43 github.com/jaegertracing/jaeger/plugin/storage/es/spanstore.(*SpanWriter).WriteSpan(0xc0001d3d40, {0x0?, 0x0?}, 0xc0000faff0) 	github.com/jaegertracing/jaeger/plugin/storage/es/spanstore/writer.go:152 +0x7a github.com/jaegertracing/jaeger/cmd/ingester/app/processor.KafkaSpanProcessor.Process({{0x15ac040, 0x1e84f90}, {0x15abec0, 0xc0001d3d40}, {0x0, 0x0}}, {0x15aeac0?, 0xc0003f8d20?}) 	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/span_processor.go:67 +0xd3 github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator.(*retryDecorator).Process(0xc000089b20, {0x15aeac0, 0xc0003f8d20}) 	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/decorator/retry.go:110 +0x37 github.com/jaegertracing/jaeger/cmd/ingester/app/consumer.(*comittingProcessor).Process(0xc000375410, {0x15aeac0, 0xc0003f8d20}) 	github.com/jaegertracing/jaeger/cmd/ingester/app/consumer/committing_processor.go:44 +0x5e github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*metricsDecorator).Process(0xc000128180, {0x15aeac0, 0xc0003f8d20}) 	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/metrics_decorator.go:44 +0x5b github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start.func1() 	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:57 +0x42 created by github.com/jaegertracing/jaeger/cmd/ingester/app/processor.(*ParallelProcessor).Start 	github.com/jaegertracing/jaeger/cmd/ingester/app/processor/parallel_processor.go:53 +0xf5

We are having the same issue with the setup of ElasticSearch backend after upgrading it from 7.17.2 (Jaeger 1.30.0 works great with this) to 7.17.5.
It seems like either the process / process.Tags was null. Adding a safeguard there might solve this?

We've deployed 1.37 to our clusters and confirmed it catches the bad message correctly.
Thanks again for working on this!

@juan-ramirez-sp Does catching mean that it also clears those bad messages from Kafka, or are those kept in the Kafka cluster?

@BlackDex The linked PR could answer it better than I can, https://github.com/jaegertracing/jaeger/pull/3819
I didn't notice multiple error messages so I assume it did clear them from kafka.


Add worker and master removal tests

Why is this PR needed?
We want to test removing a node from a cluster to make sure it doesn't break anything.
Fixes https://github.com/SUSE/avant-garde/issues/812 https://github.com/SUSE/avant-garde/issues/872
What does this PR do?
Adds ability to add and extra master and worker for testing
Adds fixtures that add nodes then cleans them up if they still exist
Made it so only 3 masters and 2 workers are added to the initial deployment
Adds tests for removing workers and masters
Waits for Nodes to be ready before checking pod status
Ignores completed pods when checking pod status
Anything else a reviewer needs to know?
Merge restrictions
(Please do not edit this)
We are in v4-maintenance phase, so we will restrict what can be merged to prevent unexpected surprises:
What can be merged (merge criteria):
    2 approvals:
        1 developer: code is fine
        1 QA: QA is fine
    there is a PR for updating documentation (or a statement that this is not needed)

@pablochacin I think using the functionality from https://github.com/SUSE/skuba/pull/739 would make this test better. I don't think we should be removing anything from the initial cluster. This would also remove the need for setting the initial cluster size outside the config file.
If this test is changed to be done after bootstrap then I think we would need to change how the pipeline handles the node joining. That or mark this test as disruptive and create a separate pipeline.
I think eventually we could have everything past initial provisioning ran as a test. Then we could change https://github.com/SUSE/skuba/blob/eb0c87232529ea05b25dd4733f142d29b9d3c541/ci/Makefile#L17 and https://github.com/SUSE/skuba/blob/eb0c87232529ea05b25dd4733f142d29b9d3c541/ci/Makefile#L41 to something like ${TEST_RUNNER} -v vars.yaml -p ${PLATFORM} test --verbose --suite test_bootstrap.py and ${TEST_RUNNER} -v vars.yaml -p ${PLATFORM} test --verbose --suite test_join_nodes.py
That way we could move further away from using testrunner as a cluster management tool.

Maybe we should have some follow up issue or TODO comment to eventually implement some proper "wait for cluster to be ready" function? I guess that wait_for_pods was too simple and didn't take some other things in the account.

@tdaines42
Beyond the comments I made to the code, I will repeat here some comments I made about this approach for testing adding/removing nodes from the terraform deployment.
I think that if we want to test this (and here we are testing basically the terraform templates not skuba itself) we should do this without including this logic in testrunner unless we do in a way which is compatible with the way users would do it. I'm not sure now exactly how this should be tested. Maybe people more familiar with e2e testing (@jordimassaguerpla?) could offer some insight here.
My concern is basically to keep including logic in test runner which possibly belongs to specific test cases adding complexity to the code, affecting its maintainability.


All resources convert to AMD and bundle all files to HTML and can be download it

Example: A local file named gazo.png
OPEN
Open gazo.png with HTML5 File API =>
Load as base64 =>
game.postMessage({
  files: [
    //...
    {
      filename: 'gazo.js',
      code: `module.exports = Hack._e_g_loadImage('/*--base64--*/'); `
    }
  ]
});

=>
// game.html
var gazo = require('gazo'); // === Hack._e_g_loadImage('/*--base64--*/');

DOWNLOAD
<!-- downloaded.html -->
<script data-filename="gazo" type="hack">
module.exports = Hack._e_g_loadImage("/*--base64--*/");
</script>

Put into a LICENSE each files when open the file.
author
licence
date
homepage
Save license into javascript. (not in binary)


Added length check to re-enabled @path("/")

This fixes a regression introduced by #1001. The following triggered an out of bounds error:
interface APIv1Countries {
    import vibe.web.rest;
    @path("/") @property Bson get();
}

Oops. But wouldn't that also allow @path("///") ?
Maybe we should special case "/" and add a check for empty entries:
static if (pathAttr.found && pathAttr.value != "/") {
auto sp = pathAttr.value.data.splitter('/');
foreach (elem; sp) {
  if (!elem.length)
    return "%s: Path '%s' contains empty entries".format(FuncId, pathAttr.value)
  if (elem[0] == ':') {

This would be consistent with what vibe.inet.path does.
Also, it could use an unittest.

@Geod24 Sounds like a good idea. I'll merge like this and add the additional check/unit tests so that I can quickly tag a new RC.

Thanks @s-ludwig, I would have added it later this evening, but I'm busy now.


[MWPW-140669][Milo - Interactive marquee] missed specs from Figma file #2 and #4

Resolved the discrepancies that listed in the jira for GenFill marquee (issue 2 and 4)
Changed the button to 50px height (button-xl)
The icon text is set to 18px font size across all breakpoints

Resolves: MWPW-140669
Test URLs:

Before: https://main--cc--adobecom.hlx.page/drafts/drashti/MWPW-137345/genfill-container?martech=off
After: https://genfill-fix--cc--adobecom.hlx.page/drafts/drashti/MWPW-137345/genfill-container?martech=off

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (225a647) 89.83% compared to head (2694d1f) 89.83%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #151   +/-   ##
=======================================
  Coverage   89.83%   89.83%
=======================================
  Files           8        8
  Lines         679      679
=======================================
  Hits          610      610
  Misses         69       69

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

Verified the below flows in the url
Changed the button to 50px height (button-xl)
Modified the structure of the interactive marquee so that it matches Marquee medium.
The icon text is set to 18px font size across all breakpoints
https://genfill-fix--cc--drashti1712.hlx.live/drafts/drashti/MWPW-137345/genfill-container
50 px is seen on the marquee button in desktop/mobile/tablet

icon text is set to 18px font size across all breakpoints

Modified the structure of the interactive marquee so that it matches Marquee medium.


Fix error handler when logger calls restore error handler

Closing as per https://github.com/Seldaek/monolog/issues/955#issuecomment-309306487


Add rpkg template for COPR autobuild

<EMAIL_ADDRESS>Also comment out docs install step in Makefile
Signed-off-by: Lokesh Mandvekar<EMAIL_ADDRESS>@flouthoc @baude @mheon @Luap99 @rhatdan PTAL.
Btw, I'm not the biggest fan of install targets depending on build targets. Would it be ok to have them separate? This would mean make && make install for people building from source, but it would also mean no extra -nobuild targets like the mess we have in podman.

Let me know what the aardvark <-> netavark <-> podman install deps should look like. I can add them to the PRs.

podman4 should require netavark, netavark should require aardvark

LGTM

podman4 should require netavark, netavark should require aardvark

i'll update PRs for podman and netavark. This one should be good to go.


Add support for Sengled E12-N14 (BR30) Light

Added support for Element Classic BR30 Soft White 2700K (E12-N14) from Sengled.

Thanks!


gaian-connector initial commit

Signed-off-by: Bogdan Sava<EMAIL_ADDRESS>

Code looks ok - there seems to be 2 levels of connector - we will need to move the generic connector to the data-store-connector maven module - but this can be done later - please raise a Jira to do this.


Integrate consent management for SSO

Integrate consent management for SSO using the consent management APIs

Added with https://github.com/wso2/carbon-identity-framework/pull/1328


Add a dependency on mdx package in mdx generated rules

This prevents error due to duplicate binary from happening when vendoring mdx. It's a quick fix rather than a long term solution to #138 since technically we still need to make ocaml-mdx depend on ocaml-mdx-test.

I need to try that in a duniverse context to make sure it works properly!

even if that doesn't fix duniverse, that looks like a good fix anyway so merging.

Yeah I just forgot to update but it does work with duniverse or at least it does fix the missing ocaml-test-mdx binary error.
It might be worth cutting a 1.4.1 release!


Incomplete semantic annotations via habitat_sim.utils.datasets_download

Habitat-Sim version
Habitat-Sim 0.2.2
🐛 Bug
As per this README, I am running the following command to retrieve hm3d_minival, which should come with semantic annotations:
python -m habitat_sim.utils.datasets_download --username <api-token-id> --password <api-token-secret> --uids hm3d_minival
However, many of the scenes do not have *.semantic.txt or *.semantic.glb files. Here is the resulting folder tree:

Hey @sagadre,
At this point we have not annotated the full dataset of 1000 scenes, so this is expected. The scene dataset file: hm3d_annotated_basis.scene_dataset_config.json should isolate scenes with annotations from the other scenes in the dataset.


Feat: Add a Market Manipulations Widget

I know I have to hide the API Key and Secret Key, but there's no way I don't have a Secret Meneager like the one from AWS and there's no way to create the .ENV and choose these secrets. I left it straight.


[BUG] No Assert.AreEqual available

Using:

Microsoft.Playwright Version 1.19.1
Windows
.NET 6
Browser: Chromium

Seems that documentation is outdated? I cant find "Assert.AreEqual"

There is "Assert.Equal" though, probably the same?

See here: https://playwright.dev/dotnet/docs/test-runners#xunit-support
We strongly discourage using xunit.

See here: https://playwright.dev/dotnet/docs/test-runners#xunit-support
We strongly discourage using xunit.

Ok but Assert itself is from Playwright, not xunit?


sphinx automatic generation fails due to circular import

Current Behavior
tox -e docs fails due to warnings
Example warning:
 WARNING: Summarised items should not include the current module. Replace 'pymovements.dataset.Dataset' with 'Dataset'.

the change happened here.
Expected Behavior
automated documentation generation works again
Minimum acceptance criteria
tox -e docs work without pinning sphinx
Steps to Reproduce

git apply
diff --git a/pyproject.toml b/pyproject.toml
index 80657f6..3d810ff 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -53,7 +53,7 @@ docs = [
   "pybtex",
   "pydata-sphinx-theme>=0.12",
   "setuptools>=61.0.0",
-  "sphinx>=5.3.0,<7.4",
+  "sphinx>=5.3.0",
   "sphinx-copybutton>=0.4.0",
   "sphinx-favicon>=1.0.1",
   "sphinx_design>=0.3.0",

tox -e docs

related to #773 I'll fix it today


Fix Defog and Splash-likes being erroneously counted as failures

Please excuse the typo in the commit name.

You spelled it wrong in the title, too :p

Wait, never mind, that's correct.


adding options to pod execution

adding options to pod execution:

allowing execution of commands without expected output
allowing using a user defined pod executing

/lgtm
Giving a chance to get more reviews, feel free to unhold
/hold


Dockerfile to build the website locally

This replaces #29 . The cmark build is now included using the script from https://github.com/apache/infrastructure-pelican
Pelican still fails due to missing plugins, I briefly tried following https://github.com/apache/www-site/blob/main/docs/builds.md to install them but haven't been able to do that in my limited time. If someone can do that please go for it!
Using a multi-stage build would lead to a smaller image but that's really just an optmization.

I got the pelican plugins working, though the gfm plugin is installed in a somewhat hacky way.
The site generation seems to work, though I'm not getting the root index.html file, but the rest looks good.
For some reason, preview access at http://localhost:8000 works from inside the container ( docker exec -it  curl http://localhost:8000 ) but not from my Docker host. I might be missing something obvious.
Anyway, I think this might be good enough to merge and improve incrementally.

Looking at the code I think that you need to look at requirements.txt and make sure that requests is installed. That's used by the asfdata.py plugin which supplies lots of data for the root index.html file.

I'm still working on gfm.py in the infrastructure-pelican repository. Haven't quite got that working yet, so not surprised you had to do some hacky.
It does make sense to merge this "almost ready" and then tweak from here. But question: should this go into infrastructure-pelican instead, @bdelacretaz ?

...should this go into infrastructure-pelican instead, @bdelacretaz ?..

Good idea, and we can then link to that Dockerfile from this repository to make sure people find it.
I suppose the pelican setup with the www-site specific plugins won't be a problem if building other ASF sites? I don't know much about pelican, not able to tell myself.
I'm still clueless about  http://localhost:8000 not working from my Docker host when starting the container with -p 8000:8000 . It looks like something specific to pelican prevents this from working, as it works with this example:
$ cat Dockerfile
FROM python:3.9.5-slim-buster
RUN echo "Yes" > index.html
ENTRYPOINT python -m http.server

$ docker build -t mini.http.server .
...
$ docker run -it -p 8000:8000 mini.http.server

So using the same base Docker image with a different python HTTP server works, but not using pelican -l with the same base image.

Most likely, the pelican server is listening on <IP_ADDRESS> rather than the container's network interface. Find a switch to get the pelican server to listen on <IP_ADDRESS>:8000, and I bet it will work.

Bingo! Preview at http://localhost:8000 works now, @gstein I suppose I owe you a beverage-of-your-choice next time.
Still no index.html file in the output, not sure why but that's not a big deal.

@dave2wave I think I have now added all requirements.txt dependencies (requests was already installed) but still no index.html, here's the error message. I don't know how to interpret it:
ERROR: /site/content/index.ezmd
Traceback (most recent call last):
File "/site/theme/plugins/asfreader.py", line 99, in read
  template.generate(fp, metadata)
File "/usr/local/lib/python3.9/site-packages/ezt.py", line 163, in generate
...
KeyError: 0
ERROR: Could not process ./index.ezmd
  | 0
  |___
  | Traceback (most recent call last):
  |   File "/usr/local/lib/python3.9/site-packages/pelican/generators.py", line 721, in generate_context
  |     page = self.readers.read_file(
  |   File "/usr/local/lib/python3.9/site-packages/pelican/readers.py", line 573, in read_file
  |     content, reader_metadata = reader.read(path)
  |   File "/site/theme/plugins/asfreader.py", line 99, in read
  |     template.generate(fp, metadata)
  |   File "/usr/local/lib/python3.9/site-packages/ezt.py", line 163, in generate
  |     self._execute(self.program, fp, ctx)
  |   File "/usr/local/lib/python3.9/site-packages/ezt.py", line 329, in _execute
  |     method(method_args, fp, ctx, filename, line_number)
  |   File "/usr/local/lib/python3.9/site-packages/ezt.py", line 434, in _cmd_for
  |     self._execute(section, fp, ctx)
  |   File "/usr/local/lib/python3.9/site-packages/ezt.py", line 329, in _execute
  |     method(method_args, fp, ctx, filename, line_number)
  |   File "/usr/local/lib/python3.9/site-packages/ezt.py", line 333, in _cmd_print
  |     value = _get_value(valref, ctx, filename, line_number)
  |   File "/usr/local/lib/python3.9/site-packages/ezt.py", line 516, in _get_value
  |     ob = list[idx]
  | KeyError: 0

The error looks like there is missing metadata from the ASF_DATA model. Before pelican processes the pages it processes data files and many are used on content/index.ezmd. The other ezmd pages like content/foundation/index.ezmd use only a couple of metadata items.
Things to check:

The foundation index page. foundation/index.html
stdout from the run.
Anything else in stderr

I am most suspicious of the twitter feed. I generate a faux response when there is no twitter bearer token. Perhaps that is not good enough.

My suspicion is confirmed.
twitter feed: TheASF
Traceback (most recent call last):
  File "/private/tmp/www/source/theme/plugins/asfdata.py", line 536, in twitter_auth
    for line in open(authtokens).readlines():
FileNotFoundError: [Errno 2] No such file or directory: '/Users/davewave/.authtokens'

and
metadata[eccn] is a sequence.
metadata[twitter] is a dictionary.
metadata[foundation] is a sequence.

twitter must be a sequence and not dictionary.

My suspicion is confirmed

Nice! If you modify your fake twitter feed, it would be good for it to be self-descriptive, like "no feed as the supplied twitter bearer token is invalid".
(maybe you're already doing that, I didn't look)

(maybe you're already doing that, I didn't look)

Essentially - I've committed a fix to this branch

Thank you very much, /index.html works now!
With this I think the only open question is whether this Dockerfile is of general use or if the plugins which are specific to the www-site build (IIUC) might get in the way of other pelican builds.
If it can be considered of general use I agree with @gstein that it belongs in https://github.com/apache/infrastructure-pelican and we'd just link to it from this repository then.

Most of our pelican build sites do not use data models. The exception will be any that need to develop an additional data model. Right now the only group that needs to do this is the trademarks team in this site.
I am for merging this here in www-site and then copying/moving it to https://github.com/apache/infrastructure-pelican

So - I followed the instructions.
docker build -t www-site .
docker run -it -p8000:8000 -v $PWD:/site -v $PWD/site-generated/:/site-generated www-site
DEBUG: Pelican version: 4.6.0
DEBUG: Python version: 3.9.5
DEBUG: Adding current directory to system path
DEBUG: Finding namespace plugins
DEBUG: Namespace plugins found:
  | pelican.plugins.sitemap
DEBUG: Loading plugin `asfgenid`
DEBUG: Loading plugin `asfdata`
DEBUG: Loading plugin `pelican-gfm`
ERROR: Cannot load plugin `pelican-gfm`
  | Cannot import plugin `pelican-gfm`
DEBUG: Loading plugin `asfreader`
CRITICAL: 'pelican-gfm.gfm'

I'm not sure what's up here.

The Dockerfile now uses a specific commit from https://github.com/apache/infrastructure-pelican.git to make it more reproducible.
In terms of local environment, I'm running it on the feature/dockerfile branch at commit 58d22fb with git statussaying nothing to commit, working tree cleanand removing the site-generated folder before running the Dockerfile.
If that doesn't help you we'll need to find what's different between our setups.

I have added troubleshooting information in the Dockerfile comments, search for "troubleshoot the image" in there.

For more proof; I executed the following on Fedora 33:
Building succeeds
podman build -t www-site .

Running fails, with the following message:
#     Error: statfs /home/rlenferink/workspace/asf/www-site/site-generated: no such file or directory
podman run -it -p8000:8000 -v $PWD:/site -v $PWD/site-generated/:/site-generated www-site

I tried creating the directory manually
mkdir -p $PWD/site-generated

Now executing the run command again it fails with a critical error
$ podman run -it -p8000:8000 -v $PWD:/site -v $PWD/site-generated/:/site-generated www-site
DEBUG: Pelican version: 4.6.0
DEBUG: Python version: 3.9.5
WARNING: Feeds generated without SITEURL set properly may not be valid
WARNING: No timezone information specified in the settings. Assuming your timezone is UTC for feed generation. Check https://docs.getpelican.com/en/latest/settings.html#TIMEZONE for more information
DEBUG: Adding current directory to system path
DEBUG: Finding namespace plugins
DEBUG: Namespace plugins found:
  | pelican.plugins.sitemap
DEBUG: Registering plugin `pelican.plugins.sitemap`
  --- AutoReload Mode: Monitoring `content`, `theme` and `settings` for changes. ---
WARNING: Watched path does not exist: ./images

Serving site at: http://<IP_ADDRESS>:8000 - Tap CTRL-C to stop
WARNING: No valid files found in content for the active readers:
  | BaseReader (static)
  | HTMLReader (htm, html)
  | MarkdownReader (md, markdown, mkd, mdown)
  | RstReader (rst)

-> Modified: theme. re-generating...
DEBUG: Found generator: ArticlesGenerator (internal)
DEBUG: Found generator: PagesGenerator (internal)
DEBUG: Found generator: SitemapGenerator (pelican.plugins.sitemap.sitemap)
DEBUG: Found generator: StaticGenerator (internal)
DEBUG: Template list: ['!simple/archives.html', '!simple/article.html', '!simple/author.html', '!simple/authors.html', '!simple/base.html', '!simple/categories.html', '!simple/category.html', '!simple/gosquared.html', '!simple/index.html', '!simple/page.html', '!simple/pagination.html', '!simple/period_archives.html', '!simple/tag.html', '!simple/tags.html', '!simple/translations.html', '!theme/analytics.html', '!theme/archives.html', '!theme/article.html', '!theme/article_infos.html', '!theme/author.html', '!theme/authors.html', '!theme/base.html', '!theme/category.html', '!theme/comments.html', '!theme/disqus_script.html', '!theme/github.html', '!theme/index.html', '!theme/page.html', '!theme/period_archives.html', '!theme/tag.html', '!theme/taglist.html', '!theme/tags.html', '!theme/translations.html', '!theme/twitter.html', 'analytics.html', 'archives.html', 'article.html', 'article_infos.html', 'author.html', 'authors.html', 'base.html', 'categories.html', 'category.html', 'comments.html', 'disqus_script.html', 'github.html', 'gosquared.html', 'index.html', 'page.html', 'pagination.html', 'period_archives.html', 'tag.html', 'taglist.html', 'tags.html', 'translations.html', 'twitter.html']
WARNING: sitemap plugin: SITEMAP['format'] must be `txt' or `xml'
WARNING: sitemap plugin: Setting SITEMAP['format'] on `xml'
CRITICAL: FileNotFoundError: [Errno 2] No such file or directory: '/site-generated/feeds/all.atom.xml'

When leaving out the site-generated volume mount when starting the container it starts pelican.
$ podman run -it -p8000:8000 -v $PWD:/site www-site
DEBUG: Pelican version: 4.6.0
DEBUG: Python version: 3.9.5
WARNING: Feeds generated without SITEURL set properly may not be valid
WARNING: No timezone information specified in the settings. Assuming your timezone is UTC for feed generation. Check https://docs.getpelican.com/en/latest/settings.html#TIMEZONE for more information
# <snip>
WARNING: Watched path does not exist: ./images

Serving site at: http://<IP_ADDRESS>:8000 - Tap CTRL-C to stop
WARNING: No valid files found in content for the active readers:
  | BaseReader (static)
  | HTMLReader (htm, html)
  | MarkdownReader (md, markdown, mkd, mdown)
  | RstReader (rst)

-> Modified: theme. re-generating...
DEBUG: Template list: ['!simple/archives.html', '!simple/article.html', '!simple/author.html', '!simple/authors.html', '!simple/base.html', '!simple/categories.html', '!simple/category.html', '!simple/gosquared.html', '!simple/index.html', '!simple/page.html', '!simple/pagination.html', '!simple/period_archives.html', '!simple/tag.html', '!simple/tags.html', '!simple/translations.html', '!theme/analytics.html', '!theme/archives.html', '!theme/article.html', '!theme/article_infos.html', '!theme/author.html', '!theme/authors.html', '!theme/base.html', '!theme/category.html', '!theme/comments.html', '!theme/disqus_script.html', '!theme/github.html', '!theme/index.html', '!theme/page.html', '!theme/period_archives.html', '!theme/tag.html', '!theme/taglist.html', '!theme/tags.html', '!theme/translations.html', '!theme/twitter.html', 'analytics.html', 'archives.html', 'article.html', 'article_infos.html', 'author.html', 'authors.html', 'base.html', 'categories.html', 'category.html', 'comments.html', 'disqus_script.html', 'github.html', 'gosquared.html', 'index.html', 'page.html', 'pagination.html', 'period_archives.html', 'tag.html', 'taglist.html', 'tags.html', 'translations.html', 'twitter.html']
WARNING: sitemap plugin: SITEMAP['format'] must be `txt' or `xml'
WARNING: sitemap plugin: Setting SITEMAP['format'] on `xml'
-> Writing /site-generated/feeds/all.atom.xml
-> Writing /site-generated/index.html
# <snip>
-> Copying /usr/local/lib/python3.9/site-packages/pelican/themes/notmyidea/static/fonts/font.css to /site-generated/theme/fonts/font.css
-> Copying /usr/local/lib/python3.9/site-packages/pelican/themes/notmyidea/static/fonts/Yanone_Kaffeesatz_400.woff2 to /site-generated/theme/fonts/Yanone_Kaffeesatz_400.woff2
Done: Processed 0 articles, 0 drafts, 0 pages, 0 hidden pages and 0 draft pages in 0.04 seconds.
Serving site at: http://<IP_ADDRESS>:8000 - Tap CTRL-C to stop

Visiting http://localhost:8000/ results in a page titled A Pelican Blog with nothing ASF related.

Am I doing anything wrong here?

I think the problem is with the mappings.
The Dockerfile creates pelican-gfm under /site.
However, when the container is started, $PWD is mapped to/mounted over /site, thus hiding pelican-gfm.
If you connect using:
docker run -it -p8000:8000 --entrypoint bash www-site
pelican-gfm is present, but when using:
docker run -it -p8000:8000 -v $PWD:/site --entrypoint bash www-site
it is not.

I think the problem is with the mappings.
The Dockerfile creates pelican-gfm under /site.
However, when the container is started, $PWD is mapped to/mounted over /site, thus hiding pelican-gfm.

I agree. Tomorrow morning I am going to try a different location for the Plugins and make appropriate adjustments to pelicanconf.py. This will have other benefits including for the buildbot.

...tomorrow morning I am going to try a different location for the Plugins ..

The way the Dockerfile sets up pelican-gfm is wrong indeed, it worked on my box because I had a previous version of that folder in my www-site checkout folder.
To fix that we might a script instead of running pelican directly, that copies the pelican-gfm files from somewhere else, if they have to be in the folder that provides the content. Or, as @dave2wave says, configure something so that the plugins can come from a different folder, but I don't know how to do that.

I think the issue stems from the way that pelican-gfm is provided.
Currently it is copied into the site source area along with any plugins provided by the site.
That seems rather awkward.
I would expect the plugin to be stored somewhere central and accessed from there using the PLUGINS_PATH setting.

Currently it is copied into the site source area along with any plugins provided by the site.
That seems rather awkward.

Yes, that's meant as a first version to get things going until a cleaner way of getting the plugin is available.

Looks like toc.py may suffer from the same issue.

For now, I have committed the gfm and toc plugins to this branch, instead of (incorrectly) copying them from https://github.com/apache/infrastructure-pelican
With this the website build works for me on a fresh checkout of the feature/dockerfile branch, following the instructions in the Dockerfile. The result is available at http://localhost:8000/

Does not work for me unless I create the directory 'site-generated' (or omit the related docker parameter).

Also htaccess redirects don't work. I'm looking into that.

Looks like the parameter '-v $PWD/site-generated/:/site-generated' is superfluous, given that the directory is created under site anyway.

toc.py is not used by www-site. [TOC] tags are processed by asfgenid.py

I've got a build working without needing to update the local plugin directory.
I'll upload a branch shortly

I added feature/docker2
It needs a bit of work to reduce the binding between the build and pelicanconf.py

I added feature/docker2..

Looks good to me, I think you could commit those changes to thefeature/dockerfile branch as they do improve this. I wasn't aware of the PLUGIN_PATHS (which shows how ignorant I am about Pelican).

I restructured pelican-gfm to put gfm.py where it needs to be.
Next step will be to use an environment variable to select the location and manage PLUGINS_PATHS with that.

@dave2wave did you remove the ARG INFRA_PELICAN_COMMIT= stuff on purpose? I would prefer keeping it to make sure we get a fixed version of https://github.com/apache/infrastructure-pelican

Yes - I did do that to get the new structure. I disagree about the commit point. I think that if there is an important update to a PLUGIN then there is one more step to take it.
Anyway - the Dockerfile now uses an environment variable that is optional to pelicanconf.py.
To me this is now safe to merge after further testing.

There's an awful lot of noise from the build. Makes it very difficult to see if there are any warnings or errors.

There's an awful lot of noise from the build. Makes it very difficult to see if there are any warnings or errors.

I took the -D out and now I wonder why it is executing the asfdata plugin three times.

..I disagree about the commit point. I think that if there is an important update to a PLUGIN then
there is one more step to take it...

I agree in principle but this might lead to hard to troubleshoot issues with people not seeing that they're getting different versions of the plugins (or cmark code), depending on cached Docker image layers on their boxes.
How about re-adding the ARG INFRA_PELICAN_COMMIT but setting it to master by default?
In this way we get automatic upgrades by default but with a way to select a specific commit or tag if needed for troubleshooting.

The LIBCMARKDIR.sh script now includes PELICANASF. It could use a rename, but I'm done for now.

asfgenid.py and asfreader.py can now be deleted from this branch and the build will still work, because it picks up the plugins from the location given by PELICANASF.
However, some work would need to be done to the buildbot before this would work for the live site.

asfgenid.py and asfreader.py can now be deleted from this branch and the build will still work, because it picks up the plugins from the location given by PELICANASF.
However, some work would need to be done to the buildbot before this would work for the live site.

Exactly. To me whatever is in theme/plugins should override what is provided by PELICANASF. That way a site author can do bug fixes or add data features to asfdata.py
I also don't like the manipulation that is done in the buildbot to "fix" PLUGINS.
    # Set currently supported plugins
    with open(os.path.join(sourcepath, 'pelicanconf.py'), 'a') as f:
        f.write("""
try:
    PLUGINS += ['toc']
except:
    PLUGINS = ['toc', 'pelican-gfm']
""")

@gstein has other plans for infrastructure-pelican. I've changed the Dockerfile to use a commit point and put that repos back the way it was.

Unless there are more tweaks to make I think that this can be squashed and merged. Once infrastructure-pelican is ready then we can put the Dockerfile there and that will provide appropriate changes to all of the Pelican Builds.

Note that it will only work with a suitably modified pelicanconf.py.
This needs to be documented somewhere; perhaps with a sample implementation.
I think the same approach should be used for the Buildbot builds as well.

Note that it will only work with a suitably modified pelicanconf.py.
This needs to be documented somewhere; perhaps with a sample implementation.
I think the same approach should be used for the Buildbot builds as well.

Greg's plan for infrastructure-pelican is elaborate. There will be a yaml (perhaps .asf.yaml) that will generate the pelican settings file which can be other than pelicanconf.py. So, let's move efforts to helping that vision happen and merge this as temporary. (A comment in this new pelicanconf.py would help, but anything more is wasted effort IMO.)

Squashed and merged, thanks for all your help on this!


Change the PNS to use es6 syntax

Refer https://github.com/codingkapoor/intimations-platform/pull/17 for details.


Issue with encoding a queue message result

Wasn't able to lock down a solid repro for this, but it looks like you can get in a state with the queue service where base64 encoding does not work correctly. Here is a stack trace:
if (encStr.charCodeAt(i - 2) == 61) {
^
TypeError: Object # has no method 'charCodeAt'
at Object.decode64 (C:\node-deploy\areader\WorkerRole1\node_modules\azure\li
b\util\base64.js:37:14)
at Function.parse (C:\node-deploy\areader\WorkerRole1\node_modules\azure\lib
\services\queue\models\queuemessageresult.js:70:47)
at C:\node-deploy\areader\WorkerRole1\node_modules\azure\lib\services\queue
queueservice.js:526:55
at Array.forEach (native)
at C:\node-deploy\areader\WorkerRole1\node_modules\azure\lib\services\queue
queueservice.js:525:18
at IncomingMessage. (C:\node-deploy\areader\WorkerRole1\node_modu
les\azure\lib\services\serviceclient.js:230:13)
at IncomingMessage.emit (events.js:88:20)
at HTTPParser.onMessageComplete (http.js:137:23)
at Socket.ondata (http.js:1124:24)
at TCP.onread (net.js:348:27)

Can you give a bit more context Jim ? What code you were executing / etc ?
Thanks,
Andre

Yeah so this should just be pulling from a queue - the message text is a URL. I can debug some more to see if I can hit it again, but wanted to get this issue up before I lost the stack trace.

Andre, my hunch is that the parse code in QueueMessageResult likely needs the same change that Einar submitted for the authentication key in #45

That's a very good hunch Paul. Wanna submit a pull request or should i just fix it ? :)

Yes, I'll submit a pull request for it.

Fixed.


Feature Suggestion: Allow using multiple tsconfig.jsons

From @TylorS on October 24, 2016 1:11
Hello, I have a possible feature suggestion.
In the project I am working on at work we currently have our main tsconfig.json which points the the entry point of our application app.ts and our main external typings folder (for custom typings not yet placed on DefinitelyTyped).
However we also use a tsconfig-tests.json which we use to run all of our tests which live beside our source files with the ending in .test.ts. In each file we have to use a reference to our custom typings eg. ../../../typings/index.d.ts. It'd be wonderful to somehow allow configuring multiple tsconfigs based on file endings.
Thanks for your time!
Copied from original issue: Microsoft/vscode#14242

@TylorS thank you for opening up this issue. We want to address some of these issues around configuration. This is a JavaScript language service issue. I am moving to that repo to discuss more.

From @roblourens on October 24, 2016 1:26
A workaround is keeping your source files and test files in different folders, each with their own tsconfig files.

From @TylorS on October 24, 2016 2:38
Thanks for the workaround @roblourens. We'll continue to do as we have for now. Our application will be extremely large, many many files and folders, and refactoring will be quite expensive when your test folder will typically become a mirror of the source file folder.
Thank you for any work that is done here :D

#9876 should handle nearly all use cases here. If there's something that doesn't work for, please log a separate issue outlining exactly how you'd like something to work. Thanks!


[Enhancement / Code Help] Scrolling to bottom of Text Input / Output Widget

I use the TextInput also as an "output" widget.  There are 2 ways I do this. One is via re-routing stdout.  In this case, the TextInput widget is updated by Remi itself.
This is the code I was given that should scroll to the end of the widget:
            if hasattr(app, "websockets"):
                app.execute_javascript("document.getElementById('%s').scrollTop=%s;" % (
                    self.Widget.identifier, 9999))  # 9999 number of pixel to scroll

This works when running within the Remi thread, but it does not work when running as the user thread.  What happens is that the jump happens, but then it jumps right back up to the top of the area.
I used the exact same code, just in 2 places.  The place where Remi called it directly it works, where my user code calls it, it does not work.
Here is an example.  The output box on TOP is updated using Remi's thread.
The output box on the bottom is done via user code.

I continue to struggle with the scrolling widgets.
I really need the ability for my Output Element to be able to convert the users "print" statements into a scrolling portion of the window.  Everything works except for the scrolling behavior.
How can I help you get setup to lend a hand?  Do you need an example PySimpleGUIWeb program that more specifically shows you the problem?

Hello @MikeTheWatchGuy I will work directly on PySimpleGuiWeb to fix this. I planned to do this on Sunday afternoon. Will be fixed really soon.

Thank you!
Let me know how I can help.  I will code up some test code that is short and succinctly demonstrates the problems.
(thank you again for all the recent help!!!!!!!)

Hello @MikeTheWatchGuy , as promised here is the fixed version of your MultilineOutput widget. Now the autoscroll works correctly  ;-)
    # ---------------------------------------------------------------------- #
    #                           Multiline Output                             #
    # ---------------------------------------------------------------------- #
    class MultilineOutput(Element):
        def __init__(self, default_text='', enter_submits=False, disabled=False, autoscroll=False, size=(None, None), auto_size_text=None, background_color=None, text_color=None, change_submits=False, enable_events=False, do_not_clear=True, key=None, focus=False, font=None, pad=None, tooltip=None, visible=True, size_px=(None,None)):
            '''
            Multiline Element
            :param default_text:
            :param enter_submits:
            :param disabled:
            :param autoscroll:
            :param size:
            :param auto_size_text:
            :param background_color:
            :param text_color:
            :param do_not_clear:
            :param key:
            :param focus:
            :param pad:
            :param tooltip:
            :param font:
            '''
            self.DefaultText = default_text
            self.EnterSubmits = enter_submits
            bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
            self.Focus = focus
            self.do_not_clear = do_not_clear
            fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
            self.Autoscroll = autoscroll
            self.Disabled = disabled
            self.ChangeSubmits = change_submits or enable_events
            tsize = size                # convert tkinter size to pixels
            if size[0] is not None and size[0] < 100:
                tsize = size[0]*DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1]*DEFAULT_PIXELS_TO_CHARS_SCALING[1]
            self.Widget = None      # type: remi.gui.TextInput
            self.CurrentValue = ''

            super().__init__(ELEM_TYPE_MULTILINE_OUTPUT, size=tsize, auto_size_text=auto_size_text, background_color=bg,
                            text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, size_px=size_px)
            return

        def Update(self, value=None, disabled=None, append=False, background_color=None, text_color=None, font=None, visible=None):
            if value is not None and not append:
                self.Widget.set_value(str(value))
            elif value is not None and append:
                self.CurrentValue = self.CurrentValue + '\n' + str(value)
                self.Widget.set_value(self.CurrentValue)
                self.Widget._set_updated()
                app = self.ParentForm.App

                if hasattr(app, "websockets"):
                    app.execute_javascript('element=document.getElementById("%(id)s"); element.innerHTML=`%(content)s`; if(%(autoscroll)s){element.scrollTop=999999;} ' % {
                        "id":self.Widget.identifier, "content":self.Widget.get_value(), "autoscroll":'true' if self.Autoscroll else 'false'})

            super().Update(self.Widget, background_color=background_color, text_color=text_color, font=font, visible=visible)

        def Get(self):
            self.WxTextCtrl.GetValue()

        def SetFocus(self):
            self.WxTextCtrl.SetFocus()

        def __del__(self):
            super().__del__()

@MikeTheWatchGuy have you tried this fix?

I have not yet but will today.   I'm sorry I was slammed through the weekend!  Still trying to push out 2 releases along with synchronized docs.

OK! This indeed did work for the MultilineOutput element!!!!
Now I'm trying to fix the same problem on my Output Element.  This element re-reroutes stderr and stdout.
When I'm creating the window, this his how I translate it into Remi Widgets:
                # -------------------------  OUTPUT element  ------------------------- #
            elif element_type == ELEM_TYPE_OUTPUT:
                element=element  # type: Output
                element.Widget = remi.gui.TextInput(single_line=False)
                element.Disabled = True
                do_font_and_color(element.Widget)
                tk_row_frame.append(element.Widget)
                toplevel_form.OutputElementForStdOut = element
                Window.stdout_is_rerouted = True
                Window.stdout_string_io = StringIO()
                sys.stdout = Window.stdout_string_io

There is no "Update" method that's called.  It's all done internal to Remi, I think!
Can you help me with this one too.  It should be the last of these scrolling elements for you to deal with. Sorry to keep asking for help!

You know, I could SWEAR that that the "Output element" is working in the first screen shot I took, because it's being controlled directly by Remi, but yet now it's not scrolling correctly anymore.
Yea, that same code isn't working now.  This is truly WEIRD.

Hello @MikeTheWatchGuy I will do my best to fix this tomorrow evening. Don't worry to ask me for help. You supported remi a lot, I must and I'm pleased to collaborate with you on these "problems". Nonetheless I consider these issues as games to be solved :-) , I love code development.

Hello @MikeTheWatchGuy, here is the working Output element. I tried it and it worked fine.
# ---------------------------------------------------------------------- #
#                           Output                                       #
#  Routes stdout, stderr to a scrolled window                            #
# ---------------------------------------------------------------------- #
class Output(Element):
    def __init__(self, size=(None, None), background_color=None, text_color=None, pad=None, font=None, tooltip=None,
                 key=None, visible=True, size_px=(None,None), disabled=False):
        '''
        Output Element
        :param size:
        :param background_color:
        :param text_color:
        :param pad:
        :param font:
        :param tooltip:
        :param key:
        '''
        self.Autoscroll = True
        bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
        # fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
        fg = text_color if text_color is not None else 'black' if DEFAULT_INPUT_TEXT_COLOR == COLOR_SYSTEM_DEFAULT else DEFAULT_INPUT_TEXT_COLOR
        self.Disabled = disabled
        self.Widget = None      # type: remi.gui.TextInput
        if size_px == (None, None) and size == (None, None):
            size = DEFAULT_OUTPUT_ELEMENT_SIZE
        if size[0] is not None and size[0] < 100:
            size = size[0]*DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1]*DEFAULT_PIXELS_TO_CHARS_SCALING[1]
        super().__init__(ELEM_TYPE_OUTPUT, size=size, size_px=size_px, visible=visible, background_color=bg, text_color=fg, pad=pad, font=font, tooltip=tooltip, key=key)

    def Update(self, value=None, disabled=None, append=False, background_color=None, text_color=None, font=None, visible=None):
        if value is not None and not append:
            self.Widget.set_value(str(value))
            self.CurrentValue = str(value)
        elif value is not None and append:
            self.CurrentValue = self.CurrentValue + '\n' + str(value)
            self.Widget.set_value(self.CurrentValue)
        self.Widget._set_updated()
        app = self.ParentForm.App

        if hasattr(app, "websockets"):
            app.execute_javascript('element=document.getElementById("%(id)s"); element.innerHTML=`%(content)s`; if(%(autoscroll)s){element.scrollTop=999999;} ' % {
                "id":self.Widget.identifier, "content":self.Widget.get_value(), "autoscroll":'true' if self.Autoscroll else 'false'})

        super().Update(self.Widget, background_color=background_color, text_color=text_color, font=font, visible=visible)

    def __del__(self):
        super().__del__()

AWESOME!
That's two different things I need to integrate from you.
I'm afraid I've been so backed up with documentation and support of users that I've not been able to do any Remi work for weeks.
I'm hoping to get back to it as soon as I finish getting it PEP8 compliant. It's the one I've been working on lately.
I can't thank you enough for all the help!

I'm struggling with autoscrolling when appending output once again.
Here's my update method.  It's called when the user wants to output to a scrolling MultilineOutput element.
    def Update(self, value=None, disabled=None, append=False, background_color=None, text_color=None, font=None, visible=None, autoscroll=None):
        self.Autoscroll = autoscroll is True            # convert to bool and save the autoscroll setting
        if value is not None and not append:
            self.Widget.set_value(str(value))
        elif value is not None and append:
            self.CurrentValue = self.CurrentValue + '\n' + str(value)
            self.Widget.set_value(self.CurrentValue)
            self.Widget._set_updated()
            app = self.ParentForm.App
            if hasattr(app, "websockets"):
                app.execute_javascript('element=document.getElementById("%(id)s"); element.innerHTML=`%(content)s`; if(%(autoscroll)s){element.scrollTop=999999;} ' % {
                    "id":self.Widget.identifier, "content":self.Widget.get_value(), "autoscroll":'true' if self.Autoscroll else 'false'})

        super().Update(self.Widget, background_color=background_color, text_color=text_color, font=font, visible=visible)

The problem is that the text is appending to the output just fine.  The problem is that the view isn't scrolled to the bottom.
You can test this by running the PySimpleGUIWeb.py file.  Running it brings up a test harness that looks like this:

If you press the OK button a new line is added to the scrolling Multiline output.   If you keep clicking OK the box fills and begins to add to the text beyond the view.  The widget isn't scrolling along with the output.  (Help!)

Hello @MikeTheWatchGuy which PSGW are you using? The master branch on github?

Yes, the one checked into the master branch http://www.PySimpleGUI.com is what I'm running.

Ok, I will test it right now. I'm sure it was fixed, maybe we lost the fix.

Hello @PySimpleGUI, here is the corrected MultilineOutput version:
# ---------------------------------------------------------------------- #
#                           Multiline Output                             #
# ---------------------------------------------------------------------- #
class MultilineOutput(Element):
    def __init__(self, default_text='', enter_submits=False, disabled=False, autoscroll=False, size=(None, None), auto_size_text=None, background_color=None, text_color=None, change_submits=False, enable_events=False, do_not_clear=True, key=None, focus=False, font=None, pad=None, tooltip=None, visible=True, size_px=(None,None)):
        '''
        Multiline Element
        :param default_text:
        :param enter_submits:
        :param disabled:
        :param autoscroll:
        :param size:
        :param auto_size_text:
        :param background_color:
        :param text_color:
        :param do_not_clear:
        :param key:
        :param focus:
        :param pad:
        :param tooltip:
        :param font:
        '''
        self.DefaultText = default_text
        self.EnterSubmits = enter_submits
        bg = background_color if background_color else DEFAULT_INPUT_ELEMENTS_COLOR
        self.Focus = focus
        self.do_not_clear = do_not_clear
        fg = text_color if text_color is not None else DEFAULT_INPUT_TEXT_COLOR
        self.Autoscroll = autoscroll
        self.Disabled = disabled
        self.ChangeSubmits = change_submits or enable_events
        tsize = size                # convert tkinter size to pixels
        if size[0] is not None and size[0] < 100:
            tsize = size[0]*DEFAULT_PIXELS_TO_CHARS_SCALING[0], size[1]*DEFAULT_PIXELS_TO_CHARS_SCALING[1]
        self.Widget = None      # type: remi.gui.TextInput
        self.CurrentValue = ''

        super().__init__(ELEM_TYPE_MULTILINE_OUTPUT, size=tsize, auto_size_text=auto_size_text, background_color=bg,
                         text_color=fg, key=key, pad=pad, tooltip=tooltip, font=font or DEFAULT_FONT, visible=visible, size_px=size_px)
        return

    def Update(self, value=None, disabled=None, append=False, background_color=None, text_color=None, font=None, visible=None, autoscroll=None):
        self.Autoscroll = self.Autoscroll or autoscroll            # convert to bool and save the autoscroll setting
        if value is not None and not append:
            self.Widget.set_value(str(value))
            self.CurrentValue = str(value)
        elif value is not None and append:
            self.CurrentValue = self.CurrentValue + '\n' + str(value)
            self.Widget.set_value(self.CurrentValue)
        self.Widget._set_updated()
        app = self.ParentForm.App

        if hasattr(app, "websockets"):
            app.execute_javascript('element=document.getElementById("%(id)s"); element.innerHTML=`%(content)s`; if(%(autoscroll)s){element.scrollTop=999999;} ' % {
                "id":self.Widget.identifier, "content":self.Widget.get_value(), "autoscroll":'true' if self.Autoscroll else 'false'})

        super().Update(self.Widget, background_color=background_color, text_color=text_color, font=font, visible=visible)

    update = Update

However there are some notes:

The MultilineOuptut takes the autoscroll parameter in constructor AND also in the Update method. Why this parameter appears in two places?
PSGW has MultilineOutput and Output classes. These are almost identical. Why this duplication?
You have not included the Output element updated that I provided you in this same thread. You have still an old version.

Kind Regards

Hmmm... I'm unsure about the line of code:
        self.Autoscroll = autoscroll is True            # convert to bool and save the autoscroll setting

I would have never written that line as I don't recall ever writing a "convert to bool" type of structure using "is True".  The last place I got this code was from earlier in this listing.
I do see something similar in the tkinter code, just written differently.  I would have thought that the one set when the element is created would be the DEFAULT going forward rather than getting changed when the update happens.  It's a bug in my opinion that I can fix.
Output is indeed very similar.  The difference is that Output reroutes standard out to the element.  Multiline is what an Output element uses essentially.
I can modify the Output class with this fix.
Thanks for this!

Oh crap... it was a bug in my code!    Wow... I'm sorry to have sent this your direction.  I'm confused now and will track down what happened.  I don't get it.

I appear to have made the bug when I poured some 900 additions to the file!  DOH!
I'm sorry this one is on me.  I don't know why I would have even added it, but there must have been a reason.  Now I just need to make sure it does the right thing.

This is the way the code should have read:
        autoscroll = self.Autoscroll if autoscroll is None else autoscroll

and then referenced down further
        if hasattr(app, "websockets"):
            app.execute_javascript(
                'element=document.getElementById("%(id)s"); element.innerHTML=`%(content)s`; if(%(autoscroll)s){element.scrollTop=999999;} ' % {
                    "id": self.Widget.identifier, "content": self.Widget.get_value(), "autoscroll": 'true' if autoscroll else 'false'})

This makes the initial setting the default and the user can override the default in a single update call.

@MikeTheWatchGuy no problem, it can happen, the important thing is that it is fixed now ✌


IGNITE-7681: SQL COPY performance fixes and performance test

Did a rebase + merge, which produced wrong history of commits, so cherry-picked commits to another branch. The correct pull request is:
https://github.com/apache/ignite/pull/3528


Update pr_limit_reminders.yml to run on ready_for_review

Fixes

Related to #2296
Description

I forgot to apply a small suggestion from @obulat to make sure these notifications run when draft PRs are undrafted.
Testing Instructions

Checklist

[x] My pull request has a descriptive title (not a vague title likeUpdate index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added or updated tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.
[x] I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Should we actually close it in favor of #2396, @zackkrida?


Filters should have cohort/dataset query instead of query

Investigation for best solution is needed

Suggest we keep all query types:
im:Query - for im internal queries
im:CohortQuery - for healthcare cohort queries
im:DatasetQuery - for healthcare dataset queries


Fix plugins installation when plugins list is empty.

Tested with ansible <IP_ADDRESS> with default role settings.

This looks good, can you rebase from master? After that can you ensure that you've got just one commit? Thanks!


Aravindraveendran7 patch 2

Added the following changes in the profile

Added Avatar
Added socials icon
Added more relevant tags

Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.
[x] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

closing PR #2639


Create HA issue if OPNsense Firmware below min version

screenshot using fake firmware version

@alexdelprete if you're good with it, I'd say that we merge this PR and then put out v0.2.1
Feel free to put out the release if you have time to.

Great. Anything special to write in the notes or can I simply use auto-generation for the release?

I was also thinking, now that you added this minimum fw check, if it's possible to check the privileges of the used account and warn the user in case it's not an admin. I don't know if there's an API for that, probably doable via the XMLrpc?

I generate an Error if any of the REST queries return a 403 saying there are permission issues.
        elif response.status_code == 403:
            _LOGGER.error(
                f"Permission Error in {inspect.currentframe().f_back.f_code.co_qualname}. Path: {path}. Ensure the OPNsense user connected to HA has full Admin access."
            )

I might be able trigger a similar error in the get_proxy method to represent XMLRPC permission issues, but I'd need to test more.

Sorry, I was referring to the config_flow, in the initial setup phase.


G92 temporary offset support

Supports G92 temporary offsets, useful for step and repeat operations.

Coverage increased (+1.5%) to 85.824% when pulling 0eb6b03f59c2f4afce7d111721451eace5d513e7 on MitchBradley:g92 into 2e3605d92182ce9133ce56aa9900a311a2f1ffbc on cncjs:master.

Coverage increased (+1.5%) to 85.824% when pulling 0eb6b03f59c2f4afce7d111721451eace5d513e7 on MitchBradley:g92 into 2e3605d92182ce9133ce56aa9900a311a2f1ffbc on cncjs:master.

Coverage increased (+1.5%) to 85.824% when pulling 0eb6b03f59c2f4afce7d111721451eace5d513e7 on MitchBradley:g92 into 2e3605d92182ce9133ce56aa9900a311a2f1ffbc on cncjs:master.


create new release 0.6.28

What this PR does / why we need it:
trigger new release to to include https://github.com/kubernetes-sigs/aws-iam-authenticator/pull/773
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #

/ok-to-test
/lgtm