Compiled reflectivity module seems to be slower than pure Python version.

This is the opposite performance behaviour to what I would expect. macOS, Python 3.8, refl1d.__version__ = '0.8.12'
#setup

# pure Python version
from refl1d.abeles import refl

# ultimately uses a compiled C-module
from refl1d.reflectivity import reflectivity_amplitude

q = np.geomspace(0.005, 0.3, 3001)

air = np.array([0, 0, 0, 0])
unit_cell = np.array([[30, -2., 0, 3],
                      [70,  8., 0, 3]])
backing = np.array([0, 2.07, 0.0001, 3])

def get_w(repeats=1):
    # creates parameters for a multilayer repeat
    # N repeats has a total of 2*N layers
    if repeats:
        filling = np.vstack([unit_cell] * repeats)
        return np.vstack([air, filling, backing])
    else:
        return np.vstack([air, backing])

w = get_w(5)
>>> %timeit reflectivity_amplitude(q/2, w[:, 0], w[:, 1], irho=w[:, 2], sigma=w[1:, -1])
4.93 ms ± 76.9 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
>>> %timeit refl(q/2, w[:, 0], w[:, 1], irho=w[:, 2], sigma=w[1:, -1])
3.36 ms ± 85.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

Now try more layers:
>>> w = get_w(300)
>>> %timeit reflectivity_amplitude(q/2, w[:, 0], w[:, 1], irho=w[:, 2], sigma=w[1:, -1])
256 ms ± 3.02 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
>>> %timeit refl(q/2, w[:, 0], w[:, 1], irho=w[:, 2], sigma=w[1:, -1])
187 ms ± 5.63 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

I can't detect any specific thing whilst profiling for why the Python version is faster than the compiled reflmodule module.

From a little more testing the compiled module seems to be faster than pure python when the number of q points is a lot smaller, say 300 or so. The python version becomes a lot more efficient for large N.

From a little more testing the compiled module seems to be faster than pure python when the number of q points is a lot smaller, say 300 or so. The python version becomes a lot more efficient for large N.

This is an interesting observation, and not what I would have expected, either!

Just my naive thought here, but could it be that essentially once you have loaded it into the numpy array framework, the underlying (I assume C) code that runs numpy is a bit faster? but for small N the overhead of loading up the numpy arrays dominate?
My only observation slightly related to this was when I played with Cupy and compared it to the pure python reflectivity calculator and I saw the same thing. However, in this case it was more understandable that the overhead to load the arrays into the GPU would be significant over using numpy.
But I may just be comparing apples and oranges here...


fix: initialize backend only if configuration file exists

Fixes #79

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


Polish translation

As written in the title, in this pull request I created Polish translation.

I feel that it should now target 1.17 first, since you released More Overlays Updated for it.


Updating table formatting

A couple of the tables had markdown that wasn't rendering properly.

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

Thank you @tlmii for your help with the content.


slider doesent work in the official docs.

Hi,
got an error in http://semantic-ui.com/modules/slider.html#/definition
Uncaught TypeError: $slider.slider is not a functionsemantic.dropdown.ready @ slider.js:19j @ jquery.min.js:2k.fireWith @ jquery.min.js:2n.extend.ready @ jquery.min.js:2I @ jquery.min.js:2

This was accidentally in docs with 2.1.7 push. This is not ready and has been removed.

ah, thank you :)

Hi Guys, just a heads up this still gets picked up by google... Do you know how far this away this module is from being ready?

Is slider available now?


Remove resource id in POST request instead of send the null value

When is created a resource for POST purpose, the id attribute is initialised to null.
In the jsonapi.org specifications is not specified that the id must not be present in case of server-generated id but should not be better to avoid to send id set to null by default in POST request and do not send it all?
In my case the PHP lib that I use https://github.com/cloudcreativity/json-api doesn't expect by default the id attribute when the id is not generated client-side. If present (even if null) but not expected the validation fails. I think that it's the right choice, it should not be set.

Fixed in v0.7.0


fix(chart): add kube tolerations

See: https://github.com/huggingface/infra/pull/1022

OK... Third slice of the iceberg, it's too much for me :)

https://asankov.dev/blog/2022/05/22/demystifying-the-kubernetes-iceberg-part-2/#taints-and-tolerations


Update to EKBTree.m

On lines 32 & 35 need to set the parent for the node that is to be inserted (left or right child).

Thanks for PR.


Too many positional arguments: 1 allowed, but 3 found

I am getting this error
Compiler message:
lib/main.dart:167:44: Error: Too many positional arguments: 1 allowed, but 3 found.
Try removing the extra positional arguments.
    img.Image resizedImage = img.copyResize(oriImage, 224, 224);
                                           ^
file:///Users/ajinkyabobade/development/flutter/.pub-cache/hosted/pub.dartlang.org/image-2.1.2/lib/src/transform/copy_resize.dart:14:7: Context: Found this candidate, but the arguments don't match.
Image copyResize(Image src, {int width, int height,
      ^^^^^^^^^^
Compiler failed on /Users/ajinkyabobade/Documents/flutter_tflite/example/lib/main.dart

How to resolve it ?

Hi,
Looks like image library changed copySize API in recently.
https://github.com/brendan-duncan/image/commit/ab86ca9f4180fea9b375c07f88a20d4c05726591#diff-77b497f4b86eb2017b1c91d05506d0c9
You can either fix image version to 2.0.5
https://github.com/shaqian/flutter_tflite/blob/master/example/pubspec.yaml#L29
or change the code to
img.Image resizedImage = img.copyResize(oriImage, width: 224, height: 224);

@shaqian Your solution removed above error, I am getting new errors:
The first one is as follows:

I removed above error by replacing 'compile' by 'implementation'
android {
    compileSdkVersion 27

    defaultConfig {
        minSdkVersion 19
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    lintOptions {
        disable 'InvalidPackage'
    }

    dependencies {
        implementation 'org.tensorflow:tensorflow-lite:+'
    }
}

After removing these errors. My applications crashes on startup with above error:
2019-05-28 14:22:45.663 28605-28605/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2019-05-28 14:22:45.665 28605-28605/? E/Zygote: accessInfo : 1
2019-05-28 14:22:45.673 28605-28605/? I/r.tfliteexampl: Late-enabling -Xcheck:jni
2019-05-28 14:22:45.819 28605-28605/sq.flutter.tfliteexample I/r.tfliteexampl: The ClassLoaderContext is a special shared library.
2019-05-28 14:22:45.962 28605-28605/sq.flutter.tfliteexample W/r.tfliteexampl: JIT profile information will not be recorded: profile file does not exits.
2019-05-28 14:22:45.967 28605-28605/sq.flutter.tfliteexample I/chatty: uid=10585(sq.flutter.tfliteexample) identical 10 lines
2019-05-28 14:22:45.968 28605-28605/sq.flutter.tfliteexample W/r.tfliteexampl: JIT profile information will not be recorded: profile file does not exits.
2019-05-28 14:22:46.012 28605-28605/sq.flutter.tfliteexample I/InstantRun: starting instant run server: is main process
2019-05-28 14:22:46.053 28605-28636/sq.flutter.tfliteexample I/ResourceExtractor: Found extracted resources res_timestamp-1-1559033195122
2019-05-28 14:22:46.075 28605-28605/sq.flutter.tfliteexample D/AndroidRuntime: Shutting down VM
2019-05-28 14:22:46.081 28605-28605/sq.flutter.tfliteexample E/AndroidRuntime: FATAL EXCEPTION: main
    Process: sq.flutter.tfliteexample, PID: 28605
    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/base.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_dependencies_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_resources_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_0_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_1_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_2_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_3_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_4_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_5_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_6_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_7_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_8_apk.apk", zip file "/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/lib/arm, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/base.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_dependencies_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_resources_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_0_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_1_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_2_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_3_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_4_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_5_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_6_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_7_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_8_apk.apk!/lib/armeabi-v7a, /data/app/sq.flutter.tfliteexample-dj60Xz-J1vYGulJyZ9UOig==/split_lib_slice_9_apk.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]] couldn't find "libflutter.so"
        at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
        at java.lang.System.loadLibrary(System.java:1669)
        at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:161)
        at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:136)
        at io.flutter.app.FlutterApplication.onCreate(FlutterApplication.java:22)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1158)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6248)
        at android.app.ActivityThread.access$1200(ActivityThread.java:240)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7076)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

see https://github.com/shaqian/flutter_realtime_detection/issues/5#issuecomment-496449214

Temporarily archiving the thread. Feel free to reopen if you still have the issue.


Use api_image_import instead of import for creation

Signed-off-by: Tobias Fischer<EMAIL_ADDRESS>

@tobfisch Can you briefly add in the commit message why the replacement is made.


[flutter_tools] Consider build configuration dependent .plist files in migrations

