Css fix cybera

Fixed the issues with timeline not showing up - the timestamps I didn't find in time for the demo today so they are now random numbers

Codecov Report

Merging #87 into dev will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##              dev      #87   +/-   ##
=======================================
  Coverage   89.47%   89.47%
=======================================
  Files          18       18
  Lines         342      342
=======================================
  Hits          306      306
  Misses         36       36

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 e87a00a...834c513. Read the comment docs.


Export AuthUserContext to use in class based components

Describe the bug
Currently migrating next-firebase-auth to canary version to improve bundle size. The project contains a mixture of function and class based component. In class based component not able to set context type to AuthUserContext as its not exported. The typescript definition file does contain that it exports AuthUserContext
Versions
next-firebase-auth version: ^1.0.0-canary.1
Firebase JS SDK: ^9.0.0
Next.js: 11.1.0
To Reproduce
Steps to reproduce the behavior:

Import AuthUserContext from package
Use either using static contextType or Class.contextType=AuthUserContext
Reload the page where it was added

Expected behavior
AuthUserContext should be available in this.context of react component
Additional context

Did this work on 0.x and broke in canary, or does it also not work in 0.x?
If possible, could you provide a reproduction (as simple as possible) in a repository?

This doesn't work on 0.x also. Here is a repo you can see. I took the example folder as base and added a class based component in pages folder. After running the project you can visit http://localhost:3000/contextnotworking. Attaching a screenshot of what is getting logged in console. Here is the link to the repo
https://github.com/mdathersajjad/nfa-context-issue

The problem is the context is not exported in the index.js file https://github.com/gladly-team/next-firebase-auth/blob/main/src/index.js#L48. I tried doing it on my own but i was getting issues with yalc and linking. If i change anything there was problem with keygrip which is used in one of the dependecies

Got it—thanks for the demo and explanation!

Closing as stale. I'm still happy to accept a contribution for this, but there's likely not much demand for it at this point.


add 4 more fill colors

Add 4 more fill colors
'6' = light-cyan: class 26
'7' = light-green: class 27
'8' = light-purple: class 28
'9' = light-red : class 29.
Change classes of existing fill colors to make it more consistent with classes of new fill colors
'2' from class 10 to class 22
'3' from class 6 to class 23
'4' from class 7 to class 24
'5' from class 8 to class 25.

@hlyi please explain the reason for this change.

For diagrams with a lot signals, more fill colors can demonstrate different conditions better and avoid confusions

@hlyi sounds good. Skin files should be generated from SVG sources here: https://github.com/wavedrom/wavedrom/tree/master/unpacked/skins
Could you update SVG files and generate *.js files using svg2js script?
Here is an instruction: https://github.com/wavedrom/wavedrom/tree/master/unpacked

@drom Just update svg and skins js per your instruction. Could you please check?

LGTM

@hlyi Thank you for your contribution. It is up and running on the https://wavedrom.com

@drom Thanks for taking the patch.


Witness signature should be versioned with the signature algorithm

Looking at this code from utxo/lib.src:
        pub fn sign(
            mut self,
            utxos: &[TransactionOutput<AccountId>],
            index: usize,
            pk: &sr25519::Public,
        ) -> Option<Self> {
            let msg = crate::sign::TransactionSigMsg::construct(
                Default::default(),
                &self,
                utxos,
                index as u64,
                u32::MAX,
            );
            self.inputs[index].witness =
                crypto::sr25519_sign(SR25519, pk, &msg.encode())?.0.to_vec();
            Some(self)
        }

And given that we may use a different signature algorithm in the future, it may be wise to use a serialization mechanism that can detect the signature algorithm. A simple way of doing this is: Instead of using Vec as type for the witness, we use an enum that has SR25519 as one arm with Vec as underlying type, and we just support adding more in the future. Scalecodec can take care of the serialization.
PS: Whether we're gonna remove the witness from inputs is a different discussion.

Either this or spare ourselves an extra byte by allocating a new Destination enum arm to new signature schemes. E.g. rename Destination::Pubkey to Destination::PubkeySchnorr, eventually add Destination::PubkeyBLS, etc. Signatures inside scripts already have sig type tags as proposed here (at expense of a 1-byte overhead).


you must include the element to update or replace its properties

Using redis

corrected: https://github.com/fcoagz/pydolarvenezuela/commit/de8c912bea029023980f259136ad26dab2186278


Added more useful options to the UI

Added support for the following options in the OpenConnect UI:

usergroup
passtos
pfs
compression
reconnecttime

Also, renamed the "group" option as "authgroup" (updated in the templates as well), which is more fit for purpose.

Fair enough. I'm AFK at the moment. I'll fix it in a couple of hours. Beyond that, how does the rest of it look?

please wait for @mimugmail's feedback -- he'd know best :)

Can you tell me in which situations you need user-group?
Normally auth-group is enough and user-group is more error prone ...
https://serverfault.com/questions/771645/openconnect-cannot-connect-to-anyconnect-vpn-group-using-g

It ocurred to me that it might be a good configuration to have. No real
requirement from me, simply learning from the (previous) lack of authgroup
support.
I'm ok with axing it if you believe it to be problematic...maybe even hide
it in an "advanced" section?
--
Diego Rivera
On Mon, Nov 5, 2018, 15:28 Michael<EMAIL_ADDRESS>wrote:

Can you tell me in which situations you need user-group?
Normally auth-group is enough and user-group is more error prone ...
https://serverfault.com/questions/771645/openconnect-cannot-connect-to-anyconnect-vpn-group-using-g
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/opnsense/plugins/pull/959#issuecomment-436041727, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AEGYaCBEwZi0C1bdZ-nj9sJDnc-BB1S8ks5usK2HgaJpZM4YPIS8
.

I thought I had fixed all the tab indents. I'll do that when I get back.
I don't think enabling PFS by default is prudent as the docs state that if
the server doesn't employ it, it'll cause the TLS negotiation to fail.
I can remove the default for easier interaction.
The validation message was copied over from the original authgroup (neé
group) setting, but it can certainly be made more palatable.
Cheers!
--
Diego Rivera
On Mon, Nov 5, 2018, 15:07 Fabian Franz BSc<EMAIL_ADDRESS>wrote:

@fabianfrz commented on this pull request.
some findings
In
security/openconnect/src/opnsense/mvc/app/controllers/OPNsense/Openconnect/forms/general.xml
https://github.com/opnsense/plugins/pull/959#discussion_r230909625:

 </field>

 <field>
     <id>general.clientcertificate</id>
     Client Certificate
     <type>dropdown</type>
     <help>Select the client certificate to use.</help>
 </field>

   <id>general.passtos</id>

   Pass TOS Flags

   <type>checkbox</type>

   <help>Copy TOS / TCLASS of payload packet into DTLS packets.</help>

   <id>general.pfs</id>

   Enable PFS

   <type>checkbox</type>

   <help>Enforces  Perfect  Forward Secrecy (PFS). That ensures that if the server's long-term key is compromised, any session keys established before the compromise will be unaffected. If this option is provided and the server does not support PFS in the TLS channel the connection will fail.</help>

Use only single spaces.
In
security/openconnect/src/opnsense/mvc/app/models/OPNsense/Openconnect/General.xml
https://github.com/opnsense/plugins/pull/959#discussion_r230909990:

     <clientcertificate type="CertificateField">

         <Type>cert</Type>
         <Required>N</Required>
     </clientcertificate>

   <passtos type="BooleanField">

       <default>1</default>

       <Required>N</Required>

   </passtos>

   <pfs type="BooleanField">

       <default>0</default>

       <Required>N</Required>

For security reasons this would make sense to be enabled by default.
In
security/openconnect/src/opnsense/mvc/app/models/OPNsense/Openconnect/General.xml
https://github.com/opnsense/plugins/pull/959#discussion_r230910363:

     <clientcertificate type="CertificateField">

         <Type>cert</Type>
         <Required>N</Required>
     </clientcertificate>

   <passtos type="BooleanField">

       <default>1</default>

       <Required>N</Required>

   </passtos>

   <pfs type="BooleanField">

       <default>0</default>

       <Required>N</Required>

   </pfs>

   <reconnecttime type="AutoNumberField">

       <MinimumValue>1</MinimumValue>

       <MaximumValue>900</MaximumValue>

       <default>300</default>

       <Required>N</Required>

if it is not required, default is not really needed but you can keep it as
it is.
In
security/openconnect/src/opnsense/mvc/app/models/OPNsense/Openconnect/General.xml
https://github.com/opnsense/plugins/pull/959#discussion_r230910829:

         <Required>N</Required>

         <mask>/^[a-zA-Z0-9]{1,64}$/</mask>
         <ValidationMessage>Only a-zA-Z0-9 are allowed.</ValidationMessage>

   </group>

   </authgroup>

   <usergroup type="TextField">

       <Required>N</Required>

       <mask>/^[a-zA-Z0-9]{1,64}$/</mask>

       <ValidationMessage>Only a-zA-Z0-9 are allowed.</ValidationMessage>

This text is the error messages displayed to the user when the validation
fails and should be more understandable by humans. Also the length
restriction is missing
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/opnsense/plugins/pull/959#pullrequestreview-171756717,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEGYaATJGl89SL3uOt0M0T60754CKWtyks5usKijgaJpZM4YPIS8
.

Hm, perhaps you want to ask at the mailing list what the difference is? As mostly I have to answer questions from users I only want stuff I really know in there :)

Too much grief :) let's ax it for now ;)
--
Diego Rivera
On Mon, Nov 5, 2018, 15:35 Michael<EMAIL_ADDRESS>wrote:

Hm, perhaps you want to ask at the mailing list what the difference is? As
mostly I have to answer questions from users I only want stuff I really
know in there :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/opnsense/plugins/pull/959#issuecomment-436043929, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AEGYaLHP24vaBc6s25vPj1bnq1LbypORks5usK8ogaJpZM4YPIS8
.

Rest looks good, but I want to test all features tomorrow at work

That works. Let me get home and fix a couple of tidbits Fabian pointed out.
Should be well in-hand for your consumption by then.
Cheers!
--
Diego Rivera
On Mon, Nov 5, 2018, 15:37 Michael<EMAIL_ADDRESS>wrote:

