Scheduling: Inter-Pod Affinity

From Kubernetes docs:

Inter-pod affinity and anti-affinity allow you to constrain which nodes your pod is eligible to be scheduled based on labels on pods that are already running on the node rather than based on labels on nodes. The rules are of the form "this pod should (or, in the case of anti-affinity, should not) run in an X if that X is already running one or more pods that meet rule Y". Y is expressed as a LabelSelector with an optional associated list of namespaces; unlike nodes, because pods are namespaced (and therefore the labels on pods are implicitly namespaced), a label selector over pod labels must specify which namespaces the selector should apply to. Conceptually X is a topology domain like node, rack, cloud provider zone, cloud provider region, etc. You express it using a topologyKey which is the key for the node label that the system uses to denote such a topology domain; for example, see the label keys listed above in the section Interlude: built-in node labels.

Some preliminary thoughts on this.
I think we're necessarily going to be forced to support a known set of topology domains. This is similar to the well known NodeSelectors mechanism we use, and we might start with the cloud agnostic and documented domains:topology.k8s.io/zone and topology.k8s.io/hostname. It's likely that over time, we will need to be extensible to additional topology domains, perhaps on both a generic and cloud provider basis.
These two examples demonstrate the emergent complexity in topology. For example, zones are of a finite set ~= 3, where hostname is an infinite set of existing nodes + potential nodes. Balancing pods across a finite set is straight forward, but what do you do when "balancing" across an infinite set. We could simply launch 1 pod per node, but that may violate the maxSkew of pods that are already scheduled onto existing nodes. It's also possible that the current spread could be 3 pods per existing node, yet the upcoming nodes might only be able to have a single pod, which would violate max skew.

Sticking to pod topology rather than inter-pod affinity due to recommendation from SIG scalability.


Bootstrap 4 modal animations do not work

I am not sure but documentation for B4 modals https://getbootstrap.com/docs/4.6/components/modal/ has an example named Live demo which should be animated but it is not. It displays without any animation. Also I have a project where I import bootstrap via npm
window.$ = window.jQuery = require('jquery')
import 'bootstrap/dist/css/bootstrap.min.css'
import 'bootstrap/dist/js/bootstrap.min.js'

and modals with .fade class also have no animation. Is it a bug or not? Thanks.

Thanks but what it means "reduced motion is enabled"? How can I disable it? Hear the first time about it.

https://getbootstrap.com/docs/4.6/getting-started/accessibility/#reduced-motion

How can I turn it on if I load it via import?

My phone is of what i can do
On Sun, Aug 29, 2021, 2:16 PM camo @.***> wrote:

How can I turn it on if I load it via import?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/twbs/bootstrap/issues/34829#issuecomment-907782387,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUZ6X3UFPCFXYBXC7MTAQN3T7IQKJANCNFSM5C4FVBIQ
.

This depends on your system (MacOS, Windows, etc.). Search in your settings things related to animation and motion (probably in accessibility settings).

@ffoodd dont understand. The Bootstrap settings are in _variables.scss file. It does not depend on system settings.

Yes it does. The CSS media-query prefers-reduced-motion responds to user preferences.

Nope they don't work at all
On Sun, Aug 29, 2021, 2:49 PM Gaël Poupard @.***> wrote:

Yes it does. The CSS media-query prefers-reduced-motion responds to user
preferences.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/twbs/bootstrap/issues/34829#issuecomment-907848314,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIK4WZVHBXDE66BWVXWWBY3T7J6LZANCNFSM5C4FVBIQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Yes I have it. It works. On Windows Settings > Ease of access > Show animations
Thanks.


Sync content of 'CODE_OF_CONDUCT.md' with doc

Sync content of 'CODE_OF_CONDUCT.md' with doc

Codecov Report

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

@@            Coverage Diff            @@
##             master    #4667   +/-   ##
=========================================
  Coverage     55.48%   55.48%
  Complexity      426      426
=========================================
  Files          1134     1134
  Lines         20515    20515
  Branches       3805     3805
=========================================
  Hits          11383    11383
  Misses         8416     8416
  Partials        716      716

Continue to review full report at Codecov.

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

Pull Request Test Coverage Report for Build 10126

0 of 0   changed or added relevant lines in 0 files are covered.
3 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.005%) to 59.035%

Files with Coverage Reduction
New Missed Lines
%

sharding-orchestration/sharding-orchestration-core/src/main/java/org/apache/shardingsphere/orchestration/internal/util/IpUtils.java
3
76.0%

Totals

Change from base Build 1024:
-0.005%

Covered Lines:
12111

Relevant Lines:
20515

💛  - Coveralls


ddev auth ssh should auth all available private keys, fixes #1291, fixes #1282

The Problem/Issue/Bug:
ddev auth ssh only currently loads keys named "id_rsa" and "id_dsa". And that's mighty limited. It should load all private keys.
How this PR Solves The Problem:
Use the "file" command to find out which files in the directory are private keys, load all of them.
Manual Testing Instructions:

Use (or create) some extra private keys. For example ssh-keygen -t dsa, ssh-keygen -t rsa -f juergen_key, ssh-keygen -f ~/.ssh/junk, ssh-keygen -t ed25519 -f ~/.ssh/ed25519_sample
Run ddev auth ssh. You should be prompted for passphrases for each key that has a passphrase.
The keys should now be available for use in the web container.

Automated Testing Overview:
I haven't added any testing at this point.
Related Issue Link(s):
#1291: ddev auth ssh does not add my second ssh-key to the container
#1282: ddev auth ssh doesn't work with with ed25519 keys
Release/Deployment notes:

Stupid question: How do I limit the use of the keys?
Aka: I have a ton of ssh keys of old projects (past me thought it is a good idea) and at least two are used on bitbucket and the wrong is used to git clone.
So I think either:

I limit the imported keys (which is not possible)
tell ssh/git to use the right one (is this even possible via ssh agent?)

It would be better to look for support like this in one of the support venues rather than an old PR, but the easiest technique is to move the older unused keys into a subdirectory or different directory, or use ddev auth ssh -d /path/to/keys/you/actually/use.
Apparently you can use a .ssh/config inside the web container that specifies the key to use for a given situation; you give it the pubkey there instead of the key location. I haven't tried this but somebody pointed it out the other day.


Improve the authenticated homepage

Remake of #2651 for #2584.

This is probably quite out of date after #2938. Is there work worth recovering from this PR?

I'm tagging this for review. This PR isn't good enough to close #2584 but it's better than what we have now, and it's been open for a long time so let's merge it and start another one for further improvements.

Anyone have a screenshot of this?

@Changaco The reason I think this is a step backward from even the really bad homepage we have now is that this comes across as being like one of the other profile pages, but it is sufficiently unlike them to be very confusing. When I see this page my first instinct is to click on the subnav under the heading ... and there is no subnav under the heading. Furthermore, the teams and communities sections are duplicates of what we have on the actual profile page, heightening my cognitive dissonance. I don't see this adding value over the main profile page itself. For that reason, I think that a simple redirect to the profile page for authenticated users would be a better workaround than this page.

I've removed the avatar in the sidebar, plus the Teams and Communities sections. The problem now is that the page looks empty…

I can live with this if you can, @Changaco.

IRC


ROX-11169: Remove authz plugin CI config

Description
Authz plugin is deprecated and its usages was removed from e2e tests.
This PR cleanups the configuration and deployment of plugin.
Testing Performed
CI

Current dependencies on/for this PR:

master

PR #2170   👈

This comment was auto-generated by Graphite.


Extension OS dependencies

Some libraries (no matter the language) may need OS packages as dependencies.
The way buildpacks (CNB) solve this is to have a big base image packed with dependencies that may be needed. It's better for reusability. It also has the ability for you to provide your own base image if you need to.
Have we thought about this? If a Python extension needs gettext for example, do we provide a config to add packages to the runtime?[^1] Or do we simply allow to replace the runtime image with a custom one?
In the future we should publish in an OCI registry our base images for the SDK runtimes. A user can use that as a base and add on stuff that’s needed. Or replace it entirely with Debian instead of Alpine for example.
It has to be done in a way that doesn’t break the runtime protocol, but this pattern already exists elsewhere (buildpacks, buildkit frontends…).
That's my prefered solution. It's more flexible. Are there other options or ideas around this?
[^1]: There's the different package managers and OSes to consider. Even the name of the packages change between these.

We should have guidelines for making extensions and we can add one for preferring a common base image. Otherwise, if authors change it just for preference sake we lose layer reusability increasing disk size and network traffic.
But if you're making extensions for your own company, it's good to have this flexibility.

Totally agree that the base image can't be fixed, in addition to what you mentioned we will also run into company compliance issues eventually.
Besides just customization of the base image, runtimes are most likely going to need to other configuration settings. E.g. some of the ideas mentioned here: https://github.com/dagger/dagger/issues/3036#issue-1376410749
So I think there's probably a path to supporting base image customization through that. Made an issue for it: https://github.com/dagger/dagger/issues/3352

Also, while I'm not opposed to publishing our own OCI images and such, I do like how we currently avoid that by using LLB in the engine. It would be nice if we could maintain that model in the long run. Random idea: maybe users could customize the base image by providing graphql queries (either raw or maybe even lang-specific) in their configuration (optionally).
Lots to figure out there, not a fleshed out idea, just something to keep in mind, doesn't need to be figured out now.

Things are very different now. I'm going to close and we'll revisit later. The Python SDK already provides an escape hatch to use a different base image from the default one, by a setting in pyproject.toml. However, the other SDKs don't have this feature, so this needs a decision on a convention.
If we move to Wolfi, we can also support an array of packages, also defined in pyproject.toml, to install there.


New API: Recurrent payments

Implemented in 3.0.0-alpha.
https://github.com/Markette/Gopay/releases/tag/v3.0.0-alpha


Adam Equivalence

Original Pytorch Adam doesn't match paper; resnet50 reference uses this different optimizer. Recently, pytorch changed Adam (to match paper). Slightly different numerics. TF matches what pytorch used to do; TF explicitly documents that they do not implement Adam's numerics as described by the paper.
Currently, latest pytorch and TF differ in Adam implementations and numerics.
(1) Allow both optimizers -- non ideal from an equivalence perspective.
(2) Implement "MLPerf Adam" which should be used for in the framework which differs. (either (a) create one for TF, or (b) create one for pytorch) (downside is adding engineering work)
(3a) Have the frameworks change default Adam (unlikely)
(3b) Add a special flag for compatibility (to TF for paper adam, or to pytorch for tf style adam)
AI(everyone) prepare for vote next week.

