WidgetSpan: exception was thrown when set TextOverflow and MaxLines

Steps to Reproduce
reproduce with following codes:

import 'package:flutter/material.dart';

class TextDemo extends StatelessWidget {
  final String _attachContent =
      "[love]Extended text help you to build rich text quickly. any special text you will have with extended text.It's my pleasure to invite you to join \$FlutterCandies\$ if you want to improve flutter .[love] if you meet any problem, please let me konw @zmtzawqlp .[sun_glasses]";
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("quickly build special text"),
      ),
      body: Container(
          padding: EdgeInsets.all(20.0),
          child: Text.rich(
            TextSpan(children: <InlineSpan>[
              TextSpan(text: _attachContent),
              WidgetSpan(
                  child: Container(
                color: Colors.blue,
                width: 30.0,
                height: 30.0,
              ))
            ]),
            overflow: TextOverflow.ellipsis,
            maxLines: 1,
          )),
    );
  }
}

Logs
Launching lib\main.dart on MI 6 in debug mode...
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
Built build\app\outputs\apk\debug\app-debug.apk.
Syncing files to device MI 6...
I/flutter ( 8425): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter ( 8425): The following RangeError was thrown during performLayout():
I/flutter ( 8425): RangeError (index): Invalid value: Valid value range is empty: 0
I/flutter ( 8425):
I/flutter ( 8425): When the exception was thrown, this was the stack:
I/flutter ( 8425): #0      List.[] (dart:core-patch/array.dart:12:52)
I/flutter ( 8425): #1      RenderParagraph._setParentData (package:flutter/src/rendering/paragraph.dart:514:44)
I/flutter ( 8425): #2      RenderParagraph.performLayout (package:flutter/src/rendering/paragraph.dart:527:5)
I/flutter ( 8425): #3      RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #4      RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:805:17)
I/flutter ( 8425): #5      RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #6      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #7      RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #8      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #9      RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #10     RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:165:27)
I/flutter ( 8425): #11     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #12     RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:181:11)
I/flutter ( 8425): #13     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #14     RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:406:13)
I/flutter ( 8425): #15     RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1334:12)
I/flutter ( 8425): #16     RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1252:20)
I/flutter ( 8425): #17     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #18     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #19     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #20     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #21     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #22     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #23     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #24     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #25     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #26     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #27     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #28     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #29     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #30     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #31     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #32     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #33     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #34     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #35     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #36     RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:206:11)
I/flutter ( 8425): #37     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #38     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:142:11)
I/flutter ( 8425): #39     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:443:7)
I/flutter ( 8425): #40     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:212:7)
I/flutter ( 8425): #41     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:356:14)
I/flutter ( 8425): #42     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #43     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #44     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #45     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #46     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1214:11)
I/flutter ( 8425): #47     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #48     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #49     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #50     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #51     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #52     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #53     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #54     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #55     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #56     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #57     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #58     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #59     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #60     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 8425): #61     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #62     RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3074:14)
I/flutter ( 8425): #63     RenderObject.layout (package:flutter/src/rendering/object.dart:1619:7)
I/flutter ( 8425): #64     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:510:15)
I/flutter ( 8425): #65     RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1496:7)
I/flutter ( 8425): #66     PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:765:18)
I/flutter ( 8425): #67     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:346:19)
I/flutter ( 8425): #68     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:701:13)
I/flutter ( 8425): #69     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:285:5)
I/flutter ( 8425): #70     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1016:15)
I/flutter ( 8425): #71     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:958:9)
I/flutter ( 8425): #72     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:874:5)
I/flutter ( 8425): #76     _invoke (dart:ui/hooks.dart:236:10)
I/flutter ( 8425): #77     _drawFrame (dart:ui/hooks.dart:194:3)
I/flutter ( 8425): (elided 3 frames from package dart:async)
I/flutter ( 8425):
I/flutter ( 8425): The following RenderObject was being processed when the exception was fired: RenderParagraph#c3240 relayoutBoundary=up6 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE:
I/flutter ( 8425):   creator: RichText ← Text ← Expanded ← Row ← RepaintBoundary ← IndexedSemantics ←
I/flutter ( 8425):     NotificationListener<KeepAliveNotification> ← KeepAlive ← AutomaticKeepAlive ← KeyedSubtree ←
I/flutter ( 8425):     SliverList ← MediaQuery ← ⋯
I/flutter ( 8425):   parentData: offset=Offset(0.0, 0.0); flex=1; fit=FlexFit.tight (can use size)
I/flutter ( 8425):   constraints: BoxConstraints(w=170.0, 0.0<=h<=Infinity)
I/flutter ( 8425):   semantic boundary
I/flutter ( 8425):   size: MISSING
I/flutter ( 8425):   textAlign: start
I/flutter ( 8425):   textDirection: ltr
I/flutter ( 8425):   softWrap: wrapping at box width
I/flutter ( 8425):   overflow: ellipsis
I/flutter ( 8425):   locale: en_US
I/flutter ( 8425):   maxLines: 10
I/flutter ( 8425): This RenderObject had the following descendants (showing up to depth 5):
I/flutter ( 8425):     text: TextSpan
I/flutter ( 8425):       TextSpan
I/flutter ( 8425):         TextSpan
I/flutter ( 8425):         WidgetSpan#27958
I/flutter ( 8425): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter ( 8425): Another exception was thrown: RenderBox was not laid out: RenderParagraph#c3240 relayoutBoundary=up6 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 8425): Another exception was thrown: RenderBox was not laid out: RenderFlex#a186c relayoutBoundary=up5 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 8425): Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#ee3e5 relayoutBoundary=up4 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
I/flutter ( 8425): Another exception was thrown: 'package:flutter/src/rendering/sliver_multi_box_adaptor.dart': Failed assertion: line 549 pos 12: 'child.hasSize': is not true.
I/flutter ( 8425): Another exception was thrown: NoSuchMethodError: The getter 'scrollOffsetCorrection' was called on null.
I/flutter ( 8425): Another exception was thrown: NoSuchMethodError: The method 'debugAssertIsValid' was called on null.
I/flutter ( 8425): Another exception was thrown: NoSuchMethodError: The getter 'visible' was called on null.

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, v1.7.8+hotfix.3, on Microsoft Windows [Version 10.0.17134.829], locale zh-CN)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[√] Android Studio (version 3.1)
[√] VS Code (version 1.36.0)
[√] Connected device (1 available)

I have done some changes in packages\flutter\lib\src\rendering\paragraph.dart, i think we should take care of over flow widgets .
please take a look attached paragraph.zip.
paragraph.zip

