[Bug]: When using paint, the image suddenly disappears

Package Version
4.2.7
Flutter Version
3.22
Platforms
Web
How to reproduce?
This problem occurs when you open the website with a mobile device
Logs (optional)
No response
Example code (optional)
No response
Device Model (optional)
xiaomi 12 lite (android 14)

Uploading VID_20240716_093956.mp4…

https://github.com/user-attachments/assets/d9b36f23-9b75-41aa-96ca-14c7716479db

https://github.com/user-attachments/assets/192dbfb2-121f-4dd5-8a71-926486536580

Thank you for reporting this issue. Can you also answer the following questions to help me resolve this issue?

What image format are you using? For example “JPEG or PNG”.
What image size do you have? For example “10 MB”
Can you publish the editor widget? Like ProImageEditor.asset(/*your configs*/).
Does the problem also occur on other devices?
The problem is only in debug mode or also in release mode?
Which flutter web renderer are you using? For example “canvas” or “html”. For the case you use “html” can you also try with the “canvas” renderer, which I explain here

I found the following problem in Flutter. Very strangely, http request to desktop domain.com/image.jpg works (GET). However, it does not work in the mobile browser. By chance, I saw that it worked while adding a query. example: domain.com/image.jpg?a=b

jpg
2.75 MB

ProImageEditor.network(         "$adminServerUrl/uploads/${ExampleConstants.of(context)!.file.filepath}",         key: editorKey,         callbacks: ProImageEditorCallbacks(           onImageEditingStarted: onImageEditingStarted,           onImageEditingComplete: onImageEditingComplete,           onCloseEditor: onCloseEditor,         ),         configs: ProImageEditorConfigs(             paintEditorConfigs: const PaintEditorConfigs(               editorMinScale: 1,               editorMaxScale: 5,               editorIsZoomable: true,               freeStyleHighPerformanceScaling: false,               minScale: 1,               maxScale: 5,             ),             designMode: platformDesignMode,             mainEditorConfigs: const MainEditorConfigs(               editorIsZoomable: true,             ),             imageEditorTheme: const ImageEditorTheme(               paintingEditor: PaintingEditorTheme(                   appBarBackgroundColor: appMainColor,                   bottomBarColor: appMainColor),               appBarBackgroundColor: appMainColor,               bottomBarBackgroundColor: appMainColor,             )),       )
  4. only in android and ios browser
  5. both of them
  6. default `flutter build web` and `flutter run`

I think canvaskit

I updated my code like this. Now the picture appears on the screen for a very short time and disappears (200-500 ms). This time it is experienced without clicking on the paint.

ProImageEditor.memory(
        getUint!,
        key: editorKey,
        callbacks: ProImageEditorCallbacks(
          onImageEditingStarted: onImageEditingStarted,
          onImageEditingComplete: onImageEditingComplete,
          onCloseEditor: onCloseEditor,
        ),
        configs: ProImageEditorConfigs(
            paintEditorConfigs: const PaintEditorConfigs(
              editorMinScale: 1,
              editorMaxScale: 5,
              editorIsZoomable: true,
              freeStyleHighPerformanceScaling: false,
              minScale: 1,
              maxScale: 5,
            ),
            designMode: platformDesignMode,
            mainEditorConfigs: const MainEditorConfigs(
              editorIsZoomable: true,
            ),
            imageEditorTheme: const ImageEditorTheme(
              paintingEditor: PaintingEditorTheme(
                  appBarBackgroundColor: appMainColor,
                  bottomBarColor: appMainColor),
              appBarBackgroundColor: appMainColor,
              bottomBarBackgroundColor: appMainColor,
            )),
      )

Okay, thank you for the information. Can you also try the web demo and select the option “Zoom in Paint and Main Editor” if it works with your mobile devices there? In the case it also didn't work, which web browser do you use on your mobile android device (as example chrome or Samsung-Internet)?

Okay, thank you for the information. Can you also try the web demo and select the option “Zoom in Paint and Main Editor” if it works with your mobile devices there? In the case it also didn't work, which web browser do you use on your mobile android device (as example chrome or Samsung-Internet)?

I've tried. The entire demo runs on the mobile browser. Then the problem is caused by my code. but it was working before. This is a situation that happened in the last month. That's why I wrote to you

I finally found the problem. I temporarily removed "clipper" from my use. It's not in the demo yet, and I couldn't find the reason for it.
Now crop is not responding
  Widget _buildCropPainter({required Widget child}) {
    CutOutsideArea clipper = CutOutsideArea(configs: widget.transformConfigs);
    return child;
    if (widget.configs.cropRotateEditorConfigs.roundCropper) {
      return ClipOval(clipper: clipper, child: child);
    } else {
      return ClipRect(clipper: clipper, child: child);
    }
  }

Okay, that's interesting. Can you try to add the image editor directly after initializing your app without any configurations and check if it works correctly, then like below? And important is when you try it, please also use the URL like in the code below from "picsum...", because the image editor download the image in the background that it can decode it with all the information and maybe, there is also a problem.
@override
Widget build(BuildContext context) {
  return MaterialApp(
    title: 'Pro-Image-Editor',
    theme: ThemeData(
      colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue.shade800),
      useMaterial3: true,
    ),
    debugShowCheckedModeBanner: false,
    home: ProImageEditor.network(
      'https://picsum.photos/id/230/2000',
      callbacks: const ProImageEditorCallbacks(),
    ),
  );
}

https://github.com/user-attachments/assets/fbd803fa-cd7f-47cc-b1ac-9ee4f2518458

import 'package:flutter/material.dart';
import 'package:pro_image_editor/pro_image_editor.dart';

void main(List<String> args) {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Pro-Image-Editor',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue.shade800),
        useMaterial3: true,
      ),
      debugShowCheckedModeBanner: false,
      home: ProImageEditor.network(
        'https://picsum.photos/id/230/2000',
        callbacks: const ProImageEditorCallbacks(),
      ),
    );
  }
}

https://github.com/user-attachments/assets/ec3f9628-7dd8-4d54-912d-8b4ddc211d52
I noticed something else. If I tap the reset option within the crop/rotate the problem is resolved.

Okay, if the filters look like that, is it a problem that you didn't use the flutter canvas renderer. Can you follow the steps I describe here to set up the image editor correctly.
The important is inside your flutter_bootstrap.js file to add the canvas renderer like here.

Thank you for your help. You were right, and this solution resolved my issue. I apologize for not reading carefully and taking up your time. I appreciate you and your project. <3


Help: Don't know how interpret this AOT problem

Hello! :). I get this error "System.ArgumentException: Member 'System.Void System.Runtime.CompilerServices.NullableAttribute::.ctor(System.Byte)' " during compilation.
What I should put in the link.xml ? I was able to solve other problems but I cannot figure this one out.
Expected behavior
To compile without an error;
Actual behavior
Crash during compilation
"System.ArgumentException: Member 'System.Void System.Runtime.CompilerServices.NullableAttribute::.ctor(System.Byte)' "
Steps to reproduce

New project
Import jillejr.newtonsoft.json-for-unity via UPM
Add following script to scene:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {
  // Start is called before the first frame update
  void Start() {
    JObject item = new JObject();
    item["oneKey"] = JObject.FromObject(new RandomItem {anyValue = 1});
    string indentedItem = item.ToString(Formatting.Indented);
    Debug.Log(indentedItem);
  }
}

public class RandomItem {
  public int anyValue;
}

Build using  IL2CPP with High Stripping level

Details
Host machine OS running Unity Editor: Windows
Unity build target Windows/WebGL build as High
Newtonsoft.Json-for-Unity package version 12.0.301
I was using Unity version 2019.3.12f1
Checklist

[x] Shutdown Unity, deleted the /Library folder, opened project again in Unity, and problem still remains.
[x] Checked to be using latest version of the package.

Hi @SwingWren, interesting scenario you've found where as you say it doesn't even compile. I've sadly not done too much testing with High Stripping Level, but I'll investigate this and hopefully we can come to a solution ASAP! :)

I love this issue ❤ because the error roots so far down in the IL, and I rarely get to analyse that deep.
What's going on is that since Json .NET 12.0.3 it actually includes the NullableAttribute and NullableContextAttribute for C# 8's nullable ref types.
The High stripping level for some reason removes the NullableAttribute:.ctor(byte) constructor, even though it's clearly referenced in the JObject.set_Item method (used in the item["oneKey"] = line).

That IL declaration is the equivalent to the following C# code:
public void set_Item(string propertyName, [Nullable((byte)2)] JToken value) {}

Workaround
This is what you actually asked for. Adding the NullableAttribute to your link.xml will make it all safe to use.
It seems like it's only necessary to specify the .ctor(byte) constructor to make it build, but to be on the safe side you may declare the entire NullableAttribute and the accompanying NullableContextAttribute to be preserved by adding the following:
<linker>
  <assembly fullname="Newtonsoft.Json">
    <type fullname="System.Runtime.CompilerServices.NullableAttribute"/>
    <type fullname="System.Runtime.CompilerServices.NullableContextAttribute"/>
  </assembly>
</linker>

And yes, it's supposed to be embedded in the Newtonsoft.Json assembly.
Long-term fix
I'll probably just write a small thread on the Unity forums, hoping some Unity dev will see it and can perhaps fix it, as it seems like this is a problem with IL2CPP itself.
In the meantime I'll toss in the NullableAttribute into the link.xml that comes with Newtonsoft.Json-for-Unity so it wont occur again for 12.0.302 and higher.

Closing as resolved. Don't fray in reopening the issue if the problem comes back with some other type.
Cheers!


aspect List checkExpression does not take source.ip

checkExpression should take a string, but when tested with source.ip attribute, get an error:
rules:

aspects:

kind: lists
adapter: ipList
params:
blacklist: true
checkExpression: source.ip

I get the following error:
Error: failed rule creation with status 400: 2 errors occurred:

serviceConfig: failed validation
/:lists[0]: failed to parse params: 1 error occurred:
lists: aspect validation failed: 1 error occurred:
checkExpression: error type checking expression: expression 'source.ip' evaluated to type IP_ADDRESS, expected type STRING

The issue here is that the type of the IP List Checker input is ValueType.STRING, which is checked here. The easiest fix would be to update that code to check for any of these ValueTypes in addition to STRING.
A secondary, larger-in-scope fix would be to update how we handle those String-ish Attributes to coerce them into String. I'm not a huge fan of this: we should do it at runtime during evaluation, but not during type checking up front.
IMO the correct fix is in the listsManager code I linked above.

Open #1085 to track this feature request in the context of the new Mixer adapter model.