Proposal:
Create a pytorch adam optimizer (which matches tensorflow) and have MLPerf submitters using pytorch "plug in" this optimizer.
We will move forward with this proposal; pending details who makes pytorch optimizer.

We are waiting on investigation into this from FB/pytorch.

@bitfort Any update on this?

AI(NV) - push forward on this, volunteered in John's absence.

SWG direction to submitters: if you are using pytorch Adam, remember to see the allow optimizer table here:
https://docs.google.com/spreadsheets/d/1be3ueG_NXY1Ei7rVem7R9FC5Xymu5d8naFaD645wFr0/edit#gid=1978307898
This lists the optimizers which have been checked for equivalence. If you do not use one of these optimizers, you will have to check and ensure equivalence yourself.

No further action required.


Invert upload flag to allow for not uploading attestation

Summary

The cosign attest command has an --upload flag, designed to tell cosign to upload the generated attestation to the registry.
However, this bool value is set to true by default, which ends up meaning that there's no way to instruct cosign not to upload the generated attestation (IIUC).
This PR changes the flag to --no-upload, which inverts the logic and behaves as you'd expect. Without the flag, the attestation is uploaded. With the flag, the attestation is not uploaded, and instead, the attestation DSSE is sent to stdout.
Note: This is a breaking change for the CLI, since it removes an existing flag. The flag hadn't been affecting cosign's execution, so I'm not sure how many folks were using it. But regardless, I'm happy to approach this a different way to make the change non-breaking, just let me know!
Ticket Link

N/A
Release Note

attest: replaces '--upload' flag with a '--no-upload' flag

Note: This is a breaking change for the CLI, since it removes an existing flag. The flag hadn't been affecting cosign's execution, so I'm not sure how many folks were using it. But regardless, I'm happy to approach this a different way to make the change non-breaking, just let me know!

If the flag was broken I see no problem fixing it like this!


Next Release

Is there already a schedule for the next release date? I would really like to use CAS_RENAME_ATTRIBUTES.

yep new release please!! thanks!

3.5.10

thanks a lot!


Refactoring Convolution; factor out convolutions from layers.py

Refactoring Convolution; factor out convolutions from layers.py

@ruomingp could you review? from 936


Empty list of nodes in @QueryResult is mapped to object array, causing ClassCastException

I have a Neo4j custom procedure which returns a Stream of custom query results, mapped to the following class by Spring Data Neo4j:
class MyQueryResult {
    private List<MyNode> result;

    public MyQueryResult(List<MyNode> result) {
        this.result = result;
    }

    List<MyNode> getResult() {
        return result;
    }
}

(Where MyNode is a node entity also defined in the application)
When one of the query results contains an empty list, the application throws the following exception while mapping the results: java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class java.util.List ([Ljava.lang.Object; and java.util.List are in module java.base of loader 'bootstrap')
Expected Behavior

If Neo4j returns an empty list as a field in a @QueryResult-annotated object, Neo4j-OGM should also map it to an empty List.
Current Behavior

It appears that Neo4j-OGM maps the result field to an empty Object array instead of a List.
Possible Solution

The problem appears to be caused by the class org.neo4j.ogm.context.RestModelMapper. The following method returns false for empty lists (version specific):

RestModelMapper#isMappable (in Neo4j-OGM version 3.1.8)
RestModelMapper.ResultRowBuilder#canBeMapped (in Neo4j-OGM version 3.2.0-alpha05)

This in turn results in replacing the list with an empty Object array in the result by the following method (again, version specific):

RestModelMapper#convertListValueToArray (in 3.1.8)
RestModelMapper.ResultRowBuilder#convertToTargetContainer (in 3.2.0-alpha05)

Steps to Reproduce (for bugs)

I have created a small Spring Boot application with an embedded Neo4j database to demonstrate the issue: https://github.com/rlippolis/neo4j-ogm-mapping-bug
The demo app uses kind of a useless custom procedure (finding nodes by name) which of course should be implemented with a normal query, but it's just to showcase the bug.
Context

I am using some custom Neo4j Procedures to find specific paths through my graph. Because it is not (yet) possible to return a Path directly to a Spring Data Neo4j application, I use an @QueryResult object with lists of nodes in the path. It could sometimes occur that some of these nodes are not present in a path, so the lists may be empty. I like the fact that I can immediately map these lists to specific Node entities in my application, without doing some sort of custom mapping (what else is an OGM layer for, right? 😁 ). It would help me tremendously if this issue would be fixed, or if a suitable workaround is provided.
Your Environment

OGM Version used: 3.1.8 (but it still occurs in 3.2.0-alpha05)
Java Version used: 11.0.2
Neo4J Version used: 3.4.10 (also tested with 3.5.3, makes no difference)
Bolt Driver Version used (if applicable): default, not explicitly specified
Spring Boot version used: 2.1.3.RELEASE
Spring Data Neo4j version used: 5.1.5.RELEASE
Operating System and Version: Tested both on Windows and Linux
Link to your project: https://github.com/rlippolis/neo4j-ogm-mapping-bug

A simple workaround is accomplished by explicitly returning null from the Neo4j Procedure when the resulting List is empty. Not so pretty, but it works.

Thanks for the detailed analysis. As you might noticed, both mapping areas vary by a big difference and this area is a mess.
However, I think that this is fixable and I'll take care.

Thanks again @rlippolis.
I'm gonna close this issue here and opened up this one:
https://jira.spring.io/browse/DATAGRAPH-1210
See the reasoning over there. The array handling is special. I don't like it, but it's easier (as in least invasive), to fix the usage in SDN.
Another workaround for you remove the constructor:
@QueryResult
class MyQueryResult {
    private List<MyNode> result;

    List<MyNode> getResult() {
        return result;
    }
}

You haven't final fields, so that works. This way, standard Neo4j-OGM behaviour get's triggered and it knows how to deal with the special array handling.

Thanks @michael-simons for the quick action!


Translate "GogingTime" without touching logic

I was looking for translation docs and I have found similar issue https://github.com/nhn/tui.calendar/issues/90
I have to translate "GoingTime" and I know I can replace whole template, but this is bad to replace logic, specially if you use "datetime" imported from webpack.
Version
4.5.3
Development Environment
-
Current Behavior
    'goingDuration-tmpl': function(model) {
        var goingDuration = model.goingDuration;
        var hour = parseInt(goingDuration / SIXTY_MINUTES, 10);
        var minutes = goingDuration % SIXTY_MINUTES;

        return 'GoingTime ' + datetime.leadingZero(hour, 2) + ':' + datetime.leadingZero(minutes, 2);
    },

GoingTime 0:15
Expected Behavior
    'goingDurationLang': 'Tempo di guida',

Tempo di guida 0:15

No discusstion.
If you need, See Implementation of ReadingZero.
    /**
     * pad left zero characters.
     * @param {number} number number value to pad zero.
     * @param {number} length pad length to want.
     * @returns {string} padded string.
     */
    leadingZero: function(number, length) {
        var zero = '',
            i = 0;

        if (String(number).length > length) {
            return String(number);
        }

        for (; i < (length - 1); i += 1) {
            zero += '0';
        }

        return (zero + number).slice(length * -1);
    },

If your application does not have to support IE, it is also good to use padStart.

Sorry I can't see any use of padStart or leadingZero for translation.

How is this marked as solved? I don't understand how padStart or leadingZero functions can solve this. Please elaborate.

e.g.
const cal = new Calendar(el, {
  template: {
        goingDuration: function(schedule) {
            /*
               Change the format to whatever you want and use it.
            */
            return `Tempo di guida: ${schedule.goingDuration} min.`;
        },
        comingDuration: function(schedule) {
            return `Coming Time: ${schedule.comingDuration} min.`;
        },
  }
});


Data Source as an observable?

I have a socket.io service which supplies my ng2-smart-table lines. I want the table to update itself as new data becomes available on the server. My API releases and init package on connection with all existing lines, then a subsequent new event with any individual releases.
Is it possible to use this observable to automatically update the table?

Any update on this I am also facing the same issue?

Still nothing ?


Add base Button component

Fixes

Fixes #365 by @sarayourfriend
Description

Adds a base VButton component that basically just wraps the default button element with styles as well as some sensible defaults like type = 'button'. There is also explicit active state handling to allow for situations where a button might need the "active" appearance without being actually :active (which only applies to anchor elements anyway).
Testing Instructions

Checkout this branch and run npm run storybook and verify that the VButton component in Storybook looks the same as the figma designs linked in the issue attached to this PR.
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main) or a parent feature branch.
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@obulat or @krysal do either of y'all have time sometime to review this? Thanks 😁


feat(scheduler): add waitAsyncEventsFinished() to wait for async event execution

Description
Added a method to wait for the execution of async events. This is the third PR as #277 was outdated with the 1.18 update.
Checklist
The following items should be checked before the pull request can be merged.

[x] Version number updated in settings.gradle and Readme.md.
[x] Unit tests added.
[x] Code follows existing code format.

It would be great if this PR can be merged.

#296 will need to be merged before this will be able to compile successfully.

#296 will need to be merged before this will be able to compile successfully.

I rebased my PR onto it, so once the other PR is merged this can be merged.


new file layout

I don't see any "expect" files though so I don't know how those tests ever worked... but they should be in "test/detect" now, just like in the core library.


Return metrics on custom object evaluation

Return a list of dict containing the metrics that are currently being displayed on terminal.
Refactor code to avoid unnecessary duplicates.
Show more information on unexpected flows

Very useful, Thank You @rola93
I have tested this locally and confirm the returned metrics dictionary is as displayed by
trainer.evaluateModel(...)
Your work on this was timely as I was just looking to use this to further automate workflow in Object Detection training, specifically resuming training. https://github.com/OlafenwaMoses/ImageAI/issues/298#issuecomment-522796921

This is a brilliant work. Thanks for the effort on this. It will be better if you can effect the following changes:

add print of  mAP evaluation result for each model if a directory path is parsed

Suggestions for updating documentation,

