CERTIFICATE_VERIFY_FAILED with python-requests 2.8.1 and curl, but works in browsers

$ python3
Python 3.4.2 (default, Oct  8 2014, 10:45:20)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> requests.get('https://irestos.nuonet.fr/generation.php?crous=21&resto=351&ext=xml')
Traceback (most recent call last):
  File "/home/progval/.local/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 559, in urlopen
    body=body, headers=headers)
  File "/home/progval/.local/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 345, in _make_request
    self._validate_conn(conn)
  File "/home/progval/.local/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 782, in _validate_conn
    conn.connect()
  File "/home/progval/.local/lib/python3.4/site-packages/requests/packages/urllib3/connection.py", line 250, in connect
    ssl_version=resolved_ssl_version)
  File "/home/progval/.local/lib/python3.4/site-packages/requests/packages/urllib3/util/ssl_.py", line 285, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/lib/python3.4/ssl.py", line 364, in wrap_socket
    _context=self)
  File "/usr/lib/python3.4/ssl.py", line 577, in __init__
    self.do_handshake()
  File "/usr/lib/python3.4/ssl.py", line 804, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/progval/.local/lib/python3.4/site-packages/requests/adapters.py", line 370, in send
    timeout=timeout
  File "/home/progval/.local/lib/python3.4/site-packages/requests/packages/urllib3/connectionpool.py", line 588, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/progval/.local/lib/python3.4/site-packages/requests/api.py", line 69, in get
    return request('get', url, params=params, **kwargs)
  File "/home/progval/.local/lib/python3.4/site-packages/requests/api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/home/progval/.local/lib/python3.4/site-packages/requests/sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/progval/.local/lib/python3.4/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/home/progval/.local/lib/python3.4/site-packages/requests/adapters.py", line 433, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)
>>> requests.__version__
'2.8.1'

curl and openssl's CLI have the same issue:
$ curl https://irestos.nuonet.fr/generation.php\?crous\=21\&resto\=351\&ext\=xml
curl: (60) SSL certificate problem: unable to get local issuer certificate

$ openssl s_client -connect irestos.nuonet.fr:443
CONNECTED(00000003)
depth=0 C = FR, ST = Picardie, L = AMIENS, O = CROUS d'Amiens-Picardie, OU = CROUS, CN = irestos.nuonet.fr
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = FR, ST = Picardie, L = AMIENS, O = CROUS d'Amiens-Picardie, OU = CROUS, CN = irestos.nuonet.fr
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = FR, ST = Picardie, L = AMIENS, O = CROUS d'Amiens-Picardie, OU = CROUS, CN = irestos.nuonet.fr
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/C=FR/ST=Picardie/L=AMIENS/O=CROUS d'Amiens-Picardie/OU=CROUS/CN=irestos.nuonet.fr
   i:/C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA SSL CA 3
---
Server certificate
-----BEGIN CERTIFICATE-----
[…]
-----END CERTIFICATE-----
subject=/C=FR/ST=Picardie/L=AMIENS/O=CROUS d'Amiens-Picardie/OU=CROUS/CN=irestos.nuonet.fr
issuer=/C=NL/ST=Noord-Holland/L=Amsterdam/O=TERENA/CN=TERENA SSL CA 3
---
No client certificate CA names sent
---
SSL handshake has read 2022 bytes and written 421 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: F603E70CBC9F7B2B5033280D6F72334EC63FA7F727464620B4790BA477556B25
    Session-ID-ctx:
    Master-Key: C912001D02A8076AB864D9D51B2A056F76B49CD27B8A29EB7632EBA3EBB4124B1F908FAAF7CFE05028C51DAA07658762
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 46 7b 46 24 40 2f 6d ed-51 8c 7c e9 29 0a 55 99   F{F$@/m.Q.|.).U.
    0010 - 20 61 4b 43 2a 9f 9e f8-15 0a 63 b3 e5 e7 20 75    aKC*.....c... u
    0020 - d5 51 5c 8a 7b 26 cd 32-02 83 69 e6 ef 06 0d c6   .Q\.{&.2..i.....
    0030 - 8a 35 40 82 d5 1b d3 c4-3e 57 dd 98 4d 29 f0 2d   .5@.....>W..M).-
    0040 - ed 62 d0 a5 ec 0e 41 1c-d4 61 e9 a2 d6 8f 2e 3e   .b....A..a.....>
    0050 - 29 a6 1e 83 43 40 4a 36-ac 01 6f f3 2f 6b e9 49<EMAIL_ADDRESS>    0060 - b7 05 44 ff 57 5a e3 c6-8d 93 25 d1 ed 3f 7d 48   ..D.WZ....%..?}H
    0070 - 8b dd 1b 3e f7 0f 36 3f-54 6a ac 36 8f a1 c0 97   ...>..6?Tj.6....
    0080 - ee ff 80 bf 52 a8 61 c3-e5 71 1e 4e 51 e3 d7 1f   ....R.a..q.NQ...
    0090 - 83 a3 f6 d1 79 9b e8 b4-b9 e7 d7 e0 d1 b4 1e e0   ....y...........
    00a0 - 28 88 e0 5b e6 67 bd e1-96 50 5a 48 13 05 de b1   (..[.g...PZH....
    00b0 - 28 0b 1d e6 dd e1 d2 2f-8e 45 73 a7 8c 06 f7 47   (....../.Es....G

    Start Time:<PHONE_NUMBER>
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---

But the same URL works fine with Firefox 43 and Chromium 47.0.2526.80.
System: Debian 8.2 (Jessie)

This is almost certainly because the site is not sending its intermediate certificates.
Generally, when configuring a site for TLS, the site author should ensure that the TLS handshake sends both the leaf certificate (the one valid for that site) and any intermediate certificates between the leaf and the root. This is because clients may not have an up to date list of all the intermediate certificates in the world, and it's generally unwise to assume that they do. This does cause problems in some browsers: for example, Firefox 43 on my Mac also fails to validate the certificate chain.
Are you able to contact the administrator of the server?

I will try. Thanks for the help.
(Closing the issue, as it is not a problem in requests)


ui.Images not displayed properly with Impeller

Steps to reproduce

Draw any ui.Image on a canvas

Expected results
The image should be displayed the same way on all platforms.
Actual results
On iOS, when Impeller is enabled, the image isn't displayed correctly.
Code sample
Code sample
import 'dart:async';
import 'dart:typed_data';
import 'dart:ui' as ui;

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

Future<ui.Image> loadImage(Uint8List data) async {
  final Completer<ui.Image> completer = Completer<ui.Image>();
  ui.decodeImageFromList(data, (ui.Image img) {
    completer.complete(img);
  });
  return completer.future;
}

final Uint8List imageBytes = Uint8List.fromList([
  137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 32, 0, 0, 0, 32, 8, 6, 0, 0, 0, 115, 122, 122, 244, 0, 0, 0, 4, 115, 66, 73, 84, 8, 8, 8, 8, 124, 8, 100, 136, 0, 0, 0, 54, 73, 68, 65, 84, 88, 133, 237, 206, 177, 13, 0, 48, 8, 3, 65, 139, 253, 119, 38, 5, 74, 15, 21, 78, 244, 55, 193, 73, 0, 250, 114, 59, 32, 85, 194, 38, 178, 142, 196, 101, 147, 176, 137, 140, 132, 67, 226, 187, 0, 0, 0, 120, 203, 1, 153, 197, 11, 247, 172, 212, 125, 17, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130
]);

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Imepeller Canvas Issue',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Theme.of(context).colorScheme.inversePrimary,
          title: const Text('Imepeller Canvas Issue'),
        ),
        body: Center(
          child: InteractiveViewer(
              child: FutureBuilder(
            future: loadImage(imageBytes),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                final image = snapshot.data as ui.Image;
                return LayoutBuilder(builder: (context, constraints) {
                  return SizedBox(
                    width: constraints.maxWidth,
                    height: constraints.maxHeight,
                    child: FittedBox(
                      child: CustomPaint(
                        painter: ImagePainter(image),
                        size: const Size(32, 32),
                      ),
                    ),
                  );
                });
              } else {
                return const Center(child: CircularProgressIndicator());
              }
            },
          )),
        ),
      ),
    );
  }
}

class ImagePainter extends CustomPainter {
  ImagePainter(this.image);
  final ui.Image image;
  final gridPaint = Paint()
    ..style = PaintingStyle.stroke
    ..color = Colors.black
    ..strokeWidth = .001;

  final backgroundPaint = Paint()
    ..style = PaintingStyle.fill
    ..color = Colors.white;

  @override
  void paint(Canvas canvas, Size size) {
    canvas.drawRect(
        Rect.fromPoints(
          Offset.zero,
          const Offset(32, 32),
        ),
        backgroundPaint);

    for (var i = 0; i <= 32; i++) {
      canvas.drawLine(Offset(0, i.toDouble()), Offset(32, i.toDouble()), gridPaint);
    }
    for (var i = 0; i <= 32; i++) {
      canvas.drawLine(Offset(i.toDouble(), 0), Offset(i.toDouble(), 32), gridPaint);
    }

    canvas.drawImage(image, Offset.zero, Paint());
  }

  @override
  bool shouldRepaint(ImagePainter oldDelegate) => true;
}

Screenshots or Video

Screenshots / Video demonstration
[Upload media here]

Logs
No response
Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.19.3, on macOS 14.3 23D56 darwin-arm64 (Rosetta), locale en-FR)
    • Flutter version 3.19.3 on channel stable at /Users/lemomar/.version-fox/cache/flutter/v-3.19.3/flutter-3.19.3
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ba39319843 (4 weeks ago), 2024-03-07 15:22:21 -0600
    • Engine revision 2e4ba9c6fb
    • Dart version 3.3.1
    • DevTools version 2.31.1

[!] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/lemomar/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.