gatsby-browser.js causes issue in mono-repo

I'm working on adding this plugin to a theme which gatsby does by using yarn mono-repos. This causes the build to fail with
success createPages - 9.226s
success Checking for changed pages - 0.001s
success createPagesStatefully - 0.090s
success update schema - 0.294s
success write out redirect data - 0.002s
success Build manifest and related icons - 0.124s
success onPostBootstrap - 0.130s
info bootstrap finished - 17.981s
success onPreExtractQueries - 0.001s
success extract queries from components - 1.010s
success write out requires - 0.131s
success run static queries - 0.084s - 11/11 131.66/s
success run page queries - 0.044s - 2/2 45.00/s

 ERROR #98123  WEBPACK

Generating development JavaScript bundle failed

Unexpected token (31:4)

File: ../node_modules/gatsby-omni-font-loader/gatsby-browser.js:31:4

failed Building development bundle - 22.474s

Seems like there is a known fix for this following this example https://github.com/gatsbyjs/gatsby/issues/19042#issuecomment-557785506

I may have jumped the gun here. While trying to create a repo for you I think I fixed my current issue. I had it in the wrong package.json file (root instead of theme's sub package.json file). We probably can close for now. Will report back if there are any additional issues.

I may have jumped the gun here. While trying to create a repo for you I think I fixed my current issue. I had it in the wrong package.json file (root instead of theme's sub package.json file). We probably can close for now. Will report back if there are any additional issues.

Hi @CodySchaaf , thanks for reporting the issue and keeping me posted. Glad you've managed to find the fix in the meantime. Please let me know if the issue is not resolved and I'll have a look.

Hi @CodySchaaf , thanks for reporting the issue and keeping me posted. Glad you've managed to find the fix in the meantime. Please let me know if the issue is not resolved and I'll have a look.


Show icon of app most using the network

@soosbird on Twitter suggested adding an icon to the menu for which app is using the network the most at any moment in time:

Thoughts?

I don't think that's necessary. It's common that on a computer, many apps have heavy network activity at the same time. Therefore I think the purpose of this tool should be to just show which apps are using the internet, not how much they are using it.

Yeah, you're right.


CIF-1031 - Clean up magento-proxy.conf

removed /rest proxy config

Codecov Report

Merging #112 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #112   +/-   ##
=========================================
  Coverage     82.63%   82.63%
  Complexity      336      336
=========================================
  Files            38       38
  Lines          1307     1307
  Branches        102      102
=========================================
  Hits           1080     1080
  Misses          158      158
  Partials         69       69

Flag
Coverage Δ
Complexity Δ

#karma
93.61% <ø> (ø)
0 <ø> (ø)
:arrow_down:

#unittests
79.6% <ø> (ø)
336 <ø> (ø)
:arrow_down:

Continue to review full report at Codecov.

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


Update gcc-5 to gcc-8.

I want to propose to change gcc-5 to latest version gcc-8.
There is an issue on gcc-8.
Maybe implicit-fallthrough warning became more strict.
We have to fix those or have to set -Wimplicit-fallthrough=2 explicitly.
Could you give me advice how to fix?
References
https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
Checklist

[ ] documentation is added or updated
[ ] tests are added or updated

Just a point without having looked very closely at the change: we do need to have at least one job that tests with an old enough gcc to make sure those builds don't rot because we start using new and shiny features.  Please keep that in mind.

Just a point without having looked very closely at the change: we do need to have at least one job that tests with an old enough gcc to make sure those builds don't rot because we start using new and shiny features. Please keep that in mind.

Yes, alright.
I think it's no problem on this pull-request for testing the old gcc.
Because previously these tests are run on both gcc-5 and the Travis default gcc (=4.8).
And I just changed gcc-5 to gcc-8 and now on both gcc-8 and the gcc (=4.8).

If we want to set the old gcc explicitly, we can change
from
compiler:
    - clang
    - gcc

to
compiler:
    - clang
    - gcc-4.8

Then download and install both gcc-4.8 and g++4.8 package.

Ahhh, thanks for the first explanation!  I had forgotten what the default was.

Yeah :) And now 1 test case in the Travis test cases is failed with 2 errors.
https://travis-ci.org/openssl/openssl/jobs/439706804
crypto/asn1/tasn_enc.c:131:12: error: this statement may fall through [-Werror=implicit-fallthrough=]
         if (aclass & ASN1_TFLG_NDEF)
            ^
crypto/asn1/tasn_enc.c:135:5: note: here
     case ASN1_ITYPE_SEQUENCE:
     ^~~~
cc1: all warnings being treated as errors
make[1]: *** [crypto/asn1/libcrypto-lib-tasn_enc.o] Error 1
make: *** [all] Error 2
+//// MAKE FAILED

apps/engine.c:344:29: error: this statement may fall through [-Werror=implicit-fallthrough=]
             test_avail_noise++;
             ~~~~~~~~~~~~~~~~^~
apps/engine.c:346:9: note: here
         case OPT_T:
         ^~~~
cc1: all warnings being treated as errors
make[1]: *** [apps/openssl-bin-engine.o] Error 1
make[1]: Leaving directory `/home/travis/build/openssl/openssl'
make: *** [tests] Error 2
+///// MAKE TEST FAILED

Ok.
BTW, you may have noticed the "need-cla" label.  In this case, the change is trivial, at least to me.  If you agree with that, you need to amend your commit and add the following on a line of its own in the commit message.  Make sure it's separated from the first line with an empty line.
CLA: trivial

Perhaps add a commit that fixes those two messages?  The comment text is "fall through" so maybe just replace it with "fallthrough" in both places?

Ok, so this is a little weird...  According to gcc 8.2, -Wextra means, among other things, -Wimplicit-fallthrough=3.  Scrolling down a bit, we can see that, among others, that level accepts this in a comment: [ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?
As far as I can see, fall through matches...

Sounds like something for the style guide :)  For sense of history, I recommend FALLTHROUGH :)
git grep -i fall.*thr is interesting to look at.

You mean FALLTHRU, surely ;-)

That's like whether color is colour :)

So are you saying I went 'murican english when you made an attempt at The Queens English? :laughing:

BTW, you may have noticed the "need-cla" label. In this case, the change is trivial, at least to me. If you agree with that, you need to amend your commit and add the following on a line of its own in the commit message. Make sure it's separated from the first line with an empty line.

Alright. I will do it tomorrow. I noticed it. Thanks for the explanation!

As far as I can see, fall through matches...

Yeah, this is weird. Previous "fall through" has to match.

Early look at Travis tells me that the changes at the two spots isn't quite enough...  I'll have a run through on my laptop with make -k (I'm starting to wonder if we shouldn't use -k in our Travis stuff) and see if there are more cases where the compiler complains.

I just tried a gcc-8 build on my laptop, config was CC=gcc-8 ../master/config -d --strict-warnings.  I get no errors.  That makes me doubt the sanity of this PR in Travis terms.
Granted, my gcc-8 version is 8.2.0, the one Travis uses is 8.1.0.  Is there a difference regarding the fallthru treatment between the two?  I don't have an answer, but considering how the Travis build seems to bail whatever changes you throw at it, I'm starting to have doubts.

I just tried a gcc-8 build on my laptop, config was CC=gcc-8 ../master/config -d --strict-warnings. I get no errors. That makes me doubt the sanity of this PR in Travis terms.

Are the comipler flags are same with your laptop?
ccache gcc-8  -Iapps -I. -Iinclude -pthread -m64 -Wa,--noexecstack -DDEBUG_UNUSED -DPEDANTIC -pedantic -Wno-long-long -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wswitch -Wsign-compare -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wformat -Wtype-limits -Wundef -Werror -Wall -O3 -DNDEBUG  -MMD -MF apps/openssl-bin-engine.d.tmp -MT apps/openssl-bin-engine.o -c -o apps/openssl-bin-engine.o

The only difference is that I have -O0 -g instead of -O3 -NDEBUG.  Just to make sure, I'm reconfiguring in non-debug mode.

Alright. Thank you for checking.
By the way, seeing Makefile, we need not only CC=gcc-8 CXX=g++-8 but also AR=gcc-ar-8 RANLIB=gcc-ranlib-8, do not we? Though it might be another pull-request.

Not sure that we really need a specialised AR or RANLIB...

No longer relevant, we do not use Travis.

No longer relevant, we do not use Travis.

OK!

OK!


Office 2024

Please help to make it work with Office 2024

I do not use Office. What is the error message. What is the GLVK you used. Any details?!

with Office 2024. it works!
C:\Program Files\Microsoft Office\Office16>cscript //nologo ospp.vbs /act
---Processing--------------------------
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: 8d368fc1-9470-4be2-8d66-90e836cbb051
LICENSE NAME: Office 24, Office24ProPlus2024VL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 24, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: GCVGB
<Product activation successful>
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: 923fa470-aa71-4b8b-b35c-36b79bf9f44b
LICENSE NAME: Office 24, Office24VisioStd2024VL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 24, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: WQQTV
<Product activation successful>
---------------------------------------
Installed product key detected - attempting to activate the following product:
SKU ID: aaea0dc8-78e1-4343-9f25-b69b83dd1bce
LICENSE NAME: Office 24, Office24ProjectPro2024PreviewVL_KMS_Client_AE edition
LICENSE DESCRIPTION: Office 24, VOLUME_KMSCLIENT channel
Last 5 characters of installed product key: JB89R
<Product activation successful>
---------------------------------------
---------------------------------------
---Exiting-----------------------------

I download from this source https://officecdn.microsoft.com/db/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/en-us/ProPlus2024Retail.img.
==> After installation I got this "Last 5 characters of installed product key: R9GQV" which is different from yours.

Then try to manual apply key: XJ2XN-FW8RK-P4HMP-DKDBV-GCVGB
==> Then I got the following issue:
C:\Windows\system32>cscript //nologo "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /inpkey:XJ2XN-FW8RK-P4HMP-DKDBV-GCVGB
---Processing--------------------------

ERROR CODE: 0xC004F069
ERROR DESCRIPTION: The Software Licensing Service reported that the product SKU is not found.

This issue after I run ospp.vbs with /dstatus
C:\Windows\system32>cscript //nologo "C:\Program Files\Microsoft Office\Office16\ospp.vbs" /dstatus
---Processing--------------------------

PRODUCT ID: 00511-70000-00000-AA159
SKU ID: 24996154-f927-413f-b2d5-c81882464ee3
LICENSE NAME: Office 24, Office24ProPlus2024R_Grace edition
LICENSE DESCRIPTION: Office 24, RETAIL(Grace) channel
BETA EXPIRATION: 1/01/1601
LICENSE STATUS:  ---OOB_GRACE---
ERROR CODE: 0x4004F00C
ERROR DESCRIPTION: The Software Licensing Service reported that the application is running within the valid grace period.
REMAINING GRACE: 4 days  (7195 minute(s) before expiring)
Last 5 characters of installed product key: R9GQV

---Exiting-----------------------------

You use the retail version, please use this tools to deploy office https://github.com/YerongAI/Office-Tool/tree/main
Deploy config: Update channel: Office 2024 Perpetual Enterprise
Office Products Information

@ichadhr thanks it works with deployment method.
https://learn.microsoft.com/en-us/office/ltsc/2024/deploy


Sarah afiya/issue 12/determine variable types

issue #12

In the future, it would be good to include a summary of the changes in the PR so it's clear how you addressed the issue (like on a high level, what is the implemented solution)


Change getPDFFileNameFromURL to ignore data: URLs for performance reasons (issue 8263)

Please refer to the individual commit messages.
Tentatively fixes #8263.

/botio unittest

/botio unittest


Parallel processing of multiple helm releases

Processing a Helm Release resource could take some time (pulling chart, installing/upgrading helm release). Since they are independent units, we should be able to process them concurrently without waiting one to complete.
MaxConcurrentReconciles option of controller runtime seems like the solution here which we should configure. We can set a sensible default (e.g. 10) or expose it as a configuration option.

@turkenh would you have an example of setting the configuration option MaxConcurrentReconciles for helm provider ?
The --max-concurrent-reconciles=100 as an arg in the ControllerConfig failed the helm provider start.
I guess that eventually https://github.com/crossplane/crossplane/issues/2595#issuecomment-983166375 would propagate automatically from crossplane-wide arg --max-reconcile-rate=100

Edit: I might have misunderstood this PR in thinking a configuration option was introduced in #53, instead only the default MaxConcurrentReconciles=10 was set.


Add kwargs catch-all to Excel UI process_beads_table() which gets passed to mef.get_transform_fxn()

I'm using the Excel UI via the Python API to process bead files, and it's excluding some bead peaks that I don't want excluded in the subpopulation selection step. To get around this, I wanted to turn off the automated subpopulation selection step and just manually specify which peaks to keep and which peaks to exclude by placing None in the comma-separated list of MEF values on the Beads tab in the XLSX sheet. To achieve this, though, I had to copy the entire excel_ui.process_beads_table() function source code into my context (Jupyter notebook), update module names to match my namespace, and then add in 1 line to set mef.get_transform_fxn(...,selection_fxn=None).
I think a better solution would be to add a kwargs catch-all parameter to excel_ui.process_beads_table() which would be passed to the internal mef.get_transform_fxn() call. This offers up the much simpler and generally much more flexible solution to my problem stated above:
beads_samples, mef_transform_fxns, mef_outputs = excel_ui.process_beads_table(
    beads_table,
    instruments_table,
    get_transform_fxn_kwargs={'selection_fxn':None}    # <---
    base_dir=input_dir,
    verbose=verbose,
    plot=plot,
    plot_dir='plot_beads',
    full_output=True)

Merged into branch develop.


build: add CI on performance

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 51.58%. Comparing base (10a00a9) to head (5b5c7ee).
Report is 2 commits behind head on main.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #687      +/-   ##
==========================================
- Coverage   51.90%   51.58%   -0.32%
==========================================
  Files         126      142      +16
  Lines       10806    11605     +799
==========================================
+ Hits         5609     5987     +378
- Misses       4879     5282     +403
- Partials      318      336      +18

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


How do I use a custom GraphQL Lambda Authorizer with Congito users?

I need to create Accounts and each account has multiple users that can access it. I have been using Cognito groups with groups auth rule in the GraphQL schema, but that has a limit of 50 groups.
To do this I have to create some custom auth logic, but doesn't seem to be that straight forward. For starters I need to verify the JWT, and for that I need to get the UserPoolId.
const {
    authorizationToken,
    requestContext: { apiId, accountId },
  } = event;
  verifier = verifier || CognitoJwtVerifier.create({
    userPoolId: (await new CognitoIdentityServiceProvider().listUserPools({ MaxResults: 999 }).promise()).UserPools
      .find(pool => pool.Name === appName-${process.env.ENV}).Id,
    tokenUse: "access",
    clientId: apiId,
  });

The issue with this code is that the lambda function doesnt have permissons to list user pools.
Apart of that, I understand that I would then need to parse the GraphQL request to get what data source and item it is being queried.
Isn't there a more straight forward way I am missing?

Hey @demilp apologies for the delay here! Were you able to find a solution to this?

Closing due to in-activity.


[migrator] Add a viewer utility for child indices in API type changes to facilitate access. NFC

@swift-ci please smoke test and merge


Release v2.6.4-rc1

Description
v2.6.4-rc1 version update.
Release Note

This is a release candidate preview of upcoming v2.6.4 release for testing purposes only.

@bcreane don't we need this against the master branch?

@caseydavenport we need it on this branch so that we can build images and tarballs. Pushing it to master would mean we'd be pushing RC manifests out to our v2.6 docs site, which I don't think is right.
Just another symptom of our docs site merging with the calico/node repo :-1:


Add test points to enable debugging the IMU-Buffer Board SPI Port

The addition of the 16-pin connector should provide a good spot to easily solder in test points.

Not currently in the rev C hardware design. Need to decide if test points for the SPI lines are still necessary

Rev C board design will not include IMU SPI test points


Implement RC and DL failsafe action handling for multirotors

Move RC and DL failsafe actions handling from navigator to commander (credits to @AndreasAntener)
Separate manual kill switch handling via manual_lockdown to prevent override and release of software lockdown by RC switch
Other changes:
Add failsafe tune
Fix LED blinking for Pixracer
Return back support for rc inputs in simulator but now it is configurable via cmake
This is https://github.com/PX4/Firmware/pull/5863 rebased on master.

@PX4TestFlights This needs three types of tests:

RC failsafe handling (RTL and also kill)
Datalink failsafe handling (RTL and hold position)
Normal mission flight

couple of RC failsafe tests
http://logs.px4.io/plot_app?log=3c69c014-dcc1-475a-b879-659c5668a362
http://logs.px4.io/plot_app?log=1bc915f9-3d3d-4e9a-b758-6e3381e965c4

Thanks! The logs looked good - except of course for the GPS performance itself.


feat!: rename faas to function

Signed-off-by: Zbynek Roubalik<EMAIL_ADDRESS>This PR renames:

binary: faas -> function
env variables: FAAS_ -> FUNCTION_
config: faas.yaml -> function.yaml
release registry: quay.io/boson/faas -> quay.io/boson/function

Fixes: #201

release registry: quay.io/boson/faas -> quay.io/boson/faas

I assume this is a typo :smile:

release registry: quay.io/boson/faas -> quay.io/boson/faas

I assume this is a typo 😄

Yeah :) updated the description

@lance thanks for the review, fixed

@zroubalik lgtm - unless @rhuss has any concerns let's do it!

@rhuss Thanks for the review. I have fixed the things from your comments, and renamed faas.yaml -> func.yaml.
func alias would be nice, but we can cover it in the separate PR imho, if we agree on it.
Is it ok to merge?

Thanks !
/lgtm
/approve


Lychee MYSQL backup

Could you please clarify the mysql backup and restore process a little more in detail in the README?
That would be tremendously helpful!

This is a part of my backup script:
Database export:
mysqldump --routines -h localhost lychee > /home/server/Backup/lychee.sql -u root -p
Database import:
mysql -u root -p lychee < lychee.sql
Would be nice to see others backup solutions.

This issue will be closed because I'm not actively working on Lychee anymore. The repository of Lychee will stay available, but the main development continues under the Lychee Organisation. A fork maintained by the community. Important issues have been migrated. Feel free to re-add your issue(s) when necessary.


Fix a value that is not that accurate

@Caoxuyang : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Generated code failed to compile

Hi,
When i try to generate code for
appproject-crd.yaml
compiler says :

type JwtTokensByRole is not a member of object com.coralogix.zio.k8s.client.io.argoproj.definitions.appproject.v1alpha1.AppProject.Status
When i check generated code, i could not find JwtTokensByRole class in status. I am using version 2.0.1

Thanks for reporting the problem!
This seems to be an issue in the guardrail library that we are using to generate code from the OpenAPI schema within the CRD. I opened an issue there:
https://github.com/guardrail-dev/guardrail/issues/1591
Unfortunately even if it gets fixed there, it requires some work on the zio-k8s side to update to the latest guardrail version because it is depending on a quite customized older version. I started migrating to the new one and will continue once this issue get fixed there.


Allow to use expo to build

Expo can make it a lot easier to get started with building react native. You don't need to have xcode or android studio installed and you can run on iOS while developing on Windows/macOS computers.
Expo only supported non-native dependencies, but recently they have been working on "Custom Development Clients" which would leverage the expo services to build you mobile app. This would be a great topic to research for developer experience
https://blog.expo.dev/introducing-custom-development-clients-5a2c79a9ddf8

https://docs.expo.dev/clients/getting-started/


PHP 7.3: PHP Warning:  Module 'PDO' already loaded in Unknown on line 0

Happy new year!
Describe the bug
The output of the job, and the output of subsequent job contains the warning in the title.
Also, a PHAR compiled on the test machine exits with a non-zero exit status
Version

[ ] I have checked releases, and the bug exists in the latest patch version of v1 or v2.
[x] v2
[ ] v1

Runners

[x] GitHub Hosted
[ ] Self Hosted

Operating systems

ubuntu-20.04
PHP versions

The issue occurs only on PHP 7.3, and we use 7.1 through 8.0
To Reproduce

      - name: "Checkout"
        uses: "actions/checkout@v2"

      - name: "Install PHP with PCOV"
        uses: "shivammathur/setup-php@v2"
        with:
          php-version: "7.3"
          coverage: "pcov"
          extensions: "pdo_sqlite"
          ini-values: "zend.assertions=1"

      - name: "Download box"
        run: "./download-box.sh"

      - name: "Cache dependencies installed with composer"
        uses: "actions/cache@v2"
        with:
          path: "~/.composer/cache"
          key: "php-7.3-composer-locked-${{ hashFiles('composer.lock') }}"
          restore-keys: "php-7.3-composer-locked-"

      - name: "Install dependencies with composer"
        run: "composer update --no-interaction --prefer-dist --no-progress"

      - name: "Run PHPUnit"
        run: "vendor/bin/phpunit --coverage-clover=coverage.xml"

Expected behavior

I expect no error about PDO, and a zero exit status
Screenshots/Logs

https://github.com/doctrine/migrations/pull/1105/checks?check_run_id=1631281228
Additional context

Nothing to add
Are you willing to submit a PR?

No

Working on a fix

Working on a fix

Fixed in https://github.com/shivammathur/setup-php/commit/d667d1c9b0e7150063e1f5794c6b0e8c2eb21d8a

Fixed in https://github.com/shivammathur/setup-php/commit/d667d1c9b0e7150063e1f5794c6b0e8c2eb21d8a

Thank you!

Thank you!


Add chat history feature

This commit adds the following new files:

HistoryItem: A new component for displaying chat history items.
HistoryPanel: A new component for displaying the chat history panel.
HistoryButton: A new component for opening the chat history.
HistoryProviders: A new module containing history provider classes.

These changes include functionality to support future enhancements to the chat history feature.
The chat history feature is only enabled when you explicitly set the environment variable USE_CHAT_HISTORY.
The history function uses the browser's IndexedDB. I understand that there is also an approach to use CosmosDB, but this requires enabling authentication to identify users, so I decided to start with IndexedDB, which does not depend on authentication.
To make it easier to implement other data stores, I made it easier to implement additional data stores with HistoryProviders.
Related: #977 #1863 #259
Purpose

Does this introduce a breaking change?
When developers merge from main and run the server, azd up, or azd deploy, will this produce an error?
If you're not sure, try it out on an old environment.
[ ] Yes
[x] No

Does this require changes to learn.microsoft.com docs?
This repository is referenced by this tutorial
which includes deployment, settings and usage instructions. If text or screenshot need to change in the tutorial,
check the box below and notify the tutorial author. A Microsoft employee can do this for you if you're an external contributor.
[ ] Yes
[x] No

Type of change
[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Documentation content changes
[ ] Other... Please describe:

Code quality checklist
See CONTRIBUTING.md for more details.

[x] The current tests all pass (python -m pytest).
[ ] I added tests that prove my fix is effective or that my feature works
[x] I ran python -m pytest --cov to verify 100% coverage of added lines
[x] I ran python -m mypy to check for type errors
[x] I either used the pre-commit hooks or ran ruff and black manually on my code.

@microsoft-github-policy-service agree

Ooo, very interesting approach with the IndexedDB! It sounds like you've designed it very thoughtfully, I'll take a look soon.

I have corrected the points you pointed out, so please review again.
The environment variable to enable this feature has been changed to USE_CHAT_HISTORY_BROWSER.

Thank you for pointing that out. I had forgotten about bicep.
ENABLE_LANGUAGE_PICKER and USE_SPEECH_INPUT_BROWSER are outside the scope of this PR, so I have omitted them.

@fujita-h Where we will be able to see this chat history  ?
Can you guide on that

@ibrahimnasir0 Just set the environment variables as follows:
azd env set USE_CHAT_HISTORY_BROWSER true

@fujita-h Thanks for the help! By the way, would you mind sharing your LinkedIn profile? I would love to connect and discuss the implementation further

Hi @fujita-h
I'm working on integrating Cosmos DB with this updated project to save chat history along with the user OID (since login and Entra ID are enabled). Could you provide some guidance on how to proceed with this?


"No video information found, somehow" error when using cookies

Seemingly out of nowhere, I'm unable to use the --cookies command on ytarchive with any success. When using --cookies, every video I attempt to download throws me this error. --verbose and --debug don't give any further information either.
Using a random public video as an example:
WARNING: Failed to retrieve data from https://www.youtube.com/get_video_info?video_id=-3Ns_n_7QzU&el=detailpage: HTTP Error 404: Not Found
WARNING: No video information found, somehow

If I don't use --cookies, I can download it no problem but that doesn't solve the problem of being able to record unarchived members-only streams which is what I prefer using ytarchive for. I've attempted this on two different computers with the same result. Additionally, I use yt-dlp for all non-live archiving and it's recording members-only livestreams without an issue so I know it's not my cookies. Something similar happened to me with youtube-dl months ago and I think it turned out to be on YouTube's backend that changed but not for everyone at once.

Interestingly enough I was getting this same issue with Streamlink just last night. Consistently failed if I had it set to wait for a stream, but worked if the stream was already running.
Will look into this.

From what I can tell, there are probably some bad youtube servers that have get_video_info removed or inaccessible from some update that was pushed out in the past week. Someone I know said he's been getting a lot of 404s on his RSS as well, so it might affect more than just this. It's quite surprising you get such a consistent 404 using ytarchive with cookies.
I have implemented a potential fix. Unfortunately because the problem is so intermittent I cannot be 100% certain it works. That is, if for some reason even the watch page 404s when the script tries to download it, I don't think I'll be able to do much. If you could test by attempting to use the newest commit on a members-only video, that would be great.
If you are using the .exe from the releases page instead of the .py file, let me know and I'll create a new one for you from the most recent commit. I'll be going to bed soonish though, and might not be around for ~10 hours once I do.

Yeah, I'm using the .exe since I couldn't ever fully grasp Python. No worries about getting to it when you can.

ytarchive.zip
Okay, I've attached a zip containing the exe built from the newest commit. Please try using it.

Just want to make sure these trojans from the .exe are false positives before I test it:
Trojan:Script/Wacatac.B!ml
Trojan:Win32/Glupteba!ml

They are. It's a side effect of what has to be done to bundle a Python program into an exe, since they aren't meant to be.
See issue #9

And here's where I mention that I'm still running Win7 and due to that, the program gives me an error about not having api-ms-win-core-path-l1-1-0.dll. I remember this happening with another program I use in CLI and I think finding out that .dll is only available for Windows 8 and above.

The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows.

Hah, go figure. I switched to 3.9 in my VM when testing a previous issue.
Shit as it is, you should look into upgrading to Win10 at some point.
I've attached another zip, this time running pyinstaller from a Python 3.8 context. Should hopefully work.
ytarchive.zip

Yeah... I'm getting to that point with how many program updates are becoming obsolete for me.
There aren't any members-only livestreams happening for me so I've tested with what I can. Attempting a public livestream with the use of --cookies seems to work without a problem, I just get the error with a followup showing it getting data from the watch page. I then tried a non-live members-only stream and I get this:
WARNING: ←[33mFailed to retrieve data from https://www.youtube.com/get_video_info?video_id=p7maIgwwfzY&el=detailpage: HTTP Error 404: Not Found←[0m←[K
WARNING: ←[33mget_video_info failed to return data.←[0m←[K
WARNING: ←[33mAttempting to get data from watch page.←[0m←[K
Traceback (most recent call last):
  File "ytarchive.py", line 2206, in <module>
  File "ytarchive.py", line 1957, in main
  File "ytarchive.py", line 844, in get_video_info
  File "ytarchive.py", line 613, in get_playable_player_response
  File "ytarchive.py", line 493, in get_player_response
  File "json\__init__.py", line 357, in loads
  File "json\decoder.py", line 340, in decode
json.decoder.JSONDecodeError: Extra data: line 1 column 62709 (char 62708)
[182584] Failed to execute script ytarchive

Hmm, I wonder if member watch pages have extra data there or something.
Could you go to that same video in your browser, right-click somewhere on the page, click "save page as", upload it to https://litterbox.catbox.moe/ as a 1-hour expiration, and post the link here?

Okay, one more time please.
ytarchive.zip

This one is definitely looking promising. I'm getting the expected result of "Livestream has been processed, use youtube-dl instead." I'll try it out on a members-only livestream in the next couple days and let you know how it goes.
Thanks for all the help so far!

I just got it for the first time and its on a public stream
seens like what you added fixed it not sure if its different on members streams
C:\Users\Lytexx\Downloads>yta
Enter a youtube livestream URL: https://www.youtube.com/watch?v=Hbt-FqWt50A
15:57:00 INFO: Loaded cookie file cookies.txt
15:57:00 WARNING: Failed to retrieve data from https://www.youtube.com/get_video_info?video_id=Hbt-FqWt50A&el=detailpage: HTTP Error 404: Not Found
15:57:00 WARNING: get_video_info failed to return data.
15:57:00 WARNING: Attempting to get data from watch page.
Available video qualities: audio_only, 144p, 240p, 360p, 480p, 720p, 720p60, 1080p60, best
Enter desired video quality:
Selected quality: 1080p60 (h264)
15:57:02 INFO: Starting download to Hbt-FqWt50A__2g4g8y8o\[20210518] ういニングライブ #しぐれうい2周年 [しぐれうい] (Hbt-FqWt50A).f140.ts
15:57:02 INFO: Starting download to Hbt-FqWt50A__2g4g8y8o\[20210518] ういニングライブ #しぐれうい2周年 [しぐれうい] (Hbt-FqWt50A).f299.ts
Video fragments: 3608; Audio fragments: 3609; Max sequence: 3608; Total Downloaded: 1.34GiB

It used to be a lot more intermittent, but I've been noticing it consistently hitting a 404 when using cookies as well now.
The cause might be propagating through the servers. I just hope it was unintentional and gets fixed, but that might be a ways out before we know.

Did some more testing and it looks like things are recording without a problem for me with your hotfix version. Only thing is the console window gets flooded with the 404 error when they don't start exactly on schedule but that's just cosmetic. Also thought it was worth mentioning that the latest stable release doesn't even work without use of --cookies anymore like it used to.

Yeah I'm not surprised. I wasn't planning on tagging a new release for the Python version but I just might with this issue.
For the most part I think this can be considered fixed though. Closing.


Fix cargo-about license acceptance

Fix build failing due to cryptography libraries introduced by #903

Because I didn't want to have several commits in the history that failed to build, I amended the original commit that broke the build with your file change. Thank you for figuring out how to edit about.toml (True Doctor and me both researched it but weren't able to solve it in the time we had available.)

Because I didn't want to have several commits in the history that failed to build, I amended the original commit that broke the build with your file change. Thank you for figuring out how to edit about.toml (True Doctor and me both researched it but weren't able to solve it in the time we had available.)


add vue.js example

A wiki page or example showing how to use vue.js with videojs-record.
see https://cli.vuejs.org/guide/creating-a-project.html#vue-create

See https://github.com/collab-project/videojs-record/wiki/Vue.js

Example here is not playing the recorded video...
https://github.com/collab-project/videojs-record/wiki/Vue.js
When I hit on play button after recording is finished it doesn't do anything

Add a link to this example to README?

sounds good. Feel free to make the change and open a pull request @hyvyys

@thijstriemstra  Hi buddy. Do you have any idea how can I get the live image frames from the web-cam stream from the front end. So I want to send the web-stream to a backend server but I want to do it frame by frame, regardless of the FPS of the web-cam. I was thinking if I could put a canvas over the video-class and just fetch that in a loop while the camera is on. Could you comment on that? Thanks :)

@talalz94 please open a new ticket for questions, don't hijack an existing ticket.


Token-based Authentication by Way of Private/Secret Key?

To start, I am glad you support this scenario. I am researching this for a prospective project for a client.  Everything looks good with the exception of the username and password.  If I understand correctly, this will require creating a service account and if my domain requires the user to change their password every month, I will also have to change the password here, too, correct?  If so that is very much a hassle.
I am also wanting to make sure the documentation is up to date here and if by chance it is possible to use a much simpler method of authentication which is simply registering applications in Active Directory and explicitly providing permissions as well as establishing authentication by way of private key there.  This is demonstrated in this example:
https://docs.microsoft.com/en-us/common-data-service/entity-reference/cds-sdk-azure-functions-get-started
Thank you for any clarification!

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 304d4c46-c0ac-05c9-15eb-d8b677ec5e90
Version Independent ID: 36a79d36-2b72-2722-68e5-e167f9a2cd41
Content: Copy data from and to Dynamics CRM or Dynamics 365 (Common Data Service) by using Azure Data Factory
Content Source: articles/data-factory/connector-dynamics-crm-office-365.md
Service: data-factory
GitHub Login: @linda33wj
Microsoft Alias: jingwang

Srsly... very disappointing:
https://feedback.azure.com/forums/270578-data-factory/suggestions/33745042-please-do-not-force-users-to-store-passwords

After having spent some time on this, there is actually some content here that could be added.  If the domain has two-factor authentication enabled, then the admin/user can create an App Password for the Office 365 Connection.  Actually it's not a matter of can, they have to, as their regular domain account credentials will not work (as a 2nd factor is required in the case of credential authentication).  More information here:
https://support.office.com/en-us/article/create-an-app-password-for-office-365-3e7c860f-bda4-4441-a618-b53953ee1183
The other nice add to this is that these passwords do not expire, so administrators do not need to worry about changing these passwords due to new passwords being created, etc.  That is a little better, but still inconsistent with other MSFT properties such as Azure functions which simply use a secret client key to authenticate.

@Mike-EEE Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

@Mike-EEE thanks for your feedback. You are right that currently we don't support service-to-service (service principal) auth, and the username/pwd auth would have the limitation you mentioned. It's on our backlog and we will further triage.
#please-close

Great... thank you @linda33wj and team.  You're doing great work here.  Moving this all to GitHub was an awesome idea, btw. 👍


fix(state-transfer): correct http post & patch method params

** PR Checklist
Please check if your PR fulfills the following requirements:

[X] The commit message follows our guidelines: https://github.com/fulls1z3/ngx-universal/blob/master/CONTRIBUTING.md#commit
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

** PR Type
What kind of change does this PR introduce?

[X] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

** What is the current behavior?

Issue Number: N/A
** What is the new behavior?
http Post works now
** Does this PR introduce a breaking change?
[ ] Yes
[X] No

** Other information

@MoLow I really appreciate your attention to these details, awesome job 👍

@fulls1z3 when would this be published to npm? I have a production error

@MoLow done, give it a try and let me know about the results.

works. thanks!

@MoLow thanks too, for pointing out and quickly fixing the issue 👍


Test version 0.0.3 in demo. If successful push this fix to production.

Probably require cutting and pushing new ember image from the pass-ember/master branch to demo and to production?

Done.


Support Casdoor authentication integration for Spring Cloud Gateway

spring-cloud-gateway is a Gateway built on Spring Framework and Spring Boot providing routing and more.
Now we can provide docs or examples for Casdoor authentication integration for Spring Cloud Gateway.

@seriouszyx done

Example code: https://github.com/casdoor/casdoor-springcloud-gateway-example
Docs: https://github.com/casdoor/casdoor-website/issues/296


gke config file generation

Added --provider flag to allow users to specify GKE config instead of default AWS
Fixes: https://github.com/samsung-cnct/kraken-lib/issues/926

I think I will need to update kraken's Jenkinsfile to explicitly use --config

Actually not kraken Jenkinsfile, but kraken-tools did need an update: https://github.com/samsung-cnct/kraken-tools/pull/155


eo is now peco

change eo to peco, all numeric fragments remain the same

Ok, will do today.

done.


Support new category deep linking

Deep linking to the new Category screens is setup. We may need to change this behavior pending feedback from Product but it at least functional.
The large number of lines is deceiving. Most of them come from category.json. Specs should pass this go around.

Executed 2382 tests, with 0 failures (0 unexpected) in 293.849 (295.328) seconds


Markdown pages

In a follow up of #118, I have created a Markdown version of the standards page.
Remarks:

Translation of: https://github.com/okfn/data.okfn.org/blob/master/views/standards/index.html
The page contains 6 relational links: depending on where the page lives, they might need to be updated.
I kept the div for the side menu .well, but depending on how the html page is generated (what engine is used for this?) this might need some updating
I placed this file in the /doc directory. Probably a new directory should be created for all Markdown content of the site.
This branch can be used to create markdown versions of all pages of the website (e.g. before being merged), but I'll needs some input on how best to move forward.

OK, i'm closing this PR for the time being.


Import error after update

Gave me this error:
$ python pokecli.py
Traceback (most recent call last):
File "pokecli.py", line 38, in
from pgoapi.exceptions import NotLoggedInException, ServerSideRequestThrottlingException, ServerBusyOrOfflineException
File "c:\users\jeff\desktop\pgb\pokemongo-bot\src\pgoapi\pgoapi_init_.py", line 50, in
from pgoapi.pgoapi import PGoApi
File "c:\users\jeff\desktop\pgb\pokemongo-bot\src\pgoapi\pgoapi\pgoapi.py", line 34, in
from pgoapi.rpc_api import RpcApi
File "c:\users\jeff\desktop\pgb\pokemongo-bot\src\pgoapi\pgoapi\rpc_api.py", line 47, in
from pgoapi.utilities import to_camel_case, get_time, get_format_time_diff, Rand48, long_to_bytes, generateLocation1, generateLocation2, generateRequestHash, f2i
File "c:\users\jeff\desktop\pgb\pokemongo-bot\src\pgoapi\pgoapi\utilities.py", line 30, in
import xxhash
ImportError: DLL load failed: %1 is not a valid Win32 application.
I'm running windows 10 64bit and python 64bit
Also i've noticed the config.json file has a new line "libencrypt_location": which I dont know what to put in

same error.
$ python pokecli.py
Traceback (most recent call last):
File "pokecli.py", line 38, in
from pgoapi.exceptions import NotLoggedInException, ServerSideRequestThrottlingException, ServerBusyOrOfflineException
ImportError: No module named pgoapi.exceptions
OSX

(PokemonGo-Bot) ➜  PokemonGo-Bot git:(dev) ✗ python pokecli.py -cf ./configs/config.json
Traceback (most recent call last):
File "pokecli.py", line 38, in
from pgoapi.exceptions import NotLoggedInException, ServerSideRequestThrottlingException, ServerBusyOrOfflineException
File "/home/konrad/PokemonGo-Bot/src/pgoapi/pgoapi/init.py", line 50, in
from pgoapi.pgoapi import PGoApi
File "/home/konrad/PokemonGo-Bot/src/pgoapi/pgoapi/pgoapi.py", line 34, in
from pgoapi.rpc_api import RpcApi
File "/home/konrad/PokemonGo-Bot/src/pgoapi/pgoapi/rpc_api.py", line 47, in
from pgoapi.utilities import to_camel_case, get_time, get_format_time_diff, Rand48, long_to_bytes, generateLocation1, generateLocation2, generateRequestHash, f2i
File "/home/konrad/PokemonGo-Bot/src/pgoapi/pgoapi/utilities.py", line 30, in
import xxhash
ImportError: No module named xxhash

up

Same error for me

Same error, Linux.
Worked for about 30 minutes, crashed and now no module named xxhash

I was able to fix it by doing:
$git pull
$install -r requirements.txt
Run

Make sure your encrypt file is correct.

Windows
encrypt.dll
or
encrypt.so

macOS / Linux
encrypt.so


Make gdt and cp2k-output-tools a hard-dependency

I also took the liberty of adding a JSON checker for setup.json since I managed to break it and the version test only failed but didn't tell me where, while the check-json from the pre-commit-hooks shows it explicitly.


Add support for runc hook specs

The issue is the OCI runtime spec has support for specifying hooks that are called during the container lifecycle events. runc has implemented these hooks.  CRI does not currently provide a way to specify these hooks for inclusion into the container config.json.  We should consider adding support for hook config to cri-containerd.
See cri-o support for specifying runc hooks here:
https://github.com/kubernetes-incubator/cri-o/blob/master/hooks.md
Hooks explained here: https://github.com/opencontainers/runtime-spec/blob/master/config.md#prestart
The alternative for runc hook users is to proxy or replace runc with their own version of runc, which is not a good solution.

@mikebrow In Kubernetes, we do have PostStart and PreStop hook, but we are using exec to implement it.
Runc may help us implement more hooks, e.g. PreStart and PostStop.

https://github.com/containerd/cri/pull/1498 was merged and it helps somewhat with OCI hooks but it does not help for my use case (https://github.com/containerd/cri/issues/1488#issuecomment-631601626). The workflow is impractical for automation from a DaemonSet running in Kubernetes pods. It would need to:

Talk to kube-apiserver to get the list of Runtime Classes.
Find out the containerd configuration file. It's usually in /etc/containerd/config.toml but containerd could be executed with a different path for configuration (with the -c flag). Also, there could be different containerd processes running on the node; to find out which one is used by the Kubelet process, we would have to inspect the kubelet command line and find out who is listening at the other end of the --container-runtime-endpoint= socket.
Identify which base_runtime_spec to patch in the configuration file. As far as I understand, there might be several if there are several runtime classes found in step 1.
If the base_runtime_spec option already points to a file, it needs to be patched. To remove the OCI hook, it needs to be patched back. If several tools patch the same file for their respective OCI hooks, there is a risk to step over each other toes.
Restart containerd so the config change is taken into account. I am not sure if there is a gRPC API for that. That would break existing connections (kubectl-exec, kubectl-attach, etc.).

So I think we still need a way for dynamically configuring OCI hooks by dropping a file in a directory like cri-o.

We haven't forgotten about this issue.  https://github.com/containerd/cri/issues/1488#issuecomment-631630370
Plan is to add support for these hooks (the crio way) when the oci spec hooks are supported by runc. The oci spec hook changes are merged. @RenaudWasTaken 's runc pr to support the hooks https://github.com/opencontainers/runc/pull/2229 is taking longer than expected to merge.
There is a related workgroup forming that you may be interested in: https://lists.cncf.io/g/cncf-sig-runtime/topic/new_workgroup_container/74636697?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,74636697

opencontainers/runc#2229 is taking longer than expected to merge

I'm not too worried about this, it will get merged eventually!

There is a related workgroup forming that you may be interested in:

The Container Device (COD) Working Group might be able to help, I had an example of the specification (Container Device Interface) we had come up with here.
It might be able to help in your case @alban but it seems like you really want something similar to podman hooks right?
In any case we'd be happy to hear input from different people, feel free to participate on this issue and join the meetings!

opencontainers/runc#2229 is taking longer than expected to merge

I'm not too worried about this, it will get merged eventually!

There is a related workgroup forming that you may be interested in:

The Container Device (COD) Working Group might be able to help, I had an example of the specification (Container Device Interface) we had come up with here.
It might be able to help in your case @alban but it seems like you really want something similar to podman hooks right?
In any case we'd be happy to hear input from different people, feel free to participate on this issue and join the meetings!

Yes podman hooks.. After reviewing them I don't see a reason to do it another way. Their design seems clean, would be nice to have one schema / model for hook injection/filtering.

hej @mikebrow just FYI: there's another use-case for oci-hooks (i referenced the issue above). I think it would be important to have the when semantics from the podman hook spec 1.0.0 to filter out pods which really need the hooks.
I think using global hooks is O.K. but may - at least for the seccomp use-case - not be the ideal solution. I'm wondering if pushing the hook configuration up the stack (e.g. Pod spec) is a good idea. Did you investigate further into that direction (are there KEPs or issues in that direction?)
I consider picking this one up if you don't intend to further work on your PR (tho with a different perspective).

We are working this through the new NRI (see new containerd/nri repo + PRs that have been merged in /cri) and discussing new keps at the k8s level with sig-node, and there is a CNCF COD CDI workgroup, and we are working on merging that with the NRI effort. If we can support all the system level hooks with NRI plugins that may be the better route in the long run vs supporting both simultaneously.  I still think "it would be nice to have one schema / model for hook injection/filtering." And that model may be NRI. If NRI ends up not covering the gamut of needed scenarios we could probably go with two (NRI + libpod hooks injection/filtering).

Any updates on this? The Security Profiles Operator uses hooks also i.e.

This repo is being archived, I'll let Mike decide whether to keep closed or transfer

Nod.. let's keep this open till one or the other is production ready in containerd, or both are integrated if neither supports the known use cases.


Update link to config file in README.md

This link was incorrect ... there was another file named config-cs.json in another test folder, but this one was in the same project referenced by the documentation so I linked to that one :)

Thanks!


Natural language Driven Querying on Tables in the UI

Once we have #7 implemented, we can take it a step further by enabling users to be able to search, sort and filter values within that table using an intuitive data search feature.
This will be a Natural Language querying feature where users can talk to the table and ask it to show specific values , rows and columns.
A later extension would be to be able to do this across tables in the data source.


LTS 1.14.0: sanitycheck: Cannot identify OOT boards and shields

Describe the bug
sanitycheck cannot find OOT boards and OOT shields, even if --board_root is explicitly defined.
Everything is tested on 1.14.0 with https://github.com/zephyrproject-rtos/zephyr/commit/d4163bc17ec4c2779b2e53a6d14cca3986d65d1d cherry-picked from v1.14-branch.
The project is a west-T2 star topology.
The main project is the manifest and has zephyr and other projects as 3rd-parties.
To Reproduce
At first I tried:
BOARD_ROOT="${MY_PRJ_ROOT}/zephyr/boards"
"${ZEPHYR_BASE}"/scripts/sanitycheck --board-root "${BOARD_ROOT}" --testcase-root "${MY_PRJ_ROOT}" --tag build --build-only --platform my_oot_board --verbose --inline-logs --outdir /tmp/sanity

It failed, reporting that my_oot_board is not supported, spitting out the list of zephyr in-tree boards.
I investigated the generated CMakeCache.txt file, finding out about the BOARD_DIR variable, so my second trial was:
BOARD_ROOT="${MY_PRJ_ROOT}/zephyr/boards"
"${ZEPHYR_BASE}"/scripts/sanitycheck --board-root "${BOARD_ROOT}" --testcase-root "${MY_PRJ_ROOT}" --tag build --build-only --platform my_oot_board --verbose --inline-logs --outdir /tmp/sanity -x=BOARD_DIR=${BOARD_ROOT}/arm/my_oot_board

This time, the my_oot_board is recognized, but the shield needed by the apps cannot be found.
I have inserted some debugging messages in zephyr/cmake/app/boilerplate.cmake and I've seen that althought the OOT boards/shields directory is listed by sanitycheck, the contents are omitted.
Expected behavior
Since OOT boards and shields are supported, sanitycheck should also be adapted to this kind of structures.
Impact
Blockage, since we do not have a working testing environment. Delay, if we choose to move OOT boards and shields in-tree again.
Environment (please complete the following information):

GNU/Linux
Zephyr SDK

Additional context
Something else I tried was to move only the OOT shield in-tree, but with no success because of how the corresponding cmake process keeps the shield list.

@SebastianBoe FYI

I've encountered this issue now as well

Hi, I believe sanitycheck is not translating it's received
--board-root argument to a CMake argument as it should have been
doing. This should be fixed, but first, as a workaround, could
you try instead of doing,
BOARD_ROOT="${MY_PRJ_ROOT}/zephyr/boards"
"${ZEPHYR_BASE}"/scripts/sanitycheck --board-root "${BOARD_ROOT}" --testcase-root "${MY_PRJ_ROOT}" --tag build --build-only --platform my_oot_board --verbose --inline-logs --outdir /tmp/sanity -x=BOARD_DIR=${BOARD_ROOT}/arm/my_oot_board

do
"${ZEPHYR_BASE}"/scripts/sanitycheck --board-root "${BOARD_ROOT}" --testcase-root "${MY_PRJ_ROOT}" --tag build --build-only --platform my_oot_board --verbose --inline-logs --outdir /tmp/sanity -x=BOARD_ROOT=${BOARD_ROOT}
I believe this will work because AFAIK BOARD_ROOT is
unfortunately not read as an environment variable. Also,
specifying BOARD_DIR should be unnecessary when BOARD_ROOT is set
appropriately.

@SebastianBoe Thanks for the input. Currently I don't have time to test it, but will do as soon as possible.

BOARD_ROOT needs to point to a directory that has a board directory structure similar to what we have in master, i.e. /boards///...
--board-root of sanitycheck should point to <oot-root/boards>
I think this is where things are failing. Please confirm.

no response after 2 months


nxp: kinetis: cleanup pins in devicetree, mark pinctrl-0 required for some devices.

Will send a followup to this for ADC & DAC once this gets merged.


Add Initial Appveyor Config

Initial build config for CI builds. Fixes #8

Still TODO:

[ ] Add badge to README
[ ] Run tests


Start work on j2objc cross-platform work

Another heads up.
I'm planning on giving some love to the other fruity platform with the closed garden.
I will start a new kitchensink project. I'll probably call it xtend-j2objc-project-template or something.
Does anyone have experience with j2objc?
Any caveats?

I don't have experience but I wonder why you would prefer j2objc over robovm?

Because the client is paying :)
This is not a personal preference btw.

Okay, mission accomplished, there are two caveats though.

Currently (2016-02-11) j2objc-gradle supports gradle <=2.4. Xtendroid supports gradle 2.8, so setup your gradle in two separate gradle environments, one for transpiling xtend to java and one for transpiling java to objc. You can symlink the gradlew file though, but you need two different gradle/wrapper/gradle-wrapper.properties, in two different root projects.
sourceSets.main.java.srcDirs += [ 'build/generated/source/xtend/release' ] add this to the j2objc root project's build.gradle

Hi Stefan @oehme ,
Do you know how I can use the org.xtext:xtext-gradle-plugin:${xtext_gradle_ver} to import deps org.eclipse.xtend:org.eclipse.xtend.lib:${xtend_lib_ver} in a java project?

Sorry I don't know what you mean by "to import deps"

Ah, sorry, dependencies.
like these:
import org.eclipse.xtend.lib.annotations.Accessors;
import org.eclipse.xtend.lib.annotations.Data;
...

You are only applying your dependencies.gradle script to the buildscript block, but not to the project. Consequently project.ext.lib.xtend will be null. If you used lib.xtend, then you would have gotten a proper error message that the property does not exist. By using the (more verbose) project.ext.lib.xtend, you are telling Gradle to create an empty variable if it does not exist.

[Line 20, should do what you claim I forgot to do](I added the compile statement in gradle like we do in Xtendroid but the java project cannot find these imports.). Or am I mistaken?

You're right, didn't see that, i usually put buildscript at the very top.
Then I don't see why it wouldn't work.

Sorry, my mistake, it's not javac that's complaining about the unresolved classes, it's j2objc.

The sources of Maven Central dependencies are available under the sources classifier, e.g.
org.eclipse.xtend:org.eclipse.xtend.lib:2.9.1@sources
You could declare a special dependency configuration for j2objc, so you don't pollute your main compile classpath with source jars. You could then extract a helper method which adds the main jar to your compile classpath and the source jar to the j2objc classpath.

Fixed!


bump jsdom from 21.0.0 to 21.1.0

Fix #5111

@pascalgrimaud can you test this PR, because I don't understand if I broke something on the interface 🙂

@qmonmert : I'll have a look this morning

seems good

@pascalgrimaud ok thanks


generate wechaty-puppet-hostie proto buffer

Hi @dchaofei , your PR looks great!
As we discussed before, I'd like to put the generated Go stub source code into chatie/grpc repo so that we can manage all the Proto Buffer files and the generated Go source codes at the same place, which will make our DevOps process more efficiently. (Also we should garantee there's only one version proto buffer config file at one place)
I have created an issue about this topic at https://github.com/Chatie/grpc/issues/50, please feel free to let me know what you think.
After we are all confident with the design, then I'd like to suggest that you create a new pull request to chatie/grpc and let's move this PR over there.

Chatie/grpc#50


chore: update storage-calculator to v0.5.3

Updates the lagoon-remote chart to use the latest version of the storage-calculator

closed in #653


destructors don't appear to be called: leaking memory & file descriptors

I'm not 100% sure why, but it looks like something is preventing destroy_gss_server from being called when the reference count for our context object should be collected.  Similarly, somethings fishy with the destructor on the client side of things as well.
Here's a reproducer for the server side. The evidence of the leak here is that we leak file descriptors which point to our replay caches:
#!/usr/bin/env python

import gc
import kerberos
import os

SERVICE =<EMAIL_ADDRESS>COUNT = 10

def server_init():
    kerberos.authGSSServerInit(SERVICE)

def main():
    for _ in range(COUNT):
        server_init()
    # Because I'm not entirely certain that python's gc guaranty's timeliness
    # of destructors, lets kick off a manual gc.
    gc.collect()

    dirname = os.path.join('/proc/', str(os.getpid()), 'fd')
    for fname in  os.listdir(dirname):
        try:
            target = os.readlink(os.path.join(dirname, fname))
            print("fd {} => {}".format(fname, target))
        except EnvironmentError:
            pass
    raw_input("Hit [ENTER] to continue> ")

if __name__ == '__main__':
    main()

And when you run it, (on linux, and assuming you replace<EMAIL_ADDRESS>with something in your system keytab or in a keytab pointed to by KRB5_KTNAME), you'll see something along these lines:
fd 0 => /dev/pts/0
fd 1 => /dev/pts/0
fd 2 => /dev/pts/0
fd 3 => /var/tmp/HTTP_12345
fd 4 => /var/tmp/HTTP_12345
fd 5 => /var/tmp/HTTP_12345
fd 6 => /var/tmp/HTTP_12345
fd 7 => /var/tmp/HTTP_12345
fd 8 => /var/tmp/HTTP_12345
fd 9 => /var/tmp/HTTP_12345
fd 10 => /var/tmp/HTTP_12345
fd 11 => /dev/urandom
fd 12 => /var/tmp/HTTP_12345
fd 13 => /var/tmp/HTTP_12345
fd 14 => /var/tmp/HTTP_12345
fd 15 => /var/tmp/HTTP_12345
fd 16 => /var/tmp/HTTP_12345
fd 17 => /var/tmp/HTTP_12345
fd 18 => /var/tmp/HTTP_12345
fd 19 => /var/tmp/HTTP_12345
fd 20 => /var/tmp/HTTP_12345
fd 21 => /var/tmp/HTTP_12345
fd 22 => /var/tmp/HTTP_12345
fd 23 => /var/tmp/HTTP_12345
Hit [ENTER] to continue>

All of those /var/tmp/HTTP_12345 links are leaked open file descriptors for your users (the 12345 will be replaced with your uid) HTTP service replay cache file. If you changed<EMAIL_ADDRESS>to<EMAIL_ADDRESS>they'll be temp files with OTHERSERVICE in the name.
I did some testing, and the same reproducer works on 2.7 & 3.6.
Here's a reproducer for the client side issue (I used psutil to check the processes memory usage):
#!/usr/bin/env python

import gc
import kerberos
import psutil

SERVICE =<EMAIL_ADDRESS>
def client_init():
    kerberos.authGSSClientInit(SERVICE)

def n_times(count):
    before = psutil.Process().memory_info().rss
    for _ in range(count):
        client_init()
    # Because I'm not entirely certain that python's gc guaranty's timeliness
    # of destructors, lets kick off a manual gc.
    gc.collect()
    after = psutil.Process().memory_info().rss
    delta = after - before
    print("Leaked {} total in {} calls: ~{} bytes per call".format(delta, count, delta / count))

def main():
    n_times(1000)
    n_times(10000)
    n_times(100000)
    n_times(1000000)

if __name__ == '__main__':
    main()

Since this is the client side, you don't need a keytab. When I run this, I get:
Leaked 212992 total in 1000 calls: ~212 bytes per call
Leaked 3252224 total in 10000 calls: ~325 bytes per call
Leaked 31789056 total in 100000 calls: ~317 bytes per call
Leaked 318693376 total in 1000000 calls: ~318 bytes per call

I think the cause is that authGSSServerInit and authGSSClientInit call Py_BuildValue with "O", and that increments the refcount of pystate (from 1 to 2), so it will never be reclaimed, even when it goes out of scope in the caller, because the refcount will drop back to 1 (not 0).  This could be fixed by using "N" instead of "O".
There seems to be another leak in each function if (result == AUTH_GSS_ERROR) ... the functions should call Py_DECREF(pystate) before returning early.  Or (perhaps better) construct pystate later, when Py_BuildValue is called.

Nice catch. It looks like that leak has been in ccs-pykerberos for years. It was caught and fixed in one of the forks a while ago: https://github.com/02strich/pykerberos/commit/088d4538a746f0346b46eba03998045e6c694ada

Good detective work, and thanks for the repro cases @mkomitee! I'll get these going in the existing test harness, so I should be able to check in both the fix for the FD leak and the proof that the fix works...

I took a look at the necessary changes. authenticate_gss_client_init and authenticate_gss_server_init both set the gss_*_state members to reasonable default values before doing anything else. The cleanest way to fix this is to change O to N, and call Py_DECREF on pystate if either of the init functions fails. The destructor will do the cleanup. It probably also makes sense to check if PyCObject_FromVoidPtr fails (pystate will be NULL) and free state if it does, before returning NULL.

@mkomitee can you try the patch in https://github.com/apple/ccs-pykerberos/pull/71?

Going to test it shortly, but if you want to test the returns from PyCObject_FromVoidPtr like that, you may want to do it in channelBindings as well.
Not sure whether you'd want to do so in the MOD_INIT when you're adding GSS_MECH_OID_{KRB5,SPEGNO} to the module dictionary.

Also, at the end of channelBindings, I think ...
return Py_BuildValue("N", pychan_bindings);
... could be replaced by ...
return pychan_bindings;

There is a lot of error checking that could be added. I'm happy to add more as time allows, but I'm not a maintainer of this project, just a user.

@behackett thanks for your efforts :) I'm currently messing around with running the scripts @mkomitee provided as part of the automated tests, which should lend additional confidence to the fix.

Change range(count) to xrange(count) for Python 2. That solves the problem for me.

The patch looks good to me.
I suspect the leak in 2.7 with the fix has more to do with python 2.7's range() than it has to do with kerberos:
import psutil
count = 10000
for mechanism in (range, xrange):
    before = psutil.Process().memory_info().rss
    for _ in mechanism(count):
        pass
    after = psutil.Process().memory_info().rss
    print("{} leaked {} bytes per iteration".format(
        mechanism, (after - before) /  count))

whern run prints out:
<built-in function range> leaked 27 bytes per iteration
<type 'xrange'> leaked 0 bytes per iteration

Cool, thanks for the tip about range / xrange. I'll make that change, add some asserts to the tests, merge and do a pypi release... soon - hopefully tomorrow.
On the topic of maintenance, I do have the authority of a maintainer, although I don't really do much maintenance on account of not really having a lot of time to spend on this project these days. However, I do generally believe in the GitHub dream and am willing to push buttons here and there to leverage the contributions of helpful and interested users.

@dreness, any chance you could make that PYPI release soon? I'm really hoping requests-kerberos can switch from the old pykerberos to ccs-pykerberos once this release is out.

when will this be fixed in an official release?

@dreness - ping! It would be great to get this fix into master and released.

I've updated my fork of @behackett 's PR to finish up the test cases contributed by @mkomitee by adding asserts to check for memory or FD leaks. With the new asserts in place, if I revert the fix, the tests fail as expected:
tests/test_kerberos.py::test_service_principal PASSED                    [ 16%]
tests/test_kerberos.py::test_basic_check_password PASSED                 [ 33%]
tests/test_kerberos.py::test_gssapi PASSED                               [ 50%]
tests/test_kerberos.py::test_http_endpoint PASSED                        [ 66%]
tests/test_kerberos.py::test_leaks_server_linux FAILED                   [ 83%]
tests/test_kerberos.py::test_leaks_client FAILED                         [100%]
... (elided output) ...
====================== 2 failed, 4 passed in 0.21 seconds ======================

... and with the fix in place, all the tests pass:
tests/test_kerberos.py::test_service_principal PASSED                    [ 16%]
tests/test_kerberos.py::test_basic_check_password PASSED                 [ 33%]
tests/test_kerberos.py::test_gssapi PASSED                               [ 50%]
tests/test_kerberos.py::test_http_endpoint PASSED                        [ 66%]
tests/test_kerberos.py::test_leaks_server_linux PASSED                   [ 83%]
tests/test_kerberos.py::test_leaks_client PASSED                         [100%]
=========================== 6 passed in 1.08 seconds ===========================

I think this is ready to go, although I wouldn't complain if anyone wanted to glance at my fork as a final sanity check before release.

guys this fix breaks authGSSServerStoreDelegate() this always return NULL after any forks or patch injected

@dreness Could you release this to PyPI? Latest on PyPI is still 1.3.0


page 402 "Sales Order Statistics" var ProfitLCY, AdjProfitLCY and TotalAdjCostLCY

Is it possible to have the 3 variables ProfitLCY, AdjProfitLCY and TotalAdjCostLCY  as protected var?

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 51059.


ci: fix env syntax

Issue being fixed or feature implemented

Incorrect syntax for env vars, causing error Incorrect type. Expected "string".yaml-schema: GitHub Workflow
What was done?

Declare env variable correctly. See example in docs.
How Has This Been Tested?

Untested
Breaking Changes

None
Checklist:

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have added or updated relevant unit/integration/functional/e2e tests
[x] I have made corresponding changes to the documentation

For repository code-owners and collaborators only

[x] I have assigned this pull request to a milestone

Please merge v0.24-dev on it


chore: add node 8 to travis config

Travis CI needs at least one job to run node version 8 in order to kick off the build.
Related to https://github.com/semantic-release/semantic-release/issues/347 and
https://github.com/leonardoanalista/corp-semantic-release/issues/54
CLOSES: https://github.com/leonardoanalista/corp-semantic-release/pull/55

@marceloavf please review this PR. This should be enough to kick off a release.

Coverage remained the same at 93.469% when pulling 4f0de92cabd8c45c87575780d338d52ee1896c59 on leonardoanalista-patch-1 into cce0bfb973f21609271ae68330b2f3d134cc39e7 on master.

Coverage remained the same at 93.469% when pulling 4f0de92cabd8c45c87575780d338d52ee1896c59 on leonardoanalista-patch-1 into cce0bfb973f21609271ae68330b2f3d134cc39e7 on master.

version v6.4.0 has been released.

I'll implement and test it tomorrow, thanks!


Packages: Make i18n wrapper for @wordpress/i18n

Feature Description
Right now, the editor and dashboard packages use @wordpress/i18n directly.
To reduce this direct dependency on a CMS-provided package across tons of files, we could move that usage to our custom i18n package which simply re-exports @wordpress/i18n.
So in dashboard and editor we'd do this everywhere:
import { __, TranslateWithMarkup, sprintf } from '@web-stories/i18n';

And in the i18n package (packages/i18n/src/index.js:
export { __, _x, _n, _nx, sprintf } from '@wordpress/i18n';

This makes it easier to eventually swap out @wordpress/i18n for something else.
Alternatives Considered

Additional Context

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance Criteria

No direct dependencies on @wordpress/i18n in dashboard and editor packages

Implementation Brief

Replace @wordpress/i18n imports in editor and dashboard packages with @web-stories/i18n imports
Fix any duplicate imports
Remove any stray WordPress dependencies doc blocks to fix lint errors.

Should I do this as part of https://github.com/google/web-stories-wp/issues/6049 ?

@spacedmonkey Sure, but I'd prefer two separate PRs. This one might cause some more merge conflicts.


pull request for e2e test at 12/22/2016 17:26:18

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


README update

Updates formatting, cleans up links, revises copy for clarity, adds licensing information

@escopecz Awesome! If there's anything else that needs work or revising, happy to help

@escopecz great, thanks for pointing me in the right direction


Reading a deleted stream should throw a StreamDeletedException with boolean flag soft/hard

Currently hard deleting a stream and reading/writing/deleting from it afterwards results in a "FAILED_PRECONDITION":
io.grpc.StatusRuntimeException: FAILED_PRECONDITION: Event stream 'accounts' is deleted.
It would be nice to have a dedicated exception for that condition:
com.eventstore.dbclient.StreamDeletedException
The FAILED_PRECONDITION is very generic and requires parsing the error message to react programmatically on that situtation, which is not really nice. Having a dedicated exception would solve this issue.
Actually we have three different situations when reading a stream that was either soft/hard deleted or does not exists:

Never existed => StreamNotFoundException
Was soft deleted =>  StreamDeletedException(type = soft)   // Currently it has StreamNotFoundException"
Was hard deleted => StreamDeletedException(type = hard)

It would even better to use "StreamDeletedException" for both deleted situations and add a boolean flag to the exception that signals wether it was soft or hard deleted.

Good idea! However, deleting a stream will never throw a StreamNotFoundException. Delete operations accept an ExpectedRevision. It's StreamDeletedException or WrongExpectedVersionException. We can't know if it was a soft (delete) or hard (tombstome) operation though.


issue with 0.13

I've been using app-icon for a while in MS Appcenter for building.  It's running a Mac OS X (Mojave I think) with Node 10.x.  With the recent build I'm getting the following error.  If I use 0.11.0 everything works fine.
/usr/local/lib/node_modules/app-icon/bin/app-icon.js:16
const errorIfMissing = async (filePath, errorMessage) => {
^
SyntaxError: Unexpected token (
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:549:28)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.runMain (module.js:611:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:160:9)

That's odd - can you share the output of the below command?
node -v

Just out of curiosity?


show large constant strings if the user wants to

See also golang/go#10257.
http://godoc.org/golang.org/x/tools/refactor/eg
I think even though the big Help const is not shown by default, the user
should still be able to see it. And that will be very useful in this particular
case.

The documentation for eg should be fixed. See https://github.com/golang/gddo/issues/245#issuecomment-74403876 for one possible way to fix the documentation.
If there is interest in viewing long strings separate from the broken documentation issue, then we should add a link to the string in the source code.

The issue I linked is about the eg documentation.
This issue is only about adding ability to showing the large const strings
to gddo.
Whether the package has broken docs or not is irrelevant here.
(Even it has broken docs style, not being able to show the string content
is still
a bug in gddo. It's a tool to show docs, not a tool to judge whether the
docs stylle
is good or bad.)

If there is interest in viewing long strings separate from the broken documentation issue, then we should add a link to the string in the source code.

I think that's the way to go.
It can already be done for other identifiers. For example, http://godoc.org/golang.org/x/tools/refactor/eg#WriteAST has a link to the source, https://github.com/golang/tools/blob/af0a4481dd36113fd967a37a64d887d4b9d3425e/refactor/eg/eg.go#L282. So it's just a matter of adding support to link const identifiers to the source.
Separately, FWIW, gotools works:
http://gotools.org/golang.org/x/tools/refactor/eg#Help

I have a change in progress to link all declarations to the source. It turns out that the database has source positions for a declarations, but it's unused for const and var.

#262 adds a link to the source where the string literal can be viewed.

Change 309f8824a968c3fd6379dee5810111363c23bcf9 is now live. The full help string is now one click away from the godoc.org page.


[Analytics] New events

Page events that need updating or adding

[x] Implement new spreadsheet of page views with updated parameters (in place of #2262 )

Events that need updating or adding

[ ] 'Tapped on home screen recommendation', request here

@cavvia I've captured your request here. If there are any more / any changes, feel free to add to this thread :)

Thanks @mennenia! This is all I need for now.

Blocked by Emission needing analytics support.


Remove GO_test schemas

Replaced by GO* and ENVO*

I could've sworn I deleted these earlier...?

Oh, I missed the GO_test ones.

LGTM


Clarification on Lock and Synchronization

Hello,
I am writing a small in-memory key-value store. I have a single-processor environment and trying an experiment with the library.
As I only have a single vcpu, according to the documentation, I don't need atomics for synchronization.
“Multiple coroutines in the same OS thread have no visibility issues with each other. For example, if multiple coroutines modify variables inside a thread at the same time, we don't need to use atomic variables, and there is no need to pay attention to memory order.”
However, I am not clear on synchronization. Can't multiple threads(coroutines) cause race conditions on the key-value store assuming they are modifying a non-atomic underlying memory address? What's the best way to achieve concurrency? In this case, locks are preferred rather than atomics?
Best.

Photon will not switch threads unless your code specifically asks to, by calling thread_yield or thread_sleep.
The underlay implementation of lock and synchronization is sleep, as well as network IO and file IO, and other integrated tools.
If you need to protect some thing that might be changed by other threads, and your code might yield CPU by internally calling some sleep, you should use locks.

I am using the Coro20.h, could std::suspend_alwaysalso be used to yield?
Could you also give some details about Spinlock? Would it yield as well, or is it a busy wait?

coro20.h is experimental and less performant, you should not use that.
Spinlock does not yield, its code is small, you can read the thread.h source.

Is there any plan to improve coro20? That style is programming has been getting very popular recently. Is there any benchmark or some ballpark estimate how less performant it is?

Why the traditional multithreaded programming paradigm is less popular?

There are many open source frameworks on C++20 coroutines, but we failed to find any competitors in terms of performance. Gaps are huge. You can run their echo server example

Agree, photon seems like a very well-organized and targeted library. However, I would consider supporting co_* syntax would be just a wrapper around what's already achieved in this library. Is there any reasoning to understand better, why coro20 would be less performant?

Agree, photon seems like a very well-organized and targeted library. However, I would consider supporting co_* syntax would be just abatraction around what's already achieved in this library. Is there any reasoning to understand better, why coro20 would be less performant?

@Coldwings Hear what the author says.

@kosav7r Stackless coroutine, including the one provided by C++20 and coro20.h, has fundamental issues in performance when you have multiple levels of invocations, i.e. function A calls function B, which further calls function C, etc. Stackless coroutine incurs a high overhead to the calling chain. We provide coro20.h only because it's getting popular.

Can't multiple threads(coroutines) cause race conditions

Yes, it's still possible, if you cause context switching in a logic block. But it's less likely and more deterministic than kernel threads.

by calling thread_yield or thread_sleep.

directly or indirectly.
Note that, other functions can internally invoke thread_yield or thread_sleep, such as socket send/recv, or file read/write, etc.

give some details about Spinlock

Coroutines in a single vCPU should usually avoid spinlock, because there's no chance for another coroutine to lease the lock in the case of contention. This is effectively a dead lock.

@kosav7r Stackless coroutine, including the one provided by C++20 and coro20.h, has fundamental issues in performance when you have multiple levels of invocations, i.e. function A calls function B, which further calls function C, etc. Stackless coroutine incurs a high overhead to the calling chain. We provide coro20.h only because it's getting popular.

Thank you for your response. Sorry If I sound like a broken record. Is there a quantifiable estimate or benchmark? How much less performance is expected? Would it be still faster than libraries like libcoro or seastar. We switched our programming model to coroutines at work and saw a huge performance improvement. However, it's not only that, everybody became so productive because the traditional way of doing things with callbacks eventually becomes a callback hell.
For example; photon::thread is great, lightweight fiber/coroutine but implementing a simple, let's say “read_from_disk” involves thinking about callbacks. Whereas, in coroutine API, it's as simple as
task read(){bunch of co_awaits with co_return}
Simple to read, less code. What do you think?

We have only a micro benchmark by solve the puzzle of Hanoi. The callback-style code is:
void Hanoi(char n, char from, char to, char aux, Callback cb) {
    if (n==0) return;
    Hanoi(g, n-1, from, aux, to);
    cb(n, from, to); // move the n-th disk
    Hanoi(g, n-1, aux, to, from);
}

Each callback gives out a single move.
The relative time costs of C++20 stackless coroutine, C++23 stackless std::generator, and Boost.Context (stackful) are as follow (normalized to callback version):

This benchmarks mimic the real life situation of multiple levels of function (coroutine) invocation, while eliminating the effects of real I/O.

photon::thread ... involves thinking about callbacks

No, usually you don't need to think about callbacks with photon. That's one of the most attractive parts of stackful coroutine.

What's the most preferred way to return a value from the photon thread upon completion without blocking?
Would you pass a promise and get a future, or continue with the callback style approach?
Simple example; read from a database. With c++20 style coroutine, that's
coro<content> read(string key)

We usually use shared variable(s) and a semaphore to coordinate foreground and background threads. And I believe the promise/future paradigm is more fit for general cases.

Thank you for the PR! That’s a great step.
As someone coming from different async approaches(different languages), mostly following reactive programming style, I find using thread, shared variables, and a semaphore a difficult approach to solving problems.
Unfortunately, C++ didn't have any standardization in the scope, so I see callbacks or shared variables are common patterns in the C++ world.
Writing async pipelines is extremely simplified if we can have async compositions like coroutines or Future. I hope you will consider this a lot more. I am open to discussions.