Rest looks good, but I want to test all features tomorrow at work
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/opnsense/plugins/pull/959#issuecomment-436044586, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AEGYaBTG0N2KolpK06WNCT4f5sKYd7tfks5usK-ygaJpZM4YPIS8
.

Shall I fix them, then? 😊
--
Diego Rivera
On Mon, Nov 5, 2018, 21:57 Franco Fichtner<EMAIL_ADDRESS>wrote:

@fichtner commented on this pull request.
In
security/openconnect/src/opnsense/mvc/app/controllers/OPNsense/Openconnect/forms/general.xml
https://github.com/opnsense/plugins/pull/959#discussion_r230993151:

@@ -36,15 +36,45 @@
Select the type of hash. Possible values are SHA256 or SHA1.

   <id>general.group</id>

   Group Name

   <id>general.authgroup</id>

I stand corrected. general.group is only in the development version so for
me if @mimugmail https://github.com/mimugmail wants to go with these
more descriptive names you propose that's fine. Marking this resolved.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/opnsense/plugins/pull/959#discussion_r230993151, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AEGYaJyioaKPdbq014gMnT7GNlGBCJxHks5usQijgaJpZM4YPIS8
.

Removed the duplicate non-inter. Perhaps we should take the opportunity to rename "group" to "authgroup" for future-proofing?  Better to do that than have to write a migration script later on, no?

Ok, we can rename it when you have successfully tested against a server instance supporting groups, agree?

I would argue that renaming before leaving devel status is the sensible
thing to do, to reduce the amount of grief and confusion later on should we
discover that usergroup is actually necessary.
Why not shoot that in the head "before birth" now that we have the
opportunity?
--
Diego Rivera
On Tue, Nov 6, 2018, 06:54 Michael<EMAIL_ADDRESS>wrote:

Ok, we can rename it when you have successfully tested against a server
instance supporting groups, agree?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/opnsense/plugins/pull/959#issuecomment-436242490, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AEGYaDfsyg-tO-9iZrdY4H3dIC-b_xtqks5usYaFgaJpZM4YPIS8
.

Regardless, if you disagree, then the code's current state should be satisfactory by now (right?) and could be merged as-is.  Otherwise, I have the commit ready to push which only changes "group" to "authgroup"...
Your call ;)

I'll approve when you change the default of TOS to 0.
For the future I strongly suggest to test all additions on your own.
I often install the branches just to see they weren't tested ..
Thanks 👍

It probably should... 🤣
Plz stand by
--
Diego Rivera
On Tue, Nov 6, 2018, 13:39 Michael<EMAIL_ADDRESS>wrote:

@mimugmail commented on this pull request.
In
security/openconnect/src/opnsense/mvc/app/models/OPNsense/Openconnect/General.xml
https://github.com/opnsense/plugins/pull/959#discussion_r231264119:

     </group>

     <clientcertificate type="CertificateField">
         <Type>cert</Type>
         <Required>N</Required>
     </clientcertificate>

   <passtos type="BooleanField">

       <default>0</default>

       <Required>N</Required>

   </passtos>

   <pfs type="BooleanField">

       <default>0</default>

       <Required>N</Required>

   </pfs>

   <reconnecttime type="AutoNumberField">

Err ... shouldn't this be IntegerField?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/opnsense/plugins/pull/959#pullrequestreview-172197552,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEGYaD1rwUrGeH44hKiuanroNB0U4EM8ks5useVxgaJpZM4YPIS8
.