[!] Xcode - develop for iOS and macOS (Xcode 15.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A5160n
    ! CocoaPods 1.11.3 out of date (1.13.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods for instructions.

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] VS Code (version 1.87.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.85.20240301

[✓] VS Code (version 1.87.0-insider)
    • VS Code at /Applications/Visual Studio Code - Insiders.app/Contents
    • Flutter extension version 3.83.20240201

[✓] Connected device (5 available)
    • Momar’s iPhone Mini (mobile) • 00008101-001E70192180001E            • ios            • iOS 17.2.1 21C66
    • iPad (mobile)                • 00008027-000A31A83C05802E            • ios            • iOS 17.3.1 21D61
    • iPhone 14 Pro (mobile)       • 3B41206C-F844-40C7-A389-9E314B180CC0 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-17-0 (simulator)
    • macOS (desktop)              • macos                                • darwin-arm64   • macOS 14.3 23D56 darwin-arm64 (Rosetta)
    • Chrome (web)                 • chrome                               • web-javascript • Google Chrome 123.0.6312.87
    ! Error: Browsing on the local area network for Momar’s iPhone. Ensure the device is unlocked and attached with a cable or associated with the same local area network as this Mac.
      The device must be opted into Developer Mode to connect wirelessly. (code -27)

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 2 categories.

Here are two screenshots (iOS vs Web) comparing the output of the code sample provided above. I've drawn a grid so that you can see the misalignment on iOS:

Here's a real-life example on an app I made last year:
https://github.com/flutter/flutter/assets/56913364/f1776db0-f34d-4105-a5f0-1edf36da4de1
This is running on a physical device. When drawing, everything looks normal initially because I'm only drawing a path and rasterizing it in the background.
Live example of this app without the issue, on Web: palettable.momar.me/

Another thing to note is that the grid is much thicker with Impeller, but it isn't really an issue.

This has been fixed on the Flutter main branch (see https://github.com/flutter/engine/commit/041ae355e7fe42086c1a4b0b5e98117b197cb8da)

I can confirm that this has been fixed on the master channel.
Per our triage policy, I'll be closing this since it has been fixed on the master channel.
Thank you

stable
master

flutter doctor -v
[!] Flutter (Channel stable, 3.19.5, on macOS 14.3.1 23D60 darwin-arm64, locale en-GB)
    • Flutter version 3.19.5 on channel stable at /Users/nexus/dev/sdks/flutter
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 300451adae (5 days ago), 2024-03-27 21:54:07 -0500
    • Engine revision e76c956498
    • Dart version 3.3.3
    • DevTools version 2.31.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
    • Xcode at /Applications/Xcode-15.3.0.app/Contents/Developer
    • Build 15E204a
    • CocoaPods version 1.14.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.2.2
    • Dart plugin version 232.10286

[✓] VS Code (version 1.87.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.84.0

[✓] Connected device (5 available)
    • Pixel 7 (mobile)     • 28291FDH2001SA            • android-arm64  • Android 14 (API 34)
    • Nexus (mobile)       • 00008020-001875E83A38002E • ios            • iOS 17.4.1 21E236
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.4.1 21E236
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 14.3.1 23D60 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 123.0.6312.87

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[✓] Flutter (Channel master, 3.22.0-2.0.pre.21, on macOS 14.3.1 23D60 darwin-arm64, locale en-GB)
    • Flutter version 3.22.0-2.0.pre.21 on channel master at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 3b2652b735 (2 hours ago), 2024-04-02 00:37:23 -0400
    • Engine revision decca6b8bf
    • Dart version 3.5.0 (build 3.5.0-6.0.dev)
    • DevTools version 2.34.1

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
    • Xcode at /Applications/Xcode-15.3.0.app/Contents/Developer
    • Build 15E204a
    • CocoaPods version 1.14.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.2.2
    • Dart plugin version 232.10286

[✓] VS Code (version 1.87.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.84.0

[✓] Connected device (6 available)
    • Pixel 7 (mobile)                • 28291FDH2001SA            • android-arm64  • Android 14 (API 34)
    • Nexus (mobile)                  • 00008020-001875E83A38002E • ios            • iOS 17.4.1 21E236
    • Dean’s iPad (mobile)            • 00008103-000825C811E3401E • ios            • iOS 17.4.1 21E236
    • macOS (desktop)                 • macos                     • darwin-arm64   • macOS 14.3.1 23D60 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad     • darwin         • macOS 14.3.1 23D60 darwin-arm64
    • Chrome (web)                    • chrome                    • web-javascript • Google Chrome 123.0.6312.87

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Thanks, everyone!


Support for overlapping SEG segments

I didn't realize it until now that overlapping segments are not supported. Example below shows an example of such study: https://idc-sandbox-000.firebaseapp.com/projects/idc-tcia/locations/us-central1/datasets/tcia-idc-datareviewcoordination/dicomStores/issue11-lung1-20201015-review/study/<IP_ADDRESS>.4.1.327<IP_ADDRESS>715003805996641695765332389135385095

Specifically, look for the GTV-1 in RTSTRUCT and Neoplasm in SEG, which should match up.
Same region below is shown in Slicer, SEG is in faded green outline.

As a short term solution, until this is fixed, I think it would be good to give some kind of a warning alerting the user when overlapping segments are present.

I'm not sure I completely understand the issue.  Is discussing this with a demo at the meeting next Thursday soon enough?

Not to imply I want it to be fixed by Thursday, but I do want the issue to be understood, so let me try again.
For the study here: https://idc-sandbox-000.firebaseapp.com/projects/idc-tcia/locations/us-central1/datasets/tcia-idc-datareviewcoordination/dicomStores/issue11-lung1-20201015-review/study/<IP_ADDRESS>.4.1.327<IP_ADDRESS>715003805996641695765332389135385095
There is segmentation of tumor in RTSTRUCT and the same tumor segmentation in SEG.
OHIF Viewer

RTSTRUCT tumor contour

SEG tumor contour

3D Slicer

RTSTRUCT tumor contour

SEG tumor contour

I believe SEG tumor contour is cropped in the area where it intersects the lung segmentation:

Does this make sense?

I believe you yes, there's something odd going on.  So you are saying that the image of the SEG in OHIF is being somehow obscured by the RT even thought the RT is not visible?  I'm not sure how that would happen but yes, it's wrong.
Just to confirm too, we are talking about the 2D (cornerstone-based) view and not the MPR (vtk) view since the RT is not displayed in MPR.  Which raises a question, are the SEGs displayed correctly in MPR mode?

So you are saying that the image of the SEG in OHIF is being somehow obscured by the RT even thought the RT is not visible? I'm not sure how that would happen but yes, it's wrong.

No, I do no think it is related to RTSTRUCT. I believe that the issue is that when there are segments in the SEG series that are overlapping, the overlapping portion is lost (perhaps the lower-numbered segment takes precedence - in this example, GTV is the last one on the list).

are the SEGs displayed correctly in MPR mode?

No, they appear the same.
@JamesAPetts is it a known issue that overlapping segments from a single SEG are not supported?

Thanks for the explanation.  Yes it sounds to me like the segs are being collapsed into a single labelmap so the lung is overwriting the tumor.  Same labelmap would then be used MPR mode.
In Slicer there's some logic for using multiple labelmaps (collapsing the ones that can be correctly represented but adding more labelmap layers as needed to handle overlaps).  We might need the same idea in ohif.

@fedorov Yeah this a known issue which is flagged up every time a seg is loaded (so long as warnings aren't being stripped!) :)
I believe its just never been priority for anything, would love to see this updated!
Cornerstone already has support for this, just a good adapter is needed.
Segmentations in vtkjs might be a problem with the current setup, however. If there are many overlapping segments.

which is flagged up every time a seg is loaded

I think it should be flagged more prominently than in the console! ;-) I do not expect the average IDC user to keep the console open when using IDC.
But if fixing the underlying issue is not too difficult, would be great to just fix it.

I love to see it fixed, just not been a priority for anyone... until now!

I think it should be flagged more prominently than in the console!
Difficult to commit much more than that to a processing lib people use ;)

@pieper @fedorov I have started looking into https://github.com/OHIF/Viewers/issues/2164 and, after having feedback from James and Erik, I have few notes on which I would like your feedback too. The problem is indeed that the overlapping segments in a segmentation overwrite each other (see https://github.com/dcmjs-org/dcmjs/blob/master/src/adapters/Cornerstone/Segmentation_4X.js#L658). This because for performance/memory reasons all the segments of the segmentation are merged in one array buffer (of dimensions equal to the data volume).
We see two solutions for loading properly the overlapping cases:

having N cropped (to the segment extensions) volumes, where N = number of total segment in the segmentation;

Create M non-cropped volume (i.e. segmentation) in which we have only non overlapping segments.

The best solution would be (1), but it would require more resources since we would need to:

have basically need a new cornerstone-tools version, as cornerstone segmentations assume an entire volume as large as the source volume.

modify react-vtkjs-viewport to position these segments in space differently (they are cropped).

these would be non editable if drawing tools are required in the future, unless we also modify both cornerstone-tools and react-vtkjs-viewport to support these cases.

While solution (2) would be easier to implement at the cost of computation time to create the M “non-overlapping” segmentation volumes (plus it can be strange for the users to have in the UI multiple segmentations which are actually the same divided in more, but we may fix this at the UI level).
In addition, since it would be ideal also to not affect the performances of the non-overlapping cases, the non-overlapping cases will be still treated as 1 segmentation volume. This means also that for not affecting the loading time for non-overlapping ones (either we use solution (1) or (2) for the overlapping ones), it would be ideal to have in the data itself telling us if they are overlapping with a flag (e.g. https://dicom.innolitics.com/ciods/segmentation/segmentation-image/00620013). Would that be possible?

@swederik and I discussed this a bit earlier today.  My preference is to see a simple and correct implementation first, then worry about performance.  For example the overlap calculation could and probably should ultimately be done in a shader if it's a huge bottleneck.
I agree the user interface should not expose any of the implementation details, although we may want to visually indicate overlaps because they can be confusing to visualize.
For IDC we have considered modifying the SEGs to express the overlap tag correctly, but that's not the best solution for OHIF in the long run.

My preference is to see a simple and correct implementation first, then worry about performance.

I agree.

This means also that for not affecting the loading time for non-overlapping ones (either we use solution (1) or (2) for the overlapping ones), it would be ideal to have the data itself telling us if they are overlapping with a flag (e.g. https://dicom.innolitics.com/ciods/segmentation/segmentation-image/00620013). Would that be possible?

I don't think we will add this flag to the existing data any time soon. I added a ticket to implement support for that feature in dcmqi (https://github.com/QIICR/dcmqi/issues/410). Once that is done, at least for the future datasets created with dcmqi, we could potentially have a check in OHIF and trust that flag to optimize load.

I don't think we will add this flag to the existing data any time soon. I added a ticket to implement support for that feature in dcmqi (QIICR/dcmqi#410). Once that is done, at least for the future datasets created with dcmqi, we could potentially have a check in OHIF and trust that flag to optimize load.

ok, then I'll implement the checking if they are overlapping segments in the segmentation volume in the client.

@swederik and I discussed this a bit earlier today. My preference is to see a simple and correct implementation first, then worry about performance. For example the overlap calculation could and probably should ultimately be done in a shader if it's a huge bottleneck.

ok then I'll go with solution (2), which is the easier. For the moment just on CPU.

For IDC we have considered modifying the SEGs to express the overlap tag correctly, but that's not the best solution for OHIF in the long run.

@pieper do you mean just to indentify the overlaps and create new segments for them in the same segmentation volume (by simply assinging a different interger values to the overlapping regions)? so in this way we can keep only 1 segmentation volume?

For IDC we have considered modifying the SEGs to express the overlap tag correctly, but that's not the best solution for OHIF in the long run.

@pieper do you mean just to indentify the overlaps and create new segments for them in the same segmentation volume (by simply assinging different interger values to the overlapping regions)? so in this way we can keep only 1 segmentation volume approach?

I meant to express that it would be cleaner if OHIF handles the case of overlapping segments robustly without relying on the flag, which as Andrey says it probably won't be available anyway at least for now.
I don't think assigning new lablemap numbers for overlap areas would scale well.  Bookkeeping could be complex if there are lots of overlaps.
I had been thinking of this basic algorithm:

start a list with one labelmap
for each segment add pixel by pixel

if you discover that there's already a non-zero where you are trying to assign try other labelmaps
if there are no labelmaps available that don't overlap, create a new labelmap in the list
keep track of which segments are in which labelmaps

There is still the question of how best to display the overlapping segments but for now color blending is good enough.
Like what Slicer does:

logic done in https://github.com/dcmjs-org/dcmjs/pull/155. Tested on the datasets https://idc-sandbox-000.firebaseapp.com/projects/idc-tcia/locations/us-central1/datasets/tcia-idc-datareviewcoordination/dicomStores/issue11-lung1-20201015-review/study/<IP_ADDRESS>.4.1.327<IP_ADDRESS>715003805996641695765332389135385095 .
512x512x111 x 6 segmentation. The algorithm split the Labelmap in two:

loading time were not affected (workstation with i9 5 GHz). However the computation complexity is pretty high and for more complex cases, it may be worth using shaders.
I have still to implement at UI level how to load the splitted labelMaps

The algorithm splits the Labelmap in two

I think the existence of separate labelmaps should be completely transparent to the user. There should be no change in how segmentations are presented in the current UI after the implemented changes are in place.
Is it possible to show overlapping segments?

I think the existence of separate labelmaps should be completely transparent to the user. There should be no change in how segmentations are presented in the current UI after the implemented changes are in place.

in this example/test, my idea would be to load the two generated splitted labelMaps volumes into two segmentations but then having the UI showing only one segmentation item in the combobox (so with all the segments of the two labelmap volumes again in one "segmentation"). This has still to be implemented and I am working on it, but I wanted to show already the logic and its perfomances (which for this simple case, looks good).
Let me know if you agree or you would go for another approach regarding the UI.

Is it possible to show overlapping segments?

yes, should be no problem, but I have to implement the UI to load both generated labelMaps.
P.S.: For making the screenshots in https://github.com/OHIF/Viewers/issues/2164#issuecomment-733080114, the selection of the labelmap volume is hardcoded now. Now I can load only one labelMap volume for a loaded segmentation (and I have only one segmentation in the combox).

Let me know if you agree or you would go for another approach regarding the UI.

Yes, that sounds good. I thought that's what your plan was, but wanted to confirm. Thanks!

Is it possible to show overlapping segments?

Just want to chime in that you will likely have memory issues if you want to display multiple labelmaps in the MPR views of larger CTs (e.g. 512 ^3), you'll be fine for the CT above but:
GPU Memory is Float32 in RAM (or the copying is insanely slow) and Float16 on the GPU's VRAM. Currently memory is duplicated per viewport.
For the CT like above with 2 full segmentations:
=>  512 * 512 * 512 * 4 bytes = 512 Mb per volume in RAM, so for 2 that's already 1 GB RAM for those volumes alone, chrome starts to choke past ~1.5-2gb total ram in a tab.
On the GPU that's 512 * 512 * 512 * 2 bytes is = 256 MB per volume => *9 (for 3 views with a CT + 2 segmentations) === 2.3GB of VRAM which is too expensive for a lot of laptop cards.

So James you are saying we'll be needing some off-screen magic?  🧙
For now it would be good to confirm that we can detect such memory issues and report them to the user (something like "The selected data is too large to be viewed in this mode on your machine").

James, you are right, and in the case that more segments are overlapping, the memory usage could spike easly.

So James you are saying we'll be needing some off-screen magic?

well, unless we do major chnages at the rendering pipleines, I don't see what magic we can do. The labelmap are interger, it is not that we could blend the values in an offscreen solution (also all the UI controls refer to the integer values for swtiching off the visibility, opacity etc...).
Even solution (1) in https://github.com/OHIF/Viewers/issues/2164#issuecomment-732240664 for more complex cases will have issues. In fact, even cropping the volumes, could not be enough for a case with already 2 overlapping segments which extend over all the volume (if the volume is of the order of 512x512x100). I guess we should just accept the memory limitation of web solutions.
I think the only low memory usage/safe solution is:

@pieper do you mean just to indentify the overlaps and create new segments for them in the same segmentation volume (by simply assinging different interger values to the overlapping regions)? so in this way we can keep only 1 segmentation volume approach?

If we like the current implementation of solution (2) in https://github.com/OHIF/Viewers/issues/2164#issuecomment-732240664 of the logic as in https://github.com/dcmjs-org/dcmjs/pull/155.

For now it would be good to confirm that we can detect such memory issues and report them to the user (something like "The selected data is too large to be viewed in this mode on your machine").

when OIHF parse the segmentation (https://github.com/OHIF/Viewers/blob/master/extensions/dicom-segmentation/src/loadSegmentation.js#L41), if the memory usage is > than 2 Gb we could warn the user indeed . Should we also undo the loading in that cases?

For the moment I'll continue to implement the UI for solution (2).

Oh one thing that can be done right now is you could use Uint8 for these seperated labelmaps, vtkjs supports Uint8 out of the gate.
You would just have to add them as a type in CST, and put a disclaimer that it can only support 255 segments. We originally used Float32 as freesurfer is a problem as you could have like 400 segments on a labelmap, but for this use case you are probably ok.
This trade off in segment count would reduce the segmentation storage in RAM by a factor of 4, and by a factor of 2 on the GPU's VRAM, allowing you to do a lot more.

For now it would be good to confirm that we can detect such memory issues and report them to the user (something like "The selected data is too large to be viewed in this mode on your machine").

This is a good idea anyways, but not sure how much video card information you can actually get from the browser?

Oh one thing that can be done right now is you could use Uint8 for these seperated labelmaps, vtkjs supports Uint8 out of the gate.
You would just have to add them as a type in CST, and put a disclaimer that it can only support 255 segments. We originally used Float32 as freesurfer is a problem as you could have like 400 segments on a labelmap, but for this use case you are probably ok.
This trade off in segment count would reduce the segmentation storage in RAM by a factor of 4, and by a factor of 2 on the GPU's VRAM, allowing you to do a lot more.

good idea. But I think at the moment is used Uint16 (see https://github.com/dcmjs-org/dcmjs/blob/master/src/adapters/Cornerstone/Segmentation_4X.js#L362 and https://github.com/dcmjs-org/dcmjs/blob/master/src/adapters/Cornerstone/Segmentation_4X.js#L645). Anyway even a factor 2 would be good.

cornerstoneTools at the moment support only Uint16 and float32 https://github.com/cornerstonejs/cornerstoneTools/blob/master/src/store/modules/segmentationModule/getLabelmapBuffers.js#L41. @JamesAPetts do have any idea how much modifications to cornerstone would be needed to add Uint8 support? i.e. would we need just to update the labelmap classes? or rendering etc.. would need to be updated as well?

@fedorov  please have a look at the WIP PR https://github.com/OHIF/Viewers/pull/2185 and let me know what do you think about it (https://github.com/OHIF/Viewers/pull/2185#issuecomment-733782643).
My initial plan was to not have separated UI list controls for the segments, but it looks like that OIHF/cornerstone allows only 1 "active" labelmap and the others are rendered as non "active" (@igoroctaviano please correct me if I am wrong).
So the idea would be to have a combox to pick teh active labelMap, see https://github.com/OHIF/Viewers/pull/2185#issuecomment-733782643.

Looks done to me!


Add Slack app install (personal only)

I still use Slack for Blue Medora Bros and Grand Rapids Slack, and I prefer the app. Add it to the personal only list as we will eventually transition off of Slack for work, so there's no point adding it to the shared list.

Apparently our Slack subscription at work will be active until at least Dec 2023. However, Slack is still not a shared program: the workspaces I sign into will be different for both personal and work computers. So, I'm going to let the cask be exclusive to each Brewfile. That way, whenever it's not needed at work, it can be removed.


PR: Ensure no source files have useless shebangs

Description of Changes
Removes shebang lines (#!) from three non-executable scripts within the spyder/ package, and sets the executable bit on tools/rm_whitespace.py.

[ ] Wrote at least one-line docstrings (for any new functions) N/A
[ ] Added unit test(s) covering the changes (if testable) N/A

[ ] Included a screenshot or animation (if affecting the UI, see Licecap) N/A

There is no value in having a shebang (#!) line in a file that does not have the executable bit set in its filesystem permissions, even if it is script-like (has a “main routine” or other interesting side effects).
Accordingly, shebang lines are removed from three non-executable files within the spyder/ package.
For tools/rm_whitespace.py, I chose to make it executable instead of removing the shebang line. However, the opposite approach of removing the shebang and expecting people to continue to run it as python tools/rm_whitespace.py is reasonable too, and I’m happy to amend the PR if that’s preferred.
Issue(s) Resolved

N/A
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct: musicinmybrain/Benjamin A. Beasley

@musicinmybrain, would you like to see this in our next Spyder version? I'm asking because any PR done against our master branch is for Spyder 6, to be released before the end of the year.

@musicinmybrain, would you like to see this in our next Spyder version (5.5.0)? I'm asking because any PR done against our master branch is for Spyder 6, to be released before the end of the year.

It’s not essential, but I don’t see any reason not to include it in 5.5.0. If I open a PR against 5.x, will the change also be pulled forward into master as a matter of course?

If I open a PR against 5.x, will the change also be pulled forward into master as a matter of course?

Yes, but you don't need to open a new PR. You can move your branch to 5.x directly here. For that, please run the following commands:
git checkout 5.x
git checkout
git rebase --onto 5.x master useless-shebangs
git push -f origin useless-shebangs

After that you need to change the base branch for your PR as described here:
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-base-branch-of-a-pull-request

Yes, but you don't need to open a new PR. You can move your branch to 5.x directly here.

Done; thanks!

Closing and reopening to make our test suite run.


Tooltip that label the trigger

Feature request
Tooltip that label the control trigger element
Overview
The current tooltip will always use aria-describedby, so it works like a descriptive tooltip. In some case we want the control to be labelled by the tooltip.
An example can be seen directly in the Tooltip example https://www.radix-ui.com/docs/primitives/components/tooltip

The button should be labelled by the tooltip. Currently it will always use an aria-describedby.
Examples in other libraries
https://mui.com/material-ui/api/tooltip/
In their component, by default the tooltip will label the controls, they have a props describeChild that will changes the aria-labelledby to an aria-describedby
Who does this impact? Who is this for?
When using a component that should be labelled by the tooltip (for example an icon button)
Proposal
maybe a new boolean props  labelChild ?
I could help with the implementation of this feature :)

Hey @srapilly,
I believe we already take care of this, albeit a bit differently.
If we aria-labelledby instead of aria-describedby, it would skip the button text entirely so that's not really good.
In cases, where you want to label a trigger that doesn't have text (like an icon button as you say) if you set an aria-label on the trigger, we make sure it takes priority for screen readers.
See here:
https://github.com/radix-ui/primitives/blob/6ad72cb90e7820182de778028d4acd1f006999c6/packages/react/tooltip/src/Tooltip.tsx#L556
We have an example in our storybook too:
https://github.com/radix-ui/primitives/blob/6ad72cb90e7820182de778028d4acd1f006999c6/packages/react/tooltip/src/Tooltip.stories.tsx#L510-L528
I will close the issue as I think we are covering the basis nicely already.
Hope that makes sense.
✌


mc4ep fixes

-- fix #81
-- add ru_RU.lang

usually best to split things like this up into more than one PR, but a fix is a fix so sure.

ok, got it


End Tag Issue on HTML Template

Hi Errai Team,
Errai Version: 4.0-Beta3
GWT Version: 2.8.0
I found some issue inside the html template , end tags like <div /> is not working.
It will be better to support this one.
Best Regards,
Kevin

Hi @kevzlou7979,
I'm closing this because it is not an Errai issue. In HTML5, <div /> is malformed because you cannot arbitrarily self-close tags. You can read about that here.
Cheers.


Add WASI + File System Access shell

[x] I've read CONTRIBUTING.md.
[x] Description explains the issue / use-case resolved, and auto-closes the related issue(s) (https://help.github.com/articles/closing-issues-via-commit-messages/).

Ping @syrusakbary?

Sorry, just seen this! Merging!


camera restart app.

When calling the navigator.camera.getPicture function, in order to select an image on the device,
I see all the pictures, but then when I select one, the app restarts (sometimes it restarts sometimes it does not).
I am using phonegap build 3.5 and a motorola G with android 4.4.4.
(I did not see this problem on my iphone).

Closing since we haven't seen very much activity on this issue. Feel free to reopen.


Colab Link

Resolve #144.

Codecov Report

Merging #146 (a466316) into master (25ff996) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #146   +/-   ##
=======================================
  Coverage   42.30%   42.30%
=======================================
  Files          24       24
  Lines        1794     1794
=======================================
  Hits          759      759
  Misses       1035     1035

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 25ff996...a466316. Read the comment docs.


Wayland: alacritty ignores activated configure option, and instead relies on keyboard focus

Alacritty seems to decide if it should draw the focused cursor or the unfocused one, depending on if it has keyboard focus, instead of relying on the activated configure option.
Additionally it starts assuming it has keyboard focus, making it impossible to open an alacritty window, without focus (at least visually).
It'd be nice if it would support the configure option, or at least start assuming it has no focus.
System
OS: Linux
Version: alacritty 0.4.0
Linux: Wayland (kiwmi)

instead of relying on the activated configure option

What exactly is the activated configure option?

@chrisduerr It's the compositors way of telling the window if it should draw itself in a focused, or an unfocused state (https://github.com/wayland-project/wayland-protocols/blob/733de76221223c2ad3ce94a588015e88c4c9dcc7/stable/xdg-shell/xdg-shell.xml#L752)
Actually seems like the "assuming focus" part was fixed in d387ebe, but later broken again.

Could you share the output of alacritty --print-events | grep "Focus"?

No output.

But it does output something when you start focusing the window, right?

Yes, [2020-01-01 17:39] [INFO] glutin event: WindowEvent { window_id: WindowId(Wayland(WindowId(94711898852944))), event: Focused(true) }.

Also, could you share the output of this command when the activated option is not set? At least on X11 it seems like the default state is no focus and an explicit focus event is sent at startup, to fix this without upstream changes this would need to be the case on Windows/macOS and Wayland too.

It prints nothing, no matter if it's set or not.
Prints the line above as soon as the window gets keyboard focus.

diff --git a/alacritty_terminal/src/term/mod.rs b/alacritty_terminal/src/term/mod.rs
index 4aafde1..574d29f 100644
--- a/alacritty_terminal/src/term/mod.rs
+++ b/alacritty_terminal/src/term/mod.rs
@@ -884,7 +884,7 @@ impl<T> Term<T> {
             auto_scroll: config.scrolling.auto_scroll,
             clipboard,
             event_proxy,
-            is_focused: true,
+            is_focused: false,
             title: config.window.title.clone(),
             title_stack: Vec::new(),
         }

This should "fix" what bd6e5a9 fixed, which might be enough, since every compositor seems to bungle the activated configure option with keyboard focus anyways.

@buffet This wont fix things in general tbh. We should fix this issue in our windowing library(winit) and make it send a proper Focused events on startup. While you can probably workaround the issue on Wayland with your diff, you'll break Windows (not aware of macOS here).

This should "fix" what bd6e5a9 fixed and 729eef0 broke, which might be enough, since every compositor seems to bungle the activated configure option with keyboard focus anyways.

You've said yourself that your compositor doesn't send focus at startup whet activated is disabled, so this would just break it for the majority of users. And yeah, as @kchibisov has correctly pointed out, it will also break Windows (though that could be fixed with a cfg annotation).

See https://github.com/rust-windowing/winit/issues/1077 for upstream tracking.


StateStoreCleaner and StateStoreChecker do not work with the new StateStore implementations.

@htran1 Here is the issue we discussed.


Will there be possible to make Engine Tweaks for HW1classic in the future?

EDIT

Since the source code for HW1 is available, these changes are better implemented in a new build of the game than a .dll-based hack. The Gardens of Kadesh project already implements some of the fixes/improvements made here for Cataclysm, such as the improved update rate.


Closes #540: Return schema.org-compliant pricing information.

money_without_currency will still return the symbol, just not CAD or USD. The docs are a bit confusing - I'll get them updated.
Instead, you can use content="{{ current_variant.price | divided_by: 100 }}"
cc @carolineschnapp

I may have spoke too soon, hold tight.

I think you may have because money_without_currency seems to work find on the various themes I've used it with :).

The problem arises with changing the money format to amount_with_comma_separator. It causes an error in Google structured data testing tool:

Instead, we should use content="{{ current_variant.price | divided_by: 100.00 }}. This works with any money format and maintains the decimals.
Any objections @stevebosworth @m-ux @carolineschnapp?

Are there problems then if the currency doesn't use decimals? For example, here in Sweden all prices are just in SEK, without öre (cents). Does Shopify store 600 SEK as a price of 60000, or 600?

We're in the clear there.
If you have say $199.99 defined in CAD or USD then switch to SEK, it's rounded to SEK but still stored as the decimal value. Best explained below:

That means {{ product.price | divided_by: 100.00 }} would still give you 199.99.
If you update the price to 200 even, then {{ product.price | divided_by: 100.00 }} would be 200.0, which is valid to Google:

To answer your initial question, yes, 200 SEK is 20000 with {{ product.price }}

Awesome, just updated the pull request.

Thanks!


[requires.io] dependency update on master branch

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from the review on Reviewable.io

Current coverage is 100.00%

Merging #23 into master will not affect coverage as of d300993

@@            master     #23   diff @@
======================================
  Files            7       7
  Stmts          263     263
  Branches        23      23
  Methods
======================================
  Hit            263     263
  Partial          0       0
  Missed           0       0

Review entire Coverage Diff as of d300993

Powered by Codecov. Updated on successful CI builds.


social media sharing buttons

-empty directories,
-req localized strings quality

I like the overall loook here, thanks.
However, a couple of implementation tweaks would be useful:
(1) Take a look at other deployment_settings and you'll see that read requests go through functions defined in modules/s3cfg.py.
This allows us to change the way in which this data is stored without changing code outside of this 1 module.
(2) JS shouldn't be added inline like this - instead it should be added to response.s3.js_global or response.s3.jquery_ready so that it loads at the bottom of the page after the layout has finished rendering
(3) I'm not sure that (m)any live deployments will want to refer to @sahanafoss when tweeting - they'll rather want to talk about this specific branded deployment.

Would this be adding to modules/s3cfg.py:
def get_share_social_media(self):
return self.share.get("social_media", False)
, having a deployment_settings.share.social_media = True; in models/000_config.py which can be commented out
, and {{if deployment_settings.share.social_media:}} at layout.html?
I get an internal error for 'NoneType' object has no attribute 'social_media'
I don't understand what read requests are, or what the 1 module we are currently talking about is - modules I thought were inventory, requests, map, things like that...
Where can I find response.s3.js_global or response.s3.jquery_ready?

Look in layout.html for response.s3.*
If you create a new level of hierarchy in s3cfg (which is almost certainly unnecessary) then you need to initialise it in init.


fix: issue 320

a quick fix to https://github.com/windicss/windicss/issues/320#issue-912299625
close if you think it needs more than just this, I'm not familiar with the code base to know that much
yes I followed the contribution guidelines

https://github.com/windicss/windicss/commit/a1423cf023496b43316271b3cde49f2ea36eb35a fixed this. This issue occurred in attributify, so the code of wrapVariants should not be modified. thank you


Branch confusion

Today I was trying to use tui and so I went to try and walk through the examples. To my surprise I couldn't get them to work because MouseBackend didn't seem to be a thing. After some investigation I figured this was due to the fact that master was tracking development, and I had to go to the last release tag (0.1.3) to find the compatible examples.
It might be more reasonable to create a devel branch, and only merge changes to master when the update is released. This way anyone coming to the GitHub repository immediately finds the correct source and examples.

Thanks for pointing that out. After giving it some thoughts, I've chosen to keep the master branch as the development branch given the size of the project.
However, in order to avoid any confusion for newcomers, I've moved the documentation inside the code. From now on, the rendered documentation, as shown on https://docs.rs/tui, should always match the latest release.


Second Channel not correctly extracted

The files tests/M1F1-int16-AFsp.wav and tests\M1F1-uint8-AFsp.wav have completely different audio on each channel, as such, the resultant .wav file generated by the utility should be different when specifying --channel 0 vs --channel 1.  Currently, the utility only produces a mono version of the first channel audio.

Fixed by #7


Tabs in groups is unclickable on latest git

Hyprland Version
 System/Version info
Hyprland, built from branch  at commit  dirty ().
Date:
Tag: , commits:

flags: (if any)

System Information:
System name: Linux
Node name: prometheus
Release: 6.8.9
Version: #1-NixOS SMP PREEMPT_DYNAMIC Thu May  2 14:35:35 UTC 2024

GPU information:
04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt [Radeon 680M] [1002:1681] (rev 02) (prog-if 00 [VGA controller])

os-release: ANSI_COLOR="1;34"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="24.05.20240507.b211b39"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 24.05 (Uakari)"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="24.05 (Uakari)"
VERSION_CODENAME=uakari
VERSION_ID="24.05"

plugins:

Bug or Regression?
Regression
Description
After updating from 1ed1ce9506e65f76fe5236194516f23d662bba0b to the latest git, tabs in groups are no longer clickable, so there is no way to switch tabs with mouse.
I will bisect when I have time later this day, probably new cursor impl or something.
How to reproduce

Make group of 2 tabs
Click on tab of inactive window. Expected behavior: switch to it, right now - nothing.

Crash reports, logs, images, videos
No response

likely caused from decoration stuff still using wlr_pointer_axis_event* e but the value was changed to const IPointer::SButtonEvent& e.
since CWindow::checkInputOnDecos e value type is std::any data (not sure why), compiler didn't seem to throw any errors

can you throw a MR? I can't for a couple hours

can you throw a MR? I can't for a couple hours

I can try writing a patch, but can't compile hyprland atm (for unrelated reasons)


BUG: learn.export fails

Describe the bug
I can't export FastAI learner with NeptuneCallback

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-25-1903c9215920> in <cell line: 1>()
----> 1 learn.export(f"output/models/learn_bigger_data{str(i)}.pkl")

~/.local/lib/python3.8/site-packages/fastai/learner.py in export(self, fname, pickle_module, pickle_protocol)
    402         #To avoid the warning that come from PyTorch about model not being checked
    403         warnings.simplefilter("ignore")
--> 404         torch.save(self, self.path/fname, pickle_module=pickle_module, pickle_protocol=pickle_protocol)
    405     self.create_opt()
    406     if state is not None: self.opt.load_state_dict(state)

~/.local/lib/python3.8/site-packages/torch/serialization.py in save(obj, f, pickle_module, pickle_protocol, _use_new_zipfile_serialization)
    377         if _use_new_zipfile_serialization:
    378             with _open_zipfile_writer(opened_file) as opened_zipfile:
--> 379                 _save(obj, opened_zipfile, pickle_module, pickle_protocol)
    380                 return
    381         _legacy_save(obj, opened_file, pickle_module, pickle_protocol)

~/.local/lib/python3.8/site-packages/torch/serialization.py in _save(obj, zip_file, pickle_module, pickle_protocol)
    482     pickler = pickle_module.Pickler(data_buf, protocol=pickle_protocol)
    483     pickler.persistent_id = persistent_id
--> 484     pickler.dump(obj)
    485     data_value = data_buf.getvalue()
    486     zip_file.write_record('data.pkl', data_value, len(data_value))

AttributeError: Can't pickle local object 'NeptuneAuthenticator.__init__.<locals>.session_factory'

I use language_model_learner.
Library versions:
fastai==2.7.7
neptune-fastai==0.10.3

Hi,
Thank you for reporting!
I will try replicating this issue and get back to you with my findings early next week.

Hi @lambdaofgod
I replicated the issue, and indeed it fails, but it's mostly because you are trying to pickle the entire learner object, and that includes the callbacks too. This causes an error because the NeptuneCallback class was built using another library called neptune-client therefore if you try to pickle in this setup.
This article explains the error very nicely:
https://www.pythonpool.com/cant-pickle-local-object/
Solution ✅
You can remove the NeptuneCallback before pickling the learner using the .export method and just add it back after you are done pickling if, for example, you want to log more training loops to the same run.
Example:
neptune_cbk = NeptuneCallback(run=run, base_namespace="experiment")

learn = vision_learner(
    dls,
    resnet18,
    cbs=[SaveModelCallback(), neptune_cbk],
)

# training
learn.fit_one_cycle(1)

# remove NeptuneCallback
learn.remove_cb(neptune_cbk)

# export learner
learn.export(f"/content/test_model.pkl")

# add NeptuneCallback back again
learn.add_cb(neptune_cbk)

# continue training
learn.fit_one_cycle(1)

Fastai docs:

remove_cb: https://docs.fast.ai/learner.html#learner.remove_cb
add_cb: https://docs.fast.ai/learner.html#learner.add_cb

Let me know if this works for you

Most welcome 😃 !
If anything else pops up, do let me know, and I'll be happy to help.


Support introspecting @updatedAt from the database

Problem
Currently there's no way to format your database schema so introspection will pickup @updatedAt. This breaks automated re-introspection.
Possible Solution
In MySQL, it seems like we could add this in a fairly straightforward way:
ALTER TABLE User MODIFY COLUMN updatedAt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

In Postgres, the typical way you do this in the database is using triggers:
-- automatic "updated_at"
create or replace function set_updated_at() returns trigger as $$
begin
  new.updated_at := current_timestamp;
  return new;
end;
$$ language plpgsql;

create table if not exists users (
  id text primary key not null,
  updated_at timestamp with time zone default (now())
);
create trigger updated_at before insert on users for each row execute procedure set_updated_at();

I'm not sure about SQLite or Mongo.

How is @updatedAt currently migrated @tomhoule? I am pretty sure we are not using triggers.

How is @updatedAt currently migrated @tomhoule? I am pretty sure we are not using triggers.
How is @updatedAt currently implemented on the Engine level? Is this handled by Prisma itself or does Prisma rely on the database @mavilein or @do4gr?

@updatedAt today isn't a DB feature but purely a Prisma-level feature (see docs here), I believe it's just ignored by Migrate?!

Niko is right. @updatedAt is a pure prisma level feature at the moment. Hence the migration engnine does not do anything about it.

This means that it is also unclear if Introspection should work on this. Representing DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP with @updatedAt would require this to not be a Prisma level feature, otherwise we are mixing two levels together. While it might give the user close to what they expect, it is unclear if this will prevent us from building the right solution in the future.

Our current thinking is to clearly split Prisma level and db level features. In this case we see @updatedAt as a Prisma level feature that is available across all databases and which does not get written to DDL. We also already followed this logic when working on re-introspection.
The DDL level on change would be detected as a db level feature and therefore stay in @default . Currently as dbgenerated() maybe later as a description of the actual statement in DDL.
Separating these two concepts will make it clearer for migrate and introspect to decide what happened when encountering changes in the schema / the db.

So in 2021, should we use this
ALTER TABLE User MODIFY COLUMN updatedAt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

to persist updatedAt?
(currently using introspection only)

@omar-dulaimi You can just use @updatedAt and the client will handle this field for you.

@pantharshit00 But as far as I have read, introspection removes "@updatedAt", so you have to add them back manually


drivers: stepper: shell add dynamic commands

This commit adds dynamic commands for direction and microstep resolution

Thanks for the help 👍


UI input offset (windows)

Describe the bug
When I press some enter to create spaces between expressions, the input doesn't align with the text
To Reproduce
Steps to reproduce the behavior:

Open Siffra.
Make some calcs.
Press 2 enters
Write anything.

Expected behavior
the input is expected to be aligned with the text.
Screenshots

Desktop (please complete the following information):

OS: Windows NT
Version 0.2.2

Additional context
None

The pull request I submitted to fix this issue was incomplete, will have the issue fixed later today.

Closed by #14


Displays all stats.

Does not render any charts.  Chart data is displayed as an array of integers for now.  Reverted karma tests back to using chrome because phantomjs doesn't support the Array.fill() feature of ES6.  Addresses issues #33, #32, #30, #23, #26, #27, #20.

Super long review. Some are syntax things, some are improvements using different angular features.

@bparish628 I believe I got everything. I wasn't sure where to put the service so I added a utils folder and hung the service off the main module.

@bparish628 I will have another pull request for updating the DFD and the client server diagram. They will be pdf files so I don't anticipate a review being needed. Do you have the feedback we got from milestone 1? If so, could you snap a photo of it and send it to me?

   Your use of dev/master is great.

   The environmental stuff is great and I’m excited to walk-through

the install

   Contributing/copyright/licensing is good

   The Milestone document is helpful and presented well

   The DFD is OK.

o   Things like Web UI, Python Server, and mysql DB are pretty vague.
o   Web UI – as a process should be more verb oriented. Something like
Receive and Route GH Information. Python Server? What is this doing? Does
it need to be broken into more than a single process?
o   Overall, the naming is not great. Provide better precision.

   I do like the start of the C/S Workflow document.

   I like the list of metrics and what can/can’t be done with

GHTorrent

   Finally, the activity level is great. Love seeing the PRs come

across on a regular basis.
On Tue, Mar 28, 2017 at 6:41 PM, Jake Harding<EMAIL_ADDRESS>wrote:

@bparish628 https://github.com/bparish628 I will have another pull
request for updating the DFD and the client server diagram. They will be
pdf files so I don't anticipate a review being needed. Do you have the
feedback we got from milestone 1? If so, could you snap a photo of it and
send it to me?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jakeharding/repo-health/pull/34#issuecomment-289938149,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAoDUIUSkBZ1kKqxAjCWbXfMf_WZc9Ppks5rqZqqgaJpZM4Mnotz
.

--
Mutual of Omaha Associate Professor
Information Systems
College of Information Science & Technology
University of Nebraska Omaha
http://faculty.ist.unomaha.edu/mgermonprez/cv.txt

@germonprez Thanks! 😀

Right on!
On Tue, Mar 28, 2017 at 6:47 PM, Jake Harding<EMAIL_ADDRESS>wrote:

@germonprez https://github.com/germonprez Thanks! 😀
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jakeharding/repo-health/pull/34#issuecomment-289939172,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAoDUHiltp_64Wa8YkOIDwIDXe0Rs9Gkks5rqZwhgaJpZM4Mnotz
.

--
Mutual of Omaha Associate Professor
Information Systems
College of Information Science & Technology
University of Nebraska Omaha
http://faculty.ist.unomaha.edu/mgermonprez/cv.txt


Train 170

:steam_locomotive: 170 for master/1.10
#1478 Metronome 0.2.3
#1596 IPv6 in CentOS AMI
#1622 Custom container names in dcos installer
#1624 Mesos bump for file-based secrets and image pull secrets

@mesosphere-mergebot bump-ee


Doesn't play well with vue-router

I'm trying this out with vue-router and <router-link to="/">Home</router-link> nor <router-view></router-view> won't render anything.
Is this a know issue / limitation?

🤷♂


Updates to AWS reference CloudFormation templates

Updated the AWS reference Cloudformation templates to use:

NATGateway instead of NAT Instances
A Bastion Host for SSH in to private subnet instances
Provided a command line flag to the python script to disable the
bastion instances if the user desires

Updated. Please review/approve.

lgtm


Validate new Rule definition API

PSSA2 provides a new way to specify rules, which you can see here:
https://github.com/PowerShell/PSScriptAnalyzer/blob/9ee8c0f3110fda305314b050bf0c74766bfcce42/ScriptAnalyzer2/Builtin/Rules/AvoidEmptyCatchBlock.cs#L12-L48
That is based on the following implementation:
https://github.com/PowerShell/PSScriptAnalyzer/blob/9ee8c0f3110fda305314b050bf0c74766bfcce42/ScriptAnalyzer2/Rules/Rule.cs#L12-L91
This is nice because:

The rule uses attributes, so we can know about it before instantiating one, and it's also neater and more declarative
The abstract class can provide convenience methods that simplify invocation, helpfully transform inputs, and even can do diagnostic suppression before a diagnostic record object is allocated
A rule can be generic in its settings object and then allow for those settings to be injected through the constructor based on a deserialised settings object. This adds boilerplate, but allows the object configuration to be totally up to the implementer based on their settings definition (which can be defined next to the rule) and their constructor logic

However, some downsides of the current implementation are:

Allowing the same class to implement a rule and, say, a formatter is harder with the abstract class vs an interface (and interfaces should generally be preferred when possible)
Using a protected method to emit diagnostics means there's no type check for rules that will never emit a diagnostic
We force constructor injection. This is so you can use settings in your rule at the correct time from the code's perspective (e.g. default property values will work, unlike today), but it means more boilerplate for implementers.

I would very much like to keep the feature where we don't allocate an object for suppressed diagnostics, and it has the advantage that there's one fewer classes for an implementer to think about. Some convenience functions can be preserved with extension methods on interfaces, but some cannot.
So an example alternate implementation might look like:
public interface IScriptRule
{
    IEnumerable<Diagnostic> AnalyzeScript(Ast ast, IReadOnlyList<Token> tokens, string scriptFilePath);
}

public static class ScriptRuleExtensions
{
    // Convenience methods
}

But the main issue there is we lose the elegance of (1) making it easier to construct diagnostics, particularly passing in rule metadata automatically, and (2) being able to filter diagnostics before they are created.
So another alternative would be:
public interface IScriptRule
{
    void AnalyzeScript(IDiagnosticEmitter diagnosticEmitter, Ast ast, IReadOnlyList<Token> tokens, string scriptFilePath);
}

// This could be something like an abstract class instead
// But ideally something we could shift the core implementation of if we needed to
public interface IDiagnosticEmitter
{
    // Rule required so that diagnostics know what rule they came from
    // But we trust the caller -- it would be possible to instantiate another rule and pass it in, but this is undesirable
    // Also having to pass `this` is something of an anti-pattern
    void EmitDiagnostic(IScriptRule rule, Ast ast, IReadOnlyList<Token> tokens, string scriptFilePath);
}

public static class DiagnosticEmitterExtensions
{
    // Convenience methods
}

Basically, the abstract class approach makes life better for both the framework and for rule implementers, but has the big downside that multiple inheritance is impossible... OTOH, there are other ways to do something like take a rule and turn it into a formatter, and single-inheritance generally promotes good cohesion...

For those that want to implement their own rules in a .NET language, is the expectation that a PSA2 reference assembly would be published on NuGet?  I’m more curious about the experience as a rule author maintaining an assembly containing rules than the specifics of the actual API.  Ideally I’d have something to reference that would support rules for both 5.1 and Core and that would be loosely coupled to the exact version of PSA2 loaded at runtime.

is the expectation that a PSA2 reference assembly would be published on NuGet?

Yes that's the plan and primary driver for PSScriptAnalyzer 2, to enable NuGet-based hosting of it (mainly for the PowerShell extension for VSCode). It won't be a reference assembly, it will be the real thing. But there are no plans for a reference assembly currently.


Error while trying to load gem 'coffee-rails'

Consistently seeing this error during rake secret token generation:
Bundler::GemRequireError: There was an error while trying to load the gem 'coffee-rails'.
Gem Load Error is: wrong argument type Class (expected Module)
Backtrace for gem load error is:
/usr/lib/ruby/vendor_ruby/v8/conversion.rb:23:in `include'
/usr/lib/ruby/vendor_ruby/v8/conversion.rb:23:in `block (2 levels) in <top (required)>'
/usr/lib/ruby/vendor_ruby/v8/conversion.rb:22:in `class_eval'
/usr/lib/ruby/vendor_ruby/v8/conversion.rb:22:in `block in <top (required)>'
/usr/lib/ruby/vendor_ruby/v8/conversion.rb:21:in `each'
/usr/lib/ruby/vendor_ruby/v8/conversion.rb:21:in `<top (required)>'
/var/lib/gems/2.3.0/gems/therubyracer-0.12.3/lib/v8.rb:22:in `require'
/var/lib/gems/2.3.0/gems/therubyracer-0.12.3/lib/v8.rb:22:in `<top (required)>'
/usr/lib/ruby/vendor_ruby/execjs/ruby_racer_runtime.rb:108:in `require'
/usr/lib/ruby/vendor_ruby/execjs/ruby_racer_runtime.rb:108:in `available?'
/usr/lib/ruby/vendor_ruby/execjs/runtimes.rb:53:in `each'
/usr/lib/ruby/vendor_ruby/execjs/runtimes.rb:53:in `find'
/usr/lib/ruby/vendor_ruby/execjs/runtimes.rb:53:in `best_available'
/usr/lib/ruby/vendor_ruby/execjs/runtimes.rb:47:in `autodetect'
/usr/lib/ruby/vendor_ruby/execjs.rb:5:in `<module:ExecJS>'
/usr/lib/ruby/vendor_ruby/execjs.rb:4:in `<top (required)>'
/var/lib/gems/2.3.0/gems/coffee-script-2.4.1/lib/coffee_script.rb:1:in `require'
/var/lib/gems/2.3.0/gems/coffee-script-2.4.1/lib/coffee_script.rb:1:in `<top (required)>'
/var/lib/gems/2.3.0/gems/coffee-script-2.4.1/lib/coffee-script.rb:1:in `require'
/var/lib/gems/2.3.0/gems/coffee-script-2.4.1/lib/coffee-script.rb:1:in `<top (required)>'
/var/lib/gems/2.3.0/gems/coffee-rails-4.2.1/lib/coffee-rails.rb:1:in `require'
/var/lib/gems/2.3.0/gems/coffee-rails-4.2.1/lib/coffee-rails.rb:1:in `<top (required)>'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:82:in `require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:82:in `block (2 levels) in require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:77:in `each'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:77:in `block in require'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:66:in `each'
/usr/lib/ruby/vendor_ruby/bundler/runtime.rb:66:in `require'
/usr/lib/ruby/vendor_ruby/bundler.rb:108:in `require'
/opt/huginn/config/application.rb:7:in `<top (required)>'
/opt/huginn/Rakefile:5:in `require_relative'
/opt/huginn/Rakefile:5:in `<top (required)>'
/usr/lib/ruby/vendor_ruby/rake/rake_module.rb:28:in `load'
/usr/lib/ruby/vendor_ruby/rake/rake_module.rb:28:in `load_rakefile'
/usr/lib/ruby/vendor_ruby/rake/application.rb:687:in `raw_load_rakefile'
/usr/lib/ruby/vendor_ruby/rake/application.rb:96:in `block in load_rakefile'
/usr/lib/ruby/vendor_ruby/rake/application.rb:178:in `standard_exception_handling'
/usr/lib/ruby/vendor_ruby/rake/application.rb:95:in `load_rakefile'
/usr/lib/ruby/vendor_ruby/rake/application.rb:79:in `block in run'
/usr/lib/ruby/vendor_ruby/rake/application.rb:178:in `standard_exception_handling'
/usr/lib/ruby/vendor_ruby/rake/application.rb:77:in `run'
/var/lib/gems/2.3.0/gems/rake-12.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/rake:22:in `load'
/usr/local/bin/rake:22:in `<main>'
Bundler Error Backtrace:
/opt/huginn/config/application.rb:7:in `<top (required)>'
/opt/huginn/Rakefile:5:in `require_relative'
/opt/huginn/Rakefile:5:in `<top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.2.1/exe/rake:27:in `<top (required)>'
TypeError: wrong argument type Class (expected Module)
/var/lib/gems/2.3.0/gems/therubyracer-0.12.3/lib/v8.rb:22:in `require'
/var/lib/gems/2.3.0/gems/therubyracer-0.12.3/lib/v8.rb:22:in `<top (required)>'
/var/lib/gems/2.3.0/gems/coffee-script-2.4.1/lib/coffee_script.rb:1:in `require'
/var/lib/gems/2.3.0/gems/coffee-script-2.4.1/lib/coffee_script.rb:1:in `<top (required)>'
/var/lib/gems/2.3.0/gems/coffee-script-2.4.1/lib/coffee-script.rb:1:in `require'
/var/lib/gems/2.3.0/gems/coffee-script-2.4.1/lib/coffee-script.rb:1:in `<top (required)>'
/var/lib/gems/2.3.0/gems/coffee-rails-4.2.1/lib/coffee-rails.rb:1:in `require'
/var/lib/gems/2.3.0/gems/coffee-rails-4.2.1/lib/coffee-rails.rb:1:in `<top (required)>'
/opt/huginn/config/application.rb:7:in `<top (required)>'
/opt/huginn/Rakefile:5:in `require_relative'
/opt/huginn/Rakefile:5:in `<top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.2.1/exe/rake:27:in `<top (required)>'
(See full trace by running task with --trace)

I do have the coffee-rails gem installed.
Running $rake secret with elevated privileges produces the following output:
https://github.com/albertsun/weibo_2.git (at master@ac38d04) is not yet checked out. Run bundle install first.

Hi @TamanShud,
did you follow the manual installation guide to install Huginn?
The error suggests that you need to run bundle install first.

I did. This is post the pre-requisite dependencies and post issuing the bundle install instruction.

I see, did you try running it as the huginn user?
sudo -u huginn -H bundle exec rake secret

I did not. I wasn't aware based on the README or instructions a user was built. If a user needs to be created might I recommend you include this in the README?

I am not sure that I follow. Didn't you say you followed the manual installation guide? We do have instructions there that create a user.
If you followed the local installation from the README you still need to run bundle (or bundle install which does the same) to install the ruby gem dependencies.

I followed these instructions from the Novice Setup Guide. Then i went to the Local Installation to continue and where it ceases to function is in the actual .env.example file where it recommends running rake secret to generate a new token. e.g.
"# Replace the following with the output from "rake secret"
APP_SECRET_TOKEN=REPLACE_ME_NOW!

Hmm, does it work when you run bundle exec rake secret? If that does not help you can try installing nodejs that should prevent execjs from loading therubyracer which is causing the exception.


terraform - backend - issue

Hi,
Anywhere here please help to sort out below forwarded issue.
Please find below error description while trying to execute terraform backend script
Error inspecting states in the "s3" backend:
AuthorizationHeaderMalformed: The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'us-west-2'
status code: 400, request id: 1EF8E8A4B22220EA, host id: MBH/Xhxslms/l07FNtGIsw8m4yp5FQQfGwgaYzN0Dmt9FMhrkEBplVNvcpX57cInhnlLhD7ih9o=
Prior to changing backends, Terraform inspects the source and destination
states to determine what kind of migration steps need to be taken, if any.
Terraform failed to load the states. The data in both the source and the
Note:  Please find attached screenshot for your reference...
=====================================

Hi,
I tried with same script, it is working for me & environment also created.
Can you please suggest??
Thanks & Regards
Revathi

Thank you Revathi for the response.
I have tried all the possible ways, still trying to dig in.
@Anyone
Request you to refer screeshots attached and If you have any inputs, do reply. Thank you.

Now I am able to proceed.
This time, I have created dynamo table in us-west-2 and continued by taking all entries new one.
Can any one tell, what key stands for and what is its significance, in below mentioned script?
backend "s3" {
bucket = "tf-dynamo"
key    = "my-module-demo.state"
region = "us-west-2"
dynamodb_table = "tfdynamoWest"
}
}

Hi @muralifeb
key means 'terraform.tfstate' file  which is by executing terraform apply. In our scenario state file can be shared by some one.
Thanks & Regards
Revathi


packer build should fail if VM fails to suspend

I'm using the following:
packer 1.3.5
packer-builder-veertu-anka 1.0.1
Anka Build version 1.4 (build 98)
My packer build succeeded even though the VM failed to suspend at the end.
2019/03/28 06:33:09 packer-builder-veertu-anka: 2019/03/28 06:33:09 Executing anka --machine-readable suspend macos-base-10.12
2019/03/28 06:33:09 packer-builder-veertu-anka: 2019/03/28 06:33:09 Failed with an error of exit status 1
2019/03/28 06:33:09 packer-builder-veertu-anka: 2019/03/28 06:33:09 {"status": "ERROR", "body": {}, "message": "macos-base-10.12 failed to pause"}
2019/03/28 06:33:09 packer-builder-veertu-anka: 2019/03/28 06:33:09 macos-base-10.12 failed to pause
2019/03/28 06:33:09 packer-builder-veertu-anka: 2019/03/28 06:33:09 Executing anka --machine-readable describe macos-base-10.12
2019/03/28 06:33:10 packer-builder-veertu-anka: 2019/03/28 06:33:10 {"status": "OK", "body": {"firmware": {"type": "uefi"}, "usb": {"host": null, "pci_slot": 7, "location": null, "tablet": 1}, "memory_prefetch": false, "display": {"frame_buffer": {"pci_slot": 29, "vnc_port": 0, "height": 768, "width": 1024, "vnc_ip": "<IP_ADDRESS>", "password": "admin"}}, "ram": "4G", "uuid": "da37fe19-515c-11e9-8fca-003ee1cd520b", "nested": false, "nvram": true, "hard_drives": [{"controller": "ablk", "pci_slot": 4, "file": "da33f30f-515c-11e9-9412-003ee1cd520b.ank"}], "network_cards": [{"port_forwarding_rules": [], "pci_slot": 28, "type": "anet", "mode": "shared", "mac_address": "56:45:45:ad:43:0f"}], "hardware_variables": {}, "optical_drives": [], "smbios": {"type": "generated"}, "hyper_threading": false, "smc": {"type": "generated"}, "cpu": {"cores": 2}, "name": "macos-base-10.12"}, "message": ""}
2019/03/28 06:33:10 [INFO] (telemetry) ending veertu-anka
2019/03/28 06:33:10 Builds completed. Waiting on interrupt barrier...
Build 'veertu-anka' finished.

==> Builds finished. The artifacts of successful builds are:
2019/03/28 06:33:10 machine readable: veertu-anka,artifact-count []string{"1"}
==> Builds finished. The artifacts of successful builds are:
2019/03/28 06:33:10 machine readable: veertu-anka,artifact []string{"0", "builder-id", "packer.veertu-anka"}
2019/03/28 06:33:10 machine readable: veertu-anka,artifact []string{"0", "id", "da37fe19-515c-11e9-8fca-003ee1cd520b"}
2019/03/28 06:33:10 machine readable: veertu-anka,artifact []string{"0", "string", "macos-base-10.12"}
2019/03/28 06:33:10 machine readable: veertu-anka,artifact []string{"0", "files-count", "0"}
2019/03/28 06:33:10 machine readable: veertu-anka,artifact []string{"0", "end"}
2019/03/28 06:33:10 [INFO] (telemetry) Finalizing.
--> veertu-anka: macos-base-10.12
2019/03/28 06:33:11 waiting for all plugin processes to complete...
2019/03/28 06:33:11 /Users/administrator/.packer.d/plugins/packer-builder-veertu-anka: plugin process exited
2019/03/28 06:33:11 /usr/local/bin/packer: plugin process exited

598d83eedf213af232f8a51526ed57746acecfff


Adding tests for etherscan

If I remember right, these still aren't run as part of the main suite.
Do you have an opinion on that? Is it ok to add tests to the suite that are dependent on an external service?

I'll add tests for the main sub-providers; realize the etherscan tests may not be useful at the moment...

This PR also contains a file change to hooked-wallet-ethtx.js:
const self = this
Received: ReferenceError: self is not defined when calling from eth-faucet project.
//
In the future, these should be separate PRs.

@Ryanmtate thanks!


Remove building=ruins preset

The tag building=ruins is highly controversial and its wiki even states that controversy.
The building tag should be used to define the types of buildings, and there are no buildings constructed to be ruins.
I've seen many wrong uses of this tag, propagated by this preset in iD.
Shouldn't it be removed?
As a "correct" alternative, maybe it should be changed to building=yes + ruins=yes.
Regards.

If it’s a valid tag but the preset is easily mistaken for something else, perhaps the preset’s name and/or icon should change to something less confusing?

I think the preferred tagging is historic=ruins, ruins=building.

and there are no buildings constructed to be ruins

There are sham ruins, but typical building=ruins is not one of them.

By the way, the wiki’s definition is itself disputed. The contention in that discussion is that building=ruins can be used for (non-historic) buildings that weren’t constructed as ruins, since that’s how the tag has historically been used. My recollection is that this tag really took off after the earthquake in Haiti, when ruins were being identified systematically. If actual usage of this tag is more mixed than the wiki lets on, the wiki needs to make that clear so that mappers and data consumers don’t misinterpret existing usage.

My recollection is that this tag really took off after the earthquake in Haiti, when ruins were being identified systematically.

Yes, HOT has widely encouraged people to use building=collapsed building=ruins which is not really a correct tagging.
Not entirely sure whether we have established clear mapping for "there is a ruined building here and ruins are still present" that is not used also for other things.

I think the preferred tagging is historic=ruins, ruins=building.

I know historic tag as been (mis)used for many elements, but it is not required for a building in ruins. Historic means/should mean something important (historic) happened there. It is not necessary for a house where someone lived and is now in ruins.
What I see is that people want to map buildings (whatever the type of the building) that are in ruins, and they don't care if the tag is correct or not in iD. Since building=ruins is disputed (and, in my view, semantically incorrect), the iD preset should be adapted to correspond to those expectations. I'm sure that 99% of mappers who already used building=ruins never intended to map a "sham ruins".

Historic means/should mean something important (historic) happened there.

this is opinion held by someone about historic= but many tags like historic=wayside_shrine are not used in this way

I started https://community.openstreetmap.org/t/do-we-have-building-for-existing-ruins-of-a-building/97276


"Attach Visual Studio Code" on target container fails on mkdir step

issue:
it seems that on attach, VS Code Kubernetes attempts to install the server-side components to /home/$USER/.vscode-server (non-writable in my container) rather than $HOME/.vscode-server (writable in my container).
this does not work in my environment:
sh-4.2$ mkdir /home/$USER/.vscode-server
mkdir: cannot create directory '/home/TEST_USER/.vscode-server': No such file or directory
sh-4.2$

but this does:
sh-4.2$ mkdir $HOME/.vscode-server

terminal output:

[2 ms] Remote-Containers 0.158.0 in VS Code 1.53.2 (622cb03f7e070a9670c94bae1a45d78d7181fbd4).
[29 ms] Start: Resolving Remote
[34 ms] Start: Run: kubectl exec -it notebook-devel-0 --namespace TEST_USER --container notebook -- /bin/sh -c VSCODE_REMOTE_CONTAINERS_SESSION='XXX' /bin/sh
[38 ms] Start: Run in container: id -un
[2262 ms] TEST_USER
[2262 ms] Unable to use a TTY - input is not a terminal or the right kind of file
[2262 ms] Start: Run in container: uname -m
[2331 ms] x86_64
[2331 ms]
[2332 ms] Start: Run in container: (cat /etc/os-release || cat /usr/lib/os-release) 2>/dev/null
[2449 ms] NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

[2449 ms]
[2450 ms] Start: Run in container: cat /etc/passwd
[3082 ms] Start: Run in container: test -d /home/TEST_USER/.vscode-server
[3151 ms]
[3151 ms]
[3151 ms] Exit code 1
[3151 ms] Start: Run in container: test -d /home/TEST_USER/.vscode-remote
[3240 ms]
[3240 ms]
[3240 ms] Exit code 1
[3240 ms] Start: Run in container: set -o noclobber ; mkdir -p '/home/TEST_USER/.vscode-server/data/Machine' && { > '/home/TEST_USER/.vscode-server/data/Machine/.writeMachineSettingsMarker' ; } 2> /dev/null
[3348 ms]
[3348 ms] mkdir: cannot create directory '/home/TEST_USER': Permission denied
[3349 ms] Exit code 1
[3349 ms] Start: Run in container: cat /home/TEST_USER/.vscode-server/data/Machine/settings.json
[3436 ms]
[3436 ms] cat: /home/TEST_USER/.vscode-server/data/Machine/settings.json: No such file or directory
[3436 ms] Exit code 1
[3437 ms] Start: Run in container: test -d /home/TEST_USER/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4
[3506 ms]
[3506 ms]
[3506 ms] Exit code 1
[3506 ms] Installing VS Code Server for commit 622cb03f7e070a9670c94bae1a45d78d7181fbd4
[3506 ms] Start: Run in container: mkdir -p /home/TEST_USER/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4_1613343927012
[3599 ms]
[3599 ms] mkdir: cannot create directory '/home/TEST_USER': Permission denied
[3599 ms] Exit code 1
[3600 ms] Command in container failed: mkdir -p /home/TEST_USER/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4_1613343927012

could this be made to use $HOME instead - or is there some better way to customize this install path?

This looks like it is something in the Remote Containers extension - the k8s extension doesn't use the string vscode-server.  Their repo is https://github.com/Microsoft/vscode-remote-release - have a chat with them in the first instance I think.  And if it needs collaboration across the two extensions then collaboration there will be!

closing this in favor of https://github.com/microsoft/vscode-remote-release/issues/4468


Please add "student.gsso.de"

Request to add Grafenbergschule to swot
I already got accepted to githubs student developer programm, but it would be nice to have the scool on this list.
GSSO features a profile Subject "Information Technology", which you have to attend to till your A-Levels.
https://gsso.de/index.php/events/info/2020-21/TG/freiePlaetze
Screenshot that proves that "student.gsso.de" is on the same cert then gsso.de:

https://gsso.de/index.php/events/info/2020-21/TG/freiePlaetze

@Likqez Pull request merged. Thank you!

@Likqez  After the pull request has been merged are you able to create an account with your university email id?

@bhanureddy2105 Normally, you are. If you are not, please send an email to<EMAIL_ADDRESS>with a error message screenshot.

I already have an registered student account by linking with github education. Still wanted to contribute for future applications :)


Uncaught Error: QuerySubscription already has a listener.

Hi,
When mounting a ReadyStateRenderer the second time, I get the following exception.
Uncaught Error: QuerySubscription already has a listener.
    at invariant (browser.js:40)
    at QuerySubscription.subscribe (QuerySubscription.js:116)
    at SnapshotRenderer.subscribe (ReadyStateRenderer.js:121)
    at SnapshotRenderer.componentDidMount (ReadyStateRenderer.js:96)
    at eval (ReactCompositeComponent.js:264)
    at measureLifeCyclePerf (ReactCompositeComponent.js:75)
    at eval (ReactCompositeComponent.js:263)
    at CallbackQueue.notifyAll (CallbackQueue.js:76)
    at ReactReconcileTransaction.close (ReactReconcileTransaction.js:80)
    at ReactReconcileTransaction.closeAll (Transaction.js:209)

This happens when moving between the mobile and desktop layouts. I have a configuration where the root is a layout component, which depending on the viewport width either draws a MobileLayout or DesktopLayout component, with the different parts of the UI defined in route groups. When changing the width the components defined in the route groups, the different component defined in the route groups unmount and mount again in the new layout.

This is just #48. Let's follow up there.

Sorry, didn't notice that issue.


⚠ Samsung has degraded performance

In 28efe36, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2835 ms

Resolved: Samsung performance has improved in 1c600b0.


Problem with close button

The close button appears misplaced, how to correct it.

Hey @brunobola, check #975
You need to add this CSS
.ui-button-icon-only {
text-indent: -9999px;
}

Dont update jQuery UI

Thanks, problem solved :)


Replace persistence entities with simple DTO objects.

If we using a persistence object (@Entity) as an argument of a method annotated with @RequestMapping, it is possible that the end-user can change the content of unexpected fields in the database, which eventually lead to a critical bug.
For example on the below controllers, we need to replace entities with a simple Dto:

OwnerController
PetController
VisitController

SonarQube references this security flaw: https://rules.sonarsource.com/java/tag/spring/RSPEC-4684
We have encountered this issue on other forks of Spring Petclinic (ie. https://sonarcloud.io/project/issues?id=spring-petclinic_spring-framework-petclinic&open=AWq4K0FjEGMyMe6L0asK&resolved=false&types=VULNERABILITY)

If we using a persistence object (@entity) as an argument of a method annotated with @RequestMapping, it is possible that the end-user can change the content of unexpected fields in the database, which eventually lead to a critical bug.
For example on the below controllers, we need to replace entities with a simple Dto:

OwnerController
PetController
VisitController

Yes @mahdieha for me we must isolate @Controller from @Repository by using @Service and DTO.
Controller call Service using DTO and Service call Repository using @Entity

I have send a pull request with the feature branch
Feature/implement services

We long ago decided not to do this, purely in the interests of keeping the codebase as small as possible. While it is certainly an interesting idea, and can be seen as best practice in some situations, blanket use of DTOs for all entities in all settings is probably an anti-pattern. So I don't see any reason to change the decision to keep it simple. Maybe a link to some nice article on DTOs would be useful in the README?


[Chore] Test api endpoints [WIP]

What does this PR do?
Adds tests for the API endpoints
Endpoints being tested?

EndPoint
Functionality

POST /api/v1/rides
Creates a new ride

GET /api/v1/rides
Fetches all available rides

GET /api/v1/rides/<rideId>
Fetches a single ride

POST /api/v1/auth/rides/<rideId>/requests
Creates a ride request

Tasks achieved in this PR

[x] Test ride creation edge cases
[x] Test all rides fetching edge cases
[x] Test single ride fetching edge cases
[x] Test ride request edge cases

How should this be manually tested?

Clone this repo using git clone https://github.com/JoshuaOndieki/ridemyway-api.git
Check the ReadMe for instructions on setting up the project.
git checkout ch-test-api-endpoints
Run nosetests  --with-coverage --cover-package=ridemyway to see the tests coverage

Background Context?
The tests are failing since the functionality is yet to be implemented.
My approach assumes no users and therefore rides can be created and requests made without user interaction.
Resources & Libs
This Pivotal Tracker board was used to plan and manage the tasks.

quite okay i did not see anything alarming.

@meshack-mbuvi @TheSteelGuy  Thanks for the feedback.
@meshack-mbuvi, Lemme know how I can test for expired rides

Good Job on The PR. Very detailed PR

For my case,have compared date stored with current timestamp

I have no idea how I will put an expired ride into my app and my create ride should not allow passed dates.
Unless I create a ride and then wait for it to expire then try creating a request.
The downside is that it will slow my tests


⚠ Bofrost.at has degraded performance

In f6a30a6, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 2677 ms

Resolved: Bofrost.at performance has improved in f3815b9 after 20 minutes.


correct photo frame flux calculation

Fixes #553

Indeed, the PHOTO mags look better now in the scatter plot


1351 add contact

ISSUE 1351
NOTES:

Changed default behaviour of make pythontest command to not run in parallel when developing locally(This way we can't debug tests)
Did some cleanup and removed some unused schemas
Updated some schemas to use class Meta instead of class Config which is deprecated
Added a yarn command to run component tests

TEST:

Log in as external user admin -> Contacts -> Add contact -> fill out the form OR use one of the existing users from the dropdown -> submit
Log in as internal user -> Contacts -> view details of a contact

As usual, your code is beautiful Sepehr! ✨ Not sure if I should be hitting Approve just yet - has @BCerki has finished doing all the clicks?

Not yet, I'm waiting for some post-rebase updates


ParseError: Invalid type comment: (main:f..A) -> None

Given t-pyannotate.py:
from pyannotate_runtime import collect_types

collect_types.init_types_collection()
collect_types.start()

def c(obj):
    pass

def f():
    class A:
        pass

    c(A())

f()

collect_types.stop()
collect_types.dump_stats("type_info.json")

Produces:
[
    {
        "path": "t-pyannotate.py",
        "line": 8,
        "func_name": "c",
        "type_comments": [
            "(__main__:f.<locals>.A) -> None"
        ],
        "samples": 1
    },
    {
        "path": "t-pyannotate.py",
        "line": 12,
        "func_name": "f",
        "type_comments": [
            "() -> None"
        ],
        "samples": 1
    },
    {
        "path": "t-pyannotate.py",
        "line": 13,
        "func_name": "A",
        "type_comments": [
            "() -> None"
        ],
        "samples": 1
    }
]

Running pyannotate -w then crashes:
Traceback (most recent call last):
  File "…/Vcs/pytest/.venv/bin/pyannotate", line 11, in <module>
    load_entry_point('pyannotate', 'console_scripts', 'pyannotate')()
  File "…/Vcs/pyannotate/pyannotate_tools/annotations/__main__.py", line 125, in main
    data = generate_annotations_json_string(
  File "…/Vcs/pyannotate/pyannotate_tools/annotations/main.py", line 60, in generate_annotations_json_string
    signature = unify_type_comments(item.type_comments)
  File "…/Vcs/pyannotate/pyannotate_tools/annotations/main.py", line 27, in unify_type_comments
    arg_types, return_type = infer_annotation(type_comments)
  File "…/Vcs/pyannotate/pyannotate_tools/annotations/infer.py", line 45, in infer_annotation
    arg_types, return_type = parse_type_comment(comment)
  File "…/Vcs/pyannotate/pyannotate_tools/annotations/parse.py", line 216, in parse_type_comment
    return Parser(comment).parse()
  File "…/Vcs/pyannotate/pyannotate_tools/annotations/parse.py", line 225, in __init__
    self.tokens = tokenize(comment)
  File "…/Vcs/pyannotate/pyannotate_tools/annotations/parse.py", line 193, in tokenize
    raise ParseError(original)
pyannotate_tools.annotations.parse.ParseError: Invalid type comment: (__main__:f.<locals>.A) -> None

This is likely due to the "" in there I guess?
pyannotate b7f96ca (current master)

The nested class seems to cause the trouble. We could use a short name for the nested class type, or perhaps just filter them out at some point.

Is it safe to assume that this project is abandoned? This is a major bug which makes this tool unusable. At least I can't figure out a way around this without just manually processing the generated json.
Please archive it and adapt the readme to prevent further headaches.


Contains Duplicate [LeetCode]

I want to provide the C++ solution for the below question.
I am a LGM-SOC participant
https://leetcode.com/problems/contains-duplicate/
Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
Input: nums = [1,2,3,1]
Output: true
I want to solve this question using Hashing

@Ayush7614 I'd like to work on this issue in C language under HCSSoC. Please assign me this issue.

Can I work on this issue

@Ayush7614 @ravikr126 I'd like to work on this issue in Java. Please assign me this.

Im preparing for my coding interviews and it would really help me if you assign this question to me
Kindly assign me this
I have immense intrest  in coding