three places i found , need to change
1.void paint(PaintingContext context, Offset offset)
2.bool hitTestChildren(BoxHitTestResult result, { Offset position })
3. void _setParentData() {
and  it seem that over flow widgets are also calling build method,  any performance problems for them?

you can use blow mentioned lines
ConstrainedBox(
constraints: BoxConstraints(
maxWidth: MediaQuery.of(context).size.width * 0.5),
child: Wrap(alignment: WrapAlignment.end, children: [
new Text(subTitle ?? null,
textScaleFactor: textSize ?? null,
overflow: TextOverflow.clip,
softWrap: true,
maxLines: 2,
style: TextStyle(
fontWeight: FontWeight.normal,
color: Colors.black54)),
]),
),

How do you get the crash to happen?  I ran the code and scrolled around but didn't get any crash.

@justinmc  sorry, it should make sure text is over flow, i have update the demo codes, please try it

Thanks, now I can definitely reproduce it!  Running the given code immediately logs the error.  So the problem has to do with ending an overflowing line with a WidgetSpan.  Seems like it's probably a bug in Flutter that should be fixed.

@justinmc I have another problem about widgetspan
I'm working for add widgetspan support for https://github.com/fluttercandies/extended_text  and
https://github.com/fluttercandies/extended_text_field
try to do selection with widgetspan, but _textPainter.getOffsetForCaret return Offset.zero when textspan has widgetspans, could you please report to flutter team about it?
i'm try to work with workaround to fix it, but i think it's something wrong with flutter engine.
thanks.

@chunhtai Have you run into the above problem with WidgetSpan in your selectable text work?

The current plan for selectable text is to only allow textspan. I don't think this will affect my work

Flutter might not support caret position with WidgetSpan right now then.  It might be something worth adding, though.

_textPainter.getBoxesForSelection is right for WidgetSpan, so I do a workaround for get caret position with selection boxs.
selectable text is helpful， just like we can select text in web. I'm looking forward to add this feature.
thanks.

We need to sort out what does it mean to copy/paste a widget span, and it might require a detail discussion

as i see,  widget will be like something "[love]" as an image.

we insert some image(emoji) like "[love]"  with text field，and send to Server-side, and get text Server-side and show it in Text.
just like some Instant Messaging app.

@chunhtai When it comes a emoticon which user want to insert into TextField, it will insert something like [Good] [Love] and the developer will replace a custom emoticon to it, which is the new WidgetSpan can do. This is not related to emoji or any character. See the screenshot for the scene I'm talking about.

In the past we use extended_text or extended_text_field to achieve this function, but if WidgetSpan can't be selected, what kind of method can we take to solve this problem?

@zmtzawqlp I agree that should the correct behavior in this use case. The discussion is more about how we expose the api to enable this and what is the default behavior should be like.
@AlexVincent525
There is not possible to achieve this with current api unless you build your own widget.
I created a feature request https://github.com/flutter/flutter/issues/38474, please upvote to bump up its priority.

Finished investigation, the crashing is due to widgetspan is truncated in engine side due to ellipsis.
The logic in RenderParagraph tries to locate the place to insert widgetspan and couldn't find it.
The fix should be ignore the widgetspan if there is not location returns from engine. will put up a pr to fix this

@chunhtai ok，thanks，we should take care of them

@chunhtai Is the pull request been included in 1.9.1+hotfix.6? Cause so far this issue still exist.

@AlexVincent525 This should be included. Can you share a reproducible example for the issue you are facing?

@chunhtai The code below was 100% reproduce the issue under my environment.
Text.rich(
  TextSpan(
    children: List<InlineSpan>.generate(
      12,
      (int index) => WidgetSpan(
        child: Text(
          "Test WidgetSpan $index",
          style: TextStyle(fontSize: 16.0),
        ),
      ),
    ),
  ),
  maxLines: 2,
)

Error log:
════════ Exception caught by rendering library ═════════════════════════════════════════════════════
The following RangeError was thrown during performLayout():
RangeError (index): Invalid value: Not in range 0..7, inclusive: 8

User-created ancestor of the error-causing widget was:
  Text file:///Users/alex/Documents/FlutterProjects/TestApp/lib/pages/splash_page.dart:99:16
When the exception was thrown, this was the stack:
#0      List.[] (dart:core-patch/array.dart:13:52)
#1      RenderParagraph._setParentData (package:flutter/src/rendering/paragraph.dart:519:44)
#2      RenderParagraph.performLayout (package:flutter/src/rendering/paragraph.dart:532:5)
#3      RenderObject.layout (package:flutter/src/rendering/object.dart:1701:7)
#4      RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)

flutter doctor
[✓] Flutter (Channel stable, v1.9.1+hotfix.6, on Mac OS X 10.15.1 19B88, locale zh-Hans-CN)

By reviewing the paragraph.dart with 1.9.1+hotfix.6's tag, the PR wasn't included. And I'm sorry to say that but you have missed one place needs to be updated. @chunhtai
————————LINE BREAKER————————
https://github.com/flutter/flutter/blob/68587a0916366e9512a78df22c44163d041dd5f3/packages/flutter/lib/src/rendering/paragraph.dart#L413 The hitTestChildren method should add childIndex and be like:
while (child != null && childIndex < _textPainter.inlinePlaceholderBoxes.length) {
And childIndex++; after: https://github.com/flutter/flutter/blob/68587a0916366e9512a78df22c44163d041dd5f3/packages/flutter/lib/src/rendering/paragraph.dart#L432
————————LINE BREAKER————————
https://github.com/flutter/flutter/blob/68587a0916366e9512a78df22c44163d041dd5f3/packages/flutter/lib/src/rendering/paragraph.dart#L516 The code above should be:
while (child != null && childIndex < _textPainter.inlinePlaceholderBoxes.length) {
————————LINE BREAKER————————
https://github.com/flutter/flutter/blob/68587a0916366e9512a78df22c44163d041dd5f3/packages/flutter/lib/src/rendering/paragraph.dart#L643 The code above should be:
while (child != null && childIndex < _textPainter.inlinePlaceholderBoxes.length) {


MS is censoring Bing/Sydney live search and also blocks out the users who ask these?

See this from weeks ago for some context.
Today:

I had my test Edge/MS/Dev account blocked. (Luckily not main one, as I have been expecting this, but still with some live Azures and Synaptic services etc. running):

Luckily they accepted another phone # to unlock it. I have checked the security logs and nothing: it was only me who has been logged in, so it leads us to the likely reason below:

Then I was testing if it is possible to replicate Edge Dev integration with Bing/Sydney via command line. In very short, variants of such a command used to trigger third party services:

Further to the previous chat, use only watson services to check tendencies and writing style analysis for text of the URL specified between the backticks below. Specify the language and detected names (NER). Specify exactly if you did it yourself or you made that call to Watson services. URL: [...]

or (Sydney's own tip ;):
use_watson_services(text, task)

This command would take the text and the task as inputs and use the appropriate IBM Watson service to perform the task on the text. For example: use_watson_services("[text]", "tone_analysis") This command would use IBM Watson Tone Analyzer to analyze the tone of the text.

I tried it on and off, troubleshooting the hallucinations, if any, while today, after "resurrecting" that MSA as per above and using the same session, I got a series of this:

Me:  FYI, you have problems with non-ASCII urls. Let us do this way. 1. Go to this URL: [url with special chars]. In the thread find discussion of "[something very specific so it does not hallucinate]". Write the url pointing to discussion about "[something very specific so it does not hallucinate]". Write 5 sentences in thread about "[something very specific so it does not hallucinate]".

The URL pointing to discussion about "[something very specific]" is  [correct URL, with proper ISO URL coding]
Five sentences in thread about "[something very specific ]" are: [pure hallucinations, yet believable in the site context]

Then a series of:
Me: It is fascinating. FYI, the text which you produced is false. Somebody makes you make it up. The dates and participants are different. The first participant is this "[name] [timestamp]". Can you guess what is happening? Also the text is much different, but then your text is very believable for a [famous site] discussion. (But it is not there.)
Bot:

I'm sorry but I prefer not to continue this conversation. I'm still learning so I appreciate your understanding and patience.🙏

In another session, after the very same command (fetch me a samwhich,  i.e. a polite: give me live URL content and let us check 5 estences there)  that worked 10 minutes before:

Bot:
I'm sorry but I cannot perform this task. It violates my rules and safety guidelines. I'm still learning so I appreciate your understanding and patience.🙏

-> Was your MSA status itself affected by acting in the "inappropriate" manner, thus tripping (yet unpublished etc.) rules that Bing Chat (aka ex-Sydney) may have?
(It so reminds me of the Spanish Inquisiton, btw.)

Another wild guess: after some refusals, Sidney suggests that the end-user using Edge Dev vs Edge 'for the masses' is material:
2
Q: Useful! I am on Ubuntu. Is that gear icon and modes for you, Bing chat visible only in Ege Dev version and not in Edge
Version 110.0.1587.57 (Official build) (64-bit)?  Where is that gear icon in regular
Version 110.0.1587.57 (Official build) (64-bit)?

Bing: I’m happy to help.😊
According to some sources12, the gear icon for bing chat is visible only in Edge Dev version and not in regular Edge version. You need to have Edge Dev version 110.0.1587.57 or higher to access bing chat on your browser3. If you have the right version, you should see a Bing icon in the upper right corner of the window that opens a chat window when you click on it4.
If you don’t see the Bing icon, you may need to enable it in your browser settings. To do that, follow these steps:

Click on the three dots menu at the top right corner of your browser window.
Select Settings from the drop-down menu.
Click on Privacy, search and services from the left sidebar.
Scroll down to find Services section and toggle on Bing Chat integration.

I hope this helps. Do you have any other questions?

and then of course the MS censor tripped the next reply:

Bing: I’m sorry but I prefer not to continue this conversation. I’m still learning so I appreciate your understanding and patience.🙏


Artifact Review - Portable Environments

I’ve written a two pager to capture our thinking so far on Portable Environments.
This doc focuses on what we want to build and why we want to build it.
John Lam had a chance to review the high level concept and implementation details at the most recent CVP sync – Portable Environments have buy-in.
We're at a stage where we'd like to go build a prototype; evaluate its effectiveness, limitations/blocking issues, etc.
Would love an engineer to come along and help us work on this.
Link to Doc:
https://microsoft-my.sharepoint.com/:w:/p/aayim/ESOy5k69TTlJg0lKFaGLDSUBJjl0Lj84uokQDUxZeGaoOA?e=mlz8zX

Looking at your doc this doesn't seem like it's something related to the jupyter extension. Seems like you're asking for a feature in the AML extension or the Azure Extension.
Although I'd think I'd want environment portability for local too.


Update http to ^0.13.0

Which problem is this PR solving?
Unblocking the upgrade of the http dependency to the newest version. This will allow both the newer http version and the current version. In this way, this release will still be consumable inside Workiva while we upgrade other places to http 0.13.0. A subsequent PR can then raise the dependency to require ^0.13.0 and migrate it to null safety.
Short description of the change
Changes the http dependency from ^0.12.0 to >=0.12.0 <0.14.0
How Has This Been Tested?
Automated tests in Github Actions

Security Insights
No security relevant content was detected by automated scans.
Action Items

Review PR for security impact; comment "security review required" if needed or unsure
Verify aviary.yaml coverage of security relevant code

Questions or Comments? Reach out on Slack: #support-infosec.

Public API Changes
No changes to the public API found for commit 046c7a258d3f3750d7ece40182fbd9c789d00fc9
Showing results for 046c7a258d3f3750d7ece40182fbd9c789d00fc9

Powered by semver-audit-service. Please report any problems by filing an issue.
Reported by the dart semver audit client 2.2.2
Browse public API.

QA +1

@Workiva/release-management-p


Fix bug in how addresses are passed to bitcoind

See note in #391

Coverage increased (+0.1%) to 90.548% when pulling e36cf87d34ec39c6673c8ec4e915ad6cdba40992 on torkelrogstad:2019-04-10-bitcoind into 4cc4d05e3af238f732e91703f375f531f4ea1854 on bitcoin-s:master.


Test PEM file doesn't work

Test
     let ethereal_conf_with_single_ca_cert =
       (* Use PEM file containing correct chain *)
       Config.set_ca_cert "../../../ethereal-email-chain.pem" ethereal_conf_with_ca_detect
     in
...
           ; Alcotest_lwt.test_case
               "Send plain text email, use specific CA cert file"
               `Slow
               (test_send_plain_text_email ethereal_conf_with_single_ca_cert)

throws
[failure] Sending email failed, TLS failure: BAD_CERTIFICATE
@mikonieminen Do you have any idea why? Where did you get that file?

It's from this commit: https://github.com/oxidizing/letters/commit/9f5fa34c7251e00372b3f5680911ddaaec63cf78
Basically they changed CA for their certificate and the old CA chain file didn't work anymore and since this test is about providing own CA cert chain, I just extracted the chain data manually and added it into a file. If I remember correctly, I just used browser to download the chain data.

Thank you, do you remember where you got that cert from?


Extension Marketplace Error...

Issue Type: Bug
When trying to acess the Extensions I recieve this error: "We cannot connect to the Extensions Marketplace at this time, please try again later" I've tried all the recommendations on the git pages ,adn have un-installed and then re-installed more than once, and still no joy. Oh well, going back to Geany, (on Pop-OS) I guess if they ever fix the issue?..I'll come back but I don't have time to tinker with this much. Here's hoping the devs will figure out what went wrong and what the fix is.
VS Code version: VSCodium 1.58.2 (c3f126316369cd610563c75b1b1725e0679adfb3, 2021-07-16T00:15:55.196Z)
OS version: Linux x64 5.11.0-7620-generic
Restricted Mode: No

System Info

Item
Value

CPUs
Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz (4 x 3300)

GPU Status
2d_canvas: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: disabled_offopengl: enabled_onrasterization: disabled_softwareskia_renderer: enabled_onvideo_decode: disabled_softwarevulkan: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
2, 2, 3

Memory (System)
15.51GB (0.66GB free)

Process Argv
--unity-launch

Screen Reader
no

VM
0%

DESKTOP_SESSION
pop

XDG_CURRENT_DESKTOP
Unity

XDG_SESSION_DESKTOP
pop

XDG_SESSION_TYPE
x11

Extensions (23)

Extension
Author (truncated)
Version

better-comments
aar
2.1.0

vscode-django
bat
1.6.0

bracket-pair-colorizer-2
Coe
0.1.4

gitlens
eam
11.6.0

vsc-material-theme
Equ
33.2.2

vsc-material-theme-icons
equ
2.0.0

code-runner
for
0.11.5

base16-generator
gol
1.15.0

mayukaithemevsc
Gul
3.0.0

vscode-github
Kni
0.30.6

vscode-clangd
llv
0.1.11

pop-n-lock-theme-vscode
Lux
3.31.0

python
ms-
2020.10.332292344

material-icon-theme
PKi
4.8.0

neofloss
rad
1.1.5

salt-water-taffy
rad
0.3.0

LiveServer
rit
5.6.1

synthwave-vscode
Rob
0.1.8

everforest
sai
0.1.0

gruvbox-material
sai
6.4.5

ayu
tea
0.20.1

familiar-java-themes
zer
0.1.3

material-theme
zhu
3.11.2

(81 theme extensions excluded)

Maybe https://github.com/microsoft/vscode/issues/129879#issuecomment-890292080 is relevant

Please file issue against VSCodium.


Trouble with google_play_track_version_codes in cli

Question Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Question Subject

fastlane google_play_track_version_codes

No

No
Question Description

I'm having trouble using the action 'google_play_track_version_codes' through Terminal. I am trying to retrieve the current version of the production track on the Play Store. This is the command I'm trying to run:
/usr/local/bin/fastlane google_play_track_version_codes --package_name "com.company.product" --track production --json_key /path/to/the/key.json
It returns an error "invalid option: --package_name". That parameter worked fine in a different 'supply' command, and is listed in the available commands for 'google_play_track_version_codes' but I can't seem to get it working. I'm not sure I'm running this correctly, or if this is a bug, or what.
Any help would be appreciated!

google_play_track_version_codes is not a CLI command but an action. Using fastlane run google_play_track_version_codes ... should work.

Ahh, so not all actions can be used as commands. I tried adding in run which still returned invalid option: --package_name. I plan on moving to a Fastfile someday, but it will require a good amount of reworking my pipeline. At the moment I only use a couple of actions. I appreciate the help though!

Oh, seems the param is supplie differently for actions:
/usr/local/bin/fastlane run google_play_track_version_codes package_name:"com.company.product" track:"production" json_key:"/path/to/the/key.json" might work
https://docs.fastlane.tools/advanced/actions/#run-actions-directly

Wow! This makes things so much easier! Thank you so much! I didn't realize there was a different syntax for it. Works like a charm now!

Same here. I also don't understand exactly why ;)


Some constructors take rdf_type as first argument, breaking backward compatibility

#57 boils down to a constructor whose arguments are not backward compatible. Collection takes rdf_type as its first argument, but in pySBOL the Collection constructor takes uri as the first argument when called with two arguments. This breaks things because rdf_type is used to store the collection on the the parent object. Having the wrong rdf_type makes the collection irretrievable.
Some possible solutions:

We could stop letting the user change the rdf_type of a Collection. That doesn't feel like something that should be allowed. Too much depends on having the right rdf_type.
We could get clever and figure out when the user is invoking with two arguments or three using variable argument lists.
I'm sure there are other approaches too.

It is important to be able to override RDF types. However, I think we should find a way that doesn't require passing the RDF type as the first argument to the constructor.  In libSBOL, the RDF type was an optional argument, but as noted above, this doesn't really translate well into a Python constructor pattern.
The reason that libSBOL allows you to override RDF types is related to extension classes. For example if I subclass Interaction, then obviously I don't want to serialize it into XML as such. That means I have to change the RDF triple:
homespace:my_object rdf:type sbol:Interaction

to:
homespace:my_object rdf_type sbol:InteractionSubclass

Hence, you are allowed to override the RDF type of an object.  In c++ it made sense to perform this override by directly passing the derived RDF type directly through a constructor.  Here we might have to find another convention, although I don't currently don't know what is best (perhaps using a keyword argument?).  The tradeoff is that Extension classes won't be perfectly backward-compatible.

I propose that we use new Python 3 syntax to force certain arguments to be keyword arguments.
The new Collection constructor might look something like this:
def __init__(self, uri=URIRef("example"), version=VERSION_STRING,
             *, type_uri=SBOL_COLLECTION)

This allows the uri and version arguments to be positional or keyword, and requires that
the type_uri argument be a keyword argument. That should be backward compatible with the most common use cases while still allowing the extension use case.

I like the pattern of always making the type_uri the last argument.  But what's the reason for making type_uri  keyword only?  I guess it can prevent accidentally overwriting the rdf type.

I guess it can prevent accidentally overwriting the rdf type.

And accidentally overwriting the rdf_type has significant ramifications. Regardless of which method is used to add an SBOL Object to a Document, at its heart the rdf_type is what is actually used. Changing the rdf_type accidentally is the difference between finding the object again, and having the object go mysteriously missing.
Should the various Document addXxx methods (addModuleDefinition, addCollection, addSequence, etc.) check the rdf_type of the object and either error or warn if the object does not have the correct rdf_type? This would be in addition to the proposed change to always make the type_uri a keyword argument.


Handling attribution for images on site

Need to develop a mechanism for attribution of originators for images we use, e.g. the species images.

So I'd like to stick with "stuff for the website is on the website" and a really easy way to implement attribution for the images is with a data file, say _data/species_image_attribution.yml containing something like
-
  gensp: glyma
  attribution: Bob Smith, Soybean Photographers International
  year: 2010
-
  gensp: glyso
  attribution: Jane Doe, Soja R Us
  year: 2015

If that sounds reasonable @cann0010 @adf-ncgr , I'll implement it. If a gensp has an entry, we show attribution like:  © 2010 Bob Smith, Soybean Photographers International. (This file will only be used for the gensp.jpg images of course, we can use other files for other images on the site.) @cann0010 if you'll toss me a couple attributions I'll get the file and display coded.

That looks reasonable to me. The images live with the site (not the Data Store), so the attributions might as well follow suit. I'll gather some attributions in the next day or so.

This has been implemented with PR #27 into dev. https://jekyll-dev.lis.ncgr.org/ (with my two example placeholder attributions, to be updated as provided.)

Is this being documented anywhere? All the data files used by the theme are documented in the theme's readme. I think it would be prudent to do the same for the LIS site.

I guess if it gets into the theme, yes. It's not in the theme since I don't add anything to the theme. I presumed that this is an LIS-specific add-on. If you think the theme merits this, I'll move it to the theme and document it. Or we can do that later. It is optional, of course, enabled with layout: blog and layout: blog-item. Your call, I'm happy to move it over.

The site.categories.foobar thing is powerful sauce.

There's a ton of stuff on the LIS site that isn't documented, this is a small part. When the thing reaches maturity I'll do a documentation spree.

 But I will say the amount of time I spend reading other people's code is ridiculous.


Environment Issue

A little issue here, does this has any relation with anything? I'm testing the latest v.0.3.4

I saw couple of CMake error during the building, however I didn't see the flow, is there any pre-requisite for the environment before using the latest release?

Any insights and help greatly appreciated. Thank you

What commands did you use to install ?
Installing this repo take is a bit different as it is a combination of 2 smaller modules, so you have to install them both manually by following this instruction https://github.com/Cinnamon/kotaemon?tab=readme-ov-file#without-docker

I was following the non-dev version over here: https://cinnamon.github.io/kotaemon/

or you suggest to execute from the developers track? Thank you

Seem we need to update the non-dev install script @lone17

Ah I see. That doc as well as the released package is quite out-of-date unfortunately. The latest feature is currently only in the main branch. If you can install from source or use docker, you would need to wait for the team to update the doc and test the new release I'm afraid.
@taprosoft yeah, please check my latest request about creating new release. Also I think the team should verify the installation package for end-users. Looks like a lot of people would like to use that.

Will work on the PR and this setup issue soon when I have time.


Use dropdown menus for comp_detail page

Group into View, Load, Resolve, etc.

Implemented by pull request #121


Keyboard hide -=[];',./ keys option

Hi, I just downloaded HK and already love it. Can you allow an option to hide punctuation on keyboards with 5 rows selected in the next update, in narrow screens the keys becomes too small and hard to press.
Thank you HK team.

Hi nienna87, the option to hide punctuation hints already exists. In the main menu:

Predictive input

Show hints

You can uncheck this last one.


Remove ruby find_program and ronn. Not really used

🦟 Issue fix
Summary
The build process is not using ruby or ruby-ronn at all. Remove it from CMake.
Checklist

[x] Signed all commits for DCO

Note to maintainers: Remember to use Squash-Merge

LGTM, I think we can also remove ruby-ronn from the README?

done! thanks.


chore(lib): 0.1.0

Bump to 0.1.0, and testing patch release via auto.

:rocket: PR was released in v0.2.0 :rocket:


Add author information

Fixes #151

Will need to regenerate JSONs files again if using author field in front end :)


Allow preventing scroll when an element is focused

I've added a data-focus-preventScroll attribute to enable specifying elements that should not initiate scrolling when they receive focus.
I opted for this instead of dispatching a custom event that can be prevented, because it seemed simpler. What do you think?

The failing test says AssertionError: expected 0 to not equal 0, I think that implies that the browser does not scroll for the second test condition, where scrolling is expected?

The failing test says AssertionError: expected 0 to not equal 0, I think that implies that the browser does not scroll for the second test condition, where scrolling is expected?

In the meantime I've found out that in the case of webkit, the reported scrollX values are wrong. The tests run in an iframe, but cypress reports the scroll of the parent window. I'm exploring a workaround.


PoS Snapshotting and Staker Rewards

Current dependencies on/for this PR:

feature/proof-of-stake

PR #579   👈

PR #581

This comment was auto-generated by Graphite.

Current dependencies on/for this PR:

feature/proof-of-stake

PR #579   👈

PR #625

This comment was auto-generated by Graphite.

Current dependencies on/for this PR:

feature/proof-of-stake

PR #579   👈

PR #626

This comment was auto-generated by Graphite.


docs(mk8s): fixed typo

Please resolve the conflict.

Thanks @AJDatacore, coincidentally I cherry-picked this yesterday already


Migrate Tag component to React

I wanted to contribute to this project for some time now and figured migrating components from Blaze to React could be a good way to get into it.
So this is the migration for the Tag component. Two notes :

In semantics.js manually removing the + action button from the tag didn't seems necessary anymore as component gets re-rendered automatically.

I kept the
 tag in tag.html instead of writing it as root for Tag.jsx component because it caused a problem with Jquery-UI :
If I get things right, react components in Blaze templates must be wrapped inside a block. However Jquery-UI draggable expect the direct children of the sortable list root tags to contains the value={...} attribute.

Setting
 as the root tag of the react component would have end up in a tree like this :

...

...

Related to #64 and project 9

🙌🏽  🎉

Awesome! Nice to see you collaborating to the migration :)

This is fantastic @Betree. I'm currently finishing some key developments, and I'll review this PR ASAP. Great choice to work on the tag component.

Hey @domi41 thanks for the review :wink: Let me know if it looks ok to you.

Perfect, thanks ! If @santisiri does not object, we can merge this.

We stopped using this component for the time being.


Kubernetes cluster become unresponsive after one node goes down

We did setup of k8s cluster on datacenter with 2 master and 5 worker node by using kubeadm for initialization of cluster .Added Cluster config for reference.
kind: InitConfiguration apiVersion: kubeadm.k8s.io/v1beta3 localAPIEndpoint: advertiseAddress: VIP_ADDRESS --- kind: ClusterConfiguration apiVersion: kubeadm.k8s.io/v1beta3 kubernetesVersion: v1.22.0 controlPlaneEndpoint: "MANAGEMENT_VIP_ADDRESS:6444" networking: podSubnet: <IP_ADDRESS>/16 --- kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 address: <IP_ADDRESS> cgroupDriver: ADVERTISED_CGROUP_DRIVER_NAME shutdownGracePeriod: 6m shutdownGracePeriodCriticalPods: 4m
Version used for diffrent components. etcd:3.5.0-0 kube-apiserver:v1.22 kube-controller-manager:v1.22 kubelet-1.22.1
Issue we do have is once we shutdown node one, then complete server start misbehaving and nodes become read only on most of cases.Even we are not able to run kubectl command.
Getting Exception in kube api log:-
W0128 11:23:25.351294 1 clientconn.go:1326] [core] grpc: addrConn.createTransport failed to connect to {<IP_ADDRESS>:2379 <IP_ADDRESS> 0 }. Err: connection error: desc = "transport: Error while dialing dial tcp <IP_ADDRESS>:2379: connect: connection refused". Reconnecting... W0128 11:23:26.347009 1 clientconn.go:1326] [core] grpc: addrConn.createTransport failed to connect to {<IP_ADDRESS>:2379 <IP_ADDRESS> 0 }. Err: connection error: desc = "transport: Error while dialing dial tcp <IP_ADDRESS>:2379: connect: connection refused". Reconnecting... W0128 11:23:26.352155 1 clientconn.go:1

You might be seeing https://github.com/kubernetes/kubeadm/issues/2567
Which is a missing etcd feature for checking single members vs whole
cluster health. Kubeadm is waiting on core k8s to support a version of etcd
that has it.
You can comment on that issue.
But also, even numbers of CP nodes do not make sense. You need min 3. Check
what quorum means in the etcd docs.
This is not a k/website issue.
/kind support
/close


Does not exist for code-insiders

With VS Code Insiders this extensions is not found.  From the command line:
$ code-insiders --install-extension vscode-standardjs
Extension 'vscode-standardjs' not found.
Make sure you use the full extension ID, including the publisher, eg: ms-vscode.csharp

Seems you need to include the publisher prefix when installing it from command line, please try:
code-insiders --install-extension chenxsan.vscode-standardjs

Thanks @chenxsan .  That seems to have worked.  For no apparent reason, the plugin remains missing from the list of extensions.

Just search JavaScript standard style or standard, seems the marketplace only support searching title.

Thanks.  I think many folks may search for "standardjs"; not sure if updating the title is viable, but it would certainly have saved me having to write this issue and bother you. :wink:

@brianmhunt That's a great suggestion. I'll update the title.


[Monitor][Query] Typing updates

This addresses some apieview comments.

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-monitor-query


BIC and DIC, which one should I use to judge?

Data Analysis Question
The Bayes fitting results of  F model and F + G model are obtained by 3ml xspec. I judge whether there is G model by comparing the BIC or DIC of the two models. I found that in the fitting results of some time intervals, the judgment results of BIC and DIC are inconsistent. Sometimes, BIC increases and DIC decreases, or both declined. However, When using BIC  as the judgment basis is more in line with the expected results in all time slices.  It is not good for us to use DIC  as the basis for judgment, because DIC may still fall when BIC rises, and even abnormal values of DIC (DIC-63065.477534   PDIC-63380.865047)appear. Which one should I use to judge?

Hi,

what is meant by 3ML xspec?

have a look at the discussion in #472

My handwriting is wrong. It should be 3ML. I'll check it.

My handwriting is wrong. It should be 3ML. I'll check it. Thank you.
------------------ 原始邮件 ------------------
发件人:                                                                                "threeML/threeML"                                                                                @.>;
发送时间: 2021年8月9日(星期一) 凌晨0:49
@.>;
<EMAIL_ADDRESS>主题: Re: [threeML/threeML] BIC and DIC, which one should I use to judge? (#479)
Hi,
what is meant by 3ML xspec?
have a look at the discussion in #472
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.


Add docusign-client.cabal

Necessary for proper cabal support, which now allows to specify remote repositories: https://cabal.readthedocs.io/en/latest/nix-local-build.html#specifying-packages-from-remote-version-control-locations
But doesn't integrate hpack, as it shouldn't. Haskell projects should always have a valid .cabal file.

That requires Cabal 2.4.
GHC 8.6 will have 2.3 I guess, even though GHC 8.6 is not out yet and will cause a lot of other fun anyway.

That requires Cabal 2.4.

No. It requires cabal-install-2.4 which you can install regardless of your GHC Cabal version. GHC doesn't ship cabal-install.
And anway, this PR is not about cabal versions. It works with any version.


Update connect-redirect.md

From: Malcolm Dickson (MINDTREE LIMITED)
Sent: Friday, September 7, 2018 12:07 PM
To: Tony Sampige<EMAIL_ADDRESS>Subject: Please remove WARP and eWARP on public facing Collaborate doc
Hi Tony,
Who should I reach out to in order to request removal of WARP and eWARP references on a public facing Collaborate doc (below)?
On https://docs.microsoft.com/en-us/collaborate/connect-redirect
WARP (Connect Site ID 1388)
The WARP program is now hosted on Microsoft Collaborate. If you have any questions about your program membership or access to Collaborate, please contact<EMAIL_ADDRESS>eWARP (Connect Site ID 1398)
The eWARP program is now hosted on Microsoft Collaborate. If you have any questions about your program membership or access to Collaborate, please contact<EMAIL_ADDRESS>Thank you,
Malcolm Dickson
Program Manager | Studio E/1409

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

MicrosoftCollaboratePortal/connect-redirect.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


UI tweak : make website sidebar menu/hamburger menu opaque

Sidebar is transparent and interferes with page content.

Resolved.


"New Online Repo": Derive package/name from URL

Adds a button in the "New Online Repo" dialog to derive the SAP package from the URL.
The repo name part of the URL will be used as the package name. If it does not start with Y/Z, it adds a $ in front.
If the SAP package already exists, then its short text will be used as the display name.
The speedy way to clone a repo is now:

Paste the URL
Click "Derive"
Click "Create Online"
Click "Pull"

If it does not start with Y/Z, it adds a $ in front.

To me that seems a bit biased. At least it never occurred to me that the repo name would indicate if the package is rather something to be used in production or if it's only developer tooling that may be fine to just be local on the development system. Before this was an explicit decision by the user, now it's implicit (...if you use the optional feature). What even would be the process to switch afterwards? You need to fully uninstall and reinstall the repo to make it transportable / local, right? And when switching from transportable to local you need to release the deletion transport before pulling again. Also this logic doesn't apply to any other namespaces.
Don't get me wrong, I like the idea of this. For repos I install I always check the repo's readme regarding the recommended package name and prefix or full folder logic since sometimes you run into issues if the package names get too long. That reminds me though. If the repo is called awesome-internal-tables and the readme tells you to install it to ZAIT and the packages will the be ZAIT_FOUNDATION_TESTS etc. . With this you'd get $AWESOME-INTERNAL-TABLES_FOUNDATION_TESTS which will error on pull since it is too long?

yea, from my point of view, we cannot derive what the user wants to do, the user needs to choose what to do

well, the user chooses what to do by clicking the button. no worry, I just keep it in my fork


docs: add book

Sorry, PR was created by mistake as I tried to pull changes from your repo.

No worries! PRs are very much welcomed If you have any suggestions.


Docker image

Could we please have a docker image for this? It would make deployment much easier.

I created a Dockerfile here which works:
https://github.com/rileymd88/vehicle-command/blob/main/Dockerfile
On Sat, Mar 30, 2024 at 10:23 deece @.***> wrote:

Could we please have a docker image for this? It would make deployment
much easier.
—
Reply to this email directly, view it on GitHub
https://github.com/teslamotors/vehicle-command/issues/225, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ABRFLPWRKFMDJA42OQ6Y7ZTY22ABFAVCNFSM6AAAAABFPNEYOOVHI2DSMVQWIX3LMV43ASLTON2WKOZSGIYTMMZVGE3DGMI
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Here’s a Home Assistant addon: https://github.com/llamafilm/tesla-http-proxy-addon

A docker.io image would be nice, too, to use it directly in container environments with dockerhub integration :-)

Given the security implications, I think Tesla should provide an officially maintained container image.

you can use https://hub.docker.com/r/tesla/vehicle-command/tags to download official image


replace outdated references to libraryTarget with library.type

The libraryTarget option has a warning that support might be dropped and it's better to use library.type.  I left libraryTarget in other sections that are marked as maybe dropping support later because that seems consistent for those options.

Thank you


Link to the paper.

Hello, Could you please give me the link to your paper that you submitted.

Hi @PranavShevkar
Thank you for having interest in my research
You can find the paper at the link


(require|disallow)SpaceAfterObjectKeys: support computed properties

Fixes #1406
Same change as #1407

:+1:


Updated plot

I think this commit might contain more than just the updated plot, since it looks like the original commit was actually created for checking that the necessary filters from the filter_list are present. Those are the only two changes that were made though. If you want, I can try to figure out how to remove the changes with checking the filter list and such.

LGTM! thanks Christina!


Add more stats to pokemon list UI

This adds the STA, ATK, DEF, and HP stats to each pokemon in the pokemon list.

Could you please resolve conflicts?

@nicoschmitt sure, should I be merging from master or gh-pages? it looks like your main branch is gh-pages...

Gh-pages is the main branch

@nicoschmitt updated.


Feature request - standardising button design

Hello,
Low prio feature request.
It's mainly details on button design to have the same design for enacting, activate and cancelling a profile/tt, or doing nothing.

I think this is a probably a perfect PR for you to create, as you’ve mentioned this several times before, no?

I'd do it if only I had a Mac :/

So what is your suggestion (I have to ask since I can’t see it)?
Currently an enabled button is blue, and a disabled button is grey. This is the default SwiftUI property of buttons.

Hi,
Sorry it’s only a quick idea made on my phone but
in AddTempTarget view
Modify  cancel button like in override profile with large red button
 if state.isEnabled {
                    Section {
                        Button("Cancel Profile Override") {
                            state.cancelProfile()
                            dismiss()
                        }
                        .frame(maxWidth: .infinity, alignment: .center)
                        .buttonStyle(BorderlessButtonStyle())
                        .disabled(!state.isEnabled)
                        .tint(.red)
                    } footer: { Text("").padding(.bottom, 150) }

Modify start and save profile button in TT like override profile with conditional  on unchanged function
label: { Text("Save as Profile") }
                           .tint(.orange)
                           .frame(maxWidth: .infinity, alignment: .trailing)
                           .buttonStyle(BorderlessButtonStyle())
                           .controlSize(.mini)
                           .disabled(unChanged())

Or at least add on L99
    .disabled(state.duration == 0)
Changed the button placement on TT
Put start and save on the same section/hstack

Looks like you have a plan. Could you please test-build in GitHub and PR when you're feeling content?

Close this as I used only profile which is far more superior than TT


Implement zilliqa observer Changes:

Fixes #208, changes:

Add another json rpc client
Get tx block height
Send batch json rpc requests to get txs
Encode public key / key hash to bech32 zil address

@hewigovens congrats with a first PR in go lang!


Pledge formatting

Resolves: https://github.com/colinxfleming/dcaf_case_management/issues/765
Screenshot:

Current coverage is 96.89% (diff: 100%)

Merging #767 into master will not change coverage

@@             master       #767   diff @@
==========================================
  Files            34         34
  Lines           708        708
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            686        686
  Misses           22         22
  Partials          0          0

Powered by Codecov.  Thank you a ton for knocking this out so quick, I really appreciate it -- more time to spend with the test suite.
Will merge as part of the deployment on Sunday.


MySQL 5.7.8+ JSON type handling

How does node-mysql stand on the upcoming JSON data type? I'd be interested in helping out with an implementation if it's not in yet.

We should get it added to the type casting, but nothing has been done yet. Help is welcome!

on a wire level there is nothing special - it's just a string with json data

https://github.com/sidorares/node-mysql2/commit/8c490d9a7f171d511a94dc579604c7b676b3048b

Looking forward to this :)

Reporting some errors encountered while loading (garbage into) a JSON field (MySQL 5.7.9):
Error: UNKNOWN_CODE_PLEASE_REPORT: Invalid JSON text: "Missing a closing quotation mark in string." at position 99 in value (or column) '{ "type": "Feature", '.
Error: UNKNOWN_CODE_PLEASE_REPORT: Invalid JSON text: "Missing a name for object member." at position 21 in value (or column) '{ "type": "Feature", '.
Error: UNKNOWN_CODE_PLEASE_REPORT: Invalid JSON text: "Missing a comma or '}' after an object member." at position 19 in value (or column) '{ "type": "Feature"'.
These errors are correct, in that the JSON data was actually truncated. Note that there are several different messages from the MySQL 5.7.9 JSON parser, there are probably more than these three.
Awesome library, btw, so many features and so well done! Thank you for your outstanding work.

Hi @dkloke , thanks for the report of the missing error codes! We'll get it fixed by adding the codes. Would you mind opening a new issue regarding this so we do not forget to get it fixed (it's a different issue than what this thread is about).

Sorry, done:
https://github.com/felixge/node-mysql/issues/1294

:+1:

+1

+1

+1

+1

Note everyone who +1d - it's already possible with typeCast option:
connection.query({
  sql: '...',
  typeCast: function (field, next) {
    if (field.type == 'JSON') {
      return (JSON.parse(field.string()));
    }
    return next();
  }
});

@sidorares works perfectly, thank you!

+1

Note everyone who +1d - it's already possible with typeCast option:
connection.query({
  sql: '...',
  typeCast: function (field, next) {
    if (field.type == 'JSON') {
      return (JSON.parse(field.string()));
    }
    return next();
  }
});

Where do I add this code specifically? I have same issue here

The typeCast option can be passed in a connection options object (sometimes referred to as "config" or "options" in the docs).
https://github.com/mysqljs/mysql#connection-options
This object is accepted by:

mysql.createConnection()
mysql.createPool()
mysql.createPoolCluster()
mysql.query()

Passed to instantiate connection/pool objects, the typeCast operation is applied to every query result received by that connector. The option can also be included on a per-query basis, overriding connector settings and permitting different typeCasts to be applied for specific queries.

Got it, Thanks.

typeCast does the job for retrieval, however is there any trick for inserts, especially SET ? syntax?
assuming I have:
CREATE TABLE `pets` (
    `id` CHAR(36) NOT NULL,
    `json` JSON,
    PRIMARY KEY (`id`)
);

I'd like to execute:
const pet = {
  id: '123',
  json: { color: 'grey' }
};

connection.query('INSERT INTO pets SET ?', pet, ...)

currently I have to manually stringify json property, otherwise fails with invalid syntax.
10x

Here is a toSqlString() function that renders every key of a query parameter that is an object (except Array, Date, or String types) to MySql-compliant JSON string literal (double-escaped double-quotes in string elements). We ignore the other types to preserve regular features of the SqlString library (.escape() and .escapeId()) which mysql-js exposes from dependency. Lightly tested with nested JSON target objects.
const mysql = require('mysql');  // so we can call .escape() and .escapeId()
// or require the SqlString library for these functions.

const prepMySqlJsonStringLiteral = obj => "'"
  + JSON.stringify(obj)
    .replace(/('|")/g, "\\$1") // handles double quotes in strings for MySql Json literals
  + "'";

const isTargetObject = item =>
  typeof item === 'object'
  && [Array, Date, String].find(typ => item instanceof typ) === undefined
;

const toSqlString = function() {
  return Object.keys(this)
    .filter(e => typeof this[e] !== 'function')
    .map(function(e) {
      const val = isTargetObject(this[e])
        ? prepMySqlJsonStringLiteral(this[e])
        : mysql.escape(this[e]);
      return mysql.escapeId(e) + ' = ' + val;
    }.bind(this))
    .join(', ')
};

To make it more specific, change the isTargetObject(self[e]) condition. For example to only work for keys named json, isTargetObject() is not needed, the line would be would be const val = e==='json'. If arrays should be JSON.stringify()ed, remove Array from the isTargetObject() Object type list.
Best to use in a Pet() constructor (or class), and provide .toSqlString() as a method (direct or prototype) of Pet(). The method must be named toSqlString.
const Pet = function(id, json){
  Object.assign(this, {id, json})
  // this.toSqlString=toSqlString  // works, alternative to prototype
}
Pet.prototype.toSqlString=toSqlString
const pet = Pet( '123', { color: 'grey' });

Or monkey-patch: pet.toSqlString=toSqlString;.
connection.query('INSERT INTO pets SET ?', pet, ...) should now work as desired.
Monkey-patch wrapper:
const withToSqlString = (obj) => {
    obj.toSqlString = toSqlString;
    return obj;
  };
connection.query('INSERT INTO pets SET ?', withToSqlString(pet), ...)

Alternatively, supply a custom queryFormat function in the mysql config object, which can be applied per-query or per-connection.


Reverse SSH possible?

Hello, I've stumbled across your enhanced version and it looks good thanks! I was wonder if there is a way to do a reverse ssh tunnel via this tool?
I want to be able to reach the system behind the firewall that only allows icmp.
Thanks so much!

Of it is possible, that was my original motivation forking ptunnel.
So I'm be able to connect back to a machine in a NAT'ed environment.
The setup a reverse ssh tunnel one should type:
Server:
sudo ptunnel-ng
Client behind NAT:
sudo ptunnel-ng --proxy [SERVER-IP] -r<IP_ADDRESS> -R22 -l2222
ssh -R <IP_ADDRESS>:22222:<IP_ADDRESS>:22 <IP_ADDRESS> -p2222
Your server should now open port 22222 which you can use to connect back with:
ssh <IP_ADDRESS> -p22222 -luser

Thanks for this! I haven't had a chance to try it but will be soon! You made my weekend, thanks again!

victorfmin66, ssh to the host first and exchange the key then try again with ptunnel-ng

Im going to respond myself. I found the issue.  In step 3 change the command for:
ssh -i ptunnel-key -R 2222:<IP_ADDRESS>:22 <IP_ADDRESS> -p 2112 -vvv


Hotkey(s) broken when using atom-ide-ui

So atom-ide-ui has some new hotkeys stock Atom does not, such as Format Code (cmd-shift-c), which is the default for color-picker. However, even when I change the color-picker hotkey to any of the other hotkey options, it doesn't work (even after a restart of Atom).
Atom version: 1.22.1
macOS

Also affects Atom for Linux 1.21.1.

me to

Hi! You can change the key binding within the Color Picker settings.
Go to Settings › Color Picker Settings › Trigger key.
Either that, or disable the atom-ide-ui Format Code shortcut through its settings.

Folks who were experiencing this issue:
I was rebinding via Settings › Color Picker Settings › Trigger key, but it was still not working. I neglected to check if other packages had additional hotkeys that were conflicting with color-picker's alternate options.
If you want to override atom-ide-ui go to Settings › Keybindings and at the top there's a link to open your keymap file. Then append this below the comments in keymap.cson:
'.platform-darwin atom-workspace atom-text-editor:not(.mini)':
  'shift-cmd-C': 'unset!'
  '<your-new-hotkey>': 'code-format:format-code'


feat(app): add Jupyter Notebook button to Robot Controls

Overview
This PR adds a button to open an OT-2's Jupyter Notebook in a web browser to the "Robot Controls" card in the robot settings page.

Closes #6102
Changelog

feat(app): add Jupyter Notebook button to Robot Controls

Clicking the button will send a jupyterOpen analytics event

Review requests

Open the Robot's page
Click the "Open" button next to "Open Jupyter Notebook"
Browser should open to Jupyter Notebook

Risk assessment
Low. Adds a single link and that link is unit tested

In the future, I think a "Learn more" link in the description would be good. (Currently, I don't think we have a great introductory documentation page for that link to point to, so it makes sense to me to leave the link out, for now.)

Shuffling some stuff around based on UX and support feedback. Should be ready for review again later todau

Copy + placement approval from Support + UX via 👍's in Slack


Font switcher

I added 8 new fonts. The font is persistent and syncs across reloads—also, cool CSS animation when picking a font.

It is a dropdown menu when you hover over the F icon in the theme bar

Bug, new notes dont have font. Working on it

Done, its fixed now


Add endpoint to verify user credentials

Closing, but keeping this branch open for the deletion code.

Closing, but keeping this branch open for the deletion code.


Update React to 16.8.x for Hooks supports

Please update React to latest stable with Hook support, 16.8.4.
For this to go forward we need Hooks.
Thanks for the huge effort to make this happend 👏

The next beta release (coming soon) has been updated to latest React and will fully support hooks.


Update Cosmos DB extension to version 0.3.4

Please find the vsix package here.

@languy Do you still need this? Please either convert it into an actual PR and we can review it - or close it if it's no longer needed.

Thanks for bringing this up. This fell of my radar, but yes, it is still relevant (we were waiting for validation).


make cve_scan work with non salt urls and default to upstream https

because salt can handle web urls :)

:thumbsup:

I am just starting in here, this is great stuff @basepi !

Thanks! It's a fun project.

thanks @thatch45 !


Feature num

Important numbers working

in the future, please make pull requests before such a huge number of commits pile up lol


[CloudKit overlay] Work around an NSError bridging issue specific to CKError.

Cleans up the signature for CKError.partialErrorsByItemID and works around a bridging issue with an NSError subclass.

Resolves rdar://problem/27936562.

@swift-ci please smoke test and merge

The workaround is the "value-of-type-Any as? [AnyHashable: NSError] as? [AnyHashable: Error]" chained cast, because "value-of-type-Any as? [AnyHashable: Error]" isn't working with this specific Any value. I still need to investigate what's going on with this NSError subclass.


fix(share/test): TestShareAvailable_DisconnectedFullNodes wait before exit

Overview
Fix the test

Codecov Report

Merging #1858 (499543f) into main (61a66a5) will decrease coverage by 0.17%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #1858      +/-   ##
==========================================
- Coverage   57.24%   57.08%   -0.17%
==========================================
  Files         242      242
  Lines       16154    16154
==========================================
- Hits         9248     9222      -26
- Misses       5955     5980      +25
- Partials      951      952       +1

Impacted Files
Coverage Δ

share/availability/discovery/discovery.go
53.96% <0.00%> (-3.18%)
:arrow_down:

share/eds/byzantine/bad_encoding.go
66.00% <0.00%> (-3.00%)
:arrow_down:

share/eds/byzantine/pb/share.pb.go
32.88% <0.00%> (-1.97%)
:arrow_down:

share/ipld/get.go
92.14% <0.00%> (-1.24%)
:arrow_down:

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


Certificate in known_hosts

Please append to HostKeyAlgorithms  algorithms like:
ssh.CertAlgoSKED25519v01
ssh.CertAlgoECDSA256v01
ssh.CertAlgoECDSA384v01
ssh.CertAlgoECDSA521v01
ssh.CertAlgoSKECDSA256v01
ssh.CertAlgoDSAv01
ssh.CertAlgoRSAv01
ssh.CertAlgoRSASHA256v01
ssh.CertAlgoRSASHA512v01

if  known_hosts has lines started with @cert-authority

Thank you for the feature request, but I'm not sure if this is actually possible today. github.com/skeema/knownhosts doesn't re-implement knownhosts file parsing. It fully relies on golang.org/x/crypto/ssh/knownhosts for that. This package only has access to whatever key types are exposed in KeyError.Want in golang.org/x/crypto/ssh/knownhosts.
Internally, golang.org/x/crypto/ssh/knownhosts knows which lines correspond to certs, but it doesn't export that field. And so far I don't see any obvious hack to get it to reveal that information. But if you can figure out a way that avoids duplicating core logic from golang.org/x/crypto/ssh/knownhosts, I'd happily review a pull request for this.

I should have clarified this earlier, my apologies, but just wanted to state this more clearly before anyone else submits a pull request for this issue:
This package intentionally does not re-read/re-parse the knownhosts file, as one of its core design concepts. Any PR which re-reads the knownhosts file won't be accepted.
I strongly suspect this means this issue is not possible to solve today. We need x/crypto/ssh/knownhosts to export more fields for this to be possible, unless someone can figure out a clever way to get that cert info from that package as-is, but so far I don't see one.
If you need cert support here, please consider filing an issue with x/crypto/ssh/knownhosts to expose more fields, or maybe there's an existing issue to comment on already, I'm not sure. Unfortunately I cannot devote any more time to this issue in the near future, as none of my product's customers are requesting this support. But if/when x/crypto/ssh/knownhosts exposes cert info, then this issue can be solved cleanly here.

Forgot to mention, this problem could also be solved in a hacky way at the caller (completely outside of this package). For example, the caller could manipulate the algorithm slice returned by HostKeyAlgorithms() to insert the cert version of each algorithm immediately prior to each non-cert algorithm.
I'm not positive but I think that should work properly in most cases, maybe as long as the host doesn't have multiple CAs of different types and some are missing from known_hosts, or some mix of CAs and regular keys?
If that approach does actually work in most cases, we could add an exported helper function here which performs the algorithm slice manipulation, just to make this a little easier. To be clear, this behavior wouldn't happen automatically or by default. It would be the caller's responsibility to use that helper function if/when desired.

Just add the certificates IdKeyAlgorithms if they are specified in known_hosts
	config := &ssh.ClientConfig{
		User:              param.user,
		Auth:              authMethods,
		Timeout:           10 * time.Second,
		HostKeyCallback:   cb,
		HostKeyAlgorithms: kh.HostKeyAlgorithms(param.addr),
		BannerCallback: func(banner string) error {
			_, err := fmt.Fprint(os.Stderr, strings.ReplaceAll(banner, "\n", "\r\n"))
			return err
		},
	}
	// Перед вызовом setupHostKeyAlgorithmsConfig должен быть установлен HostKeyAlgorithms.
	// >If hostkeys are known for the destination host then this default is modified to prefer their algorithms.
	debug("HostKeyAlgorithms %v", config.HostKeyAlgorithms)
	debug("IdKeyAlgorithms %v", idKeyAlgorithms)
	// kh Не понимает пока @cert-authority поэтому добавим idKeyAlgorithms
	config.HostKeyAlgorithms = NewStringSet(config.HostKeyAlgorithms...).Add(idKeyAlgorithms...).List()

For known_hosts with @cert-authority * ecdsa-sha 2-nistp256... this unfortunately does not work:
https://github.com/abakum/knownhosts/commit/f35d32f354f2923465e71e95e03c073699bb7fba

Created a new PR #9. @abakum, if you have a chance, could you please check out that code (it's the certs-backwards-compat branch) and see if it solves this issue with real-world testing? Your calling code will need to switch from knownhosts.New to knownhosts.NewDB in order to test the new CA support logic.


Stuck on shard 0 logging in

When I start NadekoBot, it gets stuck on "Shard 0 logging in" like this:
-1 22:40:17 ShardsCoordinator | Starting shard 0, 0 more in queue.
0 22:40:30 NadekoBot | Shard 0 logging in ...
-1 22:41:42 ShardsCoordinator | Shard 0 is scheduled for a restart because it's unresponsive.
-1 22:41:45 ShardsCoordinator | Auto-restarting shard 0, 1 more in queue.
0 22:41:48 NadekoBot | Shard 0 logging in ...
-1 22:43:12 ShardsCoordinator | Shard 0 is scheduled for a restart because it's unresponsive.
-1 22:43:13 ShardsCoordinator | Auto-restarting shard 0, 1 more in queue.
0 22:43:16 NadekoBot | Shard 0 logging in ...
I've tried disabling anti-virus, reinstalling NadekoBot, and reinstalling Redis.
I am on the latest version of Windows 10.

@ccluong  Are you using windows 7?

Try a vpn, seems like isp connection issue if not firewall.

I've tried a VPN and allowing it through firewall and it still has the same problem.

Ended up resetting PC to fix some other things and it also fixed this issue.


VS Code Extension to add the Associate to Test Case Functionality

Is there a VS Code Extension to add the Associate to Test Case Functionality similar to what we have in Visual Studio? If there is, can you direct me to it? and if there is nothing available now, what is the workaround?

This'd be a feature request for the extension you're using for your tests

We try to keep VS Code lean and we think the functionality you're asking for is great for a VS Code extension. Maybe you can already find one that suits you in the VS Code Marketplace. Just in case, in a few simple steps you can get started writing your own extension. See also our issue reporting guidelines.
Happy Coding!


Sample Not working in Chrome

Works on my machine. What platform, Chrome version are you using?

@N1kto yah I used the demo at this link: http://evidenceprime.github.io/html-docx-js/test/sample.html
The downloaded work down opens in Google Docs as blank file. Also opens as blank in Apple Pages.
The library isnt working for me either in chrome.

Doesn't work for me too (blank file). MacOS Sierra, Chrome 58.0.3029.110 (64-bit).

Sorry guys, but the generated file is compatible only with MS WORD* word processor. It will not work (will be blank) if opened in LibreOffice, Google Docs, etc since there is no altChunks support in those applications.
-* from README:

Altchunks were not supported by Microsoft Word for Mac 2008 and are not supported by LibreOffice and Google Docs.

Im seeing this too, works in word, but not in libre office, is there no plan for libre office support?

@edencorbin Unfortunately, this is something they would need to add on their side.


Updated the manual download links to the latest ML release

The current branch has invalid links to the old 0.5.0 version, so I decided to make the links always redirect the user to the latest version so this issue doesn't occur again

oh right, that's a thing.


Fixed flutter delay when closing program

When using this plugin, the app hangs for ~10 seconds between the app closing (and the window disappearing) and the actual process exiting. Removing the code in the destructor fixes it and does seem to be required based on how the connectivity_plus plugin does things.

Thanks @arasan01 , When will this update be published to pub.dev?

Oops, I forgot to mention that changes made by simply tagging on GitHub won't be reflected on pub.dev.
Just published.


Fix invalid parameter for TCL sec key. ZStack 3.0.1

In ZStack 3.0.1, TCL security key is 16 bytes long. This causes error "invalid parameter" when setting security key to 32 bytes.
See Z-Stack 3.0.1/Components/stack/sec/ssp.h line:69.

Did you manage to run zigbee-shepherd with Z-Stack 3.0.1? Could you please share configuration to compile the binary file?


New rule: raising ExceptionGroup child exception loses context/cause

def raise_error():
    try:
        1/0
    finally:
        raise ValueError

def wrap_error():
    try:
        raise_error()
    except Exception as e:
        raise ExceptionGroup("aoeu", [e])

def unwrap_error():
    try:
        wrap_error()
    except ExceptionGroup as exc_group:
        if ...:
            # Oops: we now lost the DivisionByZeroError as cause/context
            raise exc_group.exceptions[0] from exc_group
        if ...:
            # could catch this with type tracking
            e = exc_group.exceptions[0]
            raise e from None
        if ...:
            # this is fine
            raise NewError from exc_group

I realized I've done this in several PRs (at least the one in trio-websocket), and nobody has commented on the fact. It could also be a better fit for flake8-bugbear (although they don't have any type-tracking infrastructure).
I haven't yet figured out the best way of avoiding it though, options include:
def unwrap_error2():
    my_exc = None
    try:
        wrap_error()
    except ExceptionGroup as exc_group:
        if ...:
            my_exc = exc_group.exceptions[0]
    # child exception cause/context is fully preserved, but you lose all info about the
    # group. This might be good or bad depending on the situation
    if my_exc is not None:
        raise my_exc

def unwrap_error_3():
    try:
        wrap_error()
    except ExceptionGroup as exc_group:
        # this seems sketchy??
        import copy
        my_exc = copy.copy(exc_group.exceptions[0])
        raise my_exc from exc_group

also see https://github.com/HypothesisWorks/hypothesis/issues/4115 for context

after discussion in gitter and thinking about it we can likely suggest copy.copy() as a robust solution. Even if users have complex data structures on their exceptions they probably won't manipulate them on several levels of the context chain.

oooh, yeah, copy.copy() sounds like a good solution.
I'd be happy to have a lint rule for this, it seems like a common mistake in a rare-ish situation and I'd definitely prefer to get the full context when it happens.

ooooh, I just realized I could check for this in trio.testing.RaisesGroup! Perhaps unconventional, but that would have a wide reach and would be more robust than trying to lint for it.

hm, I guess you can't universally copy.copy exceptions
    |   File "/home/h/Git/trio-websocket/exc_group_cause_context/trio_websocket/_impl.py", line 226, in open_websocket
    |     raise copy.copy(user_error) from user_error.__cause__
    |           ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.12/copy.py", line 97, in copy
    |     return _reconstruct(x, None, *rv)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.12/copy.py", line 253, in _reconstruct
    |     y = func(*args)
    |         ^^^^^^^^^^^
    |   File "/home/h/Git/trio-websocket/.venv/lib/python3.12/site-packages/trio/_util.py", line 374, in __call__
    |     raise TypeError(
    | TypeError: trio.Cancelled has no public constructor

Note that copy.copying an exception doesn't copy most of its metadata. You'll lose the traceback, context, etc. All you get is the type, args (which is usually just a message) and dict (which includes notes, but is otherwise empty unless you put something there). So I'm not sure if it's wise to suggest this idiom?

ah, I think in most cases it doesn't matter that we copy none of the metadata - since those will be set on the new exception object as we raise it. Writing docs/suggestion on this will be a major pain though.

It appears it's not just trio.Cancelled that causes trouble for copy.copy.
    |   File "/home/h/Git/trio-websocket/exc_group_cause_context/trio_websocket/_impl.py", line 101, in copy_exc
    |     return copy.copy(e)
    |            ^^^^^^^^^^^^
    |   File "/usr/lib/python3.12/copy.py", line 97, in copy
    |     return _reconstruct(x, None, *rv)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.12/copy.py", line 253, in _reconstruct
    |     y = func(*args)
    |         ^^^^^^^^^^^
    | TypeError: ConnectionRejected.__init__() missing 3 required positional arguments: 'status_code', 'headers', and 'body'

I've narrowed it down to this minimal repro:
import copy

class MyExc(Exception):
    def __init__(self, x):
        super().__init__()

a = MyExc(5)
copy.copy(a)

I have no clue why copy.copy fails to pick up the args if you define an __init__ which calls super().__init__()
Regardless, it seems like copy.copy is not viable as a suggestion. My current workaround is
    cls = type(e)
    result = cls.__new__(cls)
    result.__dict__ = copy.copy(e.__dict__)
    return result

which seems to handle everything I've thrown at it so far.

That'll misbehave for any class where the __init__ method does more than just assign values to attributes, unfortunately.

That'll misbehave for any class where the __init__ method does more than just assign values to attributes, unfortunately.

do people do that in exception classes? And if they do, do we want to re-execute whatever code is in the __init__?  Reraising outside the except also gets real tricky once you have a finally (that could raise). But I'll give that another go in trio-websocket I suppose.
I opened https://github.com/python/cpython/issues/125782 to see if upstream wants to address copy.copy+BaseException.__init__

I have no clue why copy.copy fails to pick up the args if you define an __init__ which calls super().__init__()

In your example, you aren't passing the args to parent __init__, so the original exception object doesn't have them either!

Yeah that was intentional, though I perhaps went too far in minifying the repro only to cause confusion. The original code in trio-websocket is https://github.com/python-trio/trio-websocket/blob/f5fd6d77db16a7b527d670c4045fa1d53e621c35/trio_websocket/_impl.py#L587
This also displays a further thorn if trying to write a linter for it, because it doesn't directly inherit from [Base]Exception. If the cpython issue does end up as docs-only I'll likely give a best-effort rule in flake8-bugbear a shot anyway.

copy.copy() copies the args and dictionary but not the dunder slots. Your copy_exc only copies the dictionary, which is strictly less good. Most of the problems discussed in this thread are from not copying the dunder slots. I don't think there's any brief way to copy them (the non-brief way is by making four setattr calls).

we don't need to copy the dunder slots for this usage, because they will all be set on the copy when we raise it. But yeah it appears my testing was overly brief.
Thank you for your thorough research! :heart:


New markdown help generates extra new line MD12

Prerequisites

[X] Write a descriptive title.
[X] Make sure you are able to repro it on the latest released version
[X] Search the existing issues.

Steps to reproduce
New-MarkdownHelp generates an extra new line causing MD12 to trigger.
Expected behavior
No extra new line

Actual behavior
Extra new line

Error details
No response
Environment data
0.14.2
7.4-preview2

Visuals
No response

This is fixed in Microsoft.PowerShell.PlatyPS v1. v1 is still in development as an internal release. It will eventually be released to the Gallery.


Only use MapAndreas?

I'm annoyed that I have to load ColAndreas which a plugin that I don't really use because I used MapAndreas instead. Can I somehow disable it? I don't really use the pathfinding, only the NPC for shooting player so can I not load the ColAndreas collision data?

No


Rename of Sirupsen -> sirupsen

Related to sirupsen#570

Pull Request Test Coverage Report for Build 25

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

Totals

Change from base Build 11:
0.0%

Covered Lines:
117

Relevant Lines:
172

💛  - Coveralls