Done and done!  I tried to find the different types of fields that were allowed, by example (since looking it up via the docs failed me as I'm apparently too incompetent to use Google :D), and the closest I found was AutoNumberField. But now I know better ;)

I'll try to find a space in the docs for adding some basic field types ..

Unresolved conflicts, open too long.


Issue #545: Test automation script for infiniband validations

Fixes #545
Description of the Solution
Ansible script for validating infiniband configurations.
Suggested Reviewers
@j0hnL @lwilson

@all-contributors please add @Bhagyashree-shetty for test, code


[FEATURE_REQUEST] Multi-architecture Docker images

Is your feature request related to a problem? If so, please describe.
Please build multi-architecture docker images. I see that you are tagging docker images by arch. Instead, docker buildx can be used to make one tag that supports multiple architectures. The base image for node that you are using already supports multiple architectures as well, see the drop down here for what architectures you could pass thru to the build: https://hub.docker.com/layers/node/library/node/lts-alpine3.14/images/sha256-2fd3c3bf9fbc4ac390b3625e3ae6fedf65233d40ac7515d4af036bba2448d2b8?context=explore
Please checkout my project's workflow here for an example on using docker buildx
https://github.com/onedr0p/exportarr/blob/master/.github/workflows/release.yml

and thanks for this project, it's coming along great!

Awesome, your new Dockerfile is working great!
Thanks so much for doing that, I'm still quite new to Dockerizing apps, so this was really helpful :)

@Lissy93 I don't think the workflows were ever set up to build multi arch images, I left a link above on how you could do it.


[4.0.0-beta.7] Undefined variable: "$colors"

Bug Report
Ionic Info
Ionic:

   ionic (Ionic CLI)          : 4.1.1 (C:\Users\XXXX\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework            : @ionic/angular 4.0.0-beta.7
   @angular-devkit/core       : 0.7.5
   @angular-devkit/schematics : 0.7.5
   @angular/cli               : 6.1.5
   @ionic/ng-toolkit          : 1.0.7
   @ionic/schematics-angular  : 1.0.5

Describe the Bug
I have followed the migration guide from: https://beta.ionicframework.com/docs/building/migration/
and in the styles part, I moved my css code from my v3 version and I have added the following imports lines only in the global.scss ( from src/app/app.scss (v3) to src/global.scss (v4))
@import<EMAIL_ADDRESS>@import<EMAIL_ADDRESS>@import<EMAIL_ADDRESS>@import<EMAIL_ADDRESS>@import<EMAIL_ADDRESS>@import<EMAIL_ADDRESS>@import<EMAIL_ADDRESS>@import<EMAIL_ADDRESS>@import<EMAIL_ADDRESS>
And then all the css code..
body {
	-webkit-font-smoothing: antialiased;
	font-family: 'Open Sans', sans-serif;
}

On the other hand, I have copy my \src\theme\variables.scss from my v3 app to v4 (same location).
Where in this file in my v3 app, I had a few imports that they don't work on my v4.
@import "ionic.globals";
@import "ionic.theme.default";

And all the rest of the code including my $colors declaration
// Ionic Variables and Theming. For more info, please see:
// http://ionicframework.com/docs/v2/theming/
// @import "ionic.globals";
// Shared Variables
// --------------------------------------------------
// To customize the look and feel of this app, you can override
// the Sass variables found in Ionic's source scss files.
// To view all the possible Ionic variables, see:
// http://ionicframework.com/docs/v2/theming/overriding-ionic-variables/
$text-color:        #000;
$background-color:  #fff;
// Named Color Variables
// --------------------------------------------------
// Named colors makes it easy to reuse colors on various components.
// It's highly recommended to change the default colors
// to match your app's branding. Ionic uses a Sass map of
// colors so you can add, rename and remove colors as needed.
// The "primary" color is the only required color in the map.
$colors: (
  primary:    #f185cf,
  white: 			#ffffff,
  secondary:  #32db64,
  danger:     #f53d3d,
  light:      #f4f4f4,
  dark:       #222,
  favorite:   #69BB7B,
  twitter:    #53ACEB,
  github:     #000000,
  instagram:  #235D8D,
  facebook:   #307bbe,
  google:     #fd5459,
  vibrant:    #663399
);

And my angular.json from my fresh instalation project (with blank option)
"styles": [
              {
                "input": "src/theme/variables.scss"
              },
              {
                "input": "src/global.scss"
              }
            ]

And when I serve the app, ionic serve any component (global.scss included) don't find the $colors array.
[ng]       Undefined variable: "$colors".
[ng]       in E:\xxxxxx\src\global.scss (line 32, column 23)

[ng] ERROR in ./src/app/profile/components/orders-component/orders-component.scss
[ng] Module build failed:
[ng]       color: color($colors, white);

I think that I have not forgotten anything, and it should work as expected as in my v3 app.

Hi
colors is now core

colors.css has been renamed to core.css, the global stylesheet needs to be updated:

https://github.com/ionic-team/ionic/blob/master/CHANGELOG.md#400-beta6-2018-08-29

Hi, thank you for your response.
I have changed the colors line to core, and is still failing..

[ng] ERROR in ./src/global.scss (./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/sass-loader/lib/loader.js??ref--15-3!./src/global.scss)
[ng] Module build failed:
[ng] undefined
[ng]                      ^
[ng]       Undefined variable: "$colors".
[ng]       in E:\Projects\app-ionic4\src\global.scss (line 31, column 23)

It's talking about postcss-loader and sass-loader..
Thanks!

You can not use sass color variables in ionic v4, only CSS variables. See https://beta.ionicframework.com/docs/theming/css-variables

@Medtrack
Have a look here: https://aesvg.adaept.com/
Repo: https://github.com/peterennis/ae-svg-components
Code: https://github.com/peterennis/ae-svg-components/blob/master/src/ae-icons-component/ae-icons-component.css
It is a Stencil component sample using CSS and extends the icons using css-variables
following the beta docs from here: https://beta.ionicframework.com/docs/theming/color-generator
If you want to do your own theme with ionic/angular then
this is a good start: https://angularfirebase.com/lessons/css-variables-in-ionic-4/#Building-a-Custom-Theme-Generator-with-Ionic-4

Thanks for the issue. In Ionic 4 all Sass variables have become internal. This prevents having to rebuild the Ionic source on every style change and allows users to update colors at runtime. You can still use Sass in your own projects (in fact, we still use it in the conference app). However, we are now taking advantage of CSS variables and CSS to style Ionic components.
Please take a look at how the conference app sets the colors and global application variables: https://github.com/ionic-team/ionic-conference-app/blob/master/src/theme/variables.scss
I also recommend going through all sections of the theming documentation

Basics: overview of each section with links to each of them
Platform Styles: describes the different platforms and how to customize their styles
CSS Variables: describes what CSS variables are, how to set/use them, and has a brief explanation of the Ionic variables
Color Generator: tool that makes it easy to change all variations of an Ionic color
Advanced: describes colors and theming variables in depth, lists all global Ionic CSS variables

We also have some more information on this in our breaking changes file: https://github.com/ionic-team/ionic/blob/master/angular/BREAKING.md#theming
If you still have questions on theming, please ask on the forums. If you have ideas for how we can improve the documentation, please create a new issue on the ionic-docs repository. Thanks!


Request: add option to connect to existing sql

Hi,
is it possible to add option to connect to an existing sql server?

@Hansdevries that would certainly be possible. I would allow to set server name, server instance name, database name, user name and password. Could that work for you?

Seems a good idea to me!


Update govee-local to 0.2.6

Please update my adapter ioBroker.govee-local to version 0.2.6.
This pull request was created by https://www.iobroker.dev c0726ff.

Dear maintainer,
Node 16 tests are no longer working (see announcement at telegram) as node 16 is EOL for a longer period now and upcoming js-controller 6 (already used at guthub testing) does no longer support it.
Please remove node 16 from test-and-release.yml workflow and adapt engines clause at package.json to require node 18 for the next normal (= non-patch) release.
mcm1957


Derive chat state from props [#233].

A section of the code was commented out that was responsible for updating the chatSections state depending on the incoming props. This kept all messages in the chat from displaying, since chatSections is  an empty array on initial render and would never get re-computed.
The original code used a method called componentWillReceiveProps that has since be renamed to UNSAFE_componentWillReceiveProps, which is probably the reason it was commented out. This PR uses the static method getDerivedStateFromProps to adjust the chatSections state in a safe manner. It only updates the state if it detects a difference in the number of messages displayed.
This resolves issue https://github.com/jkk/shinkgs/issues/233

Vercel deployment: https://shinkgs.ectopod.vercel.app


Add option for multiple source case to apply GL shaders to every frame separately and produce custom compositing

Hello!
You have demo that shows how to apply shaders to texture that we get from decoder by surface and surfaceTexture. But in case with several merged mediasources( if I understood correctly) we will get single texture after compositing. But it will be grate to have option to apply different shaders on frames from different sources and then create custom compositing.

I would like to clarify, are you trying to build a composition of videos, you want to apply different effects to each asset and preview this composition?

yes, also I would like to get texture from each asset and blend these textures as I prefer in shaders

@Demin92 : thank you for clarifying.
Have you looked into setVideoEffects? You can use this functionality and create custom effects by extending GlEffect. You can see already available effects in the effect module or create a custom effect.
setVideoEffects covers most of the use cases that GL ExoPlayer demo covered and might be a better fit for your use case?

As far as I understood In case of several merged assets setVideoEffects allow me to apply effect on resulting texture obtained after blending multiple textures from different sources. But I need option to apply different custom effects to each texture from several source assets, and also I need option to customize texture blending

The demo you linked to before is for outputting on ExoPlayer, using a custom GL shader and one input video plus one input image. ExoPlayer.setVideoEffects can allow you do apply custom or media3.effect GlEffect instances, but also on only one input video.
If your goal is to edit and export a video, you can have custom effects on each asset by implementing the GlEffect interface and implementing your own shaders. We don't currently support injecting a custom VideoCompositor, but that would be required for you to customize texture blending past what's already supported in VideoCompositorSettings.
If your goal is to preview a video using exoplayer, we're working on a way to display a composition (>1 input video), but this is not yet available.
In the meantime, I don't think we have a simple solution to do this general issue, of custom compositors and previewing compositions. If you'd really like this, you could have exoPlayer.setVideoEffects take as input a TextureOverlay or your custom GlEffect (with 1+ inputs), and use that GlEffect to do your custom texture blending, between ExoPlayer's main input video, and a secondary input video rendered to the overlay.

@dway123 Thanks for your answer.
Can you say approximately when the compositing preview feature plans to be implemented?

While we are actively working on features that will lead to this, it is quite a large feature. I expect this will be implemented sometime after Q3 2024.

Since 1.4 release, you can start experimenting with CompositionPlayer API to preview Compositions. Check out Composition demo for more info. These APIs are still in development


Clean up file-getting logic

There is no need to get the element parent of proto elements in order
to determine the proto file; that logic is already contained in the
ProtoElement getFile() method.
Fixes #82

cc: @bjwatson @chrisdunelm

LGTM

Note: post-LGTM updates to C# references to the now-deleted CSharpXXXView in order to fix the build


Uncaught TypeError: Cannot read property 'toLowerCase' of undefined

[Enter steps to reproduce below:]

...
...

Atom Version: 1.2.4
System: Microsoft Windows 10 Enterprise N
Thrown From: project-viewer package, v0.2.24
Stack Trace
Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
At C:\Users\jas\.atom\packages\project-viewer\lib\helpers\database.js:32

TypeError: Cannot read property 'toLowerCase' of undefined
  at sortData (C:\Users\jas\.atom\packages\project-viewer\lib\helpers\database.js:32:51)
  at Array.sort (native)
  at DataBase.updated (C:\Users\jas\.atom\packages\project-viewer\lib\helpers\database.js:31:42)
  at Emitter.module.exports.Emitter.emit (C:\Users\jas\AppData\Local\atom\app-1.2.4\resources\app.asar\node_modules\event-kit\lib\emitter.js:86:11)
  at add-project-view.constructProject (C:\Users\jas\.atom\packages\project-viewer\lib\views\add-project-view.js:83:31)
  at HTMLButtonElement.addButtonClick (C:\Users\jas\.atom\packages\project-viewer\lib\views\add-project-view.js:34:36)

Commands
     -3:13.6.0 project-viewer:edit-group (span.list-item)
     -0:48 core:move-down (atom-text-editor.editor.is-focused)
  8x -0:47.3.0 core:move-right (atom-text-editor.editor.is-focused)
  4x -0:45.8.0 core:move-left (atom-text-editor.editor.is-focused)
  2x -0:43.8.0 core:move-down (atom-text-editor.editor.is-focused)
 21x -0:43.1.0 core:move-right (atom-text-editor.editor.is-focused)
     -0:34.2.0 core:move-down (atom-text-editor.editor.is-focused)
     -0:33.6.0 core:move-left (atom-text-editor.editor.is-focused)
     -0:32.8.0 core:move-right (atom-text-editor.editor.is-focused)
  4x -0:30.2.0 core:select-up (atom-text-editor.editor.is-focused)
     -0:28.9.0 core:backspace (atom-text-editor.editor.is-focused)
     -0:27.4.0 core:save (atom-text-editor.editor.is-focused)
     -0:23.6.0 project-viewer:add-project (span.list-item)
  2x -0:11.1.0 core:select-right (atom-text-editor.editor.mini.is-focused)
     -0:10.1.0 core:select-left (atom-text-editor.editor.mini.is-focused)

Config
{
  "core": {
    "disabledPackages": [
      "line-ending-selector",
      "atom-terminal-panel",
      "project-manager",
      "atom-runner",
      "git-control",
      "project-view",
      "tool-bar-almighty",
      "seti-icons",
      "file-icon-supplement",
      "tool-bar-main",
      "nuclide-debugger-hhvm"
    ],
    "packagesWithKeymapsDisabled": [
      "activate-power-mode"
    ],
    "themes": [
      "atom-material-ui",
      "atom-material-syntax"
    ]
  },
  "project-viewer": {
    "startUp": true
  }
}

Installed Packages
# User
atom-material-syntax, v0.2.6
atom-material-ui, v0.8.0
autocomplete-cmake, v0.3.1
autocomplete-modules, v1.3.1
custom-title, v1.0.1
dockerletion, v0.1.0
file-icons, v1.6.13
flex-tool-bar, v0.6.0
hyperclick, v0.0.35
icon-fonts, v1.10.0
keyboard-sounds, v0.2.0
language-batch, v0.3.3
language-cmake, v0.1.4
language-cpp14, v0.4.2
language-cuda, v0.1.0
language-docker, v1.1.6
line-ending-selector-unix, v0.0.9
linter, v1.11.3
linter-gcc, v0.5.5
linter-node-markdownlint, v0.2.2
markdown-preview-opener, v0.1.1
minimap, v4.17.0
node-debugger, v1.3.0
nuclide-buck-files, v0.0.35
nuclide-busy-signal, v0.0.35
nuclide-code-format, v0.0.35
nuclide-code-highlight, v0.0.35
project-viewer, v0.2.24
run-in-terminal, v0.5.0
sync-settings, v0.6.0
tool-bar, v0.1.9
vagrant, v0.1.0

# Dev
No dev packages

thanks for pointing it out. Will try to replicate it and fix it.

can you please check if this continues to happen?

@jccguimaraes
Hey thr
I think it might be something to do I was manually editing the json in response to issue I was having when setting color of the group. I don't have such issue anymore.
But I might suggest the json to be recreated if someone deletes it or empty out the file. That would help.
Thx
Jas

cool feature! thx!


Store fully evaluated form for compiler('c') in rendered recipe.

- source: compiler
  spec: clang_osx-arm64
- source: raw
  spec: make
- source: variant
  spec: python
  variant: python
- source: pin_subpackage
  spec: libfoo
- source: pin_compatible
  spec: libfoo
- source: run_export
  spec: python >3.8
  from: foobar
  source_package: baz

@wolfv Would it make sense to format this as:
- compiler: c
  spec: clang_osx-arm64
- source: make
- variant: python
   spec: python 3.8
- pin-sub-package: libfoo
- pin-compatible: libfoo
- run_export: foobar # Or should this be the `source_package`?
  spec: python >3.8
  source_package: baz


Fix a ptrauth test that I broke in #34213

I broke this in #34213.  Still not sure how the test run didn't catch this.
rdar://70104537

@swift-ci Please test.

Build failed
Swift Test Linux Platform
Git Sha - d8f46ddc3c983511d0f7f6f3972636771b2820fd

@swift-ci Please smoke test Linux

@swift-ci Please smoke test Linux

The TSC tests timed out on Linux (I think that @brentdax was looking into that)

@swift-ci please smoke test Linux platform

Killed the test, as it was hanging. Fortunately, the fix should have landed in SwiftPM by now.
@swift-ci please smoke test Linux platform

Hooray, a Linux buiild passed.  Thank you, @brentdax and @compnerd.


Excessive new connections to Postgres

Expected Behavior
Under load the number of connections to the Postgres database backend remains fairly consistent over time.
Actual Behavior
When under load it has been observed that there are many new connections being made to the Postgres database being used as the DB backing for the history service.  (200+ new connections per second during load test). The expectation is that the number of connections may rise to handle the load but it should achieve a steady state and relatively few connections killed and re-established.
One suggestion is that the method get may be being called frequently and for some reason the refcount is not incremented so remains at 0 and many new connections returned.  To look into the problem further to see if this theory is valid.
https://github.com/temporalio/temporal/blob/b383ffffcbbeacdfce2fe021c30f093bab64b5d9/common/persistence/sql/factory.go#L195
Steps to Reproduce the Problem

Install self-hosted platform using Postgres as the DB
Setup montoring for the number of connections/new connections being made to DB
Run load test

Specifications

Version: 1.24
Platform: Kubernetes via Helm charts

Temporal Python SDK Background Check tutorial | Learn Temporal
Skip to main content
Replay will return September 18-20 in Seattle! Secure your ticket.
Home Get started Courses Project-based tutorials Example applications Documentation
Search

Home

Get started with Temporal

Courses

Project-based Tutorials

Go tutorials

Java tutorials

TypeScript tutorials

Python tutorials

Build a data pipeline with Python

Build an email drip campaign with Python

Build a trip booking application in Python

Build a Background Check application with Temporal and Python

Introduction
Project setup
Develop for durability

PHP tutorials

Infrastructure tutorials

Example applications

Zines

Dev guide

Documentation

Forums

Home page

Project-based Tutorials

Python tutorials

Build a Background Check application with Temporal and Python

Develop for durability

On this page
Develop for durability - Python SDK dev guide
Last updated on Aug 21, 2024
Tags:

activity
cloud-certificate
code-sample
dev-guide
docker
go-sdk
introduction
project-setup
python-sdk
self-hosted
temporal-cli
temporal-client
temporal-cloud
test-framework
testing
worker
workflow

Temporal's Durable Execution model
A key concept of Temporal is that it is a Durable Execution platform.
This means that Workflows executed through the Temporal Platform are:

Durable. Temporal guarantees that your Workflows will eventually complete successfully.
Reliable. Temporal guarantees that your Workflows will be executed at least once in their entirety.

Temporal Workflows can be easily tested using the Temporal SDK testing suite.
This section explains how to test your Workflow for durability and how Temporal can help with this.
Workflow function tests
The Workflow Definition in this example has two Activities being executed, post_ids and top_posts.
These Activities are defined in the activities.py file, which we'll test first.
Test Activities
Temporal Python SDK includes the ActivityEnvironment class, which provides a testing environment for Activities.
The test below tests the ssn_trace_activity function from the activities.py module.
The function takes a social security number as input and returns a string indicating whether the SSN is valid or not.
The test checks if the function returns "pass" when given the SSN "55-55-555".
docs/tutorials/python/background-check/code/backgroundcheck_boilerplate/tests/activity_test.py
import pytest
from temporalio.testing import ActivityEnvironment
from activities.ssntraceactivity_dacx import ssn_trace_activity

@pytest.mark.asyncio
async def test_ssn_trace_activity() -> str:
    activity_environment = ActivityEnvironment()
    expected_output = "pass"
    assert expected_output == await activity_environment.run(
        ssn_trace_activity, "55-55-555"
    )

Test Workflows
This is a unit test written in Python using the pytest library.
The test checks the execute_workflow method of the BackgroundCheck Workflow.
The test creates a new WorkflowEnvironment and a Worker with a Task Queue and the BackgroundCheck Workflow and ssn_trace_activity activity.
Then, it executes the BackgroundCheck.run method with a social security number and a unique ID, and asserts that the result is equal to "pass".
The test is marked with @pytest.mark.asyncio to indicate that it is an asynchronous test.
docs/tutorials/python/background-check/code/backgroundcheck_boilerplate/tests/workflow_test.py
import uuid

import pytest

from temporalio.testing import WorkflowEnvironment
from temporalio.worker import Worker

from activities.ssntraceactivity_dacx import ssn_trace_activity
from workflows.backgroundcheck_dacx import BackgroundCheck

@pytest.mark.asyncio
async def test_execute_workflow():
    task_queue_name = str(uuid.uuid4())
    async with await WorkflowEnvironment.start_time_skipping() as env:
        async with Worker(
            env.client,
            task_queue=task_queue_name,
            workflows=[BackgroundCheck],
            activities=[ssn_trace_activity],
        ):
            assert "pass" == await env.client.execute_workflow(
                BackgroundCheck.run,
                "555-55-5555",
                id=str(uuid.uuid4()),
                task_queue=task_queue_name,
            )

This test will run through your entire data pipeline, and verify that if a failure is encountered, it will retry the failed step.
Workflow Replay tests
You can create a Workflow Replay test to see what will happen if any step in your data pipeline fails during execution.
What is a Workflow Replay test?
Temporal provides a Workflow Replay Test environment, which can be used for testing the durability of your Workflows.
By using Temporal's Workflow Replay Test environment, you are able to simulate and replay a Workflow's execution, stepping through each step and decision point, and verify the consistency of its behavior. This environment effectively allows you to rewind the execution and perform a simulated retry, effectively enabling you to debug and validate how the Workflow will handle errors and retries.
The test below checks to see what happens if the top_posts() function fails to retrieve a list of Temporal Community posts, and if it will retry again.
The test simulates a failure in the top_posts() Activity by returning an error in the Workflow Replay Test environment. This simulates a failure in the top_posts() Activity, which allows Temporal to attempt retries.
Then, we check the Workflow History and assert that the expected behavior occurred.
Add Workflow Replay test
docs/tutorials/python/background-check/code/backgroundcheck_boilerplate/tests/workflow_test.py
import uuid

import pytest

from temporalio.client import Client, WorkflowOptions
from temporalio.testing import WorkflowEnvironment, ActivityStub

from activities.ssntraceactivity_dacx import ssn_trace_activity
from workflows.backgroundcheck_dacx import BackgroundCheck

@pytest.mark.asyncio
async def test_workflow_replay():
    task_queue_name = str(uuid.uuid4())
    async with await WorkflowEnvironment.start_time_skipping() as env:
        async with Worker(
            env.client,
            task_queue=task_queue_name,
            workflows=[BackgroundCheck],
            activities=[ssn_trace_activity,
                        ActivityStub.for_fn(top_posts) # Register the ActivityStub instead of real Activity Definition for the purpose of Workflow Replay Test
                       ],
        ):
            # Mock `top_posts()` Activity to return a failure
            # In reality, the error may be caused by an external service going down.
            async def top_posts_fn(*args: Any) -> List[TemporalCommunityPost]:
                raise RuntimeError("unable to retrieve posts")

            activity_stub: ActivityStub = next(
                (
                    x
                    for x in env.worker.activities
                    if x.fn == top_posts_fn
                ),
                None,
            )
            assert activity_stub is not None
            activity_stub.set_fn(top_posts_fn)

            # Run the Workflow in the Workflow Replay Test environment.
            # The Workflow Execution will fail on the first attempt, but will eventually succeed after retries.
            workflow_handle = await env.client.execute_workflow(
                BackgroundCheck.run,
                "555-55-5555",
                id=str(uuid.uuid4()),
                task_queue=task_queue_name,
                workflow_options=WorkflowOptions(
                    execution_timeout=timedelta(seconds=30),
                    # Retry Policy is used by the Worker
                    # to retry any Activity that raises an error.
                    # This Policy is specified on the Workflow run method.
                    # In this case, the retry count is 3, and the retry interval is 1 second.
                    retry_policy=WorkflowOptions.RetryPolicy(
                        maximum_attempts=3,
                        initial_interval=timedelta(seconds=1),
                    ),
                ),
            )
            # Check the Workflow Execution History
            # to ensure it attempted to retry the `top_posts()` Activity.
            assert len(workflow_handle.history.events) > 2
            for i in range(1, workflow_handle.history.events):
                if (
                    workflow_handle.history.events[i].is_activity_execution_started
                    and workflow_handle.history.events[i].activity_type
                    == "top_posts"
                ):
                    # Check the event history.
                    # The test is expected to find at least three events of 'activity execution started'
                    # with `top_posts` as the Activity name,
                    # indicating that the `top_posts()` Activity was retried.
                    # In this example, a total of three attempts are made by the Workflow
                    # to process `top_posts()`, but the last attempt succeeds.
                    assert workflow_handle.history.events[
                        i + 1
                    ].activity_execution_failed
                    assert workflow_handle.history.events[
                        i + 2
                    ].activity_execution_started
                    assert workflow_handle.history.events[
                        i + 3
                    ].activity_execution_successful
                    assert (
                        workflow_handle.history.events[
                            i + 3
                        ].activity_result.get("result")
                        == "pass"
                    )

In this test you check the Workflow history to see the steps that failed.
This can be used to see if your code is handling errors correctly.
Run Workflow function tests
Execute your Workflow Replay tests in the tests/workflow_test.py file.
If you are using the default Docker Compose setup, you can run the tests with the following command:
docker-compose run --rm temporal-admin-tools pytest ./tests/ -vv

If you are using your own Dockerfile, or have modified your docker-compose.yml, then change the command to reflect those modifications.
Conclusion
You have explored Temporal's Durable Execution Model, tested your Workflow, and seen how Temporal handles retries for failures.
Workflow Replay tests can help you to identify problems in your Workflow code.
For example, if you have a Workflow that relies on an external service, you can create a Workflow Replay test that simulates a failure in that service.
Temporal's Durable Execution ensures that your Workflow will eventually complete successfully even if that service is unavailable.
Next steps

Consider the Temporal CLI reference for information on how to interact with Temporal.
Implement Workflow Visibility.
Set up Temporal's Search Attributes to add your own filters and view the history of Workflow executions in the Web UI.
Add additional Activity function tests to your tests/activity_test.py file.

You have learned how to build a Background Check application with Temporal using the Python SDK.
The Temporal Python SDK makes it easy to build and run workflows, and Temporal provides a durable execution model that can handle failures and retries.
Tags:

activity
cloud-certificate
code-sample
dev-guide
docker
go-sdk
introduction
project-setup
python-sdk
self-hosted
temporal-cli
temporal-client
temporal-cloud
test-framework
testing
worker
workflow

Last updated on Aug 21, 2024
Previous

Project setup Next

Build a trip booking application in Python

Install the Temporal CLI

Install via download
Install via Homebrew
Build

Choose a development Cluster

Local dev server

Start the dev server
Create a custom Namespace

Temporal Cloud
Self-hosted Temporal Cluster

Boilerplate Temporal Application project code

Project structure
Initialize Python project dependency framework
Boilerplate Workflow code
Boilerplate Activity code
Run a dev server Worker
Run a Temporal Cloud Worker
Run a Self-hosted Worker

Confirm network
Confirm IP address
Customize Client options
Build and deploy Docker image

Start Workflow using the Temporal CLI

Local dev Server

List Workflows
View in Web UI

Temporal Cloud

List Workflows
View in Web UI

Self-hosted

List Workflows
View in the Web UI

Add a testing framework

Add Workflow function tests
Add Activity function tests

Workflow Replay tests

What is a Workflow Replay test?
Add Workflow Replay test

Run Workflow function tests

Conclusion

Next steps

Github

Twitter

YouTube

Join our Slack group

Temporal Cloud

Meetups

Workshops

Support Forum

Ask an expert

Documentation

Use Cases

Blog

Newsletter Signup

Security

Privacy Policy

Terms of Service

We're Hiring

Copyright © 2024 Temporal Technologies Inc.


Support Ruby 3

Attempt to add support for Ruby 3.
I've added a new entry in the build matrix. Ruby 3 is only properly supported with Rails 6.1.
I have updated the runtime dependencies in the gemspec. I have tried other ways without success.

Oops, wrong source branch :'(
I guess it will be fine once the other PR to support new version of cucumber will be merge?

Just quickly. Should probably update changelogs e.t.c.

Closing this one for a proper one


2 translation files with the same content.

There are 2 translation files with the same content in the translations folder.

README.ne.md
README.ne.MD

It also causes this error to occur when cloning the repository.

@malialp thanks for highlighting this!

This issue was closed, but the duplicated file was never removed and is still breaking git on cloned repos.
I've written the PR #552 removing the duplicated file from GitHub (and nothing more) in hopes that it helps.


parts with multiple parameters

URL parts with multiple parameters is a common scenario, supported by every router I know of - for some reason, it doesn't work with this router.
I wrote the following failing test case:
        $this->specify('should match multiple regexp in params', function () use ($router) {
            $router->get('/archive/{year:^[0-9]+$}-{month:^[0-9]+$}-{day:^[0-9]+$}', 'archive');
            $result = $router->resolve('GET', '/archive/2015-31-01');
            $this->assertEquals('archive', $result['handler']);
            $this->assertEquals('2015', $result['params']['year']);
            $this->assertEquals('31', $result['params']['month']);
            $this->assertEquals('01', $result['params']['day']);
        });

Of course, you can work around this, by further parsing a matched parameter like for example {date:^[0-9]+\-[0-9]+\-[0-9]+$}, but it shouldn't be necessary. I think the assumption that every part is either a fixed string or a single parameter is too limited.

Added support for that in my fork here


Update machine-learning-live-chat.md

Hi @raymondlaghaeian, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (raymondl). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

Checking for ability merge delayed -- waiting for it to complete.

Hi @raymondlaghaeian, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (raymondl). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@LuisCabrer
Please resolve the merge conflict. Thanks.


GetNextEntry

On portable version:
sometimes I need to scan the ZipInputStream twice. so it will be great if
I will have GetFirstEntry (in addition to GetNextEntry)

@alonmat
The package you are using is currently a fork of SharpZipLib by @ygrenier at https://github.com/ygrenier/SharpZipLib.Portable
At the moment I am focused more on cleaning up the existing code and bug fixing, rather than adding new features. Hopefully soon, we can take a look at incorporating those features into our project.
-Neil

Would that give you anything over just creating two input streams or using ZipFile?

Yeah, this does seem both specialized and easy to resolve using the consumers own code. I'll close this since it hasn't been touched in 4 years.


Func upload without publish/alias

This would allow someone to use shepherd only for function deployment and without API gateway

Completed. Just run shepherd new --no-api when creating a project


Update js-slang

Description
This update bumps the version of js-slang used, in preparation for an ICFP talk on Saturday. The streamlined implementation of continuations in the latest version of js-slang is required.
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] Code quality improvements

How to test

Checklist

[ ] I have tested this code
[ ] I have updated the documentation

Pull Request Test Coverage Report for Build<PHONE_NUMBER>0
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 31.45%

Totals

Change from base Build<PHONE_NUMBER>6:
0.0%

Covered Lines:
4851

Relevant Lines:
14542

💛  - Coveralls


update to 2.0

Hi thanks for putting this up, apologies that I didn't see it earlier. Hope everything is working for you.

Hi thanks for putting this up, apologies that I didn't see it earlier. Hope everything is working for you.

I didn't even think you'd notice this until I installed the mod.

Hi thanks for putting this up, apologies that I didn't see it earlier. Hope everything is working for you.

I didn't even think you'd notice this until I installed the mod.


Convert nested/highly interactive modals to pages

Certain modal elements would work better with their own pages.

Edit major modal
Major progress modal
Permissions modal

Maybe look into intercepting routes as well


Numpy 1.10

gpkit does not work with numpy 1.10

@bqpd, let's update the docs for now to state the known issue and have anaconda install an earlier numpy version?

Good plan. (you mean pip/ the "requires" flag in setup.py?)

Good point -- yes, that. Additionally, do we need to update the Anaconda setup instructions (http://gpkit.readthedocs.org/en/latest/installation.html) to have virtual environments use the right version of numpy?

I think I just want to get it working in both versions rather than doing that. :p

(installing numpy 1.10 now)

that works too.  :)

I'm starting to see why people complain about managing dependencies  :/

Ironically, the person we know who complains the most about dependencies
writes code that becomes a dependency for others :P
On Sat, 14 Nov 2015 at 10:44 Warren Hoburg<EMAIL_ADDRESS>wrote:

I'm starting to see why people complain about managing dependencies :/
—
Reply to this email directly or view it on GitHub
https://github.com/convexopt/gpkit/issues/464#issuecomment-156712951.

who, me?

No, the loud guy who sits next to me.
On Sat, 14 Nov 2015 at 10:57 Warren Hoburg<EMAIL_ADDRESS>wrote:

who, me?
—
Reply to this email directly or view it on GitHub
https://github.com/convexopt/gpkit/issues/464#issuecomment-156713838.

I updated numpy on El Cap to numpy 1.10. Seems to be working.


Bootstrap Sass not recognized

OS?  Windows 7, 8 or 10. Linux (which distribution). Mac OSX (Yosemite? El Capitan?)
Running in docker on ElementaryOS (Latest)
Versions. Please run ng --version. If there's nothing outputted, please run
in a Terminal: node --version and paste the result here:
angular-cli: 1.0.0-beta.11-webpack.2
node: 5.12.0
os: linux x64
Repro steps. Was this an app that wasn't created using the CLI? What change did you
do on your code? etc.
Just upgraded to rc5.
The log given by the failure. Normally this include a stack trace and some
more information.
None
Mention any other details that might be useful.

I want to use the bootstrap-sass repo from npm, but webpack is not recognizing it.
I read about a bootstrap-sass-loader for webpack, but I can't find the webpack config file.
Anyway I can add/edit loaders etc.

still nothing?

Can you add repro steps to see the errors you are getting?

create a new project.
npm install --save bootstrap-sass
try to do @import 'bootstrap'; in component scss file.

Components in Angular 2 have their css encapsulated, which means that they don't bleed out onto other parts of your app. Unfortunately, it also means that you can't really import bootstrap in your component.
We added global styles to address this: https://github.com/angular/angular-cli#global-styles. It should be available in the next webpack release.

Still doesn't really solve the problem, as importing bootstrap from it's npm package, can also include overriding variables just for that specific component.. Or using variables like the default padding to keep up with code styling throughout your application etc.
Global styles do not solve a sass import...

example:
component.scss:
@import "../../styles/bootstrap/bootstrap/variables";

I now have to import it from the downloaded source file, which I have to manually update. Instead of using the npm package.
It doesn't really matter if angular-cli has global styles, it matters that it recognizes npm sass packages.
More information
https://github.com/jtangelder/sass-loader

PS. I tried the ~ method in the sass-loader, still doesn't work with angular-cli

Long story short;
I am missing the ability to add custom loaders to webpack through angular-cli

I'm a bit confused here.. we do support sass/less/styl, see https://github.com/angular/angular-cli#css-preprocessor-integration.
Doesn't your scenario work by defining your variable overrides in src/_variables.sass, your global (app wide) styles in src/styles.sass, and importing your variable overrides in src/styles.sass plus in your components?
Regarding custom loader, this is the relevant issue: https://github.com/angular/angular-cli/issues/1656

@filipesilva, this can resolve all the problems but If I import the variable files in multiple "app/my-component.component.scss" files, webpack still recognize as single variable file?

As far as I know, yes.

Angular cli uses sass-loader, look closely in the docs, you'll see you need to use "~" before your npm package sass file name.. https://github.com/jtangelder/sass-loader


apply old page style

[] apply the old page style and make it better. In api-content stylesheet you find a value named .page => rename it to #content
[] make this style better. Search the internet for other designs and ideas
Good luck

Actual style is ok.


Problem with stream

Hello, when i start stream i am getting information on fb about "stream offline" but packets going, where is problem? ubuntu 16, php7

Are you waiting a few moments for Facebook to load the preview? Depend on how fast your connection is it could take a moment
Are you streaming audio? If so what is the audio length?
Is the rtmp://... URL correct?

1.yes im waiting
2. im streaming audio length 5h
3. rtmp is correct

Have you tried the recently updated branch?

Could you provide link to the lastest branch?

Im having the same issue, and I am using the latest branch

Are you waiting a few moments for Facebook to load the preview? Depend on how fast your connection is it could take a moment
-- Yes
Are you streaming audio? If so what is the audio length?
-- 26 Minutes to test
Is the rtmp://... URL correct?
-- Yes
Version
-- This Branch:
-- https://github.com/JamesTheHacker/Facebook-Live-Reactions/tree/added_default_shoutout

Bump

Did you install ffmpeg with librtmp? To check, run ffmpeg at the terminal and look for the following output:
ffmpeg version 3.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-800.0.38)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libfdk-aac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --disable-lzma --enable-nonfree --enable-vda

Notice: --enable-librtmp
I didn't see it in your output @mehh. Could you also check @lanceq1337.

Same issue here. ffmpeg compiled from sources.

ffmpeg version N-82659-g9478bd8 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --enable-gpl --enable-libx264 --enable-libmp3lame --enable-nonfree --enable-libfdk-aac --enable-librtmp
libavutil      55. 41.101 / 55. 41.101
libavcodec     57. 66.108 / 57. 66.108
libavformat    57. 58.101 / 57. 58.101
libavdevice    57.  2.100 / 57.  2.100
libavfilter     6. 67.100 /  6. 67.100
libswscale      4.  3.101 /  4.  3.101
libswresample   2.  4.100 /  2.  4.100
libpostproc    54.  2.100 / 54.  2.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

@JamesTheHacker with the latest version stream working, but when im turning on
~/facebook-live-reactions# php fblive.php
reactions and share not updating still 0 everywhere, how to debug this? no errors in phplog and apachelog

With librtmp installed not working on Ubuntu 16.04
I've compiled from sources ffmpeg:

ffmpeg version N-82660-gd9883de Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
configuration: --enable-gpl --enable-libx264 --enable-libmp3lame --enable-nonfree --enable-libfdk-aac --enable-librtmp
libavutil      55. 41.101 / 55. 41.101
libavcodec     57. 66.108 / 57. 66.108
libavformat    57. 58.101 / 57. 58.101
libavdevice    57.  2.100 / 57.  2.100
libavfilter     6. 67.100 /  6. 67.100
libswscale      4.  3.101 /  4.  3.101
libswresample   2.  4.100 /  2.  4.100
libpostproc    54.  2.100 / 54.  2.100
Hyper fast Audio and Video encoder

I create the stream but in Facebook, no conection.

I just ran:
brew install ffmpeg --with-x265 --with-rtmpdump  --with-fdk-aac``` and it works!  Great!

Wich is your 'ffmpeg' command output?

ffmpeg version 3.2.1 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 7.0.2 (clang-700.1.81)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libfdk-aac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --disable-lzma --enable-nonfree --enable-vda
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

I have the same problem. Probably because I couldn't compile the ffmpeg with librtmp (on CentOS 7.2). This is the configuration error:
"ERROR: librtmp not found using pkg-config"
but "/usr/local/lib/pkgconfig/" is containing "librtmp.pc" file and "rtmpdump" command is working.
Am I missing something? I couldn't find any good articles to compile with librtmp on CentOS.
I also tried with "yum ffmpeg ffmpeg-devel" but no luck.

I just solved the same problem with using a flash supported browser -_- It seems, facebook requires adobe flash to start (and watch) live streaming.


Remove misleading example from upgrade guide

Per discussion in #2991, the second example is a fragile pattern. As @taion mentioned:

I don't think we really guarantee that you can just split out push like that, instead of calling it via router.push.

browserHistory is undefined in non-browser environments, so accessing browserHistory.push throws. It also relies on using the same history passed to Router, which may (conditionally) change.
Let me know if you'd prefer adding a warning over removing the example entirely.

I'd say that example encourages bad patterns, so it should go completely. Thanks!

Wait, no, this example is not broken for the same reason. The problem is something like:
<button onClick={browserHistory.goBack}>

This is fine, net of issues with binding handlers in render:
<button onClick={() => browserHistory.goBack()}>

<button onClick={() => browserHistory.goBack()}>

This doesn't break during a render test, but it does when you test the onClick, which is presumably something you'd want to do.

No, but if you're testing the click behavior, presumably you can take whatever steps are necessary to make this work appropriately. It's not my favorite pattern, but the one documented in the example is not as fragile as the one from your issue.

I'd say that example encourages bad patterns, so it should go completely. Thanks!

:+1:

Fine.

???
There is only one url, there is nothing wrong with singleton histories. They aren't used in server rendering.

Like, this is one of the major features of 2.0, singleton histories. Are people just freaking out by the word "singleton" or is there a real reason to discourage using them? Why even have them if we're going to discourage using them?

I'd be happy with bringing this back, especially in light of discussion in https://github.com/rackt/react-router-redux/issues/257.
I'd just say that this pattern can be a bit dangerous on the server, and that in a component you "should" probably prefer context in general.

Yeah, a better example would be using it outside of React entirely.

I'd just say that this pattern can be a bit dangerous on the server, and that in a component you "should" probably prefer context in general.

You don't use them on the server.

on the server all redirects are going to happen in route hooks, maybe that's the documentation that needs to happen.

@ryanflorence Take a look at discussion in #2991. It's not that they're used intentionally by the server, but that since their contracts differ in non-browser envs, they have potential to break the server/tests.

If you're using something like async-props (or react-resolver), that can be hard. I think this is a fine pattern, but it runs a little bit of risk for being tricky for isomorphic rendering.
I don't think this is a good response to #2991, though – the example given in the docs here would not have issues when rendered on the server.

As you say in #2991

since browserHistory is undefined [on the server]

Exactly as designed. There is no such thing as a browser history on the server.
<button onClick={() => browserHistory.push()}/>

@ryanflorence
Beat you to it: https://github.com/rackt/react-router/pull/2992#issuecomment-176379642 :stuck_out_tongue:
On balance, I think this usage is probably fine. I'm not going to use this syntax, but the cases where it causes problems are ones that novice users are unlikely to hit anyway.

When you are server rendering, novice or pro, you must learn what stuff runs on the server and what runs on the client. didMount client. willMount server. Etc.
There is no such thing as a browser history on the server. It should not be some object w/ a bunch of empty functions to allow naive button click handlers.

We definitely need to have a doc that talks more about server rendering and gotchas like this.

What I mean in the server rendering context is that if you call e.g. this.context.router.replace in componentWillMount, you'll be okay – if you do the same with browserHistory.replace, you won't be.
But this even is a more advanced usage, since normally (but not always) this can be dealt with in the onEnter hook.
Should we just revert this change for now?

<button onClick={() => browserHistory.push()}/>
What's wrong with that?

Suppose you have:
const MyButton = props => (
  <button onClick={() => {props.doThing(); browserHistory.push('...')}} />
)

Testing the callback will throw:
import {it} from 'mocha'
import {spy} from 'sinon'
import {shallow} from 'enzyme'
import {assert} from 'chai'

it('fires a callback when clicked', () => {
  const callback = spy()
  const button = shallow(<MyButton doThing={callback} />)
  button.simulate('click')
  assert.ok(callback.calledOnce)
})

I'm not suggesting that you should be doing this; what I took from #2991 is that it's an anti-pattern.

It should not be some object w/ a bunch of empty functions to allow naive button click handlers.

Right, but then why have an example in the docs with such a naive handler? I submitted this PR because I was led toward the pattern by that example. I also offered to add a warning instead of removing the example.

 (I've seen it attempted...) browserHistory usage should be thoughtful, that's all.
Maybe the example should be of an actual lifecycle function instead of something opaque.

Ah ha!
Maybe we do export a warningHistory (ha!) with methods that all say "yo, this is being called in a non dom environment. if you're in a route hook, use the redirect arg in this function, if you're in willMount, use a route hook instead, otherwise, please open an issue so we know what the heck you're trying to do here!"

That's a pretty contrived example that literally only comes up if you're using Enzyme, since React doesn't natively support simulating events on shallow rendered components. If you're running in Karma, browserHistory will be defined. That example really is not sufficiently motivating.
I definitely don't agree that the example led you to the pattern that you chose – I think the onClick={() => browserHistory.push(whatever)} pattern is much more idiomatic.

@ryanflorence With e.g. async-props, can you access the async data in onEnter at all? If not, it'd seem like componentWillMount would be the best place to do a redirect.

@taion

That's a pretty contrived example that literally only comes up if you're using Enzyme

Enzyme is the wrapper I happen to use, but it seems like you'd want to test component methods regardless of framework, and folks are increasingly moving toward non-browser unit testing. Perhaps I'm wrong, but I don't think this type of situation is that uncommon.

I definitely don't agree that the example led you to the pattern that you chose

I saw the example, wrote some code that errored, thought "oh! it makes sense that this breaks, but I wonder why they suggest doing this kind of thing?" and opened #2991. I didn't contrive the example; it was my experience as a user encountering the docs.
I recognize the difference between the two examples, but I think it's an awfully large gotcha to go unexplained. I'm surprised by the hostility given that I opened this PR with the intention of improving the docs and offered to revise it with an explanatory warning.
@timdorr

Maybe the example should be of an actual lifecycle function instead of something opaque.

That sounds great -- perhaps also with a comment explaining the nuance. Happy to submit another PR.

Probably submitted that right as you started writing. Check #3027 :smile:


add grpcio-tools to requirements

run_protoc.sh fails without grpcio-tools installed.

If any one has the same issue:
Runtime dependencies are in requirements.txt
Development dependencies are in requirements-dev.txt
Testing dependencies are in requirements-test.txt

Just for the record:
pip install -r requirements-dev.txt -e .


AubsUK - Added Scan option to scan List1, List2, All Channels, All Lists, No Lists

Added Scan option to scan List1, List2, All Channels, All Lists, No Lists

Gives a slightly different way to scan channels.
Allows channels to excluded from any list, so when scanning ALL LISTS, only channels in a list are included (The original reason the PR was created).
An unintended (but useful) result, it technically gives a third list ("not in any list") that can be scanned separately from the two predefined lists.

Key

Entry in Menu Item 19(SList)
Scan Status(top right)
Purpose

LIST1
1
Scan through all channels added to **LIST1**

LIST2
2
Scan through all channels added to **LIST2**

ALL CHANNELS
C
Scan through **all** channels (List1, List2, and channels not added to any list)[this is the old "*"]

ALL LISTS
L
Scan through all channels added to List1 **or** List2

NO LISTS
N
Scan through all channels that are **not in** both List1 and List2

The build it is based on (live build) Firmware uses 98.19% of available memory (60324/61439 bytes).
My build including this Pull Request  Firmware uses 98.32% of available memory (60404/61439 bytes).
+80 bytes, (98.19% to 98.32% = 0.13%)
It only uses 80 bytes more for the additional functionality

You might also consider the intersection of List1 and List2 (channels which are in BOTH List1 and List2).
But at this point, you might as well add couple more lists :)

@qsus I had a brief look at adding new lists, but I think it's a lot more involved, and use too much of the little memory left. I will continue to look into it though.
The intersection between L1 and L2, while a good idea (I thought about it too!), looks to just add extra complexity that I don't think anyone would be interested in, and it would take a bit more space.

There are like 8 or more combinations you can have with 2 lists, but the only useful ones in my opinion are: L1, L2, L1+L2 and All; adding other combinations isn't useful imo.
Adding more lists would make sense in my opinion though, unless it's too complicated.

You don't think it's useful to only scan all channels, as long as they're in any of the lists? In addition to All Channels (*) which currently scans every channel, even if it's not in a list.
The issue I faced was that I have some repeaters that are out of range for my normal location that I want to have programmed in, but at my location, those freqs are full of interference, so I didn't want them to be scanned normally. Removing them from any List means they can be scanned separately (No Lists).

The NO LIST option might make sense in some specific use case like yours, but I think generally adding two more lists would be way more useful. Scan options would then be List x, All lists and All channels.

Problem with these radios is the lack of storage space for the firmware, and @egzumer has done a great job to fit everything in with the limited space.

adding two more lists would be way more useful. Scan options would then be List x, All lists and All channels.

Thanks for the feedback. Do you think it would be better (if possible) to have say 4 (or more) lists, but each channel would only being able to be in 1 list? I think it would use too much space to add more lists, but removing the List1/List2 options and having one List option could balance that out.
And then when scanning, have the option to turn each list on/off, so one or more list like 1, 2, 3, 4, 12, 123, 1234, 124, 134, 14, 23, 234, 24, 34, All Channels (obviously All Lists would be the 1234 option).
If that were possible, I think because there would be 15 combinations, the only reasonable way to switch lists on/off would be to press *1, *2 etc., but that would mean pressing and holding *  wouldn't be able to be used to switch between them.

Ok, sorry for replying after so long. To sum up:

Your current solution is better than the previous and I use it.
Then there is a solution where each channel can be stored in any number of four lists (1, 12, 13, 14, 123, ...). You can then choose which list to scan or to scan all channels.
Another solution is the one you mentioned in the above comment. Each channel would be stored in exactly one of X lists (none is effectively another list) and you could choose which combination of multiple channels to scan. This might be the best solution and I would love to see it working.
Or you can combine both previous solutions (2+3), but that might get too confusing for the user and take up too much space.

I haven't read the code so I don't understand exactly how the available space works, but I believe the solution you proposed (3) should be possible, especially because it should, in theory, require the same amount of space (2 bits per channel) if using 4 lists.

Thanks @qsus , I'm looking into adding 10 lists if I can, but I have a feeling it might not be possible.  My plan would be:
Search as normal (press and hold scan to start)
Use up and down to change direction as normal
While scanning, press 1 to 0 to turn on or off lists 1,2,3,4,5,6,7,8,9,0
Menu >> List >> set the list for the stored channel (only 1 per channel)
There will be no way to store a default search list as they will be whatever you last set them.
I'm also looking to see if I can get it to auto scan from start.
The only issue I've come across so far, I've asked in Discussion 468.

If you can do that, it would be great!

If you can do that, it would be great!

It's looking pretty promising for 10 lists (each would be individually controlled and each channel can be in none, one or more list).
So far, I've got each of the 200 channels to be able to be in any of the 0-9 lists and each list status stored.
I've not yet got scanning running or turning each list on/off while scanning, but they should be relatively simple to code, if I can make it small enough to fit. Hopefully tomorrow I'll have something to show.

https://github.com/egzumer/uv-k5-firmware-custom/discussions/485


Socket example does not use .Dispose(); method

Is your feature request related to a problem? Please describe.
The msdn docs are awsome actually, and this is my intent of posting this request.
The Socket example at msdn does not implement a error handling and disposing of the disposable type "Socket".
Describe the solution you'd like
Integrading error handling and proper disposing would be awsome.
Describe alternatives you've considered
there could be a 2nd example where errorhandling is described while using unmangaed resources
Additional context
the link of the docs:
https://docs.microsoft.com/de-de/dotnet/api/system.net.sockets.socket?redirectedfrom=MSDN&view=netframework-4.7.2

Removing myself, because this is a content issue. @mairaw is the right contact here.

Can you please move this issue to our repo?

Im sorry, how could I move this issue to the correct repo?

@BrayanKhosravian I help you transfer the issue to donet repo. They will help you there.


Make selected option label match the available sorting options.

The sort options are defined in a dictionary. Currently, the list of possible sort options come from the title attribute of the mentioned dictionary, while the option that appears selected in the dropdown item comes from the keys of the dictionary. This may cause mismatch between the selected option on the dropdown item and the one selected on the dropdown menu.
Origin and more information can be found in: https://github.com/inveniosoftware/invenio-administration/pull/132#issuecomment-1265083056.

Should be in invenio-search-ui.


Proxyscotch response fail

Hi , I'm appreciate about your hard work.
Currently, i'm trying to use latest proxyscotch docker image to resolve CORS https request from hoppscotch web client.
But i received error response from proxy like under picture.

Could you help me or tell me what I am doing wrong ?
There is my docker-compose to deploy proxy
version: "3.2"
services:
  proxy_server:
    image: hoppscotch/proxyscotch
    command: ["sh", "-c", "/etc/proxyscotch/out/linux-server/proxyscotch-server-* --host <IP_ADDRESS>:9159 --allowed-origins *"]
    ports:
      - 9159:9159

+1


Avoid unnecessary allocation by way of tuple conversion.

Motivation:
Due to https://bugs.swift.org/browse/SR-10614, assigning an array containing a tuple type
to a variable that expects an array containing a different-but-compatible tuple type will cause
an allocation and copy of that array storage.
In some cases this is necessary, but we were doing it in the HTTPHeaders constructors, which meant
that the swift-nio-http2 code was hitting a hilariously over the top number of allocations.
Modifications:

Change the internal storage type of HTTPHeaders to match the public constructor.

Result:
Fewer allocations when constructing HTTPHeaders

Shoot, forgot to deal with the changed repr. Will follow up.


Deploy docker image via hub

Feature request
When creating a new app, let the user enter a docker hub name to deploy any docker image.
Fields: docker hub name, tag

You can probably do this very easily now via the git:from-image command that was added in 0.24.x.

@josegonzalez thanks for the heads up indeed should be simple now!
I played a bit with the command and I am wondering how to detect that an application was deployed that way. I deployed a ghost app and when using the apps:report command it does not show the app deploy source. Is it intended or is there a way to get this info?
root@docker-ubuntu-s-1vcpu-1gb-fra1-01:~# dokku apps:report my-ghost-app
=====> my-ghost-app app information
       App deploy source:
       App dir:                       /home/dokku/my-ghost-app
       App locked:                    false

Interesting. Deploy source in this case would - I would hope - be git, but I can see why we'd want something more specific (a push, or tarball, or docker image).
Mind filing an issue for that?

Okay I will, thanks for the reply


TU_SH/DnJoin_Cli_Op Failure

TU_SH/DnJoin_Cli_Op unit test is failing.
Build

Build with 43fb1b2d9ad0fa1aa02d99f59d0894a8ad75610a (modify netid in TestDnJoin.h to 1300)
Connect Dusty (DN) with DP-DN ver. 0.0.1
DN flash with IPM_A01

Procedure

Connect DP to Computer
Connect DN to DP
Connect DN to DC9004A; DC9006A
PuTTy into DN (COM7), and poll on info.

Expected
Expect to see DN info return netid = 1300
Results
returned default 1229.

See TU_SH/DnJoin_External_Op for analysis of UART.
The 115.2k baud is too high for our device; causes a +/- 136 mV ripple on the UART line (40.2%)
Change to 9600 baud


Add $modal service and scope variable for programmatic control

Sorry that this bundles a few changes - the crux of it is a new $modal object that is passed to controllers or can be used in templates for more control. It's similar to how the ui-bootstrap version works.
eg.
// In modal controller
var ModalCtrl = function($scope, $modal) {
    $scope.closeModal = function($event) {
        $modal.close();
    }

    $scope.dismissModal = function($event) {
        $modal.dismiss();
    }
};

// In modal template

Modal title

    <button class="btn btn-success"
        ng-click="closeModal($event)">OK</button>
    <button class="btn btn-danger"
        ng-click="$modal.dismiss()">Cancel</button>

I think the animation side of this is covered by #94, unfortunately some conflicts now that more changes have been made


add css for supported stacks list

Signed-off-by: Travis<EMAIL_ADDRESS>

This is fine, but it looks a little weird on a phone.


use Python 3 instead of Python 2 round()

In fonttools we have an implementation of the Python 3 built-in round() function:
https://github.com/fonttools/fonttools/blob/master/Lib/fontTools/misc/py23.py#L298-L340
fontMath currently uses sometimes an implementation by @moyogo of Python 2 rounding (mathFunctions._roundNumber), other times the built-in round (which differs across Python major versions).
I think fontMath should do the same as fonttools and use Python 3 rounding as the default round function on both Python 2 and 3.
Except where Python 2 rounding makes more sense, e.g. in the PostScript Weight which rounded in the hundreds.
Please let me know what you think.

r? @typesupply

Actually _roundNumber is still much (at least 10x) faster than round3, can we optimize round3 more? Is _roundNumber insufficient in any way?

I haven't checked but at least it must pass fontTools.misc.py23_test.Round3Test
How are you profiling it?

Oh, now I remember, _roundNumber was meant to behave like python2 round, not python3. Correct @moyogo?

_roundNumber was meant to behave like python2 round, not python3. Correct @moyogo?

Indeed.

Here's what I found with the following code:
from __future__ import division, print_function
import timeit

SETUP = '''
from fontTools.misc.py23 import round
from fontMath.mathFunctions import _roundNumber
'''

CODE = '''
%(func)s(0)
%(func)s(1)
%(func)s(100)
%(func)s(0.0)
%(func)s(1.0)
%(func)s(100.0)
%(func)s(0.5)
%(func)s(1.5)
%(func)s(-0.5)
%(func)s(1.2345, 1)
%(func)s(0.1234, 2)
%(func)s(2e8, 10)
'''

def run_benchmark(func):
    results = timeit.repeat(CODE % {'func': func}, setup=SETUP, repeat=1000, number=10)
    print(func)
    print('\tavg=%dus' % (sum(results) / len(results) * 1000000.),
          '\tmin=%dus' % (min(results) * 1000000.))

run_benchmark('round')
run_benchmark('_roundNumber')

$ python benchmark.py
round
        avg=1902us      min=1889us
_roundNumber
        avg=66us        min=60us

trying case 2e32, 10 yields
 File "/usr/jamesgk/code/fonttools/Lib/fontTools/misc/py23.py", line 344, in round3
    exponent, rounding=_decimal.ROUND_HALF_EVEN)
  File "/usr/lib/python2.7/decimal.py", line 2470, in quantize
    'quantize result has too many digits for current context')
  File "/usr/lib/python2.7/decimal.py", line 3872, in _raise_error
    raise error(explanation)
decimal.InvalidOperation: quantize result has too many digits for current context

It was profiling with more practical data (Noto) that I noticed about a 10x difference between time spent in round3 vs. _roundNumber.

If you run ipython, you can do simple profiling like:
%timeit round(10)

Thanks for the tips!
the _roundNumber in fontMath has several issues and needs to be replaced anyway.
The reason you find fonttools' round3 function slower than fontMath _roundNumber is because the former uses the pure-python decimal module, whereas the latter resorts to the built-in round() function whenever it can (even when it shouldn't).
I even tried copying the code from CPython 3.5 source code and make it an extension module:
https://github.com/anthrotype/round3
Of course the latter is super fast, but I don't think it's worth the price of requiring a C compiler and distributing native wheels, etc.
I think the best compromise is to use the fast Python 2 built-in round() whenever it yields the same results as Python 3's, and use the decimal implementation whenever we have to reproduce the result of Python 3's built-in round.
I did this in https://github.com/fonttools/fonttools/pull/755

I'm going merge this if nobody has objections as the current _roundNumber function is broken on Python 3 (probably just a typo)
>>> _roundNumber(0.5, 1)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'

Also, on Python 3 it's basically always falling back to using the built-in round(), except for the strict .5 cases (but not, say, .05, .005, etc), where it's doing a python2-style rounding, therefore it's inconsistent.
Once this PR is merged, fontMath will use Python 3 "banker's rounding" on both python 2 and 3.
We'll need to tag a release for that I guess.

LGTM


Update actions/cache and actions/upload-artifact to v2.1.1

I'm coming from:

https://github.com/giantswarm/operatorkit/pull/456
https://github.com/giantswarm/operatorkit/pull/457

So I consider that tested.

We have 1.0.0 already. I'll sort that later.

This is a little odd and it looks like how we use Github actions is not quite right. We will always stay behind with our funny golang string template in devctl and dependabot will always be ahead updating actions in our workflows. Are there other options we have to manage actions and workflows? I was thinking that we could maybe checkout how to host our actions in a proper way so that they are consumable via the Github marketplace. I am not sure how it works but I would hope that dependabot would be able to update our action repositories as well. Then a chain of updates would get triggered and we do not have to play this catchup ball game.

The problem is currently not easy to solve - unless we want to reimplement every upstream action ourselves again. I assume GitHub is working on some way to reuse workflows for now you can not use actions in actions:
https://github.community/t/can-i-use-action-as-a-full-job-to-encapsulate-all-ci-process/17238

It's good enough for me for now. Ideally dependabot could update Go templates here, but I don't see how we can achieve that now.


Fix: ToNullable checks only undefined

Motivation
toNullable checks only undefined to add array or not.
Candid uses [] | [T] for optional parameteres. T can also be a falsy value like null, false or 0.
Changes

Change toNullable implementation.

Tests

Add tests to cover falsy cases.

@mstrasinskis please review

@peterpeterparker please review


Add Undocumented API: System.Threading.Tasks.ValueTask

Summary
Added documentation for the System.Threading.Tasks.ValueTask API based on comments in the code and comments in Issue #2264.
Fixes #2264
Suggested Reviewers
@rpetrusha
@mairaw
@BillWagner

@svick I made the changes you suggested. Can you please take a look especially at the remarks for the Result property. I tried to borrow the wording from Task.Result and change it accordingly. Thanks!

@svick Thanks for the suggested wording!

@mairaw Could you restart this PR for me?  It's been stuck like this since yesterday afternoon. Thanks!

closing and re-opening to trigger a build

@rpetrusha Thanks for the review! I made all of your suggested changes, so this should be good to go.

Thanks, @tompratt-AQ. I'll merge now.


fail node process if exception detected

fail node process if exception detected

@shahthepro aren't you OOO today? :)

thanks for approving ofc


Security

This interface looks great. However, I am concerned about security, using either SSH root password or private key for root through web interface seems a risk. Where is the key stored then, can it be password protected with some timeout? I would like to use sudo, with limited rights. Is it possible? What would you recommend? Thanks!

Yes, you can use sudo users starting with some version there, I do not remember with which one) Sudo users must be without password

Thanks, I think sudo and sshd_config additional options ('Match User / Address') will serve well my needs.


[META][Distributed Tracing] Release V2.13

Is your feature request related to a problem? Please describe
Feature Request -
https://github.com/opensearch-project/OpenSearch/issues/1061
Distributed Tracing RFCs
Overall feature includes both Tracing Framework and Collector https://github.com/opensearch-project/OpenSearch/issues/6750
Tracing collector https://github.com/opensearch-project/OpenSearch/issues/7352
Prototype Tracing framework
https://github.com/opensearch-project/OpenSearch/issues/7026
Tracing framework tasks
Describe the solution you'd like

[ ] #10292
[x] #8554
[ ] #8555
[ ] #8556

Related component
Other
Describe alternatives you've considered
No response
Additional context
No response

[Triage - attendees 1 2 3 4 5 6 7 8]
@Gaganjuneja Thanks for filing this, could you please clean up this issue so its easier to interpret what the scope is without following links?

@Gaganjuneja Can you follow up here? Version 2.13 was released in April so this issue appears to be out of date.

I will update it. Thanks!


✨(frontend) new feedback link in header

this is just a link to an external url that is, for now, hardcoded as our deploys dont have frontend env vars right now

Will merge when the Grist is ready @CamCaz1 :innocent:

@manuhabitela you're good to go :)  https://grist.incubateur.net/o/docs/hH7vmvWhV6qB/Visio2/f/4

coooool. Simple, efficient 🧠
I've two nit-picking comments 🥹😬
feel free to ignore it.

Could we center this element? Or increase the margin with the Meet title to match at least the one from the right side elements?

On small screen, should we hide emoji/icons?

💡 Brainsto (Let's open a dedicated issue) that would be dope having a 'finish' screen when you disconnect from a meeting, that would allow us collecting feedbacks.

Yeah camille suggested that too, i'll show the grist form link


Scripts and Tools -- Add installation macro to ion-qt.pro

Hello:
aspa has asked me to submit a pull request for a patch I have written to add install: and uninstall: sections to the ioncoin Makefile.  Have tested it on two different systems with both 4.8 and 5.3 Berkeley DB (Ubuntu 16.04 only as that's the OS where I run my node).  Here is the patch.  What more do I need to do?
ion-qt.pro.patch.txt

thank you https://github.com/chasmacd for pulling, you do not need to do anything, somebody will check your pull and if everything is ok it will be merged. I can't review it now as it would require me to build the binary prior merging and I do not have the time for that.
If it is not checked in 24h after my reply, I'll do it on monday.


Auto-register aliases declared in sd scripts?

I'm not 100% sure how this would work, but rather than writing a script (for instance, sd git update-repo) and separately defining an alias in my zsh config (alias gup='sd git update-repo'), it'd be cool if I could add some entry to the header of an sd script that would cause the zsh plugin to register an alias on my behalf. That way, everything about the script is sort of self contained.
It's not a huge hassle to define the aliases separately, but I definitely have a number of aliases as shortcuts to sd scripts, so maybe it'd be a useful feature?
Something along these lines:
#!/usr/bin/env bash

# Update a repo from the right upstream.
#
# This command will figure out the right branch and upstream to update from and
# also update the fork main/master branch as well if necessary.
#
# Alias: gup
#
# [...]

Hmm, you could definitely put something in your zshrc to automatically set up aliases like this, but I don't think it makes sense to add as a general feature of sd. For example, using rg:
eval $(cd ~/sd; rg '^# Alias:' --with-filename --no-heading --no-line-number | sed -E -e 's|/| |g' -e 's/([^:]+):# Alias: (.+)/alias \2="sd \1"/')

Of course you need to re-run that any time you add a new alias, and it won't remove any aliases that you change or delete, but might work well enough for your workflow.

Thanks! That worked really well!
https://github.com/cweagans/dotfiles/commit/6ee34a860b16a353b90453c7eb1ae144cafab057