Use case
While upgrading to Flutter 3.0 i noticed that CADisableMinimumFrameDurationOnPhone was automatically added to my Info.plist (as per https://github.com/flutter/flutter/issues/99880 this was automatically migrated). Since i needed to be able to test locally i need to have different .plist files depending on the build configuration (as described here: https://docs.flutter.dev/development/add-to-app/ios/project-setup#local-network-privacy-permissions). It would be really nice if the migrations would also consider other .plist files than the default Info.plist.
Proposal
I am not sure how doable/feasible this is, but it probably needs to be added/changed in https://github.com/flutter/flutter/blob/3f1f0a81704f30246f56710d79f4cb2470da13ec/packages/flutter_tools/lib/src/xcode_project.dart
and then used inside the migrations.

Ah thought we had already done this.  defaultHostInfoPlist logic
https://github.com/flutter/flutter/blob/abe35c54e5367e3e81b9e172c0899e7b62110e57/packages/flutter_tools/lib/src/xcode_project.dart#L32
will need similar logic to the bundle identifier where the path is parsed from buildSettingsForBuildInfo INFOPLIST_FILE as done in #47993.  Previously the Info.plist was only used to cheaply guess the bundle identifier, but now the path is checked to be used in migrations.

Related to https://github.com/flutter/flutter/pull/106889


Discord invite not working

The discord invite link is expired :)

Same experience for me

Recommend opening the link https://game.ci/discord in an incognito tab, because it's a permanent redirect which is stored in your browser.


Upgrade Search item to Keybase user if present

@keybase/react-hackers
This makes it so if you click a search result that has a keybase user attached (i.e. you search "maxtaco" on twitter, and you click it). Then the user pill and filter logic and startConversation use the keybase id ("max" in the example) instead of the search result id (which would have been "maxtaco@twiiter").
If the user has no keybase attached, it's the same as before and does the SBS flow.

i'm approving since its small but it feels weird to avoid the immutable api to get teh data by doing a runtime conversion to a plain JS object

actually I can understand the reasoning of not doing this .toObj everywhere.
And we'll get the type safety soon in .49 anyways

This can be benign but it could also lead to downstream perf problems. You
could do this then pass the object to other things and lose the immutable
aspect etc.
On Fri, Jun 30, 2017 at 5:25 PM Marco Munizaga<EMAIL_ADDRESS>wrote:

@MarcoPolo commented on this pull request.
In shared/constants/searchv3.js
https://github.com/keybase/client/pull/7602#discussion_r125133194:

@@ -102,4 +102,23 @@ function followStateHelper(state: TypedState, username: string, service: Service
return 'NoState'
}

-export {serviceIdToService, followStateHelper}
+function maybeUpgradeSearchResultIdToKeybaseId(

searchResultMap: $PropertyType<$PropertyType<TypedState, 'entities'>, 'searchResults'>,
id: SearchResultId
+): SearchResultId {
if (!searchResultMap.get(id)) {
console.warn('search result id not found in enitites.', id)
return id
}

const searchResult = searchResultMap.get(id).toObject()

will change
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/keybase/client/pull/7602#discussion_r125133194, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAfhUx9QtrfkhPft2BQUjR22Dyd7uSW-ks5sJWfLgaJpZM4OK8Sf
.


Update README.md

Fix the badge link so it goes to specific part on Google docs.

Thanks for the PR @Emalton!


[release-1.7] Expand endpoints before pod test to check pod

This is an automated cherry-pick of #25986

@istio-testing: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

integ-multicluster-k8s-tests_istio_release-1.7
029c9801c2018660fcb62815b53a7c331ea9a1a9
link
/test integ-multicluster-k8s-tests_istio_release-1.7

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


Enable template management with new _index_template endpoint

Description
This adds a new switch called legacy_template which is boolean (default true), when set to false changes the http endpoint that is hit when managing index templates (changes from _template to _index_template)
Issues Resolved
#12
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has documentation added

[ ] Commits are signed as per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@rkbennett Thanks for contribution. Can you fix tests as well?

@rkbennett , Thanks for this PR! The tests for this PR are failing. And there are some merge conflicts now. Are you still interested in getting this PR finished up and merged in?

Thanks @rkbennett for your contribution. This feature was added in #169 which was recently merged in. So I'll close this PR. If you have any other changes you'd like to make, please feel from to open another PR.


Convert all Resource Manager deserialized enum types to StringEnumValue

Addresses #1944.

For reference in case of future maintenance, the conversions here were done according to the semi-automated procedure described in https://github.com/GoogleCloudPlatform/google-cloud-java/pull/2128#issuecomment-307506513.

Changes Unknown when pulling fef3a14cca133ed365752c13d83788b91d369670 on tcoffee-google:string_enum_resourcemanager into ** on GoogleCloudPlatform:master**.

Changes Unknown when pulling eaa63cd20366b5de594be99b2b053a2325bd1bdc on tcoffee-google:string_enum_resourcemanager into ** on GoogleCloudPlatform:master**.


Config-aware relative path support for Dash for R

Currently Dash for R lacks support for config-aware relative paths which exists on Dash for Python. This feature should be added for parity and address different path URLs for apps running locally or deployed on a server.
Details on the Python version of the feature that we're hoping to emulate with Dash for R can be found in plotly/dash-core#78.

🎉This feature was merged into the latest release; closing now.


Predicated embeds

Hi,
I'd like to add the ability to conditionally embed a sub-resource.  To achieve this at present, the options  are to either have conditional logic surrounding the hal-configuration or always embed a resource but return null under certain conditions.  Both aren't ideal; the former becomes really messy whilst the later potentially leaks implementation details.
And so I've added overloads to the Embeds methods so that a predicate can be evaluated to determine whether not the sub-resource should be embedded.  It follows the pattern used to add Links.
This disadvantage to this approach is that it's a breaking change to the IHalTypeConfiguration interface;  I've renamed Embedded to EmbedsFor and now pass in the model and context.
I've added unit tests but haven't updated the example (mostly because the given model doesn't allow for a good example).
I'm not really sure of the etiquette here but hoping you'll accept the PR.  Let me know if there's anything else I can do.
Joe

Great, thanks! I'll take a look.

The breaking changes don't seem too bad - LinksFor and EmbedsFor are used when building up the Hal response object but not part of the public configuration API, so we should be good to merge here without breaking anything. I'll drop it into our project at work for dogfooding and merge in when tested. :+1:

Great, thanks.  Let me if i can help.
No pressure but how long is it likely to take to get a nuget package out?

LGTM :+1: 1.2.0 pushed to NuGet, thanks for the PR!

Fantastic, that's great.  Thanks for accepting and getting it through so quickly.  If you've got any other issues I can help with, feel free to send them my way.


Need little fix for dev comments

/v1/libraries/httpProxyClass.php
/**
* @param string  $content         Response contents
*/
private function populateArrayWithRequestData($contents, $status, $storeFullStatus, &$dataTarget) {
$content -> $contents

Thanks, I'll fix it but V1 is deprecated and its recommended you use V2 from now on.


CC database - new functions and improvements

Added:
dbDelMultiple - deleting multiple entries
dbRank - finding rank according to a custom query (very helpful with leader board implementations, I have tested this upto 3 million entries for a given server and it took 3-5s at max even at this scale. dbCount is also equally slow at this scale.)
dbCount improvement.

I need this in my life already

Hi, I was wondering what the template for dbRank looks like? I cannot seem to figure it out. Thanks.


[Feature]: Better Full Export

Description
I have logged a lot of data in my W&B projects, and now I want to manipulate my logs to make nice plots.
To do this, I first need to export my runs. To keep it short, my export code looks something like this as inspired by the docs,
# imports here ...

def fetch(i):
  run = all_runs[i]
  path = f'{entity}/{run.project}/{run.id}'

  history = pd.DataFrame(run.scan_history())
  history.to_csv(path + '/' + 'history.csv')  # Save explicitly

  # Writes the files for me
  downloads = [f.download(root=path, replace=False, exist_ok=True) for f in run.files()]

# From wandb.Api()
all_runs = api.runs(...)
...
# call fetch(i) for all i

Now my project is so large, that running this multi-threaded (using concurrent.futures.ThreadpoolExecutor) with 30 workers still takes approximately 30 hours! for a project of 5k runs. I have 20k runs that I need to export...
The current method for exporting all runs is horrible. I want to clone the complete W&B data for all my runs, but this takes just ridiculously long...
Suggested Solution
Implement an export button on the Project Overview page that first compresses ALL data existing inside that project (and I do mean absolutely everything), and then allow downloading of this compressed file through some way.
Alternatives
Happy to hear any
Additional Context
No response

Hi @joeryjoery , thank you for the feature request. We've generated it for review by our team and will update you once there's been movement on the request. I've also received your direct email and will track the request under that as well.

Any news on this topic? I am currently facing the same problem and am unable to download the data for analysis in a reasonable amount of time.

Hi @Vosloo thank you for following up on this - this item is in our backlog, and we will keep you updated on its progress. In the meantime, you might find easier to loop through the artifacts of type wandb-history where we export all history metrics (those metrics that have been logged with wandb.log() over multiple steps) as a Parquet file.


Added the method count to count the total of items for a given index

I think this good, but I'd like to ask two more things:

please add the same method to Index, similar to this: https://github.com/isoos/elastic_client/blob/master/lib/src/_index.dart#L12
also update Changelog (and bump version) with a note.

Thanks!

Thank you for the feedback! I finish to work and I'll do it after that.
I can add it to the examples too if you want?

I can add it to the examples too if you want?

Yeah, it would be great too!

OK! I'll do it 😉

I just pushed the modifications!

Awesome! Thank you to publish it soon! That's perfect!


Dynamic Queue Example Won't Work - Two Tiny Bugs

Hi,
Two tiny bugs in the example code (the code behind works properly) ...
Promise in PreConfirm handler should contain Resolve() call, and curly bracket should be replaced by parenthesis.
preConfirm: () => {
    return new Promise((resolve) => {
      return $.get(ipAPI).then((data) => {
        swal.insertQueueStep(data.ip);
        resolve(); // <---- should be resolved
      })
    }) // <---- second parenthesis, not curly bracket
  }

Using promises within a Promise constructor is an anti-pattern. Using them in this way makes them basically just a glorified callback system, with the same pyramid of doom possibility, and misses the point of promises.
The Promise constructor should generally only be used for low-level bindings to async operations.
This example should be rewritten without the Promise constructor, and use promise chaining instead:
{
  preConfirm: () => {
    return $.get(ipAPI)
      .then((data) => {
        swal.insertQueueStep(data.ip)
      })
  }
}

Fixed, thanks @markgmarkg and @mattbrunetti :beers:


Add libopengl0 to list of libraries

The lack of this library does not allow to switch to 3D rendering in napari.
closes #61

thanks, note that this would close #61

do you also want to add libegl1-mesa as mentioned there?

Here I need only to add libopengl0 to get code working https://github.com/napari/napari/pull/6467/files#diff-b9d47163b1cf7210a86980d9d919fd325bb58eaf997d3c8a1e8e44359c6a9fbb
But mesa looks potentially useful. I may add it.

thanks!

released under v1.6 (and v1 updated to point to v1.6)


sample use case: return type of @contextmanager decorated functions

I want to contribute a real life use case that we encountered which may justify the needs of Intersection types.
Can anyone suggest an alternative without using Intersection?
from typing import *
from contextlib import AbstractContextManager, ContextDecorator, contextmanager

@contextmanager
def _hoge():
    ...
    try:
        yield
    finally:
        ...

def foo() -> ContextManager[Never] & ContextDecorator:  # How should we annotate this without Intersection?
    ...
    return _hoge()

# ====
# foo is used both as ContextManager and ContextDecorator

with foo():
    ...

@foo()
def bar():
    ...

NOTE: the spec of @contextmanager is here:
https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager
Essentially, what the decorated function returns is a ContextManager that uses ContextDecorator.

The best I came up with was using @contextmanager within if TYPE_CHECKING block and trusting type checkers to infer the type of foo. This isn't the same as explicitly annotating foo's return type.
if TYPE_CHECKING:
    @contextmanager
    def foo() -> Iterator[Never]:
        ...
else:
    def foo():
        ...
        return _hoge()

The correct return type for foo is _GeneratorContextManager (imported from contextlib).
from contextlib import _GeneratorContextManager

def foo() -> _GeneratorContextManager:
    ...
    return _hoge()

_GeneratorContextManager is the actual class used at runtime, and this class subclasses from both AbstractContextManager and ContextDecorator.
The fact that it's named with an underscore means that it's private, so you might be reluctant to use this type in a type annotation. I'm not sure why the authors of contextlib decided not to expose this type publicly. If you're using pyright, you don't need to supply a return type for foo because it infers the proper return type. Mypy doesn't do this currently.

The fact that it's named with an underscore means that it's private, so you might be reluctant to use this type in a type annotation.

Yap, exactly that. It is clearly not exported from contextlib.
https://github.com/python/cpython/blob/a24e25d74bb5d30775a61853d34e0bb5a7e12c64/Lib/contextlib.py#L10-L14
https://github.com/python/typeshed/blob/a079b0de6e703fcb615a1169a32bc2186efee9bd/stdlib/contextlib.pyi#L10-L23

I'm not sure why the authors of contextlib decided not to expose this type publicly.

I think not exposing such implementation detail is good. That way, we can later change the implementation of _hoge to our own AbstractContextManager subclass with ContextDecorator mixed in.


Settings

Create a settings modal.

[ ] auto-chunk
[ ] immediate recording
[ ] select mime-type
[ ] select video/audio constraints

Deemed nice to have but not necessary at the moment.


bitcoin: reenable bdb legacy wallet support on non-Darwin platforms

Copy of commit msg
Joinmarket requires legacy wallet support:
https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/79e5c3d0a79fb4456fbd8929fa5de9c5b8361a34/docs/USAGE.md#:~:text=legacy wallets
Also, this removes breakage for other legacy wallet users on non-Darwin platforms.
Things done

[x] Built on x86_64-linux

cc @prusnak

@ofborg build bitcoind


⚠ Bofrost.be has degraded performance

In bb0fdad, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1572 ms

Resolved: Bofrost.be performance has improved in ee7b86c after 28 minutes.


Feature request:Move icons betwen desktops.

Hi Jacob
After using 3 versions of Costa I have found the potential for a convenience feature.
Moving icons/links between desktops
Obviously this will require moving the data and xy position entry from one DB file to another and some code changes to switch the Read/Write to the other DB file.
I looked at the current icon options dialog and the current button arrangements are quite neat, so I don't feel that you would want to mess with that. There may be other options but I did look at the change desktop <- 2/5 -> option which is currently in use during the [Move] procedure to move the icon rather than change the desktop. Maybe there is a simple option somewhere in the use of the arrow keys '<-' '->' and the '<' '>' symbols without messing too much with the GUI coding.
You know your application better than anyone, so I will leave the thought in your hands :)
Version 1.7.4 has been working great and so far I have not encountered any issues. Well done with that :)
I do occasionally have problems with the CTMouse driver sensitivity when changing VESA modes for other graphics applications and returning to Costa but that is more to do with running FreeDOS in windowed mode in VirtualBox and nothing to do with Costa. The quick fix at the moment is to create an icon on the Costa desktop with CTMOUSE /R33 to reset the xy sensitivity.
I have uploaded the current draft of the FreeDOS guide for you as requested in another thread. I still have some parts to tidy and complete, but it is getting close to completion.
Beginers Guide to DOS programming environments - book 1
And I also did a quick video (In 3 parts. 3 x 11mins) of using FreeDOS with Costa as the central shell/launch environment and showcasing some of the tools used in the guide.
FreeDOS Development tools - Part 1 to 3
Have a great day
Axle :)

