Support uploading file to e2b code interpreter tool

Closed in favor of: https://github.com/run-llama/create-llama/pull/355


add match_path option to filter files

Closes: #11
This adds a match_path option which should be a regex pattern matching the path to your files within the docs_dir. For example if you had a blog under docs/blog where docs_dir is docs you might use:
match_path: "blog/.*"

There aren't really very many tests so it's hard to demonstrate that this works. The best I can do is show you that it works on my site:

Site: https://rmorshea.github.io/
Source: https://github.com/rmorshea/rmorshea.github.io

Codecov Report

Merging #43 (363f548) into master (35ce486) will increase coverage by 0.03%.
The diff coverage is 50.00%.

@@            Coverage Diff             @@
##           master      #43      +/-   ##
==========================================
+ Coverage   37.93%   37.96%   +0.03%
==========================================
  Files           5        5
  Lines         290      295       +5
  Branches       54       55       +1
==========================================
+ Hits          110      112       +2
- Misses        175      178       +3
  Partials        5        5

Impacted Files
Coverage Δ

mkdocs_rss_plugin/plugin.py
33.72% <ø> (ø)

mkdocs_rss_plugin/util.py
25.31% <40.00%> (-0.01%)
:arrow_down:

mkdocs_rss_plugin/customtypes.py
100.00% <100.00%> (ø)

Thanks, it looks good to me.
Before I merge it, could you add it to the configuration page into the docs please?
And please, edit your PR description to mention you removed the IDE configuration files.

@rmorshea some questions:

is it possible to combine multiple paths pattern?
is it possible to use the an excluding pattern?

@Guts I think having two different patterns include_paths and exclude_paths might be useful (this is what black does for example with --include and --exclude) however, a regex pattern is definitely powerful enough to match multiple directories.
The following would include everything under dir_1 and dir_2 except for dir_1/sub_1 and dir_1/sub_2
include_paths: (dir_1|dir_2)/.*
exclude_paths: dir_1/(sub_1|sub_2)/.*

Another thing I'm realizing is that this doesn't normalize the paths. So if you were on windows you'd have to use a different path matching pattern that uses \ instead. Not too hard though, pathlib can do that.

@Guts I think having two different patterns include_paths and exclude_paths might be useful (this is what black does for example with --include and --exclude) however, a regex pattern is definitely powerful enough to match multiple directories.
The following would include everything under dir_1 and dir_2 except for dir_1/sub_1 and dir_1/sub_2
include_paths: (dir_1|dir_2)/.*
exclude_paths: dir_1/(sub_1|sub_2)/.*

Thanks @rmorshea for your inputs.
I just had black (and precommit) in mind, so I was wondering if you're interesting in proposing something similar here?

@Guts, I'm a little stretched for time at the moment so I'm not sure when I'll be able to get to this.

@Guts, I'm a little stretched for time at the moment so I'm not sure when I'll be able to get to this.

Ok. So I propose you to merge here until you, me or someone else implement the include/exclude mechanisms.

Created an issue to track the request for include/exclude patterns.


Pathplanner doesn't launch on my computer

Pathplanner will no longer launch on my Windows 11 computer. It definitely hasn't worked since updating to the newest Windows version (22H2), but I honestly don't know if the update caused it to not work. I know it was working some time (like a month) before updating, and it isn't working now (like a week after updating). I've tried uninstalling and re-installing from the windows store, as well as downloading the exe directly and running it, but the app didn't launch in either of those cases.