@rola93 do you want to incorporate in your PR #302
@OlafenwaMoses is the only documentation location ?

https://github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/Custom/CUSTOMDETECTIONTRAINING.md#evaluating-your-saved-detection-models-map
from imageai.Detection.Custom import DetectionModelTrainer

trainer = DetectionModelTrainer()
trainer.setModelTypeAsYOLOv3()
trainer.setDataDirectory(data_directory="/content/hololens")
evaluate_metrics = trainer.evaluateModel(model_path="/content/hololens/models",
                               json_path="/content/hololens/json/detection_config.json",
                               iou_threshold=0.5,
                               object_threshold=0.3,
                               nms_threshold=0.5)

Console stdout and stderr
Using TensorFlow backend.
Starting Model evaluation....
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/imageai-2.1.3-py3.6.egg/imageai/Detection/Custom/yolo.py:24: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py:292: UserWarning: No training configuration found in save file: the model was *not* compiled. Compile it manually.
  warnings.warn('No training configuration found in save file: '
Model File:  /content/hololens/models/detection_model-ex-02--loss-7.47.h5

Using IoU :  0.5
Using Object Threshold :  0.3
Using Non-Maximum Suppression :  0.5
hololens: 0.8252
mAP: 0.8252
===============================
Model File:  /content/hololens/models/detection_model-ex-01--loss-25.31.h5

Using IoU :  0.5
Using Object Threshold :  0.3
Using Non-Maximum Suppression :  0.5
hololens: 0.4390
mAP: 0.4390
===============================
Model File:  /content/hololens/models/detection_model-ex-03--loss-6.20.h5

Using IoU :  0.5
Using Object Threshold :  0.3
Using Non-Maximum Suppression :  0.5
hololens: 0.8415
mAP: 0.8415
===============================

Dictionary view of metrics
evaluate_metrics
[{'average_precision': {'hololens': 0.8252334437735249},
  'map': 0.8252334437735249,
  'model_file': '/content/hololens/models/detection_model-ex-02--loss-7.47.h5',
  'using_iou': 0.5,
  'using_non_maximum_suppression': 0.5,
  'using_object_threshold': 0.3},
 {'average_precision': {'hololens': 0.4389696930319986},
  'map': 0.4389696930319986,
  'model_file': '/content/hololens/models/detection_model-ex-01--loss-25.31.h5',
  'using_iou': 0.5,
  'using_non_maximum_suppression': 0.5,
  'using_object_threshold': 0.3},
 {'average_precision': {'hololens': 0.8414673569376486},
  'map': 0.8414673569376486,
  'model_file': '/content/hololens/models/detection_model-ex-03--loss-6.20.h5',
  'using_iou': 0.5,
  'using_non_maximum_suppression': 0.5,
  'using_object_threshold': 0.3}]

Example of use
for metric in evaluate_metrics:
  print("Model:{modelFile} \t Average mAP:{mAP:.4f}".format(modelFile=metric['model_file'],mAP=metric['map']))

print('--------------------------------------------------------------------')
for metric in evaluate_metrics:
  print("Model:{modelFile}".format(modelFile=metric['model_file']))
  for theclass in metric['average_precision']:
      print("\t\t\t\t\t\t\t\t Item:{item} \t mAP:{mAP:.4f}".format(item=theclass, mAP=metric['average_precision'][theclass]))

Model:/content/hololens/models/detection_model-ex-02--loss-7.47.h5 	 Average mAP:0.8252
Model:/content/hololens/models/detection_model-ex-01--loss-25.31.h5 	 Average mAP:0.4390
Model:/content/hololens/models/detection_model-ex-03--loss-6.20.h5 	 Average mAP:0.8415
--------------------------------------------------------------------
Model:/content/hololens/models/detection_model-ex-02--loss-7.47.h5
								 Item:hololens 	 mAP:0.8252
Model:/content/hololens/models/detection_model-ex-01--loss-25.31.h5
								 Item:hololens 	 mAP:0.4390
Model:/content/hololens/models/detection_model-ex-03--loss-6.20.h5
								 Item:hololens 	 mAP:0.8415

@auphofBSF, I'm sorry but I didn't get your point with respect to updating the docs
I was wondering if shouldn't add a verbose parameter to avoid printing always, what do you think?

@auphofBSF, I'm sorry but I didn't get your point with respect to updating the docs
I was wondering if shouldn't add a verbose parameter to avoid printing always, what do you think?

I like your thinking but would like to suggest the following to improve overall monitoring
(@OlafenwaMoses I would appreciate your thoughts on this)

A more consistent  and multi-functional global level of verbosity,  print(...)  in project be converted to using the python logging. module

import logging
logging.info(......)
logging.debug(.....)

In that way verbosity  can be globally configured for each application usage of imageai and granularly adjusted for each class with a diverse set of logging options up to the final user

More detailed progress metrics, I was looking through all the code for custom object detection and looking for some more granular level of metrics on training or evaluation progress.  I extensively use the module prometheus_client import  prometheus_client   for monitoring of long running python applications, its lightweight and easy to add and just works.

I look forward to other suggestion and possibly putting this on feature_request, or enhancements list and to other suggestions and willing to help put some of this in place

I agree with you, print are not the best option as I see it, and maybe moving to logging isa better option, but it goes out of scope for this threaad, maybe we can open an issue to keep discussing it.
with respect to the more detailed logging on training, I've never heard about prometheus client, I will read to see what is it about, but at first sight, monitoring training looks like very similar to what Tensorboard callback does. It was added on 291 but only for custom object detection training (maybe should add it to the image classifier training too to keep it uniform)
Once again, this second point is a nice discussion which is out of scope for this thread. Lets open an issue to discuss it :D

@auphofBSF, I'm sorry but I didn't get your point with respect to updating the docs

Hello @rola93 with regard to the documentation I was responding to @OlafenwaMoses  comment
https://github.com/OlafenwaMoses/ImageAI/pull/302#pullrequestreview-277393518

add print of mAP evaluation result for each model if a directory path is parsed

As I was finishing my response I thought well this or something like this really needs to go into the documentation https://github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/Custom/CUSTOMDETECTIONTRAINING.md#evaluating-your-saved-detection-models-map.
I thought if you pasted in or made your own variation

add print of mAP evaluation result for each model if a directory path is parsed

into /imageai/Detection/Custom/CUSTOMDETECTIONTRAINING.m  then it could all be incorporated within the same PR #302
Willing to assist however

With respect to the more detailed logging on training, I've never heard about prometheus client, I will read to see what is it about, but at first sight, monitoring training looks like very similar to what Tensorboard callback does. It was added on 291 but only for custom object detection training (maybe should add it to the image classifier training too to keep it uniform)

Agreed these are both out of scope, I will create  Issue/Enhancements for each of them.
The Tensorboard support you added in #291 certainly looks great. It offers the prospect of  real in-depth and very useful training monitoring. I am a relative Newbie to DL and all the tools, so look forward to looking at that, will continue discussions in the new to be created issue/enhancement.

Hello @rola93 with regard to the documentation I was responding to @OlafenwaMoses comment
#302 (review)

ok, I think I got it now, thanks for the clarification @auphofBSF

* add `print` of  **mAP** evaluation result for each model if a directory path is parsed

@OlafenwaMoses I think it's already there. Consider that the logic was modified a little bit to avoid duplicate code, so now if a filename is given, it is put in a list, and if a directory is given, then each file of the directory is put on the list. Therefore, after this step on, there is always a list with at least one file path. Does it makes sense?
@auphofBSF I'll add your suggestions to the docs and update the PR accordingly

me too, it's a pleasure to contribute! :D let's wait for @OlafenwaMoses  to merge it

This is a brilliant work. Thanks for the effort on this. It will be better if you can effect the following changes:

add print of  mAP evaluation result for each model if a directory path is parsed

Suggestions for updating documentation,

@rola93 do you want to incorporate in your PR #302
@OlafenwaMoses is the only documentation location ?

https://github.com/OlafenwaMoses/ImageAI/blob/master/imageai/Detection/Custom/CUSTOMDETECTIONTRAINING.md#evaluating-your-saved-detection-models-map
from imageai.Detection.Custom import DetectionModelTrainer

trainer = DetectionModelTrainer()
trainer.setModelTypeAsYOLOv3()
trainer.setDataDirectory(data_directory="/content/hololens")
evaluate_metrics = trainer.evaluateModel(model_path="/content/hololens/models",
                               json_path="/content/hololens/json/detection_config.json",
                               iou_threshold=0.5,
                               object_threshold=0.3,
                               nms_threshold=0.5)

Console stdout and stderr
Using TensorFlow backend.
Starting Model evaluation....
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/imageai-2.1.3-py3.6.egg/imageai/Detection/Custom/yolo.py:24: to_float (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
/usr/local/lib/python3.6/dist-packages/keras/engine/saving.py:292: UserWarning: No training configuration found in save file: the model was *not* compiled. Compile it manually.
  warnings.warn('No training configuration found in save file: '
Model File:  /content/hololens/models/detection_model-ex-02--loss-7.47.h5

Using IoU :  0.5
Using Object Threshold :  0.3
Using Non-Maximum Suppression :  0.5
hololens: 0.8252
mAP: 0.8252
===============================
Model File:  /content/hololens/models/detection_model-ex-01--loss-25.31.h5

Using IoU :  0.5
Using Object Threshold :  0.3
Using Non-Maximum Suppression :  0.5
hololens: 0.4390
mAP: 0.4390
===============================
Model File:  /content/hololens/models/detection_model-ex-03--loss-6.20.h5

Using IoU :  0.5
Using Object Threshold :  0.3
Using Non-Maximum Suppression :  0.5
hololens: 0.8415
mAP: 0.8415
===============================

Dictionary view of metrics
evaluate_metrics
[{'average_precision': {'hololens': 0.8252334437735249},
  'map': 0.8252334437735249,
  'model_file': '/content/hololens/models/detection_model-ex-02--loss-7.47.h5',
  'using_iou': 0.5,
  'using_non_maximum_suppression': 0.5,
  'using_object_threshold': 0.3},
 {'average_precision': {'hololens': 0.4389696930319986},
  'map': 0.4389696930319986,
  'model_file': '/content/hololens/models/detection_model-ex-01--loss-25.31.h5',
  'using_iou': 0.5,
  'using_non_maximum_suppression': 0.5,
  'using_object_threshold': 0.3},
 {'average_precision': {'hololens': 0.8414673569376486},
  'map': 0.8414673569376486,
  'model_file': '/content/hololens/models/detection_model-ex-03--loss-6.20.h5',
  'using_iou': 0.5,
  'using_non_maximum_suppression': 0.5,
  'using_object_threshold': 0.3}]

Example of use
for metric in evaluate_metrics:
  print("Model:{modelFile} \t Average mAP:{mAP:.4f}".format(modelFile=metric['model_file'],mAP=metric['map']))

print('--------------------------------------------------------------------')
for metric in evaluate_metrics:
  print("Model:{modelFile}".format(modelFile=metric['model_file']))
  for theclass in metric['average_precision']:
      print("\t\t\t\t\t\t\t\t Item:{item} \t mAP:{mAP:.4f}".format(item=theclass, mAP=metric['average_precision'][theclass]))

Model:/content/hololens/models/detection_model-ex-02--loss-7.47.h5 	 Average mAP:0.8252
Model:/content/hololens/models/detection_model-ex-01--loss-25.31.h5 	 Average mAP:0.4390
Model:/content/hololens/models/detection_model-ex-03--loss-6.20.h5 	 Average mAP:0.8415
--------------------------------------------------------------------
Model:/content/hololens/models/detection_model-ex-02--loss-7.47.h5
								 Item:hololens 	 mAP:0.8252
Model:/content/hololens/models/detection_model-ex-01--loss-25.31.h5
								 Item:hololens 	 mAP:0.4390
Model:/content/hololens/models/detection_model-ex-03--loss-6.20.h5
								 Item:hololens 	 mAP:0.8415

Good work! The update to the README is just fine.

@auphofBSF, I'm sorry but I didn't get your point with respect to updating the docs
I was wondering if shouldn't add a verbose parameter to avoid printing always, what do you think?

I like your thinking but would like to suggest the following to improve overall monitoring
(@OlafenwaMoses I would appreciate your thoughts on this)

A more consistent  and multi-functional global level of verbosity,  print(...)  in project be converted to using the python logging. module

import logging
logging.info(......)
logging.debug(.....)

In that way verbosity can be globally configured for each application usage of imageai and granularly adjusted for each class with a diverse set of logging options up to the final user

More detailed progress metrics, I was looking through all the code for custom object detection and looking for some more granular level of metrics on training or evaluation progress.  I extensively use the module prometheus_client import   prometheus_client   for monitoring of long running python applications, its lightweight and easy to add and just works.

I look forward to other suggestion and possibly putting this on feature_request, or enhancements list and to other suggestions and willing to help put some of this in place

@auphofBSF I do agree with your suggestion on using the logging feature instead of the print. Will update the library soon to include this.


CHORE: Improve test coverage (follow-up)

Codecov Report

Merging #5 (5c03916) into master (c958c8b) will increase coverage by 0.52%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master       #5      +/-   ##
==========================================
+ Coverage   96.05%   96.57%   +0.52%
==========================================
  Files           8        8
  Lines         482      497      +15
==========================================
+ Hits          463      480      +17
+ Misses         19       17       -2

Impacted Files
Coverage Δ

querystring_tag/templatetags/tests.py
100.00% <100.00%> (ø)

querystring_tag/utils.py
100.00% <0.00%> (+11.11%)
:arrow_up:

Continue to review full report at Codecov.

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


Fix scroll animation callback called twice #255

See issue #255.
When showing a bubble on a target outside view, Hopscotch attempts to smooth scroll the target into view. Scrolling is attempted via the use of YUI or jQuery when available. This issue is related to how the scroll position is animated using jQuery.
jQuery calls the animation callback for each of the matched elements in the selector. Hopscotch was selecting both the html element and the body element for adjusting the scrollTop value, leading to the animation callback being called twice.
Adjusting scrollTop on the html element seems questionable anyway, so just removing it fixes the issue.

Thanks for the investigation and fix. I'm concerned about the cross-browser implications of this. If I remember correctly, WebKit browsers preferred setting scrollTop on body, while Firefox supported scrollTop on html instead. That said, this was a long while ago, so I'll need to do some investigation to see if this quirk has been fixed.

If it turns out that both are needed, another solution to the issue would be to use a boolean to make sure the callback gets called only once per animation. This is slightly less elegant but supports the quirk.
Please let me know if you prefer the alternative solution, I can close this PR and submit a new one.

Just tested this against Chrome and Firefox latest and it looks like the quirk is still there. =(
Feel free to keep this PR open (unless it's easier to draft a new PR), but I would recommend pushing a new update to your branch that ensures cb is only called once. Wrapping the jQuery.animate call in a function that encompasses this logic should work.

Hi @hpihkala,
Don't want to push back the 0.2.6 release any longer, so I'm going to pull this from that milestone. We can consider this for a later maintenance release, should one occur, or we can fix this in ES6 Refresh.
If you'd like myself or another contributor to take over the investigation and fix for this issue, let me know.
Thanks!

@hpihkala @zimmi88
This issue still exists. Please merge it.


Use jenkins.war PluginManager to resolve plugins and dependencies

plugin.sh is used to download a set of plugin but does not handle dependencies, and trying to do so will result in re-implementing jenkins' PluginManager.
Would be great to execute the PluginManager outside jenkins so we rely on the exact same codebase. Something like:  java -cp jenkins.war hudson.PluginManager --install <some-plugin>

:-1: as explained in JENKINS-30361. New plugin releases can arise between calls to docker build, so the result would be nondeterministic, breaking a fundamental assumption of the Docker model.
What I would be in favor of is a verification step that fails the build if the plugin list you have specified is internally inconsistent:

plugin A depends on plugin B but B is not listed
plugin A depends on plugin B in version x but B is listed in version y where x > y
plugin A depends on core in version x but actual core version is y where x > y

plugins.sh could also attempt to connect to the update site (if online) and print an informational message in case some of your listed plugins have updates available.

I have "solved" this via a ${JENKINS_HOME}/init.groovy.d/install-plugins-with-dependencies that looks like:
{ String msg = getClass().protectionDomain.codeSource.location.path ->
    println "--> ${msg}"

    Jenkins.instance.getPluginManager().getPlugins()
    Jenkins.instance.getUpdateCenter().updateAllSites()

    def Map<String,Future<UpdateCenter.UpdateCenterJob>> updateCenterJobs = [:]
    /* plugins */ [
            'authentication-tokens',
            'build-monitor-plugin',
            'build-name-setter',
            'build-with-parameters',
            'cloudbees-folder',
            'credentials',
            'docker-workflow',
            'durable-task',
            'git',
            'github',
            'gravatar',
            'greenballs',
            'groovy',
            'groovy-postbuild',
            'job-dsl',
            'ldap',
            'matrix-auth',
            'matrix-project',
            'parameterized-trigger',
            'pipeline-utility-steps',
            'project-description-setter',
            'rebuild',
            'ssh-agent',
            'ssh-credentials',
            'timestamper',
            'workflow-aggregator',
            'workflow-multibranch'
    ].each { pluginId ->
        try {
            def plugin = Jenkins.instance.getUpdateCenter().getPlugin(pluginId)
            if (!plugin.installed || (!plugin.installed.isPinned() && plugin.installed.hasUpdate())) {
                updateCenterJobs[pluginId] = plugin.deploy(true)
            }
        } catch (Exception x) {
            x.printStackTrace()
        }
    }

    updateCenterJobs.each { entry ->
        entry.getValue().get(5, TimeUnit.MINUTES)
    }

    if (updateCenterJobs.size() > 0) {
        Jenkins.instance.safeRestart()
    }

    println "--> ${msg} ... done"
} ()

@jglick is safe to assume jenkins plugins are backwards compatible? If so, then grabbing the latest should be good enough. If not, then you can determine the minimal required version of a dependency pretty easily, then grab those versions.  That should be somewhere between what we have now and best case? Circular dependencies would be tricky...

update
I was able to do this in python using the json from https://updates.jenkins-ci.org/current/update-center.json (thanks @jnbnyc for finding that) but there is some jank.
First, the json that is returned isn't valid and you need to do some stripping. That was a bit annoying.
Second, the json only considers the latest version of any plugin.  At first I was grabbing all dependencies and their versions, then from that list only the latest version of any one dependency.
So for the github plugin, it would look like this:
>>> final_plugins = set()
>>>
>>> get_plugin_dependencies(('github', 'latest'), final_plugins, update_center_post)
>>>
>>> pprint.pprint(final_plugins)
set([(u'conditional-buildstep', u'1.3.1'),
     (u'credentials', u'1.10'),
     (u'credentials', u'1.21'),
     (u'credentials', u'1.22'),
     (u'credentials', u'1.24'),
     (u'git', u'2.4.0'),
     (u'git-client', u'1.19.0'),
     ('github', 'latest'),
     (u'github-api', u'1.69'),
     (u'icon-shim', u'2.0.2'),
     (u'javadoc', u'1.0'),
     (u'junit', u'1.2'),
     (u'junit', u'1.6'),
     (u'mailer', u'1.16'),
     (u'mailer', u'1.7'),
     (u'mapdb-api', u'<IP_ADDRESS>'),
     (u'matrix-project', u'1.4'),
     (u'matrix-project', u'1.6'),
     (u'maven-plugin', u'1.480.3'),
     (u'maven-plugin', u'2.0'),
     (u'parameterized-trigger', u'2.4'),
     (u'plain-credentials', u'1.1'),
     (u'project-inheritance', u'1.5.3'),
     (u'promoted-builds', u'2.10'),
     (u'promoted-builds', u'2.24.1'),
     (u'rebuild', u'1.16'),
     (u'rebuild', u'1.22'),
     (u'run-condition', u'1.0'),
     (u'scm-api', u'0.2'),
     (u'scm-api', u'1.0'),
     (u'script-security', u'1.13'),
     (u'ssh-credentials', u'1.11'),
     (u'ssh-credentials', u'1.6.1'),
     (u'subversion', u'1.38'),
     (u'token-macro', u'1.1'),
     (u'token-macro', u'1.10'),
     (u'token-macro', u'1.11'),
     (u'token-macro', u'1.5.1')])
>>>
>>>

As you can see, multiple versions of the same plugin are in this list.  But because the update center post json doesn't contain information on any plugin version but the latest, this list is irrelevant.  You can't check dependencies for older plugins.  I might as well just get latest for all dependencies.
But it is possible and I will clean up this code and create a PR.  It will contain a new version of plugin.sh that will call this python process instead, thus resolving all dependencies too.  My question is, would the PR even go through?  Or would the powers that be reject it because I am using python instead of bash?

@ndeloof take a look here
https://github.com/hypergig/jenkins-plugin-resolver

Thanks @hypergig, that way I can keep a file with only the top-level plugins and do not have to deal with dependencies
#!/usr/bin/python

import sys
sys.path.insert(0, "/path/to/hypergigs/jenkins-plugin-resolver")
from JenkinsPluginResolver.JenkinsPluginResolver import JenkinsPluginResolver
jpr = JenkinsPluginResolver()

with open('plugins-no-deps.txt') as f:
    for line in f:
        jpr.load(line.split(':')[0], line.split(':')[1])

with open('plugins.txt','w') as f:
    for k, v in jpr.dump().items():
        f.write('%s:%s\n' % (k, v.rstrip()))

I added an 'install-plugins' script to latest image to offer a comparable
solution for plugins installation.
Le 31 mai 2016 4:01 PM, "freme"<EMAIL_ADDRESS>a écrit :

Thanks @hypergig https://github.com/hypergig, that way I can keep a
file with only the top-level plugins and do not have to deal with
dependencies
#!/usr/bin/python
import sys
sys.path.insert(0, "/path/to/hypergigs/jenkins-plugin-resolver")from JenkinsPluginResolver.JenkinsPluginResolver import JenkinsPluginResolver
jpr = JenkinsPluginResolver()
with open('plugins-no-deps.txt') as f:
for line in f:
jpr.load(line.split(':')[0], line.split(':')[1])
with open('plugins.txt','w') as f:
for k, v in jpr.dump().items():
f.write('%s:%s\n' % (k, v.rstrip()))
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/jenkinsci/docker/issues/147#issuecomment-222697371,
or mute the thread
https://github.com/notifications/unsubscribe/AAIGlQnnjig3Lg_hpTpU0Aeh-ystd4oSks5qHD8QgaJpZM4F7zV6
.

Awesome, glad folks are using it!
... I really need to integrate it with the Jenkins container at some point

see https://github.com/jenkinsci/blueocean-plugin/pull/214/files#diff-3254677a7917c6c01f55212f86c57fbfR12 for sample usage


SensorML description for Citizen Scientist

Currently, the Sensor is considered to be a "Citizen Scientist" always (ideas exist to have different roles later on). However, the STA only supports SensorML and PDF types as sensor descriptions. For testing purposes it is ok-ish to keep a dummy descriptione here, but to suffice the standard we should provide a full SensorML description of what we might coose finnally to be the Sensor.

Have a look at work already done (SWE4CS, SWE4CitizenScience) to model human observers in SensorML:

OGC COBWEB Project -- propably using Archive.org
COBWEB Github Repository
Final Report


Add ppp for clyvey

Codecov Report

Merging #207 (962885c) into master (b6c7a49) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #207   +/-   ##
=========================================
  Coverage     66.81%   66.81%
  Complexity      555      555
=========================================
  Files            90       90
  Lines          2058     2058
  Branches        225      225
=========================================
  Hits           1375     1375
  Misses          601      601
  Partials         82       82

Continue to review full report at Codecov.

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


Unable to view logs in UI

Environment
Before I tell you about my issue, let me describe my Airflow environment:
Airflow version:
154dec0 Merge pull request #1196 from jlowin/subdag_class
3198756 Merge pull request #1231 from msumit/boto_calling_format
16f53cc Add support for calling_format from boto to S3_Hook
Airflow components: UI
Python Version: 2.7
Operating System :
Linux WebServer-101557060-1-116499607 2.6.32-504.30.3.el6.x86_64 #1 SMP Wed Jul 15 10:13:09 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Description of Issue
The UI is not able to resolve the log file path. This is the error I get

This seems to be happen because the path to the file is formed using  the hostname, instead it should use the fully qualified domain name (FQDN).

This issue can be fixed by replacing socket.gethostname() with socket.getfqdn()
Reffer : http://stackoverflow.com/questions/20792499/how-to-get-fully-qualified-host-name-in-python


Add new bosses

New bosses exist in the WiseOldMan's API responses for Snapshots; these changes fix the errors presented searching for a player currently

Thanks for the contribution!


Missing classes like AutomationElementCollection, AutomationElementIdentifiers

I am planning to upgrade from UIAComwrapper to Fla UI. But seems Fla UI is missing few of the classes I am currently using with an old library like AutomationElementCollection, AutomationElementIdentifiers.
Please confirm if this is an issue or I am missing some configuration

Great to hear you're trying to upgrade!
Regarding your question:
All methods that return a "collection" of AutomationElements return an array of AutomationElements so you're free to convert them to a list or whatever you need so I do not see a need for a specific AutomationElementCollection.
The ElementIdentifiers are either inside the patterns or the element itself.
So to get the property identifiers for the grid item you can use
Automation.PropertyLibrary.GridItem or even element.PatternFactory.GetGridItemPattern().Properties.
Same for events (EventLibrary) or even Patterns (PatternLibrary).
The element properties (which do not belong to a pattern) ar in PropertyLibrary.Element or even in an element itself with element.Properties.AcceleratorKeyProperty
In general, you should not need to use and of the elementidentifiers since everything is implemented in the patterns directly.
Does this answer your question?


The  elements introduced by otherwise empty fragments are not hidden when initally rendered using fullstack

Problem
Dioxus fullstack generates elements like:

Steps To Reproduce
Steps to reproduce the behavior:

Render multiple empty fragments with fullstack

Expected behavior
These elements should be hidden:

As they are when rendered by the client-side code.
(on 0.5.6)
See #500 for additional context.

We no longer create
 tags at all. #2579 fixed this issue


Can you implement this please?

https://github.com/adiwajshing/Baileys

Hi @1337C0D3RS, It's not something that could be easily implemented, since its the core function of Whaticket and, by now, I choose to keep using WWebJS.
Thanks anyway.


Support context in Cassandra history

What changed?
Use context in Casandra history persistence. History was refactored for NoSQL support in previous PR https://github.com/uber/cadence/pull/3525 so it's better to have a separate PR here to lower risk, and less conflict.
The others will be included in NoSQL refactoring.

Why?
A follow up in https://github.com/uber/cadence/pull/3524

How did you test it?
Use existing tests

Potential risks
low risk

For #3519

Coverage increased (+0.03%) to 68.005% when pulling c2b9b94146b44d20b4c3bfad79d30b3d56467a31 on longquanzheng:cass-ctx-history into 738a49b86340d8b3ae171406151f2267ed18db92 on uber:master.


attach_related does not display every events

Hello everyone,
i'm currently testing elastalert for, well, alterting purpose, and i ran into this issue.
While using the frequency type, i set attach_related to "true"  but not every matches are displaying in the alert send.
In my case i'm using telegram for the alerting platform.
rule file :
name: "Connexion refusée Mikrotik Labo"
type: frequency
index: mktk_labo*

num_events: 1
timeframe:
  minutes: 1

attach_related: true

filter:
- query:
    query_string:
      query: "denied OR failure"

alert:
- "telegram"
telegram_bot_token: "my token"
telegram_room_id: "my room id"

i'm doing a 1 num_events just to see if i can display every log i'm getting in my ES instance.
Output of the alert :

If you know a better way other than top_count_keys because my logs for this machine only got 1 field, i'm taking it ^^

IF you set num_events to 1, it always sends the alert immediately after the very first event, so you wont ever get related events. You'd need to set that higher, or use something like aggregation.
For example
name: "Connexion refusée Mikrotik Labo"
type: any
index: mktk_labo*

aggregation:
  minutes: 10
realert:
  minutes: 0

filter:
- query:
    query_string:
      query: "denied OR failure"

alert:
- "telegram"
telegram_bot_token: "my token"
telegram_room_id: "my room id"

What this will do is after it sees a matching events, it will wait up to 10 minutes and then send all the alerts together. One issue with this is that it doesn't look super pretty because it just concatenates the alerts together rather than making a nice JSON blob.

Thanks for the reply but i found the work around by setting the type to "any". This way with realert it fit better the way i wanted if to work. Like getting every matches it found every minute and sending me every alert.

hey @Theoooooo @Qmando
can you please guide how to send alerts to "Telegrams" from ElasticSearch

hey @Theoooooo @Qmando
can you please guide how to send alerts to "Telegrams" from ElasticSearch

There's tons of tutorials and everything is documented from the ReadTheDocs documentation ...
https://elastalert.readthedocs.io/en/latest/ruletypes.html#telegram
There's no need to explain it how it works and how to configured it, as it's already explained inside the documentation

[image: image.png]
hey guys I'm unable to access this link "
https://core.telegram.org/bots#botfather"
On Mon, Mar 1, 2021 at 12:59 PM Théo<EMAIL_ADDRESS>wrote:

hey @Theoooooo https://github.com/Theoooooo @Qmando
https://github.com/Qmando
can you please guide how to send alerts to "Telegrams" from ElasticSearch
There's tons of tutorials and everything is documented from the
ReadTheDocs documentation ...
https://elastalert.readthedocs.io/en/latest/ruletypes.html#telegram
There's no need to explain it how it works and how to configured it, as
it's already explained inside the documentation
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Yelp/elastalert/issues/2352#issuecomment-787740010,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AS4GENYHWQLM6NBU7N22DMLTBNCOPANCNFSM4IFYSB4Q
.

this link is unavailable
"https://core.telegram.org/bots#botfather"
plus if you send a link of the tutorials for telegram it would be very helpful as I'm just starting to use elastic search

this link is unavailable
"https://core.telegram.org/bots#botfather"
plus if you send a link of the tutorials for telegram it would be very helpful as I'm just starting to use elastic search

It's working perfectly fine for me ...
Please don't spam this issue on Github as it is not related to the issue created. If you need help, please go and document yourself unstead of asking for help in a non related place.
It will be better if you go and experiment by yourself the possibilities of Elasticsearch before starting to use Elastalert, you will have a better understanding of how to system works with storing datas and with the search engine.


Can't run the simple example provided

Thanks for your work! I come into some problems here.
So after I build the unicorn mode, it says this,
[+] Unicorn Python bindings installed successfully
[*] Testing unicorn-mode functionality by running a sample test harness under afl-unicorn
[-] Error: Unicorn mode doesn't seem to work!
And for the simple mode you provided, it gave me this.
orlog@hero:~/Documents/afl-unicorn/unicorn_mode/samples/simple$ afl-fuzz -U -m none -i sample_inputs/ -o results/ -- python simple_test_harness.py @@
afl-fuzz 2.52b by<EMAIL_ADDRESS>[+] You have 4 CPU cores and 2 runnable tasks (utilization: 50%).
[+] Try parallel jobs - see /usr/local/share/doc/afl/parallel_fuzzing.txt.
[] Checking CPU core loadout...
[+] Found a free CPU core, binding to #0.
[] Checking core_pattern...
[] Checking CPU scaling governor...
[] Setting up output directories...
[] Scanning 'sample_inputs/'...
[+] No auto-generated dictionary tokens to reuse.
[] Creating hard links for all input files...
[] Validating target binary...
[] Attempting dry run with 'id:000000,orig:sample1.bin'...
[*] Spinning up the fork server...
[-] Hmm, looks like the target binary terminated before we could complete a
handshake with the injected code. Perhaps there is a horrible bug in the
fuzzer. Poke<EMAIL_ADDRESS>for troubleshooting tips.
[-] PROGRAM ABORT : Fork server handshake failed
Location : init_forkserver(), afl-fuzz.c:2258
I tested this on ubuntu 16.04. Can you give me some advice?

I see. I have to use a fresh new ubuntu 16.04.

Hi all,
I've got exact same error on my Ubuntu 16.04.5 machine. Anyone know why it's append? Can you please explain how can I get the example to work?
Thanks,
Gal.

I've same error on my Ubuntu 16.04.5 machine.

I've same error on my Ubuntu 20.04.3 LTS machine.

I've same error on my Ubuntu 18.04.6 LTS machine and my Ubuntu 16.04.6 machine.


Offset is negative when scrolling up

Hi, there!
Great plugin. It's easy to use, and produces reliable results across devices.
Is is possible to have the "bottom offset" inverse to the top offset? I'm using this plugin for storytelling, and i'm autoplaying a video with an offset of 100. I'm using the repeat option to stop the video when it goes out of view, but that doesn't happen untill 100px below the video.
(see image 1).

It would be great if the offset-value somehow could work in both directions, so that if you have 100px offset, the repeat/remove-event happens 100px before the targeted element goes out of view. The possibility to specify a negative number to have the event fire before an element goes into view could also be cool (advanced lacyloading etc).
(see image 2. I've mocked up a fictional param called reverse).

Having the option to have viewport checker decide if an element is visible in its entirety would also be great.
Keep up the great work.

Can anyone tell me how this feature "from top" works? I've tried with "invertBottomOffset: true" option, but still working as default. I just want to use the callback function when the id to spy is very close to the top.

If you want to have it appear when it's close to the top you'll have to tell that to the offset key. This key can be a percentage of the container, or a number of pixels.


Adding support for install-multiple and splits apk install. close #27

Thanks for the contribution!


Use HeaderValue::from_static instead of parsing and unwrapping in HeaderMap example

This change is in response to hyperium/hyper#2714.

I think this needs a rebase and then we can likely merge but we need to get CI running first.

Hi. I completely missed the comments on this because of the delay between posting and commenting. I've updated the PR with the suggested changes and rebased on the latest master.


Settings for ogbn-arxiv

Dear authors,
Thanks for open-sourcing the code. I'm wondering what're the settings to reproduce results reported in the paper?

Faced the same problem.

I successfully reproduced the results by using the hyper-parameters described in the appendix of the original paper. It seems like the normalizations (batch vs layer) are quite important. After switching to the correct normalization on ogbn-arxiv the results are reproduced.


Autoplay in 404.html sometime not working

❗ Autoplay in 404.html sometime not working.

Attempt fix: b34bd14c9e96ae1872f013b37f15156a49ed9f6c
Ref: https://developer.chrome.com/blog/autoplay/


Automated cherry pick of #201: 补充缺失的al

Cherry pick of #201 on release/2.7.0.
#201: 补充缺失的al

/approve
/lgtm


update gateway chart support global variables

 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.


Solve breaking changes on httpx 0.23.1 and fastapi 0.87.0

I have updated the pyproject.toml to not update the httpx and fastapi to the latest version because they both contain breaking changes. To be dealt with in another PR:
httpx==0.23.1, breaking change on url typing, likely to
fastapi==0.87.0, breaking change on testclient
Please refer to the 2 CI failures in the PR.
Originally posted by @lishanl in https://github.com/SatelCreative/spylib/issues/175#issuecomment-1350212603

Let's go further and update all the dependencies in preparation of version 0.9.0.
Is SPyLib working with the latest fastapi?


root:1 menu position is not correct when click left border

Hello, I use the below config.
<Mouse context="border" button="1">root:1</Mouse>

when I click left border, root:1 menu's position is not correct. for example
"Logout" menu item will only show "ogout"

by the way, i use applications maximum

bottom border:

left border:


Autofix for ANN 201 incorrectly adds None Return Type

Let's say we have a function that has no ability to return:
def foo():
    raise ValueError

The correct return type for this would be NoReturn. However, the autofix for ANN 201, adds None here as the return type instead.
Ruff Version: 0.1.8
Command: ruff check . --fix --unsafe-fixes.

Nice, makes sense. Thank you!

Thanks @charliermarsh! Really appreciate the quick fix!


Warning: componentWillReceiveProps has been renamed

Hi, I'm getting this warning
`Warning: componentWillReceiveProps has been renamed, and is not recommended for use. See https://fb.me/react-unsafe-component-lifecycles for details.

Move data fetching code or side effects to componentDidUpdate.
If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state
Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run npx react-codemod rename-unsafe-lifecycles in your project source folder.

Please update the following components: Motion`
(I'm using "react-items-carousel": "2.8.0")

This hadn't be fixed


Advisory for CVE-2023-34231 on telegraf-1.26

This is an interesting vulnerability - reported by Snowflake, but it doesn't appear legitimate.
Fix #197

Thank you!


Implement selective diffing in Cypress

One-line summary

Issue : IRIS-815

Description
Add supports for Selective Diffing in Cypress
Types of Changes
What types of changes does your code introduce? Keep the ones that apply:

New feature (non-breaking change which adds functionality)

changes are ok but we need a changeset file which needs to be generated by running npx changeset and selecting the packages to be bumped


New Rule: Spam Emoji Filter (Unsolicited and Untrusted senders)

I've been running this on my personal mailbox for a few months. Added high trust and unsolicited to see how it fares.

This looks great in manual hunts, will add test rules when CI finishes

/update-test-rules


[bug] Inputs in README don't match inputs in action.yaml

There is a difference

registry-port not mentioned in README
override-registry-config-path  mentioned in README but not used in code check it

Hi @eshepelyuk, thx a ton for input. Fixing..


Register GHRepositorySearchBuilder$RepositorySearchResult and GHIssueSearchBuilder$IssueSearchResult for reflection

Required for gitHub.searchRepositories() and gitHub.searchIssues()
I had to use RegisterForReflection

Thanks for the PR but the bug is different. All the classes extending SearchResult should already be registered but I don't know how it missed it... the wrong class has been imported :/
I'll go fix that. Thanks anyway, this bug has been there since forever!

Correct fix is here: https://github.com/quarkiverse/quarkus-github-api/pull/136 . The class was package protected and things got messy.
I will release once CI is green.

@aheritier 1.303.2 has hit Central and should fix your issue!

ok I better understand.
I confirm that your fix is working
Thanks a lot @gsmet


useMouse & useMouseHovered initial state is 0

First of all I really enjoy using this library.
It has helped me transition to hooks really easily. :smile:
I'm having this bug using useMouse that on the first render life cycle the values provided are 0 until the user moves the mouse.
That leads to my component being rendered in the wrong position for a few ms.
I'd recommend to use NaN instead of 0 for initial state.
So we would be able to detect that case.

@thevtm maybe better null or undefined? cuz NaN !== NaN === true

Hi guys, I came across the same issue and I have made a PR #610 of how I solved this issue in my project.

What happened to the PR? I'd really need a isDirty check


SBOM file to describe which build packages and libc versions are used

Currently we are generating the SBOM files for the policy server binaries. To improve even further our security and SSC, It's necessary to generate SBOM file of the system where our binaries and container image are generated.
Therefore, we will make clear what are the packages versions are under use in the build environment. And more important,  which version of Musl, the libc used by policy server, is used in each release. All of this  files should be attached to the release.

I don't know how we can add the build environment info to the sbom files. It looks like the tools we are using does not support that (unless I'm missing something).
However I found the current sbom provides info about which libc version is used:
{
	"name": "libc",
	"SPDXID": "SPDXRef-Package-libc-0.2.132",
	"versionInfo": "0.2.132",
	"supplier": "Organization: The Rust Project Developers",
	"downloadLocation": "https://github.com/rust-lang/libc",
	"filesAnalyzed": false,
	"checksums": [
		{
			"algorithm": "SHA1",
			"checksumValue": "5135f39c9447280f157cd3b0776988a7d639f022"
		}
	],
	"homepage": "https://github.com/rust-lang/libc",
	"licenseConcluded": "NOASSERTION",
	"licenseDeclared": "NOASSERTION",
	"copyrightText": "NOASSERTION",
	"licenseComments": "NOASSERTION",
	"comment": "NOASSERTION"
}

This is not really the libc provided by the host (glibc/muslc), but it's a rust crate that gives access to libc functions.
I would file an issue against one of the tools we are using to generate the SBOM files, asking if it's possible to include information about the build environment being used. We have to be explicit about us using muslc, this is kinda like a cross-building environment.

Opened https://togithub.com/opensbom-generator/spdx-sbom-generator/issues/274 upstream.

If the current  tool is not able to fetch this info by itself and you know another one which can do that, we can link both files. SBOM spec allows users to link elements from different files and tell the kind of relationship they have.
An example: https://github.com/spdx/spdx-examples/blob/master/example3/spdx/example3-bin.spdx#L46-L52


[Feature] Open-X Embodiement datasets

The data can be either downloaded or streamed.
Example usage:
import tempfile

from torchrl.data.datasets.openx import OpenXExperienceReplay
# Download the data, and sample 128 elements in each batch out of two trajectories
num_slices = 2
with tempfile.TemporaryDirectory() as root:
    dataset = OpenXExperienceReplay("cmu_stretch", batch_size=128,
        num_slices=num_slices, download=True, streaming=False, root=root)
    for batch in dataset:
        print(batch.reshape(num_slices, -1))
        break
    # Read data from a stream. Deliver entire trajectories when iterating
    dataset = OpenXExperienceReplay("cmu_stretch",
        num_slices=num_slices, download=True, streaming=False, root=root)
    for data in dataset: # data does not have a consistent shape
        break
    # Define batch-size dynamically
    data = dataset.sample(128)  # delivers 2 sub-trajectories of length 64

cc @jxu124 @quanvuong @nicklashansen

[x] Should we return an exception when shuffle=False and calling sample?

Cc @nicklashansen I think this is more or less ready, if you want to give it a look!

Thanks! Seems to run quite smoothly for me. As one might expect, streaming is extremely slow but practical for debugging; download works like a charm!
One question I have: would there be a computational advantage to only sampling specific keys (provided by the user) rather than sampling the full TensorDict and then only using some of them? E.g. I might want to use only a single image per step, or no images, or leave out the next data field. Is that (a) feasible to implement, and (b) even necessary?

This should do the trick if you want to exclude ("next", "reward") and "observation" entries:
from torchrl.envs import SelectTransform, ExcludeTransform
dataset = OpenXExperienceReplay(..., transform=ExcludeTransform(("next", "reward"), "observation"))

SelectTransform has the opposite behaviour.
Would that help?

Yea! I guess my question is whether there is any computational advantage to excluding / selecting data as a transform vs. sampling the full TensorDict and just ignoring that the extra fields are there?

Thanks! This works wonders.

do you still need my input : ) ?

@quanvuong We have a working dataloader now, so no need I think! Thanks though :-)


where is subset_answers.json ,used in extract_features.py

after unzip data.zip, I can not find subset_answers.json

Thanks for pointing it out! Please refer to the EgoSchema Official repo for that file. https://github.com/egoschema/EgoSchema.git

Hello, the subset_answers.json provided in https://github.com/egoschema/EgoSchema.git only contains 500 videos, so extract_features.py will only process frames from these 500 videos. What about the others?


Passing Multiple URLs?

Hello! Nice work on the script!
I was wondering if there's a way to handle multiple URLs? Say I want to extract news from 50 different URLs, is there a way I could pass in an object of URLs and receive an aggregate extraction of all articles?

Hey, you'd have to do it yourself.
I may advise using asynchronous calls for a faster response.

Thanks @kotartemiy I've gotten as far as getting all the responses the way I want them, but I was wondering if you could help me make them asynchronous? I'm a javascript guy and only know so much python. Here's where I am right now:
https://github.com/MrUltimate/GoodVibesNews/blob/master/src/app.py
Would love this final bit of help! Thanks!


we never update editor without -u

Once the editor is downloaded we never update it again (unless -u option is specified). Maybe we should say, once per day?
CC @pelikhan

can we ping the cloud in the background to check if the versions match?


Customize Register path

I would like to customize the register path to point to my own register page. Any suggestions?

are you using Iron Router or Flow Router?
In case, it should be enough to configure the signUp route providing your preferred path.
meteor add useraccounts:flow-routing

AccountsTemplates.configureRoute('signUp', {
    path: '/mySignUpPath',
});

See the routes section of the documentation (it's the same for both IR and FR...).

thanks for pointing to the doc. closing.


Resizing tableview inside of view controller

Hi, I'm sorry if this is not the correct place to ask for specific help.
I was wondering if there is a way to add a view above the tableview and have the tableview resize to under the added view.
I attached a screen shot of what I'm trying to do. The scroll bar and content are still under the blue view so if I scroll up, the view hides the content. I was thinking I could just add a constraint from the top of the tableview and the bottom of the blue view. But I'm not sure if that'll break anything else.
Thanks

Not sure if this fixes your problem, but for readability and real estate maximisation, I'd recommend that you use a tableHeaderView, or tableFooterView, instead of using a fixed view.
Otherwise, if you still need to have a fixed view, the best way is to add it to the table view, and scroll it in the opposite direction of the tableview scroll.

Great thanks a lot for the tips!


Enabled JSDoc ESLint plugin

This starts with the "recommended" configuration, and then disables a few rules:

jsdoc/check-tag-names - Our docs system currently uses the @category tag, which is not recognized by ESLint
jsdoc/require-jsdoc - Lots of functions do not have JSDoc :(
jsdoc/tag-lines - JSDoc does not want an empty line between text content and JSDoc tags

Despite those exceptions, this still provides a lot of value by enforcing accurate tags.

Coverage: 94.326% (-0.005%) from 94.331% when pulling e1cae7100c772287cd816d6d637c3a9b38d90947 on cody-eslint-jsdoc into b848de434bca1de6a96cc5cf5de545acd4f13a31 on main.


Check out target branch before upload

Fixes the below error by checking out the gh-page branch before pushing the commit:
[main 7126ae5] Update index.yaml
 2 files changed, 14 insertions(+)
 create mode 100644 somechart-0.1.1.tgz
 create mode 100644 index.yaml
Pushing to branch "gh-pages"
To https://github.com/someorg/somerepo
 ! [rejected]        HEAD -> gh-pages (non-fast-forward)
error: failed to push some refs to 'https://github.com/someorg/somerepo'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Error: exit status 1

Signed-off-by: Stephen Hoekstra<EMAIL_ADDRESS>

Thanks, but this really is not the place to fix this issue. I have a fix committed to the app itself, but GitHub is having issues with builds right so I haven't been able to test it

It seems to be fixed now @shoekstra. Try again


Bump gradle version to 7.3.3 to support java17 build

Did you remember to?

[x] Add test case(s)
[x] Update CHANGES.txt
[x] Auto applied styling via ./gradlew autostyleApply

@Shoothzj - all the tests failed. Can you please check ?

@Shoothzj - all the tests failed. Can you please check ?

Since I am first contributor, can't manualy check tests.
Sorry for using wrong checksum of gradle.
Fixed

@krmahadevan Shoud I retry the tests? :)
Thanks for your help

@krmahadevan Shoud I retry the tests? :) Thanks for your help

@Shoothzj - Nah. We are good. We have some flaky tests in the codebase (which need to be fixed and doesn't have anything to do with your PR). Thank you so much for taking the time to raise this PR. Appreciate it and hope to see more contributions coming from you 👍


Fixed #24484 -- Add helpful message when running tests with models changes without migrations.

https://code.djangoproject.com/ticket/24484

I had a look at this. I think it might be better to refuse to run the tests if an app is missing migrations (currently you will get the warning you've added but also a large traceback indicating "no such table" after the warning which obfuscates it). This is somewhat dependent on the discussion about whether or not to keep support for apps without migrations.
It also seems a little funny to me for the "Your models have changes" error to appear at the end of the test output (if the tests are successful). It seems like it might be better to have that output at the beginning (if feasible) so that a developer realizes that before a potentially lengthly test suite run completes.

@timgraham
Re: Point 1, I wasn't sure what to do there in terms of catching the exception or not. I decided on the current one partly because it is printed in red NOTICE style for me which I think makes it a lot more obvious.
I added weight to not catching because Django tries to catch exceptions when importing somewhere else, which becomes a minor nightmare when you're upgrading Django in a project - I've ended up hacking Django several times (several upgrades) to remove the try except in order to figure out which app of many was breaking the imports in that area, so that's why I'm torn on trying to be clever with catching exceptions. Today with 20/20 hindsight I'd actually try to fix all the RemovedInDjangoZZWarning before upgrading which means that case should happen less frequently, but I can see a lot of developers not knowing how to run with for instance python -Wall manage.py test, assuming you have good test coverage.
--
Re: Point 2, In a medium-sized project, migrations take minutes to run, minutes you're tabbing away and reading something else to stay productive. So you often don't read the intermediate output unless something went wrong. That's one reason I decided to delay printing until nearer the end of the test run where the developer is far more likely to actually see the message, and it is consistent with the test runner catching all failures and exceptions and printing them at the end.
You make a fair point though, and I could see value in printing twice, in the way test failures and errors show up as F or E in the shorthand form with the default verbosity. Thought experimenting down that route I'm not sure if M for not fully migrated makes sense. Thoughts?

Would putting the notice at the beginning really possibly takes minutes for that message to appear? I think printing it twice could be too annoying, but I'm not really inspired about this ticket, so maybe you want to ask on django-developers and get some other opinions.
See also ticket #25304. I think someway to prevent management commands from running when CreateModel operations are missing could be helpful, so we don't end up with cryptic (at least to new developers) "no such table" errors. I think most experienced developers will recognize the problem, but if we can make it friendlier without much additional complexity, it wouldn't hurt.

Thanks @timgraham.
I'll recheck my reasoning, rebase this to fix conflicts and put something together for the django-developers group this weekend so hopefully you and the community can make a decision before Sep 19.

Any chance to follow up on this?

Please send a new PR if you return to this.


Colors

Resolve #373 Color String Representations

Created colour_parser module in pygame_gui.core, used to parse multiple string representations of colours in one simple to use "parse_colour_or_gradient_string" function
New Colour formats work in place anywhere where hex values worked in theme files, including in gradient values
Added support for CSS colour strings given by the specification from w3schools

Colour Name
Accepted Value Types
Example
Notes

Hex
6 Hexidecimal Digits
#A2F3BB
Native Pygame Color

Hex (With Alpha)
8 Hexidecimal Digits
#A2F3BBFF
Native Pygame Color

Shorthand Hex
3 Hexidecimal Digits
#FAB
Expands doubly (e.g. would be #FFAABB)

Shorthand Hex (With Alpha)
4 Hexidecimal Digits
#AF2F
Expands doubly (e.g. would be #AAFF22FF)

RGB
3 numbers between 0 and 255
rgb(20, 230, 43)
Red, Green, Blue

RGBA
4 numbers between 0 and 255
rgba(20, 230, 43, 255)
Red, Green, Blue, Alpha

HSL
Degree, 2 Percentage Values
hsl(30deg, 40%, .5)
Hue, Saturation, Luminence

HSLA
Degree, 3 Percentage Values
hsla(10deg, 40%, .5, 0.7)
Hue, Saturation, Luminence, Alpha

HSV
Degree, 2 Percentage Values
hsv(60deg, 40%, 12%)
Hue, Saturation, Value

HSVA
Degree, 3 Percentage Values
hsva(20deg, 40%, .5, 70%)
Hue, Saturation, Value, Alpha

CMY
3 percentage values
cmy(.3, .5, .7)
Cyan, Magneta, Yellow

Value Name
Description
Examples
Invalid Examples
Used In

Degree
An Integer Value Bounded from 0 to 360. Can optionally have the "deg" unit appended to the end
270, 30deg, 45deg
37.5, 32.8deg, -15deg, -22
HSL, HSLA, HSV, HSVA

Percentage
Can accept data in two formats: A float value bounded from 0 to 1 or a percentage value with an integer value bounded from 0 to 100
40%, 0.67, 27%
0.4%, 2, 200%
HSL, HSLA, HSV, HSVA, CMY

U8
An integer value bounded from 0 to 255
12, 55, 154, 243, 255, 0
12.4, -23, -27.4, 20.0
RGB, RGBA

Moved the UIAppearanceTheme from loading with its own internal method to loading with the colour_parser module method "parse_colour_or_gradient_string"

Added new test module for the colour_parser module called test_colour_parser, with multiple tests for the

Added docstrings in the new colour_parser module to document the expected string formats of each string colour parser, as well as notes on how the module internally works in case it should ever be extended by others

Documentation

Appended a table of all of the added colour format types and a table of all the colour values used with each format into the Theme Guide section of the pygame_gui docs, which contains details on all of the formats, schemas, and an example
Additionally, appended an example JSON format of using these new colour format types
Appended new colour_parser module to the pygame_gui.core document page and all docstrings build on the pygame_gui.core document page

All previous tests still pass after these changes, as nothing concerning the input and output of the hex values from theme files has changed at all. It has only been extended with other colour representations
I notice that the colour_parser module is written much differently than the other modules in pygame_gui, as it has no class definitions, but I hope that that's not such a bother. I feel like keeping the module more lightweight with only functions would allow it to be more easily maintained and extended if need be.

Great, all the tests pass with no warnings now. I'll merge it in.
Thanks again for all the hard work! 👍


Clean up embedded licensing issues

Clean up most of the embedded completions by either adding explicit license or removing ones with incompatible license.

[ ] Wait for answer from https://github.com/rparree/jboss-bash-completion/issues/1
[ ] Wait for answer from https://github.com/liborw/homesick-completion/issues/3

After this PR is merged, we can finally add a license and close #512 :smile:

@nwinkler @davidpfarrell @cornfeedhobo you are welcome to take a look. I kept most of the embedded content, but added copyright notice when needed

we only wait for https://github.com/liborw/homesick-completion/issues/3 now

@nwinkler Unfortunately, @liborw is not responding for my request for license. I have removed his homesick completion from the repo, and now this PR is ready. After we merge this- we can finally add an MIT license :smile:
cc @cornfeedhobo @davidpfarrell

@nwinkler @davidpfarrell @cornfeedhobo please take a look- this is an important PR!

@NoahGorny Thanks for working through this - that's great, and one of the most requested features... A couple of comments:

I think I added the homesick completion back then. Fine to remove it if the author does not respond back...
Since we're removing some functionality, we'll have to communicate that fact to users in some way. We don't have a blog or anything, but I guess we should include that note prominently in the release notes/change log, so that people are not surprised. Ideally, we'd also include it when people run bash-it update, although that might not be easy with the current code.
Does this change warrant a major version upgrade (v2.0)?
Does the MIT license cover the other included in-line licenses? Do we have to provision some text around that outside of the regular MIT license file?

@NoahGorny Thanks for working through this - that's great, and one of the most requested features... A couple of comments:

I think I added the homesick completion back then. Fine to remove it if the author does not respond back...
Since we're removing some functionality, we'll have to communicate that fact to users in some way. We don't have a blog or anything, but I guess we should include that note prominently in the release notes/change log, so that people are not surprised. Ideally, we'd also include it when people run bash-it update, although that might not be easy with the current code.
Does this change warrant a major version upgrade (v2.0)?
Does the MIT license cover the other included in-line licenses? Do we have to provision some text around that outside of the regular MIT license file?

I agree about the need to communicate that. I think we will include it in the release docs. About the bash-it update option- I think it's worthwhile to improve and enhance this command. I will open an issue about it
I also think that we can bump a major with this change. We deprecate some completions and finally move into a licensed model. I think this is enough for a major bump.
From my research, it is enough. As long as we respect our embedded files licensed terms (usually, to include a copyright notice) it is okay. I removed everything that is incompatible (unlicensed/GPL/unclear). This means we can license the project as MIT without fear.

Thanks for the review @nwinkler and for the approval @cornfeedhobo !
I will merge this PR soon, and bump a major for a new, licensed project :)

Lets wait for the macos job to actually work, and we shall release!


Fix the "Load ORT Result" dialog

This is not working at all for me on Fedora Linux 40, KDE Spin, with Wayland:

I propose to try migrating to https://github.com/vinceglb/FileKit to see if that fixes the issue.

I propose to try migrating to https://github.com/vinceglb/FileKit to see if that fixes the issue.

Unfortunately, that library has the same problem, see the file-picker-experiment branch.


Feature Request: Map match.params.* to Props

Currently, using Route parameters in a Component is clunky. Consider the following Component:
@Component({
  tag: 'my-hello'
})
export class MyHello {
  @Prop() name: string;

  render() {
    return (
      Hello, {this.name}!
    );
  }
}

If you want this component to used as a route, you currently have to modify it by adding a Prop to handle the route match as well as convert name to State so that the value can be updated internally via the match:
@Component({
  tag: 'my-hello'
})
export class MyHello {
  @Prop() match: any;

  @State() name: string;

  componentWillLoad() {
    if (!!this.match.params.name) {
      this.name = this.match.params.name;
    }
  }

  render() {
    return (
      Hello, {this.name}!
    );
  }
}

Any routable component must now:

Be aware that it could be routable and accept a match.
Make any route params State instead.
Be responsible for optionally updating their state based on their match (and know exactly what route param identifiers they allow).

Obviously this is less than ideal.
Request
If param names in the route match Props on a component, they should be automatically mapped upon instantiating the component. This places the burden of mapping names on the consumer of the component instead of the author as well as allow easy re-use of un-modified components.

I would say that if you are using a router the components being routed to should be knowledgable about what information they are receiving via router.  Another approach could be to use routeRender prop on the route component.  It accepts a function that takes props which You can then set a function to map the match results to props of another component.
Here is a simple example. https://github.com/ionic-team/stencil-router/blob/master/src/components/tests/test-app.tsx#L47
Also you probably should not update state based on match.  It is a prop so just make use of that within your render function.

+1 for mapping to properties.
This already happens with componentProps and seems like a pretty standard pattern for what developers would end up doing anyway.   Even the Stencil website says "you can define parameters in the url /foo/:bar where bar would be available in incoming props" which implies this approach.
The approach using the special match property seems a bit awkward.  It adds to the list of "special" property names that have meaning without being part of any strongly typed interface.  Somehow developers need to know that they should not make their own alternate use of "match" and "history" (because of their use by the router), "color" and "mode" (because of their use in Stencil), "id" and "title" (because of their use in HTMLElement), etc.  It seems like something more along the lines of connect or context might help reduce conflicts.

components being routed to should be knowledgable about what information they are receiving via router

It is useful to be able to get this information in some cases but it seems like most use cases would just copy the value like in the example above.  A component transforms a set of input properties into rendered output.   If you set a property via an html attribute, JSX binding, componentProps, url segments, element property changes, etc. it seems like the component should generally have the same output.

Also you probably should not update state based on match. It is a prop so just make use of that within your render function.

There are times where you still might want to use State() if the match approach is used.  The   Ionic sample apps use this approach.

I have decided not to implement this feature.  I think its more important to keep url props independent.


samples: modules: canopennode: Add stm32f072b_disco support

Add support for the stm32f072rb discovery board.
Signed-off-by: Moritz Fischer<EMAIL_ADDRESS>

FWIW, I updated the example code in the docs with new sample path in a separate PR here: https://github.com/zephyrproject-rtos/zephyr/pull/42021


rustdesk-flutter: 1.2.3-unstable-2024-02-11 -> 1.2.3-2

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 302519 run on x86_64-linux 1

3 packages built:

rustdesk-flutter
rustdesk-flutter.debug
rustdesk-flutter.pubcache

Build failed on aarch64-linux, but it is not the responsibility of this PR. It has never been successful.


How to get a audio file as mp3 ?

That is outside the scope of this library. Look for a library that takes a streaming url and converts it into a file


integrations: Remove label URL from GitHub issue labeled notifications.

The URL is not the correct one and redirects to an API page. Also, the payload has no html_url for the label so we cannot show a URL for that.

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Merged, thanks @sbansal1999!


Unintuitive behavior: Mouse wheel scrolling in editor steals keyboard focus

Problem Description
With keyboard focus in the internal console, hovering the mouse cursor over the editor window and scrolling through the code with the mouse wheel places keyboard focus back into the editor window instead of leaving it in the console. This feels very counterintuitive to me compared to the general behavior in Windows, where the mouse wheel can be used to scroll through background windows without the active one losing its focus.
It seems like a minor issue but it's very annoying to me because now I keep accidentally messing up my code instead of typing in the console. I also think Spyder 3 did not show this behavior; not quite sure, but I don't remember anything like this before upgrading to 4.
Versions

Spyder version: 4.0.1
Python version: Python 3.7.6 64-bit
Qt version: 5.9.6
PyQt version: 5.9.2
Operating System name/version: Windows 10

@dalthviz, please take a look at this one.

I can confirm this in Ubuntu. Only the editor seems to steal focus.