Hi Axle,
First, let me start by thanking you for including Costa in your book. I am thrilled to see it mentioned, and I really appreciate it. Also, 200+ pages, you've done some really good work there! I haven't read the whole thing, but I've read the part about Costa obviously, and skimmed the rest, and I am very excited to see the final book in the future. I think it has great potential to be a valuable resource for newcomers to DOS development!
As for the feature request, I have to say that as soon as I read it, I thought to myself "why haven't I made this already?". It just never crossed my mind, but now that you point it out, it's such a small but useful feature. I will absolutely look in to that, I have some ideas and it shouldn't be too hard to implement.

My pleasure, and thank you again for your efforts on Costa.
Hopefully I will get to the partner guide using Win95 for DOS development environments in the new year. Tertiary due dates are coming close so have to focus on that :)
These guides are supplemental to my "Beginners Guide to Programming" series which cover programming fundamentals using C, FreeBASIC and Python side by side for all examples, development environment setup for all 3 languages, and book 3 covers the use of some essential/basic libraries. The guides and examples are for Win x86-64 and Ubuntu (DEB) x86-64 so I kind of thought why not throw DOS into the mix lol
I just need to choose some compatible libraries to use in examples across all 3 platforms so I needed to go through the DOS side to double check, so I have for example PDCurses that compiles on any platform, and for basic graphics in the Turbo BGI graphics.h styles we have GRX (BGI like API) for DOS and SDL_BGI for Win/Ubuntu x64 (Although I had original choose to use raylib and raygui). Guide 4,5 and 6 will focus on designing/building some simple apps based upon the previous libraries. I may have to add a supplemental for DOS as well which will be a nice second step to the DOS Dev environment setup guide.

I am using Alentum ALaunch (Advanced Launcher} for Win9x which fits the style well, and often use salvadorbs ASuite for USB and portable distros, so Costa is a perfect fit for DOS portable distros as well :) I'll take Costa for a spin on Win 9x and see how it feels as a convenient launch pad :)
It is like Costa has made my GUI world feel complete on all OS lol
(To add context to that, I started coding back in the late 70s on B & W and green phosphor screens then dos, and then 16 colour TUI. The Black and white terminal novelty wore off a long time ago lol GUI all the way...)
Simple, elegant and brilliant :P

Hi Axle,
I have added the option to move icons between desktops in commit 1929f04 and have tested it. On older machines it might not be the fastest operation since it has to delete the icon from current desktop and save the desktop data file, load another desktop data file, add the icon, and save the new desktop file. But still, a lot faster than deleting an icon and recreating it on another desktop!
While I was at it, I also enabled the 1-5 keys to switch between the five available desktops, both when on the desktop itself and while moving an icon. It really makes it easier and faster than cycling through desktops, when you know what desktop you're looking for.
Here's a preview of what it looks like when moving an icon:

Thanks for submitting this feature request! As I wrote earlier, as soon as I read it I thought to myself "Why haven't I made this already?", and I really like how the feature turned out. So thank you for that!