This is really hard to diagnose so can you install flutter and run the app in debug mode?
AppPath=C:\Program Files\WindowsApps\39956MichaelJansen.FRCPathPlanner_2<IP_ADDRESS>_x64__x7a2cjep50mda\pathplanner.exe
NsPartner=windows
NsGroup=windows8
ApplicationIdentity=577650238B5120865022B9F6B617F78B
MetadataHash=-1633586243```

We (3467) are also experiencing the same issue, Windows 11 22H2. Can you post more specific instructions on how to grab the debug info you need?

Follow these instructions: https://github.com/mjansen4857/pathplanner#how-to-build-manually
Make sure you use flutter run to run in debug mode. I'm assuming this is an issue with the 22H2 update messing up some dependency needed to run. Building manually could potentially install these dependencies and work fine. If that doesn't work you could try installing Visual Studio Community (make sure the "Desktop Development with C++" module is installed with it) which might fix it as well. If all that fails then I don't think there's much I can do besides wait for a flutter update to fix the issue.

Some initial searching led me to this issue: https://github.com/bitsdojo/bitsdojo_window/issues/190
Working on building from source now.

It looks like Bitsdojo Window library was removed in May, but there hasn't been a release since March. Is it possible to send a newer Windows binary over? The Flutter setup is taking quite a while.

After running the latest version with flutter run this confirmed my suspicions. The issue was likely bitsdojo_window. I'll build a new version for Windows and post it here for anyone still having this problem.

Yeah that sounds right. Here's the one i built that includes some redistributables that some people might not have so its better to use this one. Keep in mind this version might have unknown issues and pathplanner lib doesn't support all of the functionality if you're using the release version.
PathPlanner-windows.zip

Beat me to it! We'll use this one for now. Thanks for your help.

I have the same problem, here is what I got after running in debug mode.
Launching lib\main.dart on Windows in debug mode...
Building Windows application...
[ERROR:flutter/shell/platform/windows/direct_manipulation.cc(137)] CoCreateInstance(CLSID_DirectManipulationManager, nullptr, CLSCTX_INPROC_SERVER, IID_IDirectManipulationManager, &manager_) failed
Syncing files to device Windows...                                 518ms
Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application running).
c Clear the screen
q Quit (terminate the application on the device).
💪 Running with sound null safety 💪
An Observatory debugger and profiler on Windows is available at: http://<IP_ADDRESS>:61441/03JnHKQdgtI=/
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ RangeError (index): Invalid value: Valid value range is empty: 0
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ #0   List.[] (dart:core-patch/growable_array.dart:264:36)
flutter: │ #1   Trajectory.calculateVelocity (package:pathplanner/services/generator/trajectory.dart:187:13)
flutter: │ #2   Trajectory.generateSingleTrajectory (package:pathplanner/services/generator/trajectory.dart:87:5)
flutter: │ #3   Trajectory.generateFullTrajectory (package:pathplanner/services/generator/trajectory.dart:67:30)
flutter: │ #4   RobotPath.generateTrajectory. (package:pathplanner/robot_path/robot_path.dart:79:46)
flutter: │ #5   new Future. (dart:async/future.dart:253:37)
flutter: │ #6   _rootRun (dart:async/zone.dart:1383:47)
flutter: │ #7   _CustomZone.run (dart:async/zone.dart:1293:19)
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 08:10:16.131 (+0:00:01.484156)
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ ⛔ Dart Error
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Lost connection to device.

Yeah that sounds right. Here's the one i built that includes some redistributables that some people might not have so its better to use this one. Keep in mind this version might have unknown issues and pathplanner lib doesn't support all of the functionality if you're using the release version.
PathPlanner-windows.zip

This download doesn't work for me either

Just tried to run the same application since yesterday and can't get it to start nor the version I built, but running with flutter run in debug mode starts fine.

Can flutter run build the app without an Internet connection?

@Gameknight77YT it looks like one of your path files is messed up for some reason. Try removing them from your robot project and see if it will launch then.
@ehamwey No idea why it would work in debug mode but not release mode. Only thing I could think of would be to run in debug mode and just don’t close it. I guess worst case you can just connect to a hotspot or Wi-Fi to run it again. Unfortunately flutter checks for dependencies every time you run so you need to be online. There should be a log file in C:/Users/{YOUR USER}/AppData/Roaming/pathplanner something (don’t remember the exact folder) check that after trying to open the built app and maybe it will have something.

@Gameknight77YT it looks like one of your path files is messed up for some reason. Try removing them from your robot project and see if it will launch then.

I did that and it is working now.  I then readded them one at a time.  The problem was one of them had an endpoint that was also a stop point.

That probably happened when you deleted another point in the path. I'll make a separate issue to fix that.

@ehamwey when you get a chance can you pull changes for the repo and see if builds you make will run now? I fixed a crash that may have been what caused your builds to crash but I'm not sure. If not then I'm really not sure what's going on there unless you can find some error output.

We had to flutter pub upgrade to get the builds working, but once it was built we have an offline version that works. Thanks for your help again. I think I may have moved the Release folder out of the build directory originally which messed with the binary paths.

Looks like after a reboot the built binary does not run. Any thoughts?

Is there anything in %AppData%/com.mjansen4857/pathplanner/log.txt?

Negative - it's empty.
We were getting an error relating to how the built directories were moved, which seemed to have fixed itself once we connected to WiFi? So I'm trying a clean and build in the final destination directory to see if that resolves things, then we're rebooting and testing offline.

Moving the built app shouldn't do anything. Just to confirm, after building you're running the exe in pathplanner/build/windows/runner/Release right?

Yep - moving the entire pathplanner folder.
Seems like it will run on WiFi, but not with WiFi off.

By WiFi on/off do you mean connected/disconnected from a network or actually turning the WiFi off in the settings?

Never mind, I can reproduce it. This is something, thanks. I'll look into it.

I'm going to try on Flutter 3.3.4, we're currently running 3.5.0 because of the method we installed it by. I don't think that should fix the problem but will try anyway.

Found the issue and fixed it. Was a quirk of how dart try/catch blocks work so checking for PathPlannerLib updates would crash. Pull changes and try again.
I'd definitely use 3.3.4 as well since 3.5 is a beta and I'm currently using 3.3.4.

So assuming that's fixed, I believe the original issue this thread is based on is a problem with the 2022 version that is not present in the main branch. Here's a pre-release build of the main branch for anyone else finding this issue later:
pathplanner-windows.zip
I'll close this after the 2023 version is released.

Will try this and report back.

That did the trick (hopefully for good!)

Beta is released now so I'll close this


docker cleanup issues

The list of currently known issues is:

[ ] the current state of the cleanup script still interferes with the builds: https://github.com/ros-infrastructure/buildfarm_deployment/issues/46#issuecomment-75383634
[ ] cleaning up until 50% disk space is free is wasting valuable resources on the slave
[ ] the disk cleanup is slower in freeing disk space than new data is generated while the farm is busy (which disables slaves regularly - but that should only be the exception)
[ ] the cleanup script is trying to remove base images which is not desired

This ticket should stay open until any remaining issues related to the docker cleanup script have been resolved. One use case which should work before closing this ticket is to perform a series of full rebuilds on the farm:

without any jobs failing due to docker cleanup related issues as well as
the farm running continuously without having to disable slaves due to running low on disk space.

Non graceful termination:
2015-02-21 02:15:01,616 Disk space satified ending
2015-02-21 02:15:01,617 Uncaught exception in cleanup_docker_image.py: Traceback (most recent call last):
  File "/home/jenkins-slave/cleanup_docker_images.py", line 173, in <module>
    main()
  File "/home/jenkins-slave/cleanup_docker_images.py", line 153, in main
    sys.exit(0)
SystemExit: 0

Clean termination: 13d1e9d979923be444ffdb0082184646773817d4
Better usage of disk space on larger disks: 04e69e5151304cfe2e76ced2d6da2007e88c51c9
I believe the old images had retained cron jobs. I've rolled over all the old executors.

The base images will be cleaned up only if there are no containers using them. And if we go the full timeout and nothing is using them It's probably ok to clean them. They are only ~ 100 Mb to redownload and explicitly listing anything is just another thing to maintiain adding complexity and overhead. I think whitelisting the base images or something like that would be an overoptimization. In practice we will likely never be that idle and they'll be protected by the active containers.

Filed slow rmi upstream: https://github.com/docker/docker/issues/11053


fix: migrate anchor tag snippet to 2.0 syntax

migrate a snippet from the old syntax

Thanks for that!


IPv6 loopback broken

Bug description
As I've been trying out Istio on OpenShift 4, I've noticed the following behavior.
Using OpenShift 4.2.2
istio-operator 1.0.1, kiali-operator 1.0.6, jaegger-operator 1.13.1
Working with a dummy OpenLDAP image (github.com/Worteks/docker-ldap).
While booting, my LDAP container would start a slapd service and inject ldifs initializing its database.
Trying to deploy that container with Istio, those configuration steps take an awful long time to "complete" (actually, using a DeploymentConfig, after the default 10 minutes, my Pod gets terminated, as it's not done initializing).
In doubt, I deployed the same image to a namespace without Istio, and couldn't reproduce that issue.
Connecting to a node and stracing some ldapadd process, we can see the following:
sh-4.4# strace -p 60713
strace: Process 60713 attached
connect(3, {sa_family=AF_INET6, sin6_port=htons(1389), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), sin6_scope_id=0}, 28

        ) = -1 ETIMEDOUT (Connection timed out)
shutdown(3, SHUT_RDWR)                  = -1 ENOTCONN (Transport endpoint is not connected)
close(3)                                = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 3
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(1389), sin_addr=inet_addr("<IP_ADDRESS>")}, 16) = 0
write(3, "0M\2\1\1`H\2\1\3\4\31cn=admin,dc=demo,dc="..., 79) = 79
poll([{fd=3, events=POLLIN|POLLPRI}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
read(3, "0\f\2\1\1a\7\n", 8)            = 8
read(3, "\1\0\4\0\4\0", 6)              = 6
fstat(0, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd961383000
read(0, "dn: cn=admin0,ou=users,dc=demo,d"..., 4096) = 942
fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd961382000
write(3, "0\202\2@\2\1\2h\202\29\4#cn=admin0,ou=users,"..., 580) = 580
poll([{fd=3, events=POLLIN|POLLPRI}], 1, 100) = 1 ([{fd=3, revents=POLLIN}])
read(3, "0\f\2\1\2i\7\n", 8)            = 8
read(3, "\1\0\4\0\4\0", 6)              = 6
write(3, "0\201\275\2\1\3h\201\267\4$cn=Admins,ou=groups,d"..., 192) = 192
poll([{fd=3, events=POLLIN|POLLPRI}], 1, 100) = 1 ([{fd=3, revents=POLLIN}])
read(3, "0\f\2\1\3i\7\n", 8)            = 8
read(3, "\1\0\4\0\4\0", 6)              = 6
read(0, "", 4096)                       = 0
write(3, "0\201\264\2\1\4h\201\256\4!cn=All,ou=groups,dc=d"..., 183) = 183
poll([{fd=3, events=POLLIN|POLLPRI}], 1, 100) = 1 ([{fd=3, revents=POLLIN}])
read(3, "0\f\2\1\4i\7\n", 8)            = 8
read(3, "\1\0\4\0\4\0", 6)              = 6
write(3, "0\5\2\1\5B\0", 7)             = 7
shutdown(3, SHUT_RDWR)                  = 0
close(3)                                = 0
write(1, "adding new entry \"cn=admin0,ou=u"..., 167) = 167
exit_group(0)                           = ?
+++ exited with 0 +++

Expected behavior
When running slapadd against ldap://localhost should be as fast as ldap://<IP_ADDRESS>/. I shouldn't hit a timeout then fallback to ipv4.
Steps to reproduce the bug
Having deployed Istio, and created a namespace for our test
$ oc process -f https://github.com/Worteks/docker-ldap/blob/master/openshift/imagestream.yaml | oc apply -f-
$ oc process -f https://github.com/Worteks/docker-ldap/blob/master/openshift/build.yaml | oc apply -f-

Edit deployment configuration:
$ vi docker-ldap/openshift/run-ephemeral.yaml

In spec.template.metadata, add:
        annotations:
          sidecar.istio.io/inject: "true"

Once our image is done building, deploy a test pod:
$ oc process -f https://github.com/Worteks/docker-ldap/blob/master/openshift/secret.yaml | oc apply -f-
$ oc process -f https://github.com/Wortexks/docker-ldap/blob/master/openshift/run-ephemeral.yaml -p LDAP_IMAGE_FRONTNAME=demo | oc apply -f-

Version (include the output of istioctl version --remote and kubectl version)
# oc rsh -n openshift-operators istio-operator-755cc98b8c-bv2pm
sh-4.4# istio-operator --version
version.BuildInfo{Version:"1.0.1-8.el8", GitRevision:"8617354", BuildStatus:"Clean", GitTag:"1.0.1", GoVersion:"go1.12.6", GoArch:"linux/amd64", OperatorSDK:"v0.2.1"}
sh-4.4# exit
[root@ip-172-31-33-81 openshift]# oc version
Client Version: openshift-clients-4.2.0-201910041700
Server Version: 4.2.2
Kubernetes Version: v1.14.6+868bc38

Unclear: where would I find istioctl?
How was Istio installed?
Through the OperatorHub
Environment where bug was observed (cloud vendor, OS, etc)
AWS, RH-CoreOS.

OpenShift Service Mesh uses a fork of istio/cni, so it possibly does not affect Istio itself. I'm currently investigating. There's a downstream issue about it: https://issues.jboss.org/browse/MAISTRA-987

Interesting. I'll keep an eye on that one, thanks!
And indeed, I've only checked Service Mesh. Upstream might just be fine.
Though considering we have an issue related to CNI tests being broken with v6 (istio#17382) , ... could be worth checking.

Closing as this is tracked in https://issues.redhat.com/browse/MAISTRA-987?_sscc=t which also claims it is fixed


Add dotnet core test app

It would be helpful to have a test project for .NET Core.
This PR does so without materially changing the existing .NET Framework 3.5 test project.  This PR provides a new .NET Core test project, moving code that is common to both it and the original test project into shared projects.
In creating this change, I found a problem with TinyMessenger on .NET Core and fixed it. I did not attempt to deal with ASP .NET extensions, which don't compile for .NET Core.

Resolves #133

Some of the file moves (like to TinyIoC.cs) include whitespace changes to each line of the file. I'm not happy about that and will resolve it. I'm not sure if Visual Studio did it when I moved the files from within it, or if something else happened.

I fixed the renames without changes (used a force push, since I doubt anyone has seen this PR yet). It is in better shape now, and should be OK to merge if you can handle the structural changes to the solution.

I'm really torn here and maybe others can weigh in on this. One of the advantages of this library was a wide array of platform support and a single file, but that's starting to become irrelevant as they are no longer supported and net standard is the new king and long term successor. Which brings me to my next point, why not just support full framework (lowest still supported?) and the lowest net standard possible in one project. At what point does everyone just use the built in Microsoft DI that works on net standard (I'm all for multiple options and choice). With that said, I'd rather be simplifying and removing code than splitting this up into multiple projects. @grumpydev @benaadams @xinmyname @phillip-haydon

@niemyjski  I can remove the shared projects from the PR to reduce the number of changes. The PR would be left with two new projects (the .NET Core app and its external assembly). The .NET Core app could reference the .cs files that it needs directly.
That doesn't address your other concerns but at least it simplifies this PR.

I think we should only have one project and no shared projects as it was
before and just update things to work in the new world.
Thanks
-Blake Niemyjski
On Fri, Apr 17, 2020 at 8:21 AM George Josh Karabin <
<EMAIL_ADDRESS>wrote:

@niemyjski https://github.com/niemyjski I can remove the shared
projects from the PR to reduce the number of changes. The PR would be left
with two new projects (the .NET Core app and its external assembly). The
.NET Core app could reference the .cs files that it needs directly.
That doesn't address your other concerns but at least it simplifies this
PR.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/grumpydev/TinyIoC/pull/132#issuecomment-615240839,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHZFI3UK6WZAC4NQVP6DCDRNBJXBANCNFSM4MKL2S6A
.

I think we should only have one project and no shared projects as it was before and just update things to work in the new world. We can always do muvtitargetting in a single project.

I updated the PR to use use multi-targeting as requested. The library projects continue to build for .NET Framework 3.5, but now TinyIoC also builds for .NET Standard 2.0 and TinyIoC.ExternalTypes also builds for .NET Standard 1.1 (1.0 did not suffice due to some attributes that were referenced).
TinyIoC.Tests now builds for .NET Framework 4.5 (rather than 4.0) and .NET Core 2.1. That was the combination that provided least-common denominator support for running tests in Visual Studio (16.5.4) with Test Explorer. I had been hoping to build .NET Framework 4.0 and .NET Core 1.0, but couldn't find packages that supported that combination (whether nugets or using
It's not clear to me if there is a strong need to run the tests in a .NET Framework 4.0 environment or not, or if it's OK that they might bit-rot for that framework going forward.
Also note that the final commit of the PR pares down what appears to me to be unnecessary project properties, since I can get builds to work as-is on my environment. I don't have experience with the Bootstrapper properties, which were set up to ensure that the right frameworks were installed. I could have left those properties alone in the TinyIoC and TinyIoC.ExternalTypes projects (since they still target .NET Framework 3.5), but I would have had to update them in the TinyIoC.Tests project (which moved from .NET Framework 4.0 to 4.5). I didn't know how to update them for .NET 4.5. If it matters I can figure that out, but if it doesn't it seems easier to just drop those properties altogether.

Looks good, thanks for updating that, I had a single question via comment and then I can merge it. I'm thinking that going forward we should only support what Microsoft officially supports as far as runtimes (NET 48, .NET Core 3.1 LTS), otherwise it's going to be a pain to run tests / verify code compiles on super outdated runtimes (e.g., you have to go searching for the .NET Core 2.1 runtime).

I'm cool either way.
It was maddening finding the minimum versions combination of runtimes that worked in Visual Studio today. That combination very well might not work in the future when a VS update requires a test platform update, etc.
As the code stands, there are issues running the tests outside of Visual Studio.  "dotnet test" does not work with this PR, for instance. I think that it would be more likely that it would work if all of the runtimes (and possibly the library projects) were built for newer versions.

Thanks for the pr!


support for ArrayLike objects

Currently some of the ArrayLike objects are not "printed correctly" in the dock, e,g, ImmutableJS data structures, because of the way lodash"s identity function works. e.g. if you have a List you probably are interested for its contents rather than its internal representation.
Lodash`s identity in this case will return:
  Object {size: 4, _origin: 0, _capacity: 4, _level: 5, _root: null…}

...but you probably want to see the contents of the List and not the List's internal representation
if ( isArrayLikeObject ( listOnTheState ) )
{
  identity( listOnTheState ).toArray();
}

Is there any plan for supporting ArrayLike objects like this? If this is indeed an issue I can provide the PR.

Where do you see identity being used? identity is just a function that returns its argument so we're not "using" it in any specific sense. Also log monitor has its own repository which is probably where you'd like to report the issue. Under the hood it uses react-json-tree which should support any Iterables. If you can reproduce the issue with react-json-tree, please file it there. I don't think there's anything actionable in this repo, so I'm closing.


Make content store push on discard draft more obvious

This change doesn't functionally change anything, because at the point
when the publishing action is called, the live and draft content items
are exactly the same.
However, this change makes the code slightly clearer because it no longer breaks
the pattern "live items go to the live store, draft items to the draft store".

I think with this change we no longer need to make a distinction between live_content_id and draft_content_id as this can now be inferred from the content_store argument. We could just pass in content_id.

I'm going to close this change, because the object model re-engineering (#206) is going to change how this works anyway, and this isn't a big issue at the moment.


Assessment form - Component 34 should have only one rating for all component

Behaviour

User should be able to see Component #14 with just the title and the description (No rating, no notes, no considerations)
The description currently visible in Component #14 A should be moved to the description of Component #14
There should only be one Component #34 with the title "Logistics, procurement and supply chain"
There should be 5 question group in the Component #34

Logistics management
Supply chain management
procurement
Fleet and transfortation management
Warehouse and stock management

Implementation details

PER Assessment has a series of Questions
Questions are grouped into Components
Components are further grouped into Areas

Backend
Existing Behavior

A Component has following properties

Component number
Alphabet
Title
Description

A Component response has the following properties

Rating
Note
EPI considerations (conditional)
Urban considerations (conditional)
Climate and environmental consideration (conditional)

Proposed Behavior

A Component can either be a normal component or a Parent component
(captured by is_parent property in Component)

A Parent component will only have

Component number
Title
Description

A Parent component response will not capture anything

There should be a new entity Question group with following properties

Title
Description

A Question group must belong to 1 Component

A Question may belong to only 1 Question group

Actions

Make Component #14 as a Parent component

Move description from Component #14 A to 14

Find similar components and make them a Parent component

Currently, there are 6 components numbered as 34

Component with title "Logistics, procurement and supply chain" should remain as a Component

Remaining 5 components should be converted to Question group

Add an endpoint for question group (simlar to per-formquestion)

Frontend
PER Assessment Form

[ ] #548
[ ] #549

Next steps

[x] @frozenhelium to covert the board picture into a behavior document
[x] @frozenhelium to create another ticket required for frontend

Hi @udaynwa @frozenhelium, maybe I can add some explanation about this component.
Component 34 "Logistics, procurement and supply chain" has its benchmarks grouped together in several groups, but its behavior is similar to that of all the other PER components. Only one rating for the whole component is needed. The benchmarks (questions) are grouped in 5 groups: 34.A Logistics managament, 34.B Supply chain management, 34.C Procurement, 34.D Fleet and transportation management, 34.E Warehouse and stock management. For each one of this groups, we have several benchmarks with their correspondent notes, but no rating, since the rating is for the whole component 34.

Thanks @steph-gm for the clarification!

Component 34 is missing sub-component alphabet:
34.A Logistics management
34.B Supply chain management
34.C Procurement
34.D Fleet and transportation management
34.E Warehouse and stock management.
@barshathakuri

[ ] PER > Assessment - Component 14 is showing EPI Consideration, Urban Consideration and Climate and Environmental Considerations. It should not be visible on component 14. It should be visible only from 14A.

cc @k9845

[ ] 14(F) should not have any description. Currently, it has a description which has to be removed.

cc @udaynwa @k9845


[Feat]: Github acttion to automate work

Description
Suppose u are very busy and u want to have someone who can easily greet the first-time contributor in your repo and assigned issues to the opener easily as well u want to check the version of the node , npm whenever someone pushed the code .
Solution
I want to create the GitHub action for this repo so that all the time-taking tasks and easy tasks will be handled by the GitHub automate Bot.
Thank's GitHub
Anything else?
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

i would like to try on this  .. i was learning action on my own but with this goal i can focus on one thing


Copy Projects

link to the GitHub project
https://github.com/firepicaso/Social-Interaction-Capstone-Module2/projects/1
We have 2 students in this group.
Student A: Fatuma Hussein (fatmahussein)
Studeb B: Mustakim Masum (firepicaso)

STATUS: APPROVED ✔ 🍾 🍾 🍾 🥳 🥳 🥳
Hi @firepicaso and @fatmahussein ,
Your project is complete!  There is nothing else to say other than... it's time to merge it :shipit:
Congratulations! 🎉

Highlights
✅ Very descriptive Kanban task cards
✅ Your work is well documented.
Optional suggestions
Cheers and Happy coding!👏👏👏


Add warnings for -save & -nosave legacy scala runner options instead of failing

Fixes #1670
for scala-cli:
▶ scala-cli -e 'println("Hello")' -save -nosave
Deprecated option '-save' is ignored.
The compiled project files will be saved in the '.scala-build' directory in the project root folder.
If an actual jar file is necessary to be saved, run the 'package' sub-command after this one:
  scala-cli package --library -e println("Hello")
Deprecated option '-nosave' is ignored.
A jar file is not saved unless the 'package' sub-command is called.
Compiling project (Scala 3.2.1, JVM)
Compiled project (Scala 3.2.1, JVM)
Hello

for scala (SIP mode):
▶ scala -e 'println("Hello")' -save -nosave
Deprecated option '-save' is ignored.
The compiled project files will be saved in the '.scala-build' directory in the project root folder.
If an actual jar file is necessary to be saved, run the '--power package' sub-command after this one:
  scala --power package --library -e println("Hello")
Deprecated option '-nosave' is ignored.
A jar file is not saved unless the '--power package' sub-command is called.
Compiling project (Scala 3.2.1, JVM)
Compiled project (Scala 3.2.1, JVM)
Hello

relevant docs will be added as part of #1721


Autocomplete settings

Hi,
is it possible to change the autocomplete command from the tab key to the enter key? It conflicts with my emmet settings otherwise.
Thanks for your help.

See autocomplete-plus package settings. It's a built-in package which provides autocompletion GUI.

hi,
yeah that's already set up. it only occurs when autocomplete shows up for imports, which is not a big deal. thanks anyway.


🚀 - Add class to overlay - like what was done for the ng-bootstrap version

Which ngx-ui-tour-* package is relevant to the feature request?
md-menu
Description
Adding a class parameter to the step that get's appended to the overlay that is created will allow for additional styling of each step at a higher level..
This: https://github.com/hakimio/ngx-ui-tour/pull/113, just for md-menu

It already has tour-step class applied to mat-menu. You can target it with .mat-menu-panel.tour-step or mat-menu.tour-step.

Yes, I do see that, and I am targeting that. However, I'd like to be able to style steps individually. So providing a place in the step configuration to provide additional classes for styling would be helpful.


kubelet: Pull the pod infra container creation logic out.

This PR demuxes the infra container logic from the check-hash-and-health-loop of  computePodContainerChanges, this enables us to reuse the loop for other runtime.
I think we also want to throw the infra container check logic into a separate function, (let's call it P()) which returns false if we don't need to continue to compute the hash/health. So for other runtime, we can just skip P() (or make each runtime implement their own version of P())
I haven't come up with a good name for P() so I decide to do it in next PR so the review of this one can be smoother.
@vmarmol @dchen1107 @yujuhong

My final goal for computePodContainerChanges is to return just containersToKeep and containersToStart, and let the docker runtime create pod infra container itself.
This requires moving the createPodInfraContainer into dockertools as well.
Feedback appreciate! Thanks!

Put off this PR for that we are moving the whole computePodContainerChanges to docker container manager.


⚠ ClamAV has degraded performance

In 74cada3, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 53 ms

Resolved: ClamAV performance has improved in a3ee613.


Add tests for #414 and alias req.get as req.header

What:
Added tests for #414 - .get() should work regardless of the casing of the argument.
Aliased req.get() as req.header().
Why:
Tests are good.
req.get() is aliased as request.header() in the actual request object: https://expressjs.com/en/api.html#req.get

@tamias I love more test. 👍 Thank you for adding these.

:tada: This PR is included in version 1.12.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


change the style of return that make it read easy

i think the style of code is more elegant

To contribute a patch, please follow http://kylin.apache.org/development/howto_contribute.html
Thank you.

but it doesn't change the code


[W6.1h][W14-B2]Teo Wen Zong

@wenzongteo
Some comments added. Please ack & close the PR after reading comments.

@okkhoy alright! Will take note to follow the coding convention strictly and also ensure necessary comments are created


Added homework for class 1

This adds the boilerplate for homework 1, with failing tests

Current dependencies on/for this PR:

main

PR #4   👈

This comment was auto-generated by Graphite.

⏳ This pull request is set to merge as part of a Graphite merge job
Job ID: 1h1KhenBQJIXbXby8FKt.
See details on graphite.dev


fix: add disabled props to checkbox

Добавила свойство disabled для компонента Checkbox в режиме отображения multiple

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.006%) to 82.369%

Totals

Change from base Build<PHONE_NUMBER>:
0.006%

Covered Lines:
5047

Relevant Lines:
5694

💛  - Coveralls


What does sharing a package actually mean?

What i understood from trying the cli, sharing a package means all users under that namespace have access to it. It doesn't mean that  it is available to all namespaces which are created under that server/host . Please correct me if this is not the case.

that's correct for a private package.
for a public package, it is available to all authenticated users (read and invoke only).
you may want to ask these questions on http://slack.openwhisk.org/.


CI builds with GitHub Actions

Runs on GitHub hosted CI runners, free for open source projects.
Ensures that the tvOS build is successful for all future pushed commits and pull requests once merged in.
Can be extended with additional logic in the future as needed

Run unit tests
Fastlane for automatic uploads to TestFlight
Additional clients such as the iOS PR

Example build: https://github.com/Dahlgren/Wasserflug-tvOS/actions/runs/3260664869

Thanks for this! I haven't used GitHub CI stuff before, this is neat. It looks like GH picked it up automatically, so I don't need to do any configuration changes.


thrift method return void will increase response_error

When thrift method return void ,the metirc response_error will increase .As I debug the envoy,the method ConnectionManager::ResponseDecoder::fieldBegin won't be called ,I think there is something worng with it.

@zuercher


OADP-3041 Update dpa args fs-backup-timeout default to match velero

Signed-off-by: Tiger Kaovilai<EMAIL_ADDRESS>

/retest

/retest

/lgtm

/hold as issue is marked for OADP 1.3.2
(cc @weshayutin )

/retest

/retest

/retest

may close or rebase the changes here to another pr. original intent of OADP-3041 is now in https://github.com/openshift/oadp-operator/pull/1291


Upgrade packages and migrate to apollo 3

I didn't test this, but it looks right, so #yolo! thanks for this!


Partial line preservation character (%, ⏎) incorrectly displayed for new integrated terminals

Issue Type: Bug
When a new integrated terminal is opened and the prompt renders very quickly, a character is shown incorrectly. For the zsh shell, it's the PROMPT_EOL_MARK character (% by default):

For the fish shell, it's the ⏎ character:

Out of the 3 shells I've tested (bash, zsh, fish), this only occurs for zsh and fish. This is because of "partial line preservation", a behavior that both zsh and fish implement. The documentation on the behavior for zsh is here, and fish emulates it here.
This only happens when the prompt is rendered very quickly (subsecond), it seems to be a timing issue. To duplicate, you need to have a really quick prompt. This can be achieved by having no startup scripts for your shell (empty .zshrc, config.fish, etc.). If you have a prompt that's quick enough, and you open a bunch of integrated terminals, you'll eventually see this issue. This happens regardless of the terminal.integrated.rendererType setting (canvas, dom, or experimentalWebgl).
I only noticed it after recently optimizing my fish shell config to be quicker, so I'm not sure when this issue was introduced. I first noticed it in the last release (1.42), but I have no reason to believe it was introduced then since what caused it to happen was independent of a new release. I've tested with a recent Insiders build to verify that the issue hasn't been fixed yet.
I found this issue on the microsoft/vscode repository and this issue on the zeit/hyper repository that were both incorrectly closed. Both closers essentially suggest to unset the PROMPT_SP variable (at least for zsh). This is not a proper solution as you lose the behavior of partial line preservation that I mentioned earlier. It also doesn't cover fish (my shell of choice).
This comment by @romkatv on the Hyper issue has a really excellent breakdown of what seems to be this exact same bug but in the Hyper terminal. I know that Hyper and VS Code both use Xterm.js, so I believe that this is either a bug in Xterm.js, or an identical bug that Hyper and VS Code share in their implementation of terminals using Xterm.js.
VS Code version: Code - Insiders 1.44.0-insider (1876b51870e30e9ba8f35dc0dcfaf49a3799a8ef, 2020-03-09T19:55:33.054Z)
OS version: Darwin x64 18.7.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz (8 x 2500)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: unavailable_offrasterization: enabledskia_renderer: disabled_off_okvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_off_okwebgl: enabledwebgl2: enabled

Load (avg)
3, 3, 4

Memory (System)
16.00GB (1.32GB free)

Process Argv
-psn_0_2863803

Screen Reader
no

VM
0%

Extensions: none

Status update: Previously, it seemed that this issue had a chance of occurring for any integrated terminal that you open. Now, it seems to only occur for integrated terminals that are opened when the "Terminal" panel is not visible (either the panel is collapsed or set to another tab).
After going back and reading the issue I linked, I did some investigation by adding an echo to inspect the terminal dimensions to the top of my config.fish (which seems to execute before the actual dimensions can be accessed):
echo LINES: $LINES, COLUMNS: $COLUMNS

It seems that when opening a new integrated terminal and the panel is not visible (that is also not the first of the session), cached values are used for LINES and COLUMNS, otherwise hardcoded values are used (LINES = 24 and COLUMNS = 80). When the value of COLUMNS is greater than 80, the issue occurs.
Here are some scenarios to clarify:

Open a new VS Code window, open a new terminal, issue does not occur ✅

LINES: 24, COLUMNS: 80 (hardcoded values, probably the defaults for the cached values)

"Terminal" panel is visible, open a new terminal, the issue does not occur ✅

LINES: 24, COLUMNS: 80 (hardcoded values)

"Terminal" panel is not currently visible but previously lost visibility at COLUMNS <= 80, open a new terminal, the issue does not occur ✅

LINES: 33, COLUMNS: 76 (cached values)

"Terminal" panel is not currently visible but previously lost visibility at COLUMNS > 80, open a new terminal, the issue occurs ❌

LINES: 33, COLUMNS: 205 (cached values)

Also, since the cached values seem to only be recorded when the "Terminal" panel is visible, if you resize the window after the panel has lost visibility, you can see that it's effectively printing a line of blank characters the width of the cached COLUMNS value. If you close the panel when the window is really wide, resize to a really narrow width, and open the panel, you can see that the prompt is rendered several newlines below the top of the terminal:

It seems like if the hardcoded values were always used the issue would be fixed. I'm guessing that the values are cached for a reason, though. Hopefully this information helps to solve the issue.

Status update: Previously, it seemed that this issue had a chance of occurring for any integrated terminal that you open. Now, it seems to only occur for integrated terminals that are opened when the "Terminal" panel is not visible (either the panel is collapsed or set to another tab).
After going back and reading the issue I linked, I did some investigation by adding an echo to inspect the terminal dimensions to the top of my config.fish (which seems to execute before the actual dimensions can be accessed):
echo LINES: $LINES, COLUMNS: $COLUMNS

It seems that when opening a new integrated terminal and the panel is not visible (that is also not the first of the session), cached values are used for LINES and COLUMNS, otherwise hardcoded values are used (LINES = 24 and COLUMNS = 80). When the value of COLUMNS is greater than 80, the issue occurs.
Here are some scenarios to clarify:

Open a new VS Code window, open a new terminal, issue does not occur ✅

LINES: 24, COLUMNS: 80 (hardcoded values, probably the defaults for the cached values)

"Terminal" panel is visible, open a new terminal, the issue does not occur ✅

LINES: 24, COLUMNS: 80 (hardcoded values)

"Terminal" panel is not currently visible but previously lost visibility at COLUMNS <= 80, open a new terminal, the issue does not occur ✅

LINES: 33, COLUMNS: 76 (cached values)

"Terminal" panel is not currently visible but previously lost visibility at COLUMNS > 80, open a new terminal, the issue occurs ❌

LINES: 33, COLUMNS: 205 (cached values)

Also, since the cached values seem to only be recorded when the "Terminal" panel is visible, if you resize the window after the panel has lost visibility, you can see that it's effectively printing a line of blank characters the width of the cached COLUMNS value. If you close the panel when the window is really wide, resize to a really narrow width, and open the panel, you can see that the prompt is rendered several newlines below the top of the terminal:

It seems like if the hardcoded values were always used the issue would be fixed. I'm guessing that the values are cached for a reason, though. Hopefully this information helps to solve the issue.

This seems to be fixed in 1.54.0! I've tried the scenarios in my previous comment and can't seem to duplicate the issue.


mongodb does not check user

When querying with
from lomas_client import Client
import numpy as np

APP_URL = "http://localhost"
USER_NAME = "LOMASTEST"
DATASET_NAME = "FSO_INCOME_SYNTHETIC"
client = Client(url=APP_URL, user_name = USER_NAME, dataset_name = DATASET_NAME)
print(client)
print("")
penguin_metadata = client.get_dataset_metadata()
print(penguin_metadata)

I'm expecting UnauthorizedAccessException
            f"User {user_name} does not exist. "
            + "Please, verify the client object initialisation.",

But the result is a pass.
mongodb                    | {"t":{"$date":"2024-07-03T19:12:52.323+00:00"},"s":"I",  "c":"ACCESS",   "id":20250,   "ctx":"conn6","msg":"Authentication succeeded","attr":{"mechanism":"SCRAM-SHA-256","speculative":true,"principalName":"user","authenticationDatabase":"defaultdb","remote":"<IP_ADDRESS>:56232","extraInfo":{}}}
lomas_server_dev           | INFO:     <IP_ADDRESS>:32942 - "POST /get_dataset_metadata HTTP/1.1" 200 OK

When I change the database, however, an InvalidQueryException is caught.
lomas_server_dev           | 2024-07-03 19:17:11,649 - INFO -                 [error_handler.py:87 - invalid_query_exception_handler()] - InvalidQueryException raised: Dataset FSO_INCOME_SYNTHETIC-2 does not exists. Please, verify the client object initialisation.
lomas_server_dev           | INFO:     <IP_ADDRESS>:56470 - "POST /get_dataset_metadata HTTP/1.1" 400 Bad Request

After adding some print statements, it appears that dataset_must_exist is called
 @functools.wraps(func)
    def wrapper_decorator(
        self, *args: argparse.Namespace, **kwargs: Dict[str, str]
    ) -> None:
        dataset_name = args[0]
        print("test")
        if not self.does_dataset_exist(dataset_name):
            raise InvalidQueryException(
                f"Dataset {dataset_name} does not exists. "
                + "Please, verify the client object initialisation.",
            )
        return func(self, *args, **kwargs)

    return wrapper_decorator

and
    @dataset_must_exist
    def get_dataset_metadata(self, dataset_name: str) -> dict:
        """Returns the metadata dictionnary of the dataset.

        Wrapped by :py:func:`dataset_must_exist`.

        Args:
            dataset_name (str): name of the dataset to get the metadata

        Returns:
            dict: The metadata dict.
        """
        print("3")
        metadatas = self.db.metadata.find_one(
            {dataset_name: {"$exists": True}}
        )
        return metadatas[dataset_name]  # type: ignore

but user_must_exist is not called with the client query.

Hi @PaulineMauryL, understood. The metadata for the tables has been considered "public information." In the design it's assumed that anyone can query this. As a response, I will consider the GDPR and ISO for international standards for security architecture.
According to GDPR (General Data Protection Regulation) and ISO standards (specifically ISO/IEC 27001 and ISO/IEC 27002), the access to metadata of tables holding Personally Identifiable Information (PII) should be restricted and controlled based on the principle of data minimization and the need-to-know basis.
User check at query require the minimum identify requirement (currently there's no password authentication taken by the server). Therefore we assume shared credential to both the user-checked query and the unchecked query (blocked/unblocked).

I wrote out the two threats. When deployed in an organization, Lomas relies on general trust that the users will not abuse their access to the server. However, additional controls can ensure organizational compliance to GDPR and ISO through the use of username and password checks. Lomas provides an identity check. Lomas should provide that identity check for all functions, so role-based controls can be enforced by organizations using Lomas.
If app.py could check the username for each query (even the metadata of tables that are considered "public information"), then role-based enforcement controls can be made by administrators to meet compliance and regulation requirements as they change. Today it may be fine for all users of the organization to see metadata, but in the future, it may not. Following the GDPR principle of data minimization and need-to-know separation of duties, it leads me to recommend that users are checked when database is checked from the client.
Internally app.py may need a separate check for metadata that the client cannot see without authorizing. This function should not leak data to the client.

Hi @0f4d0335 thank you so much for the feedback and this explanation.
We will implement this additional check for the metadata (and other places where it is relevant).
Please, do not hesitate to tell us if you see anything else! It is highly appreciated.


[Feature Request] Add Side by Side option for existing photo compare Tool

[Feature Request] Add Side by Side option for existing photo compare Tool.

Added all from VES :)


Change 'these' to 'this'

Not sure if you meant 'this technique' or 'these techniques'

@all-contributors please add @mitchellwright  for maintenance


add docs of IDynamicModuleLoaderProps to readme

Took me a while to find out this package was the culprit of adding a whole cascade of bugs when introducing StrictMode to our app. This should add some clarity.

 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.:x: ljosberinn sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Apple search Ads on Cordova 9

The problem is that we don't see any data on Apple search Ads dashboard.
node: v10.16.3
cordova: 9.0.0
xcode: 11.3.1
The plugin version is 4.1.3 but with the following changes in order to be able to build with CLI:
Removed from:  src/ios/BranchNPM.h
#define BRANCH_NPM true
And added at plugin.xml and from xcode after building the framework is there
<framework src="iAd.framework" weak="true"/>
I tried both with and without
use-frameworks="true"
with no difference.
The Branch service initialisation:
       function init() {                return $window.Branch.delayInitToCheckForSearchAds()                       .then($window.Branch.initSession).then(linkHandler);         }

@cordovian22 did you find a solution?

Sorry for not commenting on this earlier.  I somehow didn't see the original issue report.
The issue is that JS starts up too late to check for ASA, so the JS level api for apple search ads always fails.  The workaround is to make the call at the native code layer.  We should have marked this API as deprecated and a noop.

This method has since been deprecated from our SDK following the note above. Please reach out to<EMAIL_ADDRESS>if you have any questions.

@echo-branch, @BranchJShek, is the any example of calling delayInitToCheckForSearchAds() from native code in Cordova/Ionic app?

@echo-branch, @BranchJShek, is the any example of calling delayInitToCheckForSearchAds() from native code in Cordova/Ionic app?

Within Xcode, you can locate an AppDelegate.m file.  You can enable early lifecycle calls here.
In this example, I enable logging to confirm ASA is working.  I then enable search ads and the longer delay as Cordova has a long launch time.
`
@implementation AppDelegate

(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
[Branch.getInstance enableLogging];
[Branch.getInstance delayInitToCheckForSearchAds];
[Branch.getInstance useLongerWaitForAppleSearchAds];
self.viewController = [[MainViewController alloc] init];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

@end
`
You should see the Search Ad base 64 encoded in the install json.  On test devices, Apple provides a test payload so you should always see this while debugging.
"search_ad_encoded" = "eyJWZXJzaW9uMy4xIjp7ImlhZC1wdXJjaGFzZS1kYXRlIjoiMjAyMS0wMS0yMlQxODozMDozNVoiLCJpYWQta2V5d29yZCI6IktleXdvcmQiLCJpYWQtYWRncm91cC1pZCI6IjEyMzQ1Njc4OTAiLCJpYWQtY3JlYXRpdmVzZXQtaWQiOiIxMjM0NTY3ODkwIiwiaWFkLWNyZWF0aXZlc2V0LW5hbWUiOiJDcmVhdGl2ZVNldE5hbWUiLCJpYWQtY2FtcGFpZ24taWQiOiIxMjM0NTY3ODkwIiwiaWFkLWxpbmVpdGVtLWlkIjoiMTIzNDU2Nzg5MCIsImlhZC1vcmctaWQiOiIxMjM0NTY3ODkwIiwiaWFkLWNvbnZlcnNpb24tZGF0ZSI6IjIwMjEtMDEtMjJUMTg6MzA6MzVaIiwiaWFkLWtleXdvcmQtaWQiOiIxMjMyMzIyMiIsImlhZC1jb252ZXJzaW9uLXR5cGUiOiJEb3dubG9hZCIsImlhZC1jb3VudHJ5LW9yLXJlZ2lvbiI6IlVTIiwiaWFkLW9yZy1uYW1lIjoiT3JnTmFtZSIsImlhZC1jYW1wYWlnbi1uYW1lIjoiQ2FtcGFpZ25OYW1lIiwiaWFkLWNsaWNrLWRhdGUiOiIyMDIxLTAxLTIyVDE4OjMwOjM1WiIsImlhZC1hdHRyaWJ1dGlvbiI6InRydWUiLCJpYWQtYWRncm91cC1uYW1lIjoiQWRHcm91cE5hbWUiLCJpYWQta2V5d29yZC1tYXRjaHR5cGUiOiJCcm9hZCIsImlhZC1saW5laXRlbS1uYW1lIjoiTGluZU5hbWUifX0=";
If you wish to ignore the Apple test payload call this method.
[Branch.getInstance ignoreAppleSearchAdsTestData];

Within Xcode, you can locate an AppDelegate.m file.  You can enable early lifecycle calls here.
In this example, I enable logging to confirm ASA is working.  I then enable search ads and the longer delay as Cordova has a long launch time.
`
@implementation AppDelegate

(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
[Branch.getInstance enableLogging];
[Branch.getInstance delayInitToCheckForSearchAds];
[Branch.getInstance useLongerWaitForAppleSearchAds];
self.viewController = [[MainViewController alloc] init];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

@end
`
You should see the Search Ad base 64 encoded in the install json.  On test devices, Apple provides a test payload so you should always see this while debugging.
"search_ad_encoded" = "eyJWZXJzaW9uMy4xIjp7ImlhZC1wdXJjaGFzZS1kYXRlIjoiMjAyMS0wMS0yMlQxODozMDozNVoiLCJpYWQta2V5d29yZCI6IktleXdvcmQiLCJpYWQtYWRncm91cC1pZCI6IjEyMzQ1Njc4OTAiLCJpYWQtY3JlYXRpdmVzZXQtaWQiOiIxMjM0NTY3ODkwIiwiaWFkLWNyZWF0aXZlc2V0LW5hbWUiOiJDcmVhdGl2ZVNldE5hbWUiLCJpYWQtY2FtcGFpZ24taWQiOiIxMjM0NTY3ODkwIiwiaWFkLWxpbmVpdGVtLWlkIjoiMTIzNDU2Nzg5MCIsImlhZC1vcmctaWQiOiIxMjM0NTY3ODkwIiwiaWFkLWNvbnZlcnNpb24tZGF0ZSI6IjIwMjEtMDEtMjJUMTg6MzA6MzVaIiwiaWFkLWtleXdvcmQtaWQiOiIxMjMyMzIyMiIsImlhZC1jb252ZXJzaW9uLXR5cGUiOiJEb3dubG9hZCIsImlhZC1jb3VudHJ5LW9yLXJlZ2lvbiI6IlVTIiwiaWFkLW9yZy1uYW1lIjoiT3JnTmFtZSIsImlhZC1jYW1wYWlnbi1uYW1lIjoiQ2FtcGFpZ25OYW1lIiwiaWFkLWNsaWNrLWRhdGUiOiIyMDIxLTAxLTIyVDE4OjMwOjM1WiIsImlhZC1hdHRyaWJ1dGlvbiI6InRydWUiLCJpYWQtYWRncm91cC1uYW1lIjoiQWRHcm91cE5hbWUiLCJpYWQta2V5d29yZC1tYXRjaHR5cGUiOiJCcm9hZCIsImlhZC1saW5laXRlbS1uYW1lIjoiTGluZU5hbWUifX0=";
If you wish to ignore the Apple test payload call this method.
[Branch.getInstance ignoreAppleSearchAdsTestData];

@echo-branch how this helps getting the data in Branch dashboard? Does it transfer the parameters to the Cordova app?

@echo-branch how this helps getting the data in Branch dashboard? Does it transfer the parameters to the Cordova app?

This works by setting the Branch SDK to lookup Apple Search Ads before the install event.  This will ensure we have it show up properly on the dashboard, we also return it in the callback to the JS code.
This is not possible from JS alone, cause the Cordova JS environment starts up after the initial install. Which means we probably sent the install without the ASA data payload.

This works by setting the Branch SDK to lookup Apple Search Ads before the install event.  This will ensure we have it show up properly on the dashboard, we also return it in the callback to the JS code.
This is not possible from JS alone, cause the Cordova JS environment starts up after the initial install. Which means we probably sent the install without the ASA data payload.


Port 2375 or 2376?

I restart my laptop and restart docker-machine. swarm shows no node conneted cause IP address changed, then I ssh to my one of my node and use:
#https://docs.docker.com/swarm/install-manual/
docker run -d swarm join --addr=<node_ip:2375> token://<cluster_id>

But it won't work.
And then I ssh to my swarm-master to execute docker ps, it shows:
root@swarm-master:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                              NAMES
c8d0401a5874        swarm:latest        "/swarm manage --tlsv"   2 hours ago         Up About a minute   2375/tcp, <IP_ADDRESS>:3376->3376/tcp   swarm-agent-master

Will, now let's see the result of netstat -natp
root@swarm-master:~# sudo netstat -natp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 <IP_ADDRESS>:22              <IP_ADDRESS>:*               LISTEN      1012/sshd
tcp        0      0 <IP_ADDRESS>:22            <IP_ADDRESS>:41564          ESTABLISHED 1249/sshd: docker [
tcp        0      0 :::2376                 :::*                    LISTEN      1069/docker
tcp        0      0 :::3376                 :::*                    LISTEN      1819/docker-proxy
tcp        0      0 :::22                   :::*                    LISTEN      1012/sshd
tcp        0      0 ::ffff:<IP_ADDRESS>:2376 ::ffff:<IP_ADDRESS>:46430 ESTABLISHED 1069/docker
tcp        0      0 ::ffff:<IP_ADDRESS>:2376 ::ffff:<IP_ADDRESS>:46433 ESTABLISHED 1069/docker

There is a 2376 open, But no 2375.
Is this a change?

Hi
Docker port 2375 is the insecured where 2376 is for TLS (secured port).
Anyway when we start a swarm manager, we usually use another secured port number just for swarm, which is 3376.

How do you think about this? @nathanleclaire is 2375 is insecured, then why it is not opend?

Thank you very much @chanwit , This issue seems like blongs swarm, When I add a node in swarm, How did it know the master's IP address? Since I only pass node's address here.https://github.com/docker/swarm/blob/master/cli/join.go#L23

Clients don't know a master. Each client registers itself to a discovery service.
You need to pass either a discovery string which contains IP addresses or token://.
A master then read a list of nodes from the discover service you specified.

I passed with token, so token contains master IP in it?

@RustJason no, but the token will  be used by Docker Hub. The Docker Hub will be your discovery service.
When you pass the token to your master, the master will know a list of your nodes.
You don't tell the master IP to the nodes, the master node knows them from the discovery service.

Thanks, That's helps me a lot!


fix loading of namespaces for missing files

Currently if a translations file is missing no translation will be loaded. With this fix it will load all available namespaces and set translations to {} for missing files.

refactored code and added tests :)

@all-contributors please add @wuifdesign for code

@wuifdesign @marcesengel I prereleased 1.4.1-canary.1 with this fix


Update samples to 4.1.0-rc.1

Review that all samples in all platforms and languages (java, hellomap etc) in dev branches are updated and tested with 4.1.0-rc.1 version. Minimal changes are datasource to carto.streets and style change to Voyager for basemap.
Do not merge to master yet, this comes with final release.

Done:

Droid: https://github.com/CartoDB/mobile-android-samples/tree/AdvancedMapKotlin
iOS: https://github.com/CartoDB/mobile-ios-samples/tree/dev
.NET: https://github.com/CartoDB/mobile-dotnet-samples/tree/dev


Internationalization!

I don't know if you'll accept this... but this had to be done for work purposes :) Fixes #207.
Uses messageformat.js and moment.js for dates.
P.S. Please don't align with tabs. Ever. Indent with tabs, but align with spaces.

WOW! This is amazing. I will try to take a closer look at it, but this takes some time. Thanks for the work. You might want to take a look at the v3.0 branch. A lot of stuffed has been changed. I hope there's a way to bring both versions together (v3.0 is still in development).
Where's your problem with tabs?

The purpose of tabs is to be configurable without changing the file.
Alignment is supposed to, well, align.
The result:

I am new to github. Can you explain me what I have to do in order to add a German version and contribute it to the repository? (Linux)

@CryssDOTnet
Have a look at this folder: https://github.com/myfreeweb/Lychee/tree/master/src/i18n

Would love this!

This PR will be closed because I'm not actively working on Lychee anymore. The repository of Lychee will stay available, but the main development continues under the Lychee Organisation. A fork maintained by the community.


Error while selecting nodes from the zosv2.0 lirbary

Using the zosv20 sal a lot and have  updated everything to unstable where available, otherwise development.
3BOTDEVEL:3bot:threefoldtech: for name in `ls`; do echo $name ; cd $name ; git branch ; cd ..; done
home
* master
jumpscaleX_builders
  development
* unstable
jumpscaleX_core
  development
* unstable
jumpscaleX_libs
  development
  development_chat_reservation
  master
* unstable
jumpscaleX_libs_extra
  development
* unstable
jumpscaleX_threebot
  development
* unstable
jumpscaleX_weblibs
* development
  master
3BOTDEVEL:3bot:threefoldtech:

Result / error is this:
JSX> # create overlay network definition in datastructure called "network"
   2 network = zos.network.create(r, ip_range="<IP_ADDRESS>/16", network_name=u_networkname)
   3
   4 nodes_salzburg = zos.nodes_finder.nodes_search(farm_id=12775) # (IPv6 nodes)
   5 nodes_vienna_1 = zos.nodes_finder.nodes_search(farm_id=82872) # (IPv6 nodes)
   6 nodes_belgium = zos.nodes_finder.nodes_search(farm_id=1) # (IPv4 nodes, to be used as ingress/egress point.  These are not webgatewaysm, just nodes connected to the internet w
...  ith IPv4 addresses)
   7 nodes_munich = zos.nodes_finder.nodes_search(farm_id=50669) #(IPv6 nodes)
   8
   9 # Make a network spanning Salzburg, Vienna, Lochristu and Munich
  10 nodes_all = nodes_salzburg + nodes_vienna_1 + nodes_belgium + nodes_munich
  11
  12 node_record=[]
  13 ip_range_record=[]
  14
  15 # make sure to set a new port,empty
  16 for i, node in enumerate(nodes_all):
  17     if zos.nodes_finder.filter_is_up(node):
  18         iprange = f"172.20.{i+10}.0/24"
  19         zos.network.add_node(network, node.node_id , iprange, wg_port=u_port)
  20         node_record[i]=node.node_id
  21         ip_range_record[i]=ip_range
  22         print("Node: ", i, " ID: ", node_record[i], " IPv4 address: ", ip_range_record[i])
Tue 24 07:10:27 plorer/pagination.py -  10 - get_page                           : EXCEPTION:
    TypeError("int() can't convert non-string with explicit base",)
--TRACEBACK------------------
<stdin> in <module>
    4
/sandbox/lib/jumpscale/JumpscaleLibs/sal/zosv2/node_finder.py in nodes_search
    62    return self._nodes.list(farm_id=farm_id, country=country, city=city, cru=cru, sru=sru, mru=mru, hru=hru)
/sandbox/lib/jumpscale/JumpscaleLibs/clients/explorer/nodes.py in list
    41    nodes = list(self.iter(farm_id, country, city, cru, sru, mru, hru, proofs))
/sandbox/lib/jumpscale/JumpscaleLibs/clients/explorer/nodes.py in iter
    48    yield from get_all(self._session, self._model, url, query)
/sandbox/lib/jumpscale/JumpscaleLibs/clients/explorer/pagination.py in get_all
    15    iter, pages = get_page(session, 1, model, url, query)
/sandbox/lib/jumpscale/JumpscaleLibs/clients/explorer/pagination.py in get_page
    10    pages = int(resp.headers.get("Pages"), 0)
-----------------------------

int() can't convert non-string with explicit base
JSX>

this was because the explorer were not updated with https://github.com/threefoldtech/zos/pull/615
this is now the case


Polymer passing a list as an attribute must be initialized as an empty list.

 Issue by butlermatt
Originally opened as dart-lang/sdk#15220

If a list being passed as an attribute is initialized with any data other than an empty list, it throws a type error that String is not a subtype of List on the child component.
Repo case:
https://gist.github.com/butlermatt/7570463
Discussion:
https://groups.google.com/a/dartlang.org/d/topic/web-ui/pjZ6GdTSn6I/discussion

 Comment by sigmundch

Added Library-Polymer label.

 Comment by jmesserly

Removed Library-Polymer label.

 Comment by jmesserly

Removed Area-Polymer label.
Added area-pkg, Pkg-Polymer labels.

 Comment by iposva-google

Added Area-Polymer, Triaged labels.

 Comment by sigmundch

I just tried this out in polymer 0.11.0 and seems to be working, yay!

Added AssumedStale label.


Links inside sortable itens do not clear previous focus

Hi.
I have a sorting list that is generated from an external JSON loaded asynchronously, each item has a link inside them that opens a modal using the UI Bootstrap $uibModal service. The problem is that whenever I close a modal, the page jumps to top making it hard to edit items that are on the bottom part of the page since I have to scroll down everytime I close a modal.
I already found what is causing it, for some reason the focus keeps on the button clicked before clicking on the link that opens the modal. If I disable the UI Sortable it works as expected, the button loses the focus when I click on the link.
Clicking on any part of the page (even a blank area) after clicking on the button prevents it from happening since it forces the button to lose the focus. Also changing the a link for a button works too but in my case I need a link there.
As a workaround, I manually forced it to lose the focus, but I know it's not recommended since it touches the DOM from a controller.
I created a Plunker to demonstrate the issue: http://plnkr.co/edit/LYzLdjNf45w4OEUUQZqw?p=preview
Hope I could help to fix this issue!

Thanks for the detailed report.
That's really strange.
I'm not sure how ui-sortable causes/affects this. It might be related to some part of the jquery-ui implementation.

I am closing this issue because I believe it will no longer be fixed.


Pre-Loading previously annotated data in the image

Once the annotation is complete and saved on the DB or some storage. If we want to see what we annotated previously, How can we reload the annotation data into the image without missing a pixel value.
Documentation is not clear and also seen the Source. Nothing is helping out.

We should improve the documentation around  providing saved annotations.

Each image in the images prop has an optional regions, that's where the saved regions go. I think it'd be a good idea to throw that in a code sandbox.

I want to integrate this to a server with a DB. I've extracted the data with the onExit callback function. Once the values are already stored in a DB, I would like to show the marked bounding boxes, selected tags, and class labels when I select the same image again. Is there a way to pass these pre-loaded props to the ReactImageAnnotate component?
I've tried passing an array of arrays to regions, as I have multiple bounding boxes (x, y, w, h), but it isn't working. Have you added any examples or documentation about how to do this?

ach image in the images prop has an optional regions, that's where the saved regions go. I think it'd be a good idea to throw that in a code sandbox.

I tried to pass array of objects to regions,
for ex:
[
        {
          "x": 0.32279365079365074,
          "y": 0.13142857142857142,
          "h": 0.3085714285714286,
          "w": 0.43733333333333335
        }
]

but it did not work for me and the rendering of the component failed. Can you please help how can I add the previously annotated coordinates?


HDDS-7321. Auto rocksDB small sst files compaction.

https://issues.apache.org/jira/browse/HDDS-7321

BTW, the HDDS-7332 doesn't say anything about rocksdb compaction

BTW, the HDDS-7332 doesn't say anything about rocksdb compaction

Right,  It's HDDS-7331 instead.

@ChenSammi Thank you for the work. I think it's a very good feature to have.
Two things come to my mind:

The interface we are using is check(), but compaction seems more than a check operation since it's updating the rocksdb.
The performance issue might not be annoying, Users or Devs might not be easy to find their cluster slow caused by this operation.

I was wondering if we don't do the compaction operation in check(), but only add a need to compact tag. Meanwhile, we can have a compaction thread doing the real compaction when Datanode is not busy so that the Datanode won't be affected by the compaction.

@symious , thanks for the review.

1. The interface we are using is `check()`, but `compaction` seems more than a check operation since it's updating the rocksdb.

2. The performance issue might not be annoying, Users or Devs might not be easy to find their cluster slow caused by this operation.

I was wondering if we don't do the compaction operation in check(), but only add a need to compact tag. Meanwhile, we can have a compaction thread doing the real compaction when Datanode is not busy so that the Datanode won't be affected by the compaction.

Rocksdb has implemented somehow the way you suggested.  rocksdb.compactRange will return immediately. The real compaction will happen in another background thread per RocksDB's schedule.
About the performance concern, I have did some calculation about the rocksdb size of single volume. Say volume is 16TB, in small object/file situation, say 1MB each file, there will be 16 million files(one block each file).  Currently, one block with one chunk is 63 byte(protobuf serialized), it's totally about 1GB for all block data.  Consider there is other data in rocksdb, the total size of rocksdb per 16TB volume could be no more than several GB, or less than 1GB if the files are big files.  So I'm not very worry about the rocksdb performance on datanode.

hello guys~ looks like sammi has addressed all questions. Should we merge this if no further comment?

I found there is a new value for this option: "ManagedCompactRangeOptions.BottommostLevelCompaction" which is "kForceOptimized", the comment for this value is as follows.
  // Always compact bottommost level but in bottommost level avoid
  // double-compacting files created in the same compaction

I'm not sure if this new value is brought up because of some performance issue, may be we can also make this configurable for the convenience of future upgrade?

Cannot find this kForceOptimized in the latest RocksDB release 7.9.2. Can you share the link?

The option is in https://github.com/facebook/rocksdb/blob/main/include/rocksdb/options.h#L1844, seems not added to jni yet, since it's added in 2019, not sure why it's not included in jni.
I raised a PR there, https://github.com/facebook/rocksdb/pull/11181, hoping someone can make some comments.
Anyway, I think it will be good to have the option configurable, maybe in the future, there could be some new choice on the options.

Cannot find this kForceOptimized in the latest RocksDB release 7.9.2. Can you share the link?

The option is in https://github.com/facebook/rocksdb/blob/main/include/rocksdb/options.h#L1844, seems not added to jni yet, since it's added in 2019, not sure why it's not included in jni.
I raised a PR there, facebook/rocksdb#11181, hoping someone can make some comments.
Anyway, I think it will be good to have the option configurable, maybe in the future, there could be some new choice on the options.

@symious , thanks for the further info. Configuration properties are for customers to do the tuning by themselves.  As most customers don't need to know or have the knowledge of these low level specific rocksdb properties meaning and impact, let's choose a good default value instead as current.

let's choose a good default value instead as current.

Ok, it makes sense.

Thanks @symious @kerneltime for the code review.  All the comments are addressed. Please help to take another look of it?

@ChenSammi Thank you for the contribution.
@myskov @kerneltime @DaveTeng0 Thank you for the review.

Thanks @symious @myskov @kerneltime @DaveTeng0 for the code review.


Link to the docs in README is not working (404)

Supports Python 3.5+ only. Read the docs.

Currently Read the docs. link in the README.md sends users to https://docs.deta.sh/docs/lib, which replies with 404.
I believe, it should be either the docs home page (https://docs.deta.sh/docs/home) or SDK page (https://docs.deta.sh/docs/base/sdk).

thank @Senpos , sorry for the late response.
Issue has been fixed, closing it!


Maybe use front-matter yaml markup?

@graphicore suggested it at https://github.com/googlefonts/fontbakery/issues/1584#issuecomment-385244577
It is not clear exactly what would be the benefit of using it. Perhaps we could take a look at an example of how it would look like? Could you provide an example, Lasse?
Also, please clarify the pros and cons of using it.

I agree with Felipe's point in the other issue that the syntax is secondary,and the primary thing is having good content.
My reason for discussing simplification of syntax is to keep the content in one place, ie one string object, in order to make it easier to (a) edit and improve the content and (b) generate pretty docs from those DIY or with standard __doc__ generating tools like Sphinx

However a simple py string is totally unstructured, so a front matter or regex'able pattern could add structure

By regex i mean that a link like [Rationale](http://link.to.issue) can be extracted if needed.

docstring + front matter is not a big thing to implement¹. I think the pros are that there's a single place to put documentation information targeted at humans. Others are that we can treat the information centrally. I.e. the indentation from the checkfunc.__doc__ is already removed, while rationale=""" needs that treatment extra.
It would also remove the ambiguity between the description² part of a multi-line doc string and the rationale keyword (BTW: I never got why rationale was needed in spite of description , please elaborate). I believe the description section of the doc string is the right place to put the rationale, otherwise I wonder what to put there at all.
The only-docstring version is also very transparent on how the translation from doc-string to webpage will happen. The only negative point that I can see is that we can't put a finger on just the rationale section in the description text (without using regex or some other tricks) but since all in there is meant to be read by humans, I am convinced that proper, hierarchical structuring is all we need. For the yaml front-matter, we can figure out special handling for well known (and documented) keys.
Making the front matter data accessible via a property of the check object is also no big deal.
Examples
Here's a existing check with rationale and docsting-description. I believe the markdown structures the information better while keeping it together in one place.
@check(
    id = 'com.google.fonts/check/153'
  , rationale = """
      Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only
      be constructured in a handful of ways. This means a glyph's contour count
      will only differ slightly amongst different fonts, e.g a 'g' could either
      be 2 or 3 contours, depending on whether its double story or single story.
      However, a quotedbl should have 2 contours, unless the font belongs to a
      display family.
    """
)
def com_google_fonts_check_153(ttFont):
  """Check if each glyph has the recommended amount of contours.

  This check is useful to assure glyphs aren't incorrectly constructed.

  The desired_glyph_data module contains the 'recommended' countour count
  for encoded glyphs. The contour counts are derived from fonts which were
  chosen for their quality and unique design decisions for particular glyphs.

  In the future, additional glyph data can be included. A good addition would
  be the 'recommended' anchor counts for each glyph.
  """

docstring version, with some markdown formatting.
@check(id = 'com.google.fonts/check/153')
def com_google_fonts_check_153(ttFont):
  """Check if each glyph has the recommended amount of contours.

  ## Rationale

  Visually QAing thousands of glyphs by hand is tiring. Most glyphs can only
  be constructured in a handful of ways. This means a glyph's contour count
  will only differ slightly amongst different fonts, e.g a 'g' could either
  be 2 or 3 contours, depending on whether its double story or single story.
  However, a quotedbl should have 2 contours, unless the font belongs to a
  display family.

  ## Details

  This check is useful to assure glyphs aren't incorrectly constructed.

  The desired_glyph_data module contains the 'recommended' countour count
  for encoded glyphs. The contour counts are derived from fonts which were
  chosen for their quality and unique design decisions for particular glyphs.

  In the future, additional glyph data can be included. A good addition would
  be the 'recommended' anchor counts for each glyph.
  """

Here's an existing check with more metadata:
@check(
  id = 'com.google.fonts/check/163',
  rationale = """
    According to a Glyphs tutorial (available at
    https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances),
    in order to make sure all versions of Windows recognize it as a valid
    font file, we must make sure that the concatenated length of the
    familyname (NAMEID_FONT_FAMILY_NAME) and style
    (NAMEID_FONT_SUBFAMILY_NAME)
    strings in the name table do not exceed 20 characters.
    """,
  misc_metadata = {
    # Somebody with access to Windows should make some experiments
    # and confirm that this is really the case.
    'affects': [('Windows', 'unspecified')],
    'request': 'https://github.com/googlefonts/fontbakery/issues/1488',
  }
)
  """Combined length of family and style must not exceed 20 characters."""

docstring version, we also use the front-matter proposal:

@check(id='com.google.fonts/check/163')
def com_google_fonts_check_163(ttFont):
  """Combined length of family and style must not exceed 20 characters.

  ---
  # Somebody with access to Windows should make some experiments
  # and confirm that this is really the case.
  affects:
    - ['Windows', 'unspecified']
  request: https://github.com/googlefonts/fontbakery/issues/1488
  ---

  ## Rationale

  According to a Glyphs tutorial (available at
  https://glyphsapp.com/tutorials/multiple-masters-part-3-setting-up-instances),
  in order to make sure all versions of Windows recognize it as a valid
  font file, we must make sure that the concatenated length of the
  familyname (NAMEID_FONT_FAMILY_NAME) and style
  (NAMEID_FONT_SUBFAMILY_NAME)
  strings in the name table do not exceed 20 characters.
"""

Footnotes
¹ implement front matter parsing
def extractFrontmatter(description):
    default =  description, {}
    lines = description.splitlines(True)
    if lines[0].strip() != '---':
        return default

    lines = lines[1:]
    yamlData=None
    for i, line in enumerate(lines):
        if line.strip() == '---':
            yamlData = ''.join(lines[:i])
            lines = lines[i+1:]
            break
    if yamlData is None:
        return default

    try:
        parsed = yaml.load(yamlData)
    except yaml.YAMLError as exc:
        # Maybe log exc here.
        return default

    return ''.join(lines), parsed

² pep 257: "Multi-line docstrings consist of a summary line just like a one-line docstring, followed by a blank line, followed by a more elaborate description."

From @felipesanches in https://github.com/googlefonts/fontbakery/issues/1584#issuecomment-385291162

I looked up this "front-matter yaml" thing this afternoon but we already have a good solution for our needs. All the data is already available on runtime and now better organized with the misc_metadata field suggested by Lasse and adopted on the latest commit above.
We should focus efforts on the real important thing which is collecting more metadata such as rationales for the checks rather than the technology adopted or syntactic sugar

my five cents:

is already available on runtime

Not true. unknown keywords are going into the void. Especially rationale and misc_metadata are not available.

better organized with the misc_metadata field suggested by Lasse

yeah, I suggested this, but I think front matter is an adequate alternative.

We should focus efforts on the real important thing which is collecting more metadata

I agree that this is bikeshedding, but this is also an  anachronism. Why aren't we using the docstrings in the first place, they were there before the rationale keyword etc. appeared. I don't remember a proposal, examples and pro-and cons for these. It's a bit unfair to create precedents and then act like they are the status quo. So what are the pros on these constructor keyword arguments? We never heard about these.

rather than the technology adopted or syntactic sugar

See my answer above, it's no big thing to do, the efforts are no big deal. In fact, writing all these bike shedding commentary took probably already longer than implementing it.
In the end, I would hope that collecting metadata is easier when done in docstings only, as one mardown formatted article, structured hierarchically.

Relabeled as P3 soon as I'm planning to use this kind of data soon.


merge from template-node-app

README.md

docs(README): update from template

:tada: This PR is included in version 2.1.19 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[BUG] - BlueprintTweaks: Using Mirror breaks splitter priority settings

When using an existing blueprint with a splitter that has a port set to priority output, if you then use the mirror function and paste, the splitter port that was set loses the priority setting. The priority stays with the port located at the non-mirror location.
Steps to reproduce the behavior:

Create blueprint with a splitter.  Set one output port to priority (not filtered to an item).
Save blueprint
Select Blueprint and use mirror key; Paste
The original port losses the priority.  Instead the port that was in the original position gets the priority setting.

Expected behavior
Splitter should keep the priority setting (like it does when you paste the same blueprint without mirror.
Belt 1 set to priority

Copy, mirror, paste.  Now input belt has priority (so the "right hand side port" was used instead of the mirror)

Thanks for your report. I will look into this issue