Hi Jacob,
Glad to hear the feature has turned out well. The GIF looks good :P
I like the 1-5 quick keys idea :)
Well done 😁

I am just about finished the final proof read on the 2 DOS DEV books, so I will have to take the new Costa version for a try and update the version, links and maybe I should expand the chapter on Costa a little more as I advised to think about how to arrange icon groups beforehand for each desktop because this feature wasn't there so I will change that wording now.

I never thought I would get this excited about DOS in 2024, but here I am lol
Thank you 😀

P.S. I think I may have asked before. Is there a way to convert a normal 16 or 256 color bitmap image (icon) to the .BSV format that you are using?


Update links for NuGet package reference for BlobStorage Trigger for Azure Functions Isolated process

Current references for both tabs (Extension 5.x and higher &  Functions 2.x and higher ) are :
https://www.nuget.org/packages//dotnet/api/microsoft.azure.webjobs.blobattribute
when it should be https://www.nuget.org/packages/Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs
See image for further visual reference:

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

ID: fff7ae2f-4f02-7ed9-c2ed-a2715e407975
Version Independent ID: 542016c1-3c25-f6af-cc83-0c5b6218e0ce
Content: Azure Blob storage trigger and bindings for Azure Functions
Content Source: articles/azure-functions/functions-bindings-storage-blob.md
Service: azure-functions
GitHub Login: @ggailey777
Microsoft Alias: glenga

@BlackPhlox Thank you for your feedback! We will review and update as appropriate.

@BlackPhlox Thanks for reporting this item! I have updated the doc and it will be published soon. We appreciate the feedback!


Fix: env is not always nil

https://github.com/factorysh/microdensity/blob/main/run/run.go#L61

https://github.com/factorysh/microdensity/commit/00116af84d2b36c4e7e1eacafe5b27c5de92e3fc


Devel

[x] Forced column_name variable to be passed into partials.
[x] boolean false value for custom display type isn't now treated as a blank.
[x] add a new record for has_one/has_many associations
[x] delete a record when csrf-token is used

Hi thanks, i think you can't remove the compat layer of mootools because the form-datepicker plugin will not work

@antpaw that was compiled with a compat layer, just renamed.

in this old file if i search for "compat" i get 69 results
in this new file i get 11
i'm sure something went wrong

maybe it's not possible to have compat upto v1.2 anymore

very strange, can you check if datepicker still works?

@antpaw  updated

thank you.
It would be much easier for me to merge if every change would go into different branch and it's own pull request. Stuff you are doing is not a hotfix, it's new features and hotfixes for this new features. New features need some descriptions, context and discussions.
Can you branch out of upstream/master and cherrypick the commits you want into each pull-request-branch? You can still have a master branch in your fork where all this is merged into one branch.
I don't understand why you want this csrf protection? This is protected admin area that can't be reached by a xss attack anyway.
I don't understand what this readonly feature does? If you have the attribute disabled set on the form elements, they will not send their values to the controller in the first place.

@antpaw This is protected admin area that can't be reached by a xss attack anyway.
How it is protected, by what?

If you have the attribute disabled set on the form elements, they will not send their values to the controller in the first place.

@antpaw yes, but, this does not protect it from changing by modified html.

I mean the login barrier, (you build an extra feature for it lately, something related to "device" gem) if someone can login, why would they try to do an xss attack after that. They can just clear the hole database or flood it within seconds.
If you want to protect attributes, do it in the model (this would be just one out of many other options https://github.com/rails/protected_attributes) Bhf is designed to have almost no business logic inside the controller because the bhf::controller can not be easily extended like a model or the view.

@antpaw the delete feature just require that authentication by validating the scrf-token. So in order to remove a record, rails just makes sure that you are admin...
by-the-way protected attributes is obsolete techinique....

Here I'll put fixups... dont close the branch

ok

i don't see how this branch, can ever we pulled, unless you do some heavy git history modification and use git push --force, it should be much simpler for you (and me) to just branch out from upstream/master and do the hotfixes

Yes, I'll use git force.


[Low] [$500] Tasks - Error occurs when creating subtask with external user on task assigned to said user

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: <IP_ADDRESS>
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Action Performed

Create group chat with 2 other accounts
Assign task in group to external user not included group chat
Log into the external user's account and open task details of assigned task
Press “+” in compose and create task

Expected Result:
User can create subtask in task details of assigned chat
Actual Result:

Error occurs when substack is created and substack remains grey.
Error message is :Unexpected error create task. Please try again later.
After clearing error, returning to LHN and returning to assigned task, Substack is still created

Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[x] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/d088264b-2876-40bd-b439-0f05b5f3ca3f
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01fdc5f4ea9fa3552b
Upwork Job ID:<PHONE_NUMBER>098820096
Last Price Increase: 2024-03-15

We think that this bug might be related to #vip-vsp
CC @quinthar

@bz FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

waiting for proposals - looks like automation failed on adding the external label

I believe it is a issue with the backend,
We are getting a genericCreateTaskFailureMessage: 'Unexpected error create task, please try again later.' response to CreateTask call, and we shouldn't, since "User can create subtask in task details of assigned chat". Can anyone confirm please? Thanks.

Waiting for proposals

@laurenreidexpensify It seems like a backend issue as it(CreateTask) is responding with the error. In the group chat report, I see those created tasks. Can we pull an internal engineer to confirm?

https://github.com/Expensify/App/assets/14358475/33565fea-dfcc-488d-a54c-f91cfccd22a3

Asking internally https://expensify.slack.com/archives/C066HJM2CAZ/p1709530744995619

bumped slack thread

Still seeing if proposals come in

Asking internally https://expensify.slack.com/archives/C066HJM2CAZ/p1709530744995619

Hi @laurenreidexpensify :D sorry to ask, but I don't have access. Could we confirm if this is not a backend issue? Thanks.

Confirmed this is internal, remains a Low Priority for now

Waiting for internal eng to have capacity to pick up

Waiting for internal eng to have capacity to pick up

Waiting for internal eng

Internal eng

Still waiting on internal eng

Waiting on internal eng

Waiting on internal eng

Waiting on internal eng

Waiting on internal eng

Unassigning myself as I believe it requires a backend change and doesn't need C+.

Waiting on internal eng

Waiting on internal eng

Waiting on internal eng

@garrettmknight you're my parental leave handover buddy on this one - thanks!
TLDR is that we're waiting for an internal engineer to pick up. I'll leave it to you to discern if you think it's worth keeping open at all or considering closing, but we've had no one look at this in ~3 months :(

Let's close - this is minor and not tied to anything on the roadmap for the moment.


fix GFW block cdn.jsdelivr.net

We have noticed that some users experience prolonged loading times when accessing the webpage, particularly at this step.


[BUG] tsdektec fails to set DTA-115 ASI port into output mode

Bug description:
tsdektec doesn't set the ASI port to output mode on the Dektec DTA-115
How to reproduce:

Run tsdektec -o0 0 (assumes the DTA-115 is device 0)

Expected behavior:

Dektec card set to ASI output mode -- ASI port is channel 0 output, Modulator is channel 1 output

Errors and logs:
$ tsdektec -av

DTAPI: <IP_ADDRESS>, Dta: <IP_ADDRESS>1, DtaNw: -1.-1.-1.-1

* Device 0: DTA-115 (DTA-115 Modulator with VHF/UHF Upconverter)
  Physical ports: 2
  Channels: input: 1, output: 1
  Input 0: DTA-115 port 1 (top), ASI (Uni-directional input, Uni-directional
      output, ASI output signal can be inverted, MPEG-2 transport stream,
      DVB-ASI transport stream, Internal TS rate clock reference)
  Output 0: DTA-115 port 2, Modulator (VHF-band 47-470MHz, UHF-band 400-862MHz,
      Uni-directional output, MPEG-2 transport stream, Modulator output, ATSC
      8-VSB modulation, DVB-T modulation, QAM-A modulation, QAM-B modulation,
      QAM-C modulation, Adjustable output level, Continuous wave, Mute RF output
      signal, Internal RF clock reference, Internal TS rate clock reference)
  Subsystem id: 0x0073 (DTA-115)
  Subsystem vendor id: 0x1A0E
  Device id: 0x9056
  Vendor id: 0x10B5
  Serial number: REDACTED
  Firmware version: 2 (0x00000002)
  Firmware variant: 0 (0x00000000)
  PCI bus: 4, slot: 1
  Customer id: 303010
  Engineering change level: Rev 3
  Manufacture id: 03
  Production date: 2010.12
  Part number: DTA-115
  Serial number:<PHONE_NUMBER>
  Crystal stability: RF:1ppm;Sym:2ppm

$ tsdektec -o0 0

$ tsp -v -m --bitrate 8000000 --buffer-size-mb 128 -I null -P regulate -O dektec --device 0 --channel 0
* [MON] 2021/05/16 14:48, resource monitoring started
* tsp: buffer failed to lock into physical memory (12: Cannot allocate memory), risk of real-time issue
* regulate: minimum packet burst duration is 10,000,000 nano-seconds
* null: initial input bitrate is 8,000,000 b/s
* dektec: using Dektec device 0, output channel 0 (DTA-115 port 2)
* Error: dektec: unspecified modulation type for DTA-115
* [MON] 2021/05/16 14:48, resource monitoring terminated

# TSDuck has clearly not set up the ASI port as an output. Asking for a modulation type shows that TSDuck has selected the DVB-T modulator.
# With the ASI set as output, Channel 0 should be the ASI port, and Channel 1 should be the DVB-T modulator

Running DtPlay, instructed to output to ASI (device 1 port 1) switches the output to ASI successfully, and from that point TSDuck can output to the ASI port.
Environment:

OS: Linux
OS version: Linux Mint 20 "Ulyana"
TSDuck full version: 3.26-2349
Installation type: Official release binary, Debian package from tsduck website

Additional information:
There seems to be no issue playing out ASI with DtPlay; in fact it can be used to switch the card into ASI mode as a workaround (play a short null stream through the card with DtPlay).

Hi @philpem
Thanks for reporting this.
Your command is tsdektec -o0 0, meaning "set port 0 in output mode on Dektec device 0".
The output of tsdektec -av is:
* Device 0: DTA-115 (DTA-115 Modulator with VHF/UHF Upconverter)
  Physical ports: 2
  Channels: input: 1, output: 1
  Input 0: DTA-115 port 1 (top), ASI (Uni-directional input, Uni-directional
...

As you may see, the output says "port 1 (top)". So, you should use -o 1. Please retry with -o 1 and then use tsdektec -av again to check if the port has successfully changed direction.
To explain the different concepts:

A Dektec "device" is physical device. Numbering starts at 0. The number depends on the placement on the PCIe bus or the plugin order for USB devices. This is allocated by the Dektec driver.
A "port" is a physical socket on the device. Numbering starts at 1. The number is assigned by Dektec as a built-in characteristics of the device. We cannot change this.
An input or output "channel" is a capability of a port at a given time. Numbering starts at 0. The allocation is done by TSDuck, in the order of ports, considering their current configuration (input or output for bi-directional ports).

I realise that there is one issue with tsdektec. The input/output port numbers should not allow 0. Allowed values should start at 1 since port 0 never exists. To make things worse, the value 0 is internally considered as "value not set, option not used", which explains why tsdektec does not do anything, without even an error message. I just changed this. Zero will no longer be accepted as a port number and you will get the appropriate error message.
One additional point: In issue #771, there was an error setting input/output mode on a DTA-2174B (with a proper error message). This was due to recent evolutions in the Dektec software for devices such as DTA-2174B with internal signal routing capabilities. In that case, it was no longer sufficient to request "output mode" (or input). An additional parameter was necessary to say "output to/from where", with output to the physical socket being one of the options. The problem was fixed in TSDuck and "output to socket" (or input) is now always explicit.
I do not think that this will impact your DTA-115. But, in case you get an error message when setting the output mode, you should try the latest nightly builds (3.27-something) or rebuild from the source repo.

I actually tried "-o1" first -- this is what I got:
$ tsdektec -o1
* Error setting port 1 to output mode: DTAPI_E_INVALID_ARG (DTAPI status 4140)
1 playout@playout-dvbt:~/Videos/recast$

I'm not sure why it's complaining about the argument being invalid... I figured it meant the port number, which is why I subtracted 1.
I'll try the latest nightly.

I've just tried the latest nightly, version 3.27-2384.
playout@playout-dvbt:~/tsduck$ tsdektec -o1 0
playout@playout-dvbt:~/tsduck$ tsdektec -av

Segmentation fault (core dumped)

With the exception of tsdektec -av crashing, tsdektec -o1 0 seems to work as expected, and sets the ASI port to output mode.

The error DTAPI_E_INVALID_ARG  is indeed the one from #771 (good to know that it does not only impact new devices such as DTA-2174B but also older devices without internal routing). So, you need the latest version.
The tsdektec crash is new to me.
Did you recompile from the repo or used the Ubuntu binary from https://tsduck.io/download/prerelease ? I do not know Linux Mint 20 and I am not sure that it is compatible with binaries built on Ubuntu 20. Since you used the Debian binary from the latest version, this may make a difference.
If you used the Ubuntu binary, I suggest to rebuild on your system. Details here: https://tsduck.io/doxy/building.html
If rebuilding is an issue for you, I will manually rebuild a Debian version.

I just uploaded version 3.27-2385 for Debian here: https://tsduck.io/download/prerelease

Mint is an Ubuntu derivative - Mint 20 is based on Ubuntu 20.04 LTS.
I used the packages on https://tsduck.io/download/prerelease/ -

tsduck-dev_3.27-2384.ubuntu20_amd64.deb
tsduck_3.27-2384.ubuntu20_amd64.deb

@philpem, since you mentioned in your original post that you used the Debian packages, could you try the latest Debian binaries I just posted? Or, better, could your recompile from sources?
@izharm, I need your help here. Since you use Ubuntu 20 and the latest Dektec fixes on it, do you have any issue running tsdektec -av?

@philpem, I have quickly setup a Mint VM and rebuilt TSDuck on it (the eighth Linux VM, the eighth distro, on my Mac host). The binaries are here: https://tsduck.io/download/prerelease/
I do not have Dektec devices at home and I cannot test tsdektec -av. Or more precisely it just displays the DTAPI version number (without crashing).

@philpem, since you mentioned in your original post that you used the Debian packages, could you try the latest Debian binaries I just posted? Or, better, could your recompile from sources?
@izharm, I need your help here. Since you use Ubuntu 20 and the latest Dektec fixes on it, do you have any issue running tsdektec -av?

Last I check, a few days ago, it worked just fine.  I can retest latest changes tomorrow.

I've built from source (Git ec03e08) and tsdektec works fine.
The Mint 20 package (tsduck_3.27-2385.mint20_amd64.deb) also works fine.
The binary in the 3.27-2384.ubuntu20 package crashes - which is weird, as tsduck_3.26-2349.ubuntu20_amd64.deb (latest Ubuntu 20 release DEB) works fine (aside from the output-mode bug).
What version of Ubuntu are the packages built on?
I ask because "Ubuntu 20" could mean 20.04 or 20.10, and there's a big difference.
As Mint is based on 20.04, packages for that should install and work cleanly. If you're building on 20.10, then both Mint 20 and Ubuntu 20.04 users will have issues.
I usually build packages in Docker containers to avoid these kind of issues...

What version of Ubuntu are the packages built on?

The Ubuntu and Windows nightly builds are automatically produced using the GitHub Actions CI/CD environment. The Ubuntu GitHub runners always use LTS versions, currently 20.04. The exact list of pre-installed packages can be found somewhere in the GitHub documentation. So, it starts from a pretty standard and clean environment. The script build/install-prerequisites.sh is executed first, then make. The workflow is available here: https://github.com/tsduck/tsduck/blob/master/.github/workflows/nightly-build.yml
The "official" releases are produced on my environment using VM's with latest versions. Next release will be built on Ubuntu 21.04.
The production of Linux binaries is mostly a help for users. There are so many different distros, with so many different versions and alternatives that I cannot address them all. On Linux, there is always the possibility for everyone to easily rebuild.
On Windows, many users do not have the setup to rebuild. I automated the build the same way as on Linux: scripts install-prerequisites.ps1 and build-installers.ps1 used in GitHub Actions CI/CD. Fortunately, the installers seem to work fine on non-prehistoric versions of Windows, despite its myriad of versions and sub-versions.

@lelegard, still need my help ?

@lelegard, still need my help ?

@izharm, no thanks. There was a suspicious crash from the latest build of tsdektec, similar to the one you use. But @philpem made it work with a native build on Mint. The problem seems to be linked to binaries which are built on Ubuntu 20.04 and installed on Mint 20. The exact root cause of this inconsistency remains unknown, though.

@lelegard I've recently built the latest master branch and running "tsdektec -av" results in a segmentation fault. I'm running Ubuntu 20.04, let me know if you need any more details.

Automatically closed after 211 days without update and "close pending" label set.


Nginx Ingress Controller Missing service-l7.yaml

I believe that you intended for this file to be in the distrubution to be edited with the ECM ARN https://github.com/kubernetes/ingress-nginx/blob/master/deploy/provider/aws/service-l7.yaml

Are you saying that the instructions to edit the file are not available in the instructions?

There is no copy of or link to the file - I had to go find the ingress-nginx project and get the file manually from there.
It would also be good to have an example of exposing a service via this in the section as well.

The ingress-controllers section was added 3 days ago and is not ready for full testing yet. Can you update the instructions as you are moving along and send a PR?

Done


Cant import Session to get OneDrive API client object based on customer's access_token.

It seems that __init__.py of onedrivesdk doesn't contain from .session import Session anymore, so I can't import Session from onedrive module.
I need Session class to get able to access to onedrive api upon customer's access_tokens which I handle myself. See https://github.com/OneDrive/onedrive-sdk-python/issues/54

Imported it like that: from onedrivesdk.session import Session

Obtaining customer access_token like described here:
https://docs.microsoft.com/en-us/graph/auth-v2-user?context=graph%2Fapi%2F1.0&view=graph-rest-1.0
I am able to use file API via HTTP REST, but get 'unauthenticated - Authentication failed' when try to get onedrivesdk client using this access token. Scope is files.readwrite.appfolder.

We should use exactly this auth flow:
https://docs.microsoft.com/en-us/onedrive/developer/rest-api/getting-started/graph-oauth?view=odsp-graph-online#code-flow
with onedrivesdk library.
This flow gives proper tokens for this lib.

@remort if you solved your issue consider closing or changing your title.

@KTibow documentation should be updated at least for this issue to be solved.

@remort I'm confused what your issue was. The onedrive-sdk docs work for me.

Thank you for reaching out and for your patience. This SDK is being officially deprecated. See #209 for more information


parse() should fail for invalid UUIDs

Presently if you ask parse() to parse an invalid UUID, it'll just return a list of zeros.
This makes error handling bizarre. Failing to parse should result in an error, not a value.

Thanks for bringing this up. You are right, should return an error.
I'll provide a validate function. And then use it in parse before parsing.
I'm a bit swamped this week but I'll try to get to it soon.

Maybe we could also make it throw an exception? We don't have a stable 3.0.0 release yet, so there's room for breaking changes and I think this would make the api more consistent.

made the changes in 3.0.0-nullsafety.1, please give it a try and open a new ticket if its broken or other requests.

I second @simolus3 's opinion here, error semantics in Dart are conveyed through extensions and the idiomatic thing to do in this case would be to throw one.

Makes sense. And this is a good time to do it. Well the latest nullsafety version throws exceptions. So that should cover this.


0.5.0 unpublished from npm?

https://libraries.io/npm/hapijs-status-monitor/versions
I'm pretty sure I used it with npm since it was released, but now it gone?

@millette
$ npm view hapijs-status-monitor version
0.5.0

I think it's a caching problem, see https://github.com/npm/www/issues/53

Thanks for following up. Nothing was working for me yesterday, pretty sure I was cursed.

https://www.npmjs.com/package/hapijs-status-monitor now displays the correct version. 🎉


Plan changes to Android annotation API

When starting work on #1154, I noticed it can't be implemented as easily as we were hoping, for the following reasons:

The code currently located in the Annotations repo has classes like Symbol, Fill and so on, that
the older implementation in maplibre-native does not have.
Instead, it has the classes Marker, Polygon and more that imitate the Google Maps API and call some native code: https://github.com/maplibre/maplibre-native/blob/749458d6c866223c4966b0c6734b8d5cd8ad9744/platform/android/MapboxGLAndroidSDK/src/cpp/native_map_view.cpp#L655-L673
This native code itself has classes like FillAnnotation, SymbolAnnotation  and probably generates Geometry somewhere, which the annotations code also does, but not in C++ code.
Because the old API (deprecated and in maplibre-native) tries to immitate the Google Maps API whilst the new one (in annotations plugin) does not, there is no obvious path towards moving the code whilst un-deprecating the deprecated methods like we planned, without making the migration from the current API – which I imagine most users are using – unnecessarily complex.

Due to these considerations, we should make a plan for how we want the API to look like in the future. Some points that I think are important for this, regarding what aspects are nice about each of the APIs:

The old API had methods directly on the map object that allowed to addMarker, not bothering users with creating an object like SymbolAnnotations. I like that.
In total the two APIs are quite similar obviously (which is why we considered a merge in the first place); their user-facing renamings are pretty much a matter of taste – but it makes more sense to stick with the new terminology (Symbol, Fill) which is also used internally instead of trying to pretend to be Google Maps.
In certain places, the newer annotations API has the user wangle more with its internals. Here is one example of this: SymbolOptions.withIconImage takes a String that references the icon, and it is the user's responsibility to put their resource into the style, whereas Marker.setIcon takes an Icon object where it is easy to find out how to construct it. The latter is much preferrable and we should keep such an easy interface for the future.

Goals of this issue:

Create a concrete design proposal for changes to the API for annotations in Android.
The API should be a part of maplibre-native according to this design proposal.
It should aim to be harmonic and user-friendly, and create as few friction as necessary for existing users of the annotations plugin during migrations.

I was asked my opinion on the two PRs above, so here it is :blush:.
I don't exactly know the implementation details, but this does not seem like a super quick task (this issue is 2 weeks old, and there are discussions about it from at least a month ago). Since the plugins seem to have been unmaintained for a while (last released artifact is from 2021, CI is failing, ...), I guess it makes sense to give them some attention :+1:.
Now personally, I have a couple concerns, which are:

If the plugins are merged "as-is" and stay unmaintained in the main repo, that's actually harder for us: it is easier for us to maintain a fork (and corresponding Maven artifact) of a single plugin than having to fork the main repo just for our small fixes.
If the plugins are actually re-designed/rewritten, then my concern is that we may lose features that we currently need, which would force us to either fork the whole project or go somewhere else (e.g. we can't use GoogleMaps because their markers are not powerful enough).

I guess my point is that as long as those changes don't prevent us from using MapLibre and we somehow see a way to get our fixes upstream, then that is fine.

@JonasVautherin MapLibre Native has a paid maintainer (me!) so I would not worry about not being able to upstream changes. Feel free to ping me on Slack at any time, I'll likely respond pretty quickly during office hours in Europe.
The reason why the plugins repo is stale is because bringing it to a good state again would require a lot of duplicate work that has been done for the main repo. We now have pretty good CI for this repo, including for example even running the UI tests for Android on AWS Device Farm.

If the plugins are actually re-designed/rewritten, then my concern is that we may lose features that we currently need

We will make sure no functionality is lost. This issue just exists to make a design proposal, you will be able to comment on it when it is done.

@JonasVautherin I think the question this issue raises is: are there any specific design choices that have bothered you when working with the API for annotations in the past, something that could be made more user-friendly by designing it differently? Then we can consider it when writing the proposal in the first place.

I think the question this issue raises is: are there any specific design choices that have bothered you when working with the API for annotations in the past, something that could be made more user-friendly by designing it differently?

I think @RomanBapst can comment better on this, but to me it seems like it was pretty fine.

That said, would you want to help to make an official release of the plugins package?

Honestly I did not manage to build https://github.com/maplibre/maplibre-plugins-android, so instead I made the plugin we modify standalone (https://github.com/ramani-maps/maplibre-plugins-android/tree/main/plugin-annotation).
I could change it such that I can ./gradlew publish and it would push it to your Maven repo (I am used to Sonatype, not sure what you use). Either from your repo (if my PRs get in :innocent:) or directly from our fork, if you want.
Would that help? Or is it not what you were asking?

@fynngodau

I think the question this issue raises is: are there any specific design choices that have bothered you when working with the API for annotations in the past, something that could be made more user-friendly by designing it differently? Then we can consider it when writing the proposal in the first place.

I have been working with the newer API (e.g. CircleManager) in the last couple of weeks and was quite happy with it. There are some really weird things like Text not being loaded on the map when you don't have an internet connection (I live somewhere in Tasania in the bush and that can happen :-p).
But mostly I found that it gives you great flexibility (after some small mods in the annotation repo) to be creative about what you draw on the map. I also really like that fact that all annotations types expose drag events which is really really important.
I would be really careful to reduce this flexibility, let me try to explain with an example. In the past I have been using google-maps-compose for an app where I wanted to create an interactive polygon where the user should have been able to drag the vertices of the polygon around. The lib offered a Marker element which supported dragging but only after a long press. Additionally, the Marker internally implemented behavior which would make the icon jump out from below your finger to make it easier to place it. That may make sense for a standard marker on the map but not for that use case. I did not find a way around this and had to abandon the lib for that project.
I think you can easily create convenience elements like Markers but that should not come at the cost of flexibility. I think the two things can easily co-exist.

@RomanBapst @JonasVautherin Thanks for your input.
@louwers Feel free to assign the issue to me, so I can start working on it.

@RomanBapst @JonasVautherin My proposal is here: https://github.com/maplibre/maplibre-native/pull/1255
Feel free to comment in that PR :slightly_smiling_face:

This bounty can be paid out.

Invoice: https://opencollective.com/maplibre/expenses/147683


Character '&' is only available in array mode!

Not sure what it is. So better to ask you. A following LaTeX math
\begin{align*}a&=b+c\\d+e&=f\end{align*}

throws exception
Character '&' is only available in array mode!

This is due to the way the parser works. align* is just not implemented. You could use align (it also doesn't number equations) or implement it.

I won't do PR. I have my own tasks. Ok. I understand you. Thank you.


Fix for: App crashes when splitting a bill offline

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/14355
PROPOSAL: https://github.com/Expensify/App/issues/14355#issuecomment-1386189985
Tests

Split bill

Open the global create menu (big green heavy_plus_sign)
Select Split Bill
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "Split" to finalize the request
Verify that no crash occurs

Split bill with multiple users

Open the global create menu (big green heavy_plus_sign)
Select Split Bill
Enter an amount
Select multiple users who you have never chatted with before
Add a memo to the request
Select "Split" to finalize the request
Verify that no crash occurs

Request Money

Open the global create menu (big green heavy_plus_sign)
Select Request Money
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "Request" to finalize the request
Verify that no crash occurs

Send Money

Open the global create menu (big green heavy_plus_sign)
Select Send Money
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "I'll settle up elsewhere" to finalize the request
Verify that no crash occurs

[x] Verify that no errors appear in the JS console

Offline tests

Split bill

Open the global create menu (big green heavy_plus_sign)
Select Split Bill
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "Split" to finalize the request
Verify that no crash occurs

Split bill with multiple users

Open the global create menu (big green heavy_plus_sign)
Select Split Bill
Enter an amount
Select multiple users who you have never chatted with before
Add a memo to the request
Select "Split" to finalize the request
Verify that no crash occurs

Request Money

Open the global create menu (big green heavy_plus_sign)
Select Request Money
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "Request" to finalize the request
Verify that no crash occurs

Send Money

Open the global create menu (big green heavy_plus_sign)
Select Send Money
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "I'll settle up elsewhere" to finalize the request
Verify that no crash occurs

QA Steps

Split bill

Open the global create menu (big green heavy_plus_sign)
Select Split Bill
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "Split" to finalize the request
Verify that no crash occurs

Split bill with multiple users

Open the global create menu (big green heavy_plus_sign)
Select Split Bill
Enter an amount
Select multiple users who you have never chatted with before
Add a memo to the request
Select "Split" to finalize the request
Verify that no crash occurs

Request Money

Open the global create menu (big green heavy_plus_sign)
Select Request Money
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "Request" to finalize the request
Verify that no crash occurs

Send Money

Open the global create menu (big green heavy_plus_sign)
Select Send Money
Enter an amount
Enter the email of exactly one other user who you have never chatted with before
Add a memo to the request
Select "I'll settle up elsewhere" to finalize the request
Verify that no crash occurs

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
https://user-images.githubusercontent.com/11609254/213303646-0fc5a599-b23c-4420-8f13-2673a8d090b6.mp4

Mobile Web - Chrome
https://user-images.githubusercontent.com/11609254/213301749-1eab362e-81c6-4c6e-b6b3-e7adcdd51be8.mp4

Mobile Web - Safari
https://user-images.githubusercontent.com/11609254/213301771-5fc43be7-b691-4b17-9c12-7f6647880e92.mp4

Desktop
https://user-images.githubusercontent.com/11609254/213301835-f9597eae-b224-499d-a492-633dd12d92a8.mp4

iOS
https://user-images.githubusercontent.com/11609254/213301865-b4ac0cea-3ee1-498b-9f68-ba6304b63739.mp4

Android
https://user-images.githubusercontent.com/11609254/213301894-3fc4bf31-1524-4aff-9689-9d41a16df2cc.mp4

Changes are looking good. I will review it first hour tomorrow (NPT).

Screenshots/Videos

Web
https://user-images.githubusercontent.com/25876548/213628310-d7a97821-129f-4d5c-8e71-a9645c8a9249.mov

Mobile Web - Chrome
https://user-images.githubusercontent.com/25876548/213630786-433b81a6-88c1-4bfb-9044-c610e0516e69.mov

Mobile Web - Safari
https://user-images.githubusercontent.com/25876548/213631164-dbfe29b8-8fe5-4859-ad20-a28347823783.mov

Desktop
https://user-images.githubusercontent.com/25876548/213628805-b2593aca-d415-49a7-95fb-82bcaddd904e.mov

iOS
https://user-images.githubusercontent.com/25876548/213629786-cc694f3f-1222-4c57-88ec-007da99593d3.mov

Android
https://user-images.githubusercontent.com/25876548/213630451-a4b18eb0-c95d-49c9-b56b-875802eb1b60.mov

Found following bug while testing this PR. This bug exists in staging as well.
Action Performed:

Go offline
Request money to a new user (user without chat history with you)
Again Request money and send money to the same user.
Go back to online

https://user-images.githubusercontent.com/25876548/213631649-8829581d-380f-4438-b897-f31bd9a3a28e.mov
Reported in slack: https://expensify.slack.com/archives/C049HHMV9SM/p1674196658400309

@Ollyws Can you please incorporate Request Money, Send Money, Split bill with multiple users as well in Test, Offline Tests and QA steps.

@Ollyws Thanks for the update.
Changes look good and test well.
🎀👀🎀 C+ reviewed
cc: @yuwenmemon

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/yuwenmemon in version: 1.2.59-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/luacmartins in version: 1.2.59-1 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


TabWidth fails to apply properly to the preview when changed from default

I'm working on setting up a personal clang-format, and I'd like to use tab indents with a width of 2 characters. However, this does not apply correctly into the preview pane, making it difficult to predict how this is applied.
Clang-format will calculate the correct number of tabs to apply as an indent for the specified TabWidth, however the preview pane does not update its internal tab width, which remains at four characters. Therefore, anything that is tab-indented will show in the preview as being indented the right number of tab stops, but with double the width of what it should resolve to.
I was able to manually override the Ace Editor's setting using the JS console, by executing the following code: ace.edit("Ace editor").session.setOption("tabSize", 2);

@DragRedSim thanks for your bug report, I'll fix this

@DragRedSim I fixed the issue, could you double check that current behavior is correct, please?

@DragRedSim I fixed the issue, could you double check that current behavior is correct, please?

Looks good to me!


OCM-11911 | ci: fix id:75927,55883

https://privatebin.corp.redhat.com/?5b8f1b42307ce585#2kXXwkSgJaox3UcnT5u8bdGjQbc9jxe6f6wnSCahszKU

@yuwang Please look at it again, Thanks

@yuwang-RH Please look at it again, I pasted the log, tc id 55883 gives timeout error on local

/lgtm

/lgtm


[Widgets] Rename ConversationalWidget to ChatWidget

About the widget, WDYT of renaming it ChatWidget to be consistent with ChatMessage and WidgetExampleChatInput ?

Originally posted by @Wauplin in https://github.com/huggingface/huggingface.js/pull/510#pullrequestreview-1903433932

🤷
well the tag itself will still be conversational, so no strong opinion

I would keep consistent with the tag

And what about changing the tag to chat as well? (with backward compatibility?) 🤔
This way we definitely settle the fact that we are aligned with the Chat API?
(not too strongly opinionated either if that's too big of a change)

changing tags sounds not worth it personally

Let's close it then.


postgres should be installed before npm install

Hi @scenaristeur, any feedback on the question above?

Closing as stale


Fix serialization of null @nullable fields: omit them entirely.

For https://github.com/google/built_json.dart/issues/23

This change is

lgtm. Thanks

Thanks, improved the test as suggested. Merging+publishing.


Mock external requests in sitemap tests

As a developer
I don't want to wait for slow network requests to run test suite
So that I don't avoid running them frequently and they aren't susceptible to side effects
Currently, running composer test takes too long due to fetching external resources in the sitemap tests.
We should use local test data to simulate the responses we see from current external resources.
Sitemap test scope should at least cover:

dealing with valid sitemap responses
dealing with invalid sitemap responses
dealing with network errors (3xx, 4xx, 5xx)

@palmiak suitable for Hacktoberfest?

for now, running the sitemap external request tests fail on GH Actions runner due to access blockage.
we can mark tests with a group as "external requests" as per phpunit docs:
--exclude-group

Exclude tests from the specified group(s). A test can be tagged as belonging to a group using the @group annotation.

This will allow to keep running those locally, but skip on CI and optionally allow users to skip those slow external requests when testing locally, by passing same --exclude-group argument


Add test case for MessageWrapper

Code classes that need to develop unit tests:

cn.hippo4j.common.monitor.MessageWrapper

Please refer to the manual for the first contribution: guide
Unit test development refers to the following two examples:

cn.hippo4j.core.executor.DynamicThreadPoolExecutorTest
cn.hippo4j.core.executor.ExtensibleThreadPoolExecutorTest

Please assign it to me.

@barret-yzh Welcome


Improved formatting of single and multi progress bars.  Added light C…

Here is an attempt to better format the progress bars.  Some notes:
The ipywidgets library has come a long way and provides some useful tools for modifying CSS properties and laying out widgets, but not all CSS properties are exposed in its API.  Some useful ones like padding and margin must still be specified manually, so there is some manual CSS code embedded in the HTML() objects here to achieve reasonably good looking results.
The updated progress bars behave as follows:

Elapsed time is shown at the top.  If the computation fails for some reason, the text changes to reflect  an error condition has occurred, and it notes the final elapsed time.
The progress bars are roughly aligned with the center iPython notebook.  This leaves a healthy amount of space for the text labels on the left side of the progress bars, since function names are often quite long.  The label width is fixed at 300px, and label names wrap if they are too long.
Added the num_completed / num_total display for multi = False. In general, styling and output for multi = True and multi=False should be identical, so a mix of both look good in the notebook.
Progress bars no longer fill up to 100% when a computation fails, though they still turn red.  (It's sort of useful to know how far the computation got when it failed.)

@mrocklin, let me know if you have any feedback!

This looks great to me. Aligning and slimming the bars, justifying the text, and making the elapsed time boldface really provide a much cleaner visual.
Some thoughts:

Center justification of the progress bars feels off.  My focus usually hugs the left side of the notebook with all of the code.  I'm not sure how left aligning the bars would fit with the space for function names though.  Perhaps this can be resolved just by eating into the 300 px budget a bit.
We'll have to tweak some of the tests.  I can do this if you'd prefer to stick to visuals.  If you're interested I usually test by running py.test distributed --doctest-modules within the root directory of the repository.
Should we sort the bars by anything?  Name?  Number of tasks?
Somewhat unrelated, but I'm noticing now a flaw where a progress bar run immediately after a submit on a failing task fails.  Have you noticed the same?

Great!  Thanks for the feedback.  I made these changes:

Did away with nested HBox and VBox's.  Those were debugging detritus.
Sorted the list of function names alphabetically for now, with the exception that 'finalize' is always last.  Glad to sort by some other key if you think something else makes more sense.
I switched things around so that labels appear to the right and num_completed / num_total progress counters appear to the left of the progress bar.  This allows for a more left-justified look.  Do you like it better?   The progress counters still have a fixed 140px width, which should be enough in most cases but  functions with large numbers of associated tasks are going to overflow the allotted width and create some wonky formatting.  What we need is something more like a grid layout.  Perhaps ipywidgets will add such a layout eventually, and we can patch it further at that point.
I haven't yet noticed the problem you are describing with a progress bar failing when running after a failed task, but I can imagine that's an edge case that needs special handling.  I'd be glad to roll that into this PR, though you may need to point me to where those changes need to be made since I'm still digesting the codebase.

I'd like to learn how to run the unit tests.   At the moment, these tests seem to be failing on my machine.  Currently this is what I see:
distributed/center.py .
distributed/client.py .sss.s.
distributed/core.py .s
distributed/diagnostics.py .....s
distributed/executor.py s.sssss
distributed/hdfs.py ss
distributed/scheduler.py ...
distributed/utils.py s
distributed/worker.py .
distributed/tests/test_center.py .
distributed/tests/test_client.py FFF.FFFF
distributed/tests/test_cluster.py s
distributed/tests/test_collections.py
... at this point the tests seem to hang ...

Perhaps we can walk through the tests together on the phone tomorrow.
Glad to make further adjustments.  Let me know what you think.

Ok, I managed to fix most of the errors in test_widgets.py based on the output of the Travis builds.  There is one remaining error on line 281 of test_widgets.py that seems (to me) like it should be passing.  Any idea why it failed?

An image of current state for posterity:

I like it!  Feels more compact.
281, assert all(b.value == 1.0 for b in p.bars.values()) is no longer true because one of those bars is an error and we're no longer setting value to 1.0 on an error.
Not sure what's up with the failing tests.  At this point I would probably

See what's up with the client tests, perhaps that provides a clue
Look at the logging output with py.test --doctest-modules -s distributed

There are various places where, if an error occurs the system doesn't crash immediately and just sort of hangs.  This is somewhat due to dealing with many coroutines.  In most of these cases we've at least set up decent logging so that the errors should be evident, even if they don't crash the system explicitly.
I'm quite happy to handle the issue I brought up in point four.

I've added tests and merged this.

Hooray!  Very exciting.


Avoid exceptions for request without Content-Type header

Description
If a non-bot request comes to the server, it raised an exception because some request may not have content-type header.
Specific Changes

Improved the condition to check if the content-type header is present before checking its value.

Testing

Nothing new added.

We can't make changes to previous release branches.  Is this still applicable to main?

I’m afk now. I will look at it in 2 weeks.

@tracyboehrer I looked at it an the affected files has not been changed since then. Hence, the same change applies also to main. I am closing this and opening a new PR into main: https://github.com/microsoft/botbuilder-python/pull/1961


-OneDriveSharedByMemberOf parameter missing

I am missing the -OneDriveSharedByMemberOf parameter and a few others even after being on the latest version 2.0.4 of the Exchange Online PowerShell V2 module. How would I get this cmdlet to be displayed?

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

ID: cee91383-5198-3793-28c3-f79c233556c2
Version Independent ID: 01fc839a-d2e6-45ea-b58e-d696b74d02a2
Content: Set-DlpCompliancePolicy (ExchangePowerShell)
Content Source: exchange/exchange-ps/exchange/Set-DlpCompliancePolicy.md
Service: exchange-powershell
GitHub Login: @chrisda
Microsoft Alias: chrisda

@BSiefferman, the version of the EXO V2 module only affects the cmdlets that are actually in the module (see [here]https://docs.microsoft.com/powershell/exchange/exchange-online-powershell-v2#how-the-exo-v2-module-works. The vast majority of cmdlets in the Exchange Online PowerShell or Security & Compliance Center PowerShell universe are only available after you connect to your organization via remote PowerShell.
We recently published a bunch of new parameters for New/Set-DlpCompliancePolicy. It's possible that the parameters haven't been distributed to all of the data centers yet, or some of the parameters might be in some level of Preview (not available to everyone).
RBAC might also play a role. Apparently, the OneDriveSharedByMemberOf parameter requires any of the following roles (all of which are assigned to the Organization Management role group by default):

Organization Configuration
Compliance Admin
Security Admin
DLP Compliance Management

@BSiefferman Hope this comment is helpful for you. If you see a documentation update is required, please feel free to open an issue for the same. We proceed here to close it. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.


Update README.md

headers currently not supported as a value in format.output.fields

@jbao Sorry for late response, but headers are supported right now. So I have to close this one


Remove an extra async apply forwarding that is overloaded already

Fixes #3195
Proposed Changes
Remove an unwanted apply forwarding.

What is the rationale of this change? If the futures_factory was created with an executor, this executor should be used to schedule the task. If we applied this patch, then
 pool_executor exec{"foo"};
 auto f = async(exec, ...)

would schedule the task on the default pool instead of on the requested one.

As an alternative (to make things more consistent) we could either rewrite the implementation of async for thread-executors (like pool_executor, see https://github.com/STEllAR-GROUP/hpx/blob/master/hpx/parallel/executors/thread_execution.hpp#L47-L57) or we could change future_factory to always use an executor to schedule things, even if it was not created with one. The second however, would probably complicate things even further.


missing entry in spec file for property "admin_password_for_smoketest"

Hi team,
Trying to deploy Harbor as per README.md on AWS with necessary changes in Cloud-config.
Deployment broke-down with following error,
Link property admin_password_for_smoketest in template harbor is not defined in release spec
Post investigation, found that,
Smoke-test  job in manifest consumes, harbor provider. Which provides bunch of properties.
https://github.com/vmware/harbor-boshrelease/blob/master/jobs/harbor/spec#L29-L40
An entry  for 'admin_password_for_smoketest' was missing in spec file.
Added same and created a dev-release, which results in successful deployment and passing of Smoketest.
did anyone else face this issue, if yes is this a correct solution or  any other solution is there.

I have run into this issue as well.

@mandar14  and @naulta  I did put a PR to fix this. I'm still waiting on someone to merge it.
https://github.com/vmware/harbor-boshrelease/pull/53

In the deployment yml just defined the admin_password_for_smoketest is ok.
instance_groups:
- name: harbor-app
  azs: [az-1]
  instances: 1
  jobs:
  - name: harbor
    release: harbor-container-registry
    properties:
      hostname: ((hostname))
      db_password: ((harbor_db_password))
      admin_password: ((harbor_admin_password))
      admin_password_for_smoketest: ((harbor_admin_password))


karma-systemjs breaks with systemjs / es6-module-loader 0.17

Karma-systemjs seems to be broken with systemjs and es6-module-loader 0.17, which are the versions you currently get with npm install systemjs es6-module-loader. The specific errors I ran into were (1) System.config not being defined as a function, and (2) Promise not being available [at least in PhantomJS].
I didn't troubleshoot too much, but I can confirm that these issues aren't present when manually using the latest 0.16.x of systemjs / es6-module-loader instead if that helps!
(Thanks for this project, by the way)

Thanks for the heads up.
Looks like there's a few breaking changes in 0.17 I'll need to account for:
https://github.com/systemjs/systemjs/releases/tag/0.17.0
Lots of shiny new features too (Thanks @guybedford + contributors!)
The missing Promise issue should be solvable by including system-polyfills.js.
I'll review how karma-systemjs handles es6-module-loader (I don't think it checks the SystemJS config for a paths['es6-module-loader']) and make sure it now does the same for system-polyfills.
Not sure about the 'System.config' undefined issue though.
Could be the System.baseURL = ... setting in adapter.js - I'll dig into it once I get home.
Will also need to check System.defaultJSExtensions to disable the .js extension handling going on.
(Much appreciated :smiley: )

Should be fixed with b118c7c117460adce48297bfebf34d38ddd9b53c - published as 0.5.0
The require.resolve() path for SystemJS had changed slightly with 0.17.0, which is why you were getting "System.config is undefined" errors.
I recommend adding a systemjs entry to the paths in your SystemJS config (A little recursive, I know) so it doesn't affect you in the future.  In fact I'm going to deprecate the require.resolve() lookups with #24
It now adds system-polyfills.js to the list of files just before SystemJS.
Looked up as system-polyfills in SystemJS config.
Also the .js extension is left alone for module names, unless System.defaultJSExtensions = true.
Should solve all your issues.  Let me know if you still have any problems.

I'm going to assume all is well - closing.

Whoops, sorry for the lack of followup @rolaveric - yes, I can confirm that this works now.