Contributor-Guide: Tips for Using CI

We need a section on how to use GHA, Drone, et. al. for Continuous Integration and especially on how to minimize the amount of resources used so that more targets can be tested. Boost authors and CPPA staff need to help with this... Peter Turcan cannot be expected to write this all on his own.

Yes. Definitely.
Here's how I see the problem, the solution, and the guide we should write.
The problem
We first need to delimit the problem we're solving.
Ramey's problem
About Ramey's complaints, I had a look at his repositories. His serialization "Run tests" step takes more than 2 hours. You can serialize the whole BTC blockchain in two hours. This is basically a bug from my point of view. There's nothing we can do in CI to help him. He needs to define what's important and, depending on the case, define the quick tests exploring the API and the long tests exploring all fixtures the library can handle.
The real problem
For most other libraries, GHA and drone times are OK. The only problem is the time boostorg waits for runners to become available. In a way, this can be fixed by having a fork where the tests are run before pushing to boostorg. But this is still the main problem I believe we're trying to fix because we can't rely on tests that run on forks all of the time.
The solution
So then we have to delimit the solutions we have.
Drone
One solution is drone, which I believe people don't opt-in because of the cost of learning and maintaining when they already have their github workflow. Learning it is not that easy and some things happening under the hood are still a mystery even to me. Even Peter had some resistance to using drone and he now uses custom scripts that bypass the part of the infrastructure the CppAlliance provides (For instance, see https://github.com/boostorg/variant2/blob/develop/.drone.jsonnet). Then there's the maintenance cost since we can't just use actions in drone. For instance, the superproject uses the softprops/action-gh-release and site-docs uses jakejarvis/s3-sync-action. I have no idea what a steps of that kind would look like in drone. It would take a lot of effort to learn the tools (including drone itself, AWS, GitHub CLI) and cooperation with Sam to get that working. In the end, we would still have to rewrite and maintain everything at least twice. Once for the posix .sh and once for the windows .bat.
GHA runners
The second potential solution is cppallliance providing GHA self-hosted runners. These runners should have a default timeout of one hour or something so that people can only join them if they manage to get their tests working properly. Exceptions would only happen for benchmarks like unordered. About activating these runners when GitHub's shared runners are
over some threshold of load, I believe this is not so important at this point because the shared runners are always over whatever threshold as far as boostorg is concerned. So any extra cost we have with GHA is, in principle, the same cost we would have if people were using drone.
The guide
Considering these solutions, we should write a guide to help people set up CI. We must document drone and GHA, even if we don't provide GHA runners because this is what people are actually using and there should be good guidelines. I think it should have the following structure:
General guidelines
I think the most important point here, which should be the introduction, is what workflows people need to test, regardless of the CI system being used. That is: the cmake workflow from the boost root dir should work, add_subdirectory(${SELF}) should work, find_package(Boost COMPONENTS ${SELF}) should work, and b2 libs/$SELF should work.
Drone guidelines
After what should work regardless of the CI system, regarding drone, there's no much we can reuse from boostorg/boost-ci. boost-ci is a great template but documentation of the contents in CI is very poor. There's a lot of legacy stuff in the ci directory and the best we have is some comments in scripts. My feeling is those scripts are kind of a black box with no clear input and output parameters. They also make lots of assumptions about how things are organized like the layout of directories and the steps are not clearly delimited like in our new Boost.URL workflow where it's clear what each step is testing. So we just need to describe what the common setup is for the initial configuration: drone.star describes the configurations, which should probably use functions, and the rest should go in scripts drone.bat and drone.sh that will run the "everything" step. I don't think the generator should be part of this guide for now.
GHA guidelines
Regarding the instructions for GHA, we should include instructions that use the actions I provided for boost.url. The pattern in Boost.URL makes it very clear what workflows we're testing and moves any complexity to the actions so that it works all of the time and users don't have to worry about adjusting details related to the platforms. Then we can be sure all libraries just work when they are pulled as part of the super project and they're using caching and everything. Now that these actions have been battle tested, I have been moving them to a separate repository where they are properly documented. GHA doesn't care that much about where the actions are and we already use actions from various sources completely unrelated to boostorg. We could move these actions to cppalliance but I'm not sure it's worth moving them to boostorg, because that would create a lot of unnecessary discussions and they're not strictly related to boost anyway.
Containers
One more thing we could attempt to provide is containers. I don't know exactly how the process of sharing works, but the longest tests we have are basically because there are some containers that have to install the world before getting started. Some things are just things we obviously need, like the compiler. I don't see a good reason to pull a container without a compiler just to install the compiler on it. I think @anarthal did a good job on his workflows where the containers come with everything he needs.

I like bullet pointing the world, so here we go:

I completely agree that we need a guide.
I've been looking at Ramey's stuff and he's doing zounds of run tests, plus there's a lot of warnings in the output - in my opinion, having a single executable with your test suite (using a test framework) is usually better. But it may not provide enough speedup, I haven't measured.
I strongly believe that containers are the only sane way of getting quality CI builds. In my opinion, any CI that spells apt install is wasting resources. Containers give you build reproducibility, and depending on how you do it, local reproducibility. They work great for integration tests and work for different architectures. The only limitation is that there are no OSX images, so these builds still need the "manual" approach.
Container sharing is ultra easy. You all could use my containers - they're public under the automation account https://github.com/anarthal-containers?tab=packages. If a container doesn't suit you, you can always "inherit" from it and create a new container that suits your needs (e.g. installing an additional package).
If container builds is something the C++ alliance is interested on, I'm happy to work on it. My idea would be to generalize the ones I've got for MySQL (removing a couple of MySQL-specific things) and to create additional containers to cover the wide range of compilers other libraries test on (I did a selection; URL covers some more compilers than MySQL).
As you may know, I don't use Boost.CI. I wrote my thing. I got the same feeling of poorly documented, legacy code than @alandefreitas. Boost.CI had also limitations, like not allowing me to run services I need for integration tests (strongly required in my case). It didn't support the CMake flows out of the box, at least when I last looked at it. I wrote a Python script, because then I didn't have to duplicate all the code for Windows and Unix. If I had to write something like Boost.CI, I would create a Python package with utility functions (e.g. install_boost, run_b2, run_cmake_subdir_tests), which we could get in PyPI and then install in our builds (or containers). Once again, if you feel this is something that could interest anyone, reach me out, I'm happy to work on it.
Regarding the guide - if it's gonna cover how to use Boost.CI, I'm not the person. If it's covering any other stuff I know, I'm happy to help (or even write it myself). I think we need to make a decision on what we're going to recommend to our people before moving forward.

Boost.CI is a stepping stone; it is a mile marker on the highway to CI nirvana. The modern version of Boost.CI would be a collection of GHA actions specific to Boost to make it easy to express CI activity for Boost libraries.

Regarding the guide - if it's gonna cover how to use Boost.CI, I'm not the person. If it's covering any other stuff I know

The guide should cover anything that is helpful. It could start by explaining what CI is, what services are available (some free, some paid), we probably want to explain the Boost Test Matrix. Eventually we want to explain Boost.CI in a sub-chapter, since so many repositories use it.

Boost.CI is a stepping stone; it is a mile marker on the highway to CI nirvana. The modern version of Boost.CI would be a collection of GHA actions specific to Boost to make it easy to express CI activity for Boost libraries.
Does this mean we're moving away from Drone?
we probably want to explain the Boost Test Matrix
I definitely need this guide

any CI that spells apt install is wasting resources.

Yes. That just reminded me of another problem we frequently have. The apt-get step fails very often just because of intermittent networking issues. In github we can ask it to rurun failed jobs and then it works, but that takes a lot of time because we have to wait for all other jobs to complete and then wait for available machines again. The jobs with lots of apt-get installs are often the ones we need to validate the most.
It may seem like that's not relevant, but if the probability of an intermittent issue is only 1% and there are 20 jobs, the probability of an intermittent apt-get issue in one of the jobs is 18%.

You all could use my containers

That would be good. We talked about that once but I couldn't figure out how to do it by myself. We could use your container and later we could discuss that a little better because we'll eventually need some more customized containers and I don't want to be bothering you with this all the time. In any case, I think we need one container per-compiler (or one container with all compilers?). A few apt-get installs after that should be OK. It's taking 4 minutes everything to redownload the compiler that's bothering me the most. Later we can adjust that to include LLVM+Clang for mrdox.

If I had to write something like Boost.CI, I would create a Python package with utility functions

Yes. Maybe it would be more composable if we just forwarded everything to python. The "everything" step that results from that and the lack of actions is still going to be a problem. I think GitHub actions are so nicely integrated into the interface, are easy to compose, run faster than drone once the machines are available, and have a zero marginal learning cost. That puts drone in a difficult position that no one would want to use it unless the benefits were immense. The equivalent of actions in a drone workflow is a plugin, but they are very limited and rely on running a secondary container, which is often not worth the cost.
For instance, it took us a few minutes to integrate caching in Github actions. It took us weeks in drone to rewrite lots of independent bat/sh scripts and we still find bugs in our scripts. The final result is still slower.

we probably want to explain the Boost Test Matrix

Oh! That's important.

Does this mean we're moving away from Drone?

It means that there is nothing set in stone and we are always evaluating our current solutions and potential new solutions in order to improve things.

Yes. That just reminded me of another problem we frequently have. The apt-get step fails very often just because of intermittent networking issues.

This depends on where are the packages are being installed from. All stock Ubuntu repositories are cached by MS (I'm assuming, by GHA infrastructure or Asure) , so installing packages from there is fast and problem-free. Pulling e.g. from official clang repositories is problematic because, besides the longer and more fragile network path, clang repos also have a download limit that may trigger if there are many CI jobs running. This means that you should generally avoid installing packages from external repositories and look for compiler versions that are available in stock repositories of various versions of Ubuntu. This has worked well for me, and I almost never see CI jobs fail due to network issues.
I believe, the same consideration is true for Docker container images. If the image is cached then running this container is fast and problem-free. If not, at the very least performance will suffer. I'm not sure what images are cached, and whether that set of images is fixed or dynamic. However, I would like to note that a default Ubuntu image is not enough to run Boost tests and requires more configuration (including installing more packages) than running tests directly in the runner.

@Lastique That's an incredibly useful comment. Indeed, one GHA workflow where this happens a lot is one that uses a Clang 3.8 container. We do have to come up with a common list of containers that come with the compilers, like the ones @anarthal developed.

@sdarwin how does this work with the "cached repositories" when we use our own GHA runners?

Does this mean we're moving away from Drone?

It means that there is nothing set in stone and we are always evaluating our current solutions and potential new solutions in order to improve things.

With @alandefreitas comments, the direction looks clearer to me now.
Please bear in mind that the default GitHub-hosted runners can't run Windows containers - this being one of the reasons I went for Drone. If we're getting self-hosted runners, I'm in for the new vision.

I believe, the same consideration is true for Docker container images. [...]

I'm hosting my containers in the GitHub container registry and it works pretty well. If we're moving stuff to our own infrastructure (say AWS), I would place the containers in whatever container registry AWS has.  I never heard about that before. Are there any workarounds? Does @sdarwin know about that?

caching ... when we use our own GHA runners?

As with Drone, pre-built VMs can have docker images baked in.  An official image such as ubuntu:22.04 will be updated at the source though, and end up getting re-downloaded, so it would be difficult to cache.

As with Drone, ubuntu packages are installed from ubuntu.  Alan's statistic about 18% of drone jobs are failing seems a bit high.  It's a topic worth consideration.   How more caching could be done.

Alan's statistic about 18% of drone jobs are failing

To be clear, it isn't about drone jobs failing. It's about one of the jobs failing considering a 1% probability of individual failure. This individual probability is likely lower considering what Andrey had to say about clang repositories, which I confirmed is the real bottleneck here.

GitHub-hosted runners can't run Windows containers

Here is a counterpoint to that issue. If you're running somewhat customized containers on ephemeral windows runners, then at each runner launch it has to download the docker image which is GBs in size. Our 2022 windows image is 8.5GB.
Instead of containers, simply using the preinstalled copy of visual studio, and download any other requirements, might be 100 times less network bandwidth consumed, it depends on the situation and what is being installed.

How does this work in our current Drone setup? Are Docker images cached somehow? I'm using Windows containers and I haven't noticed any slowdown.

How does this work in our current Drone setup? Are Docker images cached somehow? I'm using Windows containers and I haven't noticed any slowdown.

In the current Drone setup, the windows runner machines aren't ephemeral, they are "dedicated" VM servers at Amazon.   If you don't modify docker images too frequently, the same image will already be on the server from the previous CI job.

This explains things. I've found running stuff in Windows Docker containers quite convenient (since I need openssl, MySQL and Python), it would feel a little bit of a step back to go back to downloading and setting up these every CI build.


Fixed #3461 -- Made DatabaseWrapper.cursor() pass args/kwargs to the database adapter.

this PR aims to complete https://github.com/django/django/pull/7514
I found some changes in internal codes. so tests and docs are incomplete right now.
as the reviewer of previous PR https://github.com/django/django/pull/7514 could you suggest the changes are OK here and input about tests? @felixxm I have also added oracle backend here.
please verify and let me know.
I am not so good in testing so suggestions are wellcome.

@felixxm since all the tests are failing could you spot my errors? what I am missing?

r/python/python3.6/tests/backends/test_cursors.py", line 20, in MySQLCursorOptionsTestCase
from MySQLdb.cursors import Cursor
ModuleNotFoundError: No module named 'MySQLdb'

@vytisb whats your thought on import error? module not found

pr/python/python3.6/tests/backends/test_cursors.py", line 35, in OracleCursorOptionsTestCase
raise ImproperlyConfigured("Error loading cx_Oracle module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading cx_Oracle module: No module named 'cx_Oracle'

which part of docs and release notes are right for this change?

facing problem with rebase. will do that after final round of review

@felixxm could you re check and approve the changes before final review of tim?

I have been looking into this for knowing some background of this changes http://initd.org/psycopg/docs/usage.html n http://initd.org/psycopg/docs/cursor.html#cursor

@felixxm could you please review the pr and give some feedback? after that I will try to remove the un needed comit from the change and complete documentation


When removing one of the existing targets from "LB services" , we see the existing target being added twice.

Server version - V0.24.0-rc3
Steps to reproduce the problem:
Add Lb services with 2 targets test1 and test2.
Activate service.
Remove one target - test2.
Once this is done  , we see LB service being linked with "test1" target 2 times.

+----+-------+-------------------+--------------------------------------+-------------+---------+---------------------+---------------------+---------------------+------+------------+---------------------+------------+
| id | name  | kind              | uuid                                 | description | state   | created             | removed             | remove_time         | data | service_id | consumed_service_id | account_id |
+----+-------+-------------------+--------------------------------------+-------------+---------+---------------------+---------------------+---------------------+------+------------+---------------------+------------+
|  6 | NULL  | serviceConsumeMap | 293a55b9-b153-49e0-83e6-ec15a1d06000 | NULL        | active  | 2015-06-13 18:06:32 | NULL                | NULL                | {}   |         13 |                  11 |          5 |
|  7 | NULL  | serviceConsumeMap | fb80367c-91f4-4e3b-8bb4-bbde09d282ca | NULL        | removed | 2015-06-13 18:06:32 | 2015-06-13 19:14:09 | 2015-06-13 19:15:09 | {}   |         13 |                  12 |          5 |
| 24 | test1 | serviceConsumeMap | 8dda90e9-8c70-400f-bc12-8bb55d32bef0 | NULL        | active  | 2015-06-13 19:14:09 | NULL                | NULL                | {}   |         13 |                  11 |          5 |
+----+-------+-------------------+--------------------------------------+-------------+---------+---------------------+---------------------+---------------------+------+------------+---------------------+------------+
3 rows in set (0.00 sec)
mysql>

The same cause as https://github.com/rancherio/rancher/issues/1215

Tested with Server version - V0.24.0-rc4
When removing one of the existing targets from "LB services" , we do not see the issue of existing target being added twice.


Re-exported type is not the same type?

I'm not sure this question is specific to Relude, but perhaps y'all have seen it before since Relude does such extensive re-exporting.
I've got this simple little file to demonstrate the issue:
import qualified Relude
import qualified Data.HashSet

f :: Relude.HashSet a -> Data.HashSet.HashSet a
f x = x

And this is what I see in ghcid:
test.hs:5:7: error:
    • Couldn't match expected type ‘Data.HashSet.HashSet a’
                  with actual type ‘Relude.HashSet a’
      NB: ‘Relude.HashSet’
            is defined in ‘Data.HashSet.Base’
                in package ‘unordered-containers-<IP_ADDRESS>’
          ‘Data.HashSet.HashSet’
            is defined in ‘Data.HashSet.Base’
                in package ‘unordered-containers-<IP_ADDRESS>’
    • In the expression: x
      In an equation for ‘f’: f x = x
    • Relevant bindings include
        x :: Relude.HashSet a (bound at test.hs:5:3)
        f :: Relude.HashSet a -> Data.HashSet.HashSet a
          (bound at test.hs:5:1)
  |
5 | f x = x
  |       ^

Somehow these are different HashSet types, despite coming from the same module in the same version of the same package? Has anybody seen this before?

Hmm, I just tried it with GHC-8.8.3 and it worked fine for me:
$ cabal repl -b relude -b unordered-containers
Resolving dependencies...
Build profile: -w ghc-8.8.3 -O1
In order, the following will be built (use -v for more details):
 - fake-package-0 (lib) (first run)
Configuring library for fake-package-0..
Preprocessing library for fake-package-0..
Warning: No exposed modules
GHCi, version 8.8.3: https://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /var/folders/xw/z5t_j_8j63702nj9stkvqryr0000gr/T/cabal-repl.-24496/setcwd.ghci
> import qualified Relude
> import qualified Data.HashSet
> :{
| f :: Relude.HashSet a -> Data.HashSet.HashSet a
| f x = x
| :}
> f $ Relude.one True
fromList [True]

But generally, it looks more like a GHC bug to me.
Could you please provide more details on the GHC version, and how you run it?

I can see the problem in GHCi in the following nix shell (GHC 8.6.5). I'll need to do a bit more work to get a working 8.8.x shell, I think.
let
    pkgs =
        let
            inherit (import <nixpkgs> { }) lib;
            inherit (lib) mapAttrs;
            inherit (builtins) fetchTarball fromJSON readFile;

            fetchFromGitHub = { owner, repo, rev, sha256 }: builtins.fetchTarball {
                inherit sha256;
                url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
            };

            nixpkgs = fetchFromGitHub {
                owner = "NixOS";
                repo = "nixpkgs-channels";
                rev = "68d2f8325c386fcb0ddbb466a91e053d2c09ddd2";
                sha256 = "1kl24b2qsjcy8gllddkjxy5zrqdzrjzhydwi3lbncan0560f8aa8";
            };
        in
            import nixpkgs {};

    inherit (pkgs) mkShell;

    ghc = pkgs.haskell.packages.ghc865.ghcWithPackages (p: [ p.relude ]);

in
    mkShell { buildInputs = [ ghc ]; }

I checked with GHC-8.6.5 installed with ghcup. The same example as above works perfectly for me. So I suggest asking Nix community, or open GHC issue, as the problem seems to be not in relude.

I bumped up nixpkgs to unstable and GHC to 8.8, and everything seems to work as expected now - so it does indeed seem to be either Nix or GHC. Thank you for the suggestions.


Publish Bug

php artisan infyom.publish:templates
Does not publish common template files. So common stubs are not being added to view folder.
Recap of stubs not publishing

views directory
(also gnerator throws error because its looking for table.stub and you have them named table.blade.stub and same thing with the other view)
common directory

@phillipmadsen I am not able to get table.stub and table.blade.stub thing. Can you describe it bit more ?
Also I have added a support for copy views directory.
You mean common directory by the directory contains errors.blade.php and paginate.blade.php ?
If yes, then why you need to publish that folder ? Because even it will not reflect the changes, because those are loaded as views from static directory of core-templates over here.
If you want to use your own errors and paginate then you should create it in your views directory and then customize templates to you those views.


JBDS-4387 Add current user to Hyper-V Administrators Local Group

Codecov Report

Merging #696 into master will decrease coverage by 0.09%.
The diff coverage is 87.5%.

@@            Coverage Diff            @@
##           master     #696     +/-   ##
=========================================
- Coverage   95.93%   95.84%   -0.1%
=========================================
  Files          29       29
  Lines        2510     2648    +138
  Branches      215      383    +168
=========================================
+ Hits         2408     2538    +130
+ Misses        102       98      -4
- Partials        0       12     +12

Impacted Files
Coverage Δ

browser/model/cdk.js
98.09% <87.5%> (-0.85%)
:arrow_down:

browser/pages/confirm/controller.js
78.88% <0%> (-2.93%)
:arrow_down:

browser/model/kompose.js
91.66% <0%> (-1.82%)
:arrow_down:

browser/services/componentLoader.js
98.78% <0%> (-1.22%)
:arrow_down:

browser/services/data.js
98.55% <0%> (-0.46%)
:arrow_down:

browser/services/platform.js
91.97% <0%> (-0.24%)
:arrow_down:

browser/main.js
100% <0%> (ø)
:arrow_up:

browser/model/helpers/hash.js
100% <0%> (ø)
:arrow_up:

browser/directives/pathValidator.js
100% <0%> (ø)
:arrow_up:

browser/model/cygwin.js
100% <0%> (ø)
:arrow_up:

... and 17 more

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 5cdb425...6e7d6a5. Read the comment docs.

Works fine, requires the user to log out and back in to refresh the group though. I can't find any way to do that without relog/reboot so I guess we need to document this. Right, @dgolovin ?

Sounds right @jrichter1, what we can also do is to add info message under CDK 3 item. That would say: "You need to logoff/login after installation to run CDK without Administrative privileges".

@jrichter1, but lets keep it in separate issue.


Example for ThinQMQTTClient

Can you provide some example code for how to use ThinQMQTTClient?  I assume this is intended to allow users to receive push notifications instead of polling with ThinQApi.
I've tried:
def on_message_received(topic: str, payload: bytes, dup: bool,
                              qos: awscrt.mqtt.QoS, retain: bool,
                              **kwargs):
    print(f"on_message_received: {topic}, {payload}, {dup}, {qos}, {retain}, {kwargs}")

async def main(access_token: str, country_code: str, client_id: str):
    async with ClientSession() as session:
        thinq_api = ThinQApi(...)
        mqtt_client = ThinQMQTTClient(thinq_api, client, on_message_received, ...)
        await mqtt_client.async_init()
        await mqtt_client.async_prepare_mqtt()
        await mqtt_client.async_connect_mqtt()
        await asyncio.sleep(99999)

I've defined similar functions for all the callbacks (per the signatures at https://awslabs.github.io/aws-crt-python/api/mqtt.html#awscrt.mqtt.Connection) and I see my on_connection_success handler getting called, but never on_message_received, even when I'm sleeping through periods when my app receives a notification.

@thecabinet, Thank you for your inquiry. Could you please share the client that you used when creating the ThinQMQTTClient object in the code you provided? I can look into it for you. Since it contains personal information, please send it to the email address<EMAIL_ADDRESS>Thank you!

@thecabinet, I have received your email. Please note that I will respond here. I have checked the API called by you, and the client registration has been done properly. However, in order to receive the push/event messages from the devices via MQTT, you first need to query the device list, followed by querying the profile and status, and then call the subscription APIs for each device.
Please refer to the code flow below. As the SDK is still in its early stages of release, I kindly ask for your understanding that the detailed documentation is currently being prepared.
`
device_list = await thinq_api.async_get_device_list()
logger.info("device_list : %s", device_list)
for device in device_list:
logger.info("device : %s", device)
device_id = device.get("deviceId")
profile = await thinq_api.async_get_device_profile(device_id)
logger.info("profile : %s", profile)

status = await thinq_api.async_get_device_status(device_id)
logger.info("status : %s", status)

response = await thinq_api.async_post_push_subscribe(device_id)
logger.info("push subscribe : %s", response)

response = await thinq_api.async_post_event_subscribe(device_id)
logger.info("event subscribe : %s", response)

`

That worked great.  Thank you!
jonathan
On Mon, Nov 25, 2024 at 6:38 PM thinq-connect @.***>
wrote:

@thecabinet https://github.com/thecabinet, I have received your email.
Please note that I will respond here. I have checked the API called by you,
and the client registration has been done properly. However, in order to
receive the push/event messages from the devices via MQTT, you first need
to query the device list, followed by querying the profile and status, and
then call the subscription APIs for each device.
Please refer to the code flow below. As the SDK is still in its early
stages of release, I kindly ask for your understanding that the detailed
documentation is currently being prepared.
`
device_list = await thinq_api.async_get_device_list()
logger.info("device_list : %s", device_list)
for device in device_list:
logger.info("device : %s", device)
device_id = device.get("deviceId")
profile = await thinq_api.async_get_device_profile(device_id)logger.info("profile : %s", profile)
status = await thinq_api.async_get_device_status(device_id)logger.info("status : %s", status)
response = await thinq_api.async_post_push_subscribe(device_id)logger.info("push subscribe : %s", response)
response = await thinq_api.async_post_event_subscribe(device_id)logger.info("event subscribe : %s", response)
`
—
Reply to this email directly, view it on GitHub
https://github.com/thinq-connect/pythinqconnect/issues/5#issuecomment-2499253695,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAB7VI26H3LVHOY4IKTSV2D2COYI3AVCNFSM6AAAAABSLRYPVKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOJZGI2TGNRZGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

Good news! Thank you for using our Open SDK.


vaultConfigurerPodSpec.volumes not working

Describe the bug:
When trying to use vault.spec.vaultConfigurerPodSpec.volumes the volume is never applied to the vault-configurer deployment, which results in my custom volume never being applied to the pod.
apiVersion: vault.banzaicloud.com/v1alpha1
kind: Vault
metadata:
  name: vault
  namespace: vault-operator
spec:
  vaultConfigurerPodSpec:
    nodeName: test <----- this works
    volumes: <----- this doesn't work
    - name: my-secret
      secret:
        secretName: my-secret

I would like to be able to mount a volume on the vault-configurer pod in order to add a self-signed certificate authority to the local ssl trust.
This is wanted in cases where a external Vault instance is used for the unsealConfig, and it is using a self-signed certificate
Expected behaviour:
Be able to add custom volume.
Steps to reproduce the bug:
Add the yaml code described above to the vault CRD.
Environment details:

bank-vaults version: 1.16.0
Install method: helm

/kind bug

It could posibly be due to the comment here: https://github.com/banzaicloud/bank-vaults/blob/main/operator/pkg/controller/vault/vault_controller.go#L938.
So if vault-configurer deployment already has volumes defined (which it does, but none with the name i desire), then a new one can't be assigned, but why would this logic be wanted? Then changing / adding new things to the CRD is impossible.

I had the wrong approach, I ended up adding the volume to vault.spec.bankVaultVolumemounts since the configurer isnt the one talking to vault, but the container inside vault-0 bank-vaults is.


Unable to find .Net New Project in VS Code after successfully installing the dotnet sdk

Problem encountered on https://dotnet.microsoft.com/en-us/learn/dotnet/hello-world-tutorial/create
Operating System: macos
After successfully installing the dotnet sdk am unable to find the .Net new project in vs code. Below are the details
dotnet --info
.NET SDK:
Version:           8.0.100
Commit:            57efcf1350
Workload version:  8.0.100-manifests.2d90560f
Runtime Environment:
OS Name:     Mac OS X
OS Version:  14.1
OS Platform: Darwin
RID:         osx-arm64
Base Path:   /opt/homebrew/Cellar/dotnet/8.0.0/libexec/sdk/8.0.100/
.NET workloads installed:
Workload version: 8.0.100-manifests.2d90560f
There are no installed workloads to display.
Host:
Version:      8.0.0
Architecture: arm64
Commit:       5535e31a71
.NET SDKs installed:
8.0.100 [/opt/homebrew/Cellar/dotnet/8.0.0/libexec/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 8.0.0 [/opt/homebrew/Cellar/dotnet/8.0.0/libexec/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 8.0.0 [/opt/homebrew/Cellar/dotnet/8.0.0/libexec/shared/Microsoft.NETCore.App]
Other architectures found:
x64   [/usr/local/share/dotnet/x64]
registered at [/etc/dotnet/install_location_x64]
Environment variables:
DOTNET_ROOT       [/opt/homebrew/Cellar/dotnet/8.0.0/libexec]
global.json file:
Not found
Learn more:
https://aka.ms/dotnet/info
Download .NET:
https://aka.ms/dotnet/download

Can you please review the Output tab (shift+cmd+u) for C# Dev Kit. It worked for me on macOS 14.1.

Hey Jozkee, thanks for reaching out, i figured out and fixed that issue but i ran in to another issue while creating hello world program. I am getting following error when i run the program.
Unexpected argument: Devops/webapi/ConsoleApp1/Program.cs

Can you share the contents of your Program.cs so we can try to help?


Teams Room license doesn't give an option to dial out from a meeting

The documentation says it's possible to “Initiate an ad hoc meeting and dial out from a meeting to phone numbers”. It's possible to initiate an ad hoc meeting using "Join Now" buttton, but it's not possible to invite someone to the meeting that is initiated by the organizer, who doesn't have an Audio Conferencing license.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: a2070d20-21d1-c8bb-bbb4-697083efcd20
Version Independent ID: f4998e3c-74ed-4a2b-fe7c-c55044b9a6b4
Content: Microsoft Teams Rooms licenses - Microsoft Teams
Content Source: Teams/rooms/rooms-licensing.md
Service: skype-for-business-online
GitHub Login: @LanaChin
Microsoft Alias: v-lanac

@NikitaSkitsko Thank you for submitting feedback and contributing to the docs. We are currently investigating this.

@NikitaSkitsko Thank you for pointing this out. What would you suggest or change in the article? Thanks.

@NikitaSkitsko We appreciate any feedback that improves the content in the Microsoft docs but we haven't had any response from you so we are going to close this issue.
Please feel free to re-open this issue if there is a specific area of the docs that we can improve or make better. Thank you.

This is the scenario which is not valid:

Initiate an ad hoc meeting and dial out from a meeting to phone numbers
Meeting Room SKU
Skype for Business Standard CALSkype for Business Server Enterprise CAL

I would replace it like this:

Dial out from a meeting to phone numbers
Meeting Room SKU, Audio Conferencing license for the meeting organizer
Skype for Business Standard CAL Skype for Business Server Enterprise CAL


Fix #909 - Incorrect balances when the first wallet's balance is empty.

so basically this is map preview instead of traversed? can you explain the error?

Yeah. It boils down to traversed throwing away leading Nothing values.
(I'd like to fix it in a more "one lens" way, but I can't see it and time is short.)


Uncaught (in promise) Error: Git head failed

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: http://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: http://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
Opening a repository that is completely new, as in no commits have been made yet, shows an error in the console.
Steps to Reproduce

Create an empty folder.
Run git init in the folder
Open the folder in Atom

Expected behavior:
No errors printed to the console.
Actual behavior:
An Uncaught (in promise) Error: Git head failed error is printed to the Console:

Reproduces how often:
100% of the time.
Versions
Atom    : 1.22.0-beta1
Electron: 1.6.15
Chrome  : 56.0.2924.87
Node    : 7.4.0
apm  1.18.8
npm  3.10.10
node 6.9.5 x64
python 2.7.14
git 2.14.2.windows.3
visual studio

OS: Windows 10 x64 Enterprise
Additional Information
If you initialize the repository in Atom itself using the github package the same issue happens if you then reload the window.
Originally filed as https://github.com/atom/github/issues/1222.

Can confirm - was about to file this myself :).

@BinaryMuse this seems prime for you to investigate this week.

This was probably introduced by https://github.com/atom/atom/pull/15750.

Fixed by atom/git-utils#84.


Introduce ExcludedUserStores claim property

Purpose
Introduce a new claim property to exclude specific user stores from unsupported attribute updates. This enhancement aims to prevent errors that occur when default features attempt to update attributes not supported by certain user stores (e.g., LDAP user stores). By maintaining a list of excluded user stores, the system can bypass updating unsupported attributes for those stores, ensuring smoother operation and better error handling.
Related Issues

https://github.com/wso2/product-is/issues/19991

Additional Context
Multiple Emails and Mobile Numbers Feature: This improvement is particularly beneficial for features like multiple emails and mobile numbers per user. With this feature enabled, UIs display multiple claims instead of a single claim, treating one as the primary number. By excluding user stores that do not support certain attributes, we prevent errors when these features attempt to update unsupported attributes.

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/11607345059

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/11607345059
Status: cancelled

PR builder started
Link: https://github.com/wso2/product-is/actions/runs/11615133246

PR builder completed
Link: https://github.com/wso2/product-is/actions/runs/11615133246
Status: success


Update manual-validation-v0.md

Add information to note related to timeoutInMinutes

@stefanodriussi Thank you for this contribution, it will be live shortly. Thank you!


Docs: make example thumbnails bigger

Make the example thumbnails in the documentation bigger:

Create the thumbnails in 4:3 aspect ratio, which matches the aspect ratio used when creating images in the examples. This avoids empty space on the top / bottom of the thumbnail.
Increase the max-width and max-height of the thumbnails to 100% by adding a custom CSS file.

Old:

New:

Cool. Thanks for having a look.


Being able to override attributeName

Hello,
I have the following problem: I would like to be able to override the attribute name in the error messages.
For example, I have a countryCurrency field in my form, that's a business term, but my application is in french, and the label displayed over the field is 'Devise du pays'.
Using validate.js, I get the error message 'CountryCurrency is invalid' (actually we translated the 'is invalid' part), which is at best not very pretty, but also can be confusing for our users.
I would like to be able to do this:
validate({ countryCurrency: '€' }, {
    countryCurrency: {
        attributeName: 'Devise du pays',
        presence: true
    }
})

So I can have a nice error message 'Devise du pays is invalid'.
I realize the attribute name is not a constraint and has not much to do with it, but that's the most logical place I could find. Maybe you could rename the parameter 'contraints' to 'rules', which would make more sense if attributeName is added to it.
Writing this, I'm thinking that I could possibly do this:
// I haven't tested this code
validate({ 'Devise du pays': '€' }, {
    'Devise du pays': {
        presence: true
    }
})

But you see, I'm leveraging validate.js by linking it to redux-form. I suppose you're not familiar with it, but it happens that the errors object returned by default by validate.js (grouped) fits perfectly what redux-form is expecting. I'm doing this:
var constraints = 'REDACTED';

var validator = function (values) {
    // values is passed by redux-form and is a plain object of { field-name: value }
    // just what validate.js needs
    return validate(values, constraints);
};

...and give validator to redux-form. That works very well, except for this attribute name problem.
I can see I'm not the only one having this problem:
#69 #102
But proposed solutions so far does not seem very nice to me.
I could do a PR of this if you're interested. I'm also considering to write a TypeScript definition for validate.js, since it's missing and would be useful.

For those interested, I ended up writing my own field/label translate function:
Here is the adapter. It's TypeScript code. I'm leaving it as is, with the french documentation.
import * as validate from 'validate.js';
import * as _ from 'lodash';

/**
 * Permet de remplacer les clefs d'un objet JSON par d'autres clefs provenant d'un
 * dictionnaire de correspondance, sans toucher aux valeurs.
 * @param object Objet dont les clefs doivent être traduites.
 * @param matching Dictionnaire de correspondance clef/valeur.
 */
const translate = (object, matching) => {
    return _.mapKeys(object, (value, key) => matching[key]);
};

/**
 * Permet de brancher ReduxForm et validate.js, tout en conservant les labels des champs.
 * @param constraints Contraintes validate.js à appliquer aux champs.
 * @param fieldLabelMatching Dictionnaire de correspondance entre les noms des champs
 * et les labels à afficher dans les messages d'erreur.
 */
export const createReduxFormValidator = (
    constraints,
    fieldLabelMatching
) => {
    // Those two properties are pre-calculated for performance reasons
    const labelFieldMatching = _.invert<any>(fieldLabelMatching);
    const contraintsTranslated = translate(constraints, fieldLabelMatching);

    return (values) => {
        const valuesTranslated = translate(values, fieldLabelMatching);

        const errors = validate(valuesTranslated, contraintsTranslated);
        const errorsTranslatedBack = translate(errors, labelFieldMatching);

        return errorsTranslatedBack;
    };
};

And here is an example of how to use it:
var fieldLabelMatching = {
    'countryCurency': 'Devise du pays'
};

var constraints = {
    'countryCurrency': {
        presence: true
    }
};

var validator = createReduxFormValidator(constraints, fieldLabelMatching);

Though, I still believe validate.js could use a parameter to override the attribute name. That would have allowed me not to have to write this tedious code, and give a little performance boost since all those back and forth translations wouldn't be necessary.

I'll consider adding an attribute key mapper.

+1 I am also in need of this.

This looks like a duplicate of https://github.com/ansman/validate.js/issues/69

I was able to work around this with by

use a wrapper function for validate.js
create a custom validator named attributeLabel that always return an empty error list
call validate with option fullMessage = false. (This give messages without attribute name)
when errors are received i add the attribute as prefix

the field constraint has a validator  named attributeLabel i use this attribute as the field label.
otherwise I proceed as usual

Hope this helps someone
validationHelper.validateModel = function validateModel(modelData, constraints, resourceType) {   transformCustomValidations(resourceType, constraints);   const validationErrors = validate(modelData, constraints, {fullMessages: false});   const errors = [];   if (validationErrors) {     for (const field in validationErrors) {       if (validationErrors.hasOwnProperty(field)) {         validationErrors[field].forEach((errorMsg) => {           const fieldLabel = constraints[field].attrLabel ?constraints[field].attrLabel:validate.capitalize(validate.prettify(field));           const fullMessage = ${fieldLabel} ${errorMsg}`;
errors.push(new ErrorModel(field, resourceType, constantsHelper.errorCodes.validation, fullMessage));
});
}
}
}
return errors;
};
/**

fake validator to add support for custom labels for field
always return no errors
*/
validate.validators.attrLabel = function attrLabel() {
return [];
};
`

Can someone please add this feature?

Can we make outputting the key in the error optional so we can define a totally custom error message?

Related to https://github.com/ansman/validate.js/issues/69

@ansman what is the status?


Support YAML maps and sets to ES6/ES2015 Maps and Sets

js-yaml current converts YAML !!map and !!set data structures to JavaScript objects with enumerated keys. It would make sense and be useful to optionally convert YAML !!maps and !!sets to ES6 / ECMAScript 2015 Maps and Sets instead; they would also support non-string keys and be convertible back to YAML !!maps and !!sets.

Seems dupe of #169.
I this request "just for fun" of you have real use-cases when maps/sets required?

It's not a very complicated use case. My codebases (many of which involve wide-breadth tree manipulation) use Maps and Sets already, and I would like to be able to serilaize and deserialize those data into YAML without allocating unnecessary objects returned by js-yaml. I would also use the YAML to interchange the data with old non-JS programs, which sometimes do use non-string keys.

It doesn't matter if use case is complicated or not. It make sense if use case is valuable for others and follows yaml spirit. I understand that it's technically possible to use maps & sets in DB. But in general, it's not a great idea to use yaml for DB serialization. Yaml is intended first to be human readable.
Also, as you can see from 169, there are bad side effects with maps.
In short - situation with maps/sets is known, but there are no plans to modify current behaviour in nearest future.

My use case does not involve YAML for entire databases, but rather interchanging JavaScript objects, many of which are Maps and Sets, between programs and serializing them into a format that can be read and edited by human users. These are primarily for configuration files with complex data, such as specifying chains of tasks in syntactic data structures that form a DSL. These configuration files need to be able to distinguish sequences, sets, and maps. There are similar use cases for general graph serialization. In other programming languages such as Python and Clojure, I've used YAML as well as EDN and Transit for similar uses.
Having said all that, if adding support for Maps and Sets would induce side effects that affect existing users of this library, then I understand being adverse to doing so. I had assumed that it would be a matter of adding an opt-in mode while keeping previous behavior the same. Thank you for considering and responding to this issue; I will find another solution.

Problem is that yaml makes no difference between hashes (JS objects with simple keys) and maps. Option can only force to use maps everywhere, not in specific cases. But that makes result ugly for JS, as discussed in #169.
Sets are postponed, because maps are less important than maps.
To move forward, need to invent good solution what to do with maps, if people wish to work with hashes in most cases (even when maps used in some places of document).

To be technical, the YAML specification does not require that non-tagged mapping nodes (i.e., those with the implicit ? non-specific tag) have the same type as mapping nodes tagged with !!map (tag:yaml.org,2002:map) or even the ! non-specific tag. (For more on non-specific tags, see also § 3.3.2 Resolved Tags, first paragraph and § 6.9.1 Node Tags, Non-Specific Tags.) Instead, non-tagged mapping nodes’ types are determined by the application schema’s tag resolution.
This provides easy, standard ways to distinguish objects from maps. For instance, the Mozilla Developer Network gives the following example for ES Maps:
var myMap = new Map();

var keyString = 'a string',
    keyObj = {},
    keyFunc = function() {};

// setting the values
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, 'value associated with keyObj');
myMap.set(keyFunc, 'value associated with keyFunc');

…which requires distinguishing between Maps and generic objects.
Under an opt-in schema, that Map might be written as the following:
! a string: value associated with 'a string'
  {}: value associated with keyObj
  !!js/function 'function() {}': value associated with keyFunc

…whose non-specific tags would then resolve to:
!map
  !str a string: value associated with 'a string'
  !!js/object {}: value associated with keyObj
  !!js/function 'function() {}': value associated with keyFunc

In this schema, ?-tagged YAML mappings (i.e., non-tagged mappings) resolve into ES Maps. A user might opt into this schema the usual way:
const YAML = require('js-yaml');
YAML.load(`...`, { schema: YAML.ES_CORE_SCHEMA });

However, the default schema (DEFAULT_SAFE_SCHEMA) would remain the same for backwards compatibility; no existing users’ code would be affected as far as I could tell.
In any case, if there is little demand for this, then that is fine. I’m figuring out a solution myself. Thanks again for the response. I'll close this issue for now.

You can split out tagged maps (!!map), but problem still remains with default (untagged) mapping notation. AFAIK, YAML spec allows maps there too. And it's not clear what to do there.
It's possible to use auto-detect, but you'll get another side effect - yaml.load(yaml.save) / yaml.save(yaml.load) will change result sometime. + possible performance loss (need more deep changes to optimize).
I think it's possible to invent something, but that requires to spend some time and talk with spec authors on IRC. Nobody did it yet and i have no plans to do it myself in nearest future. If anyone ever provides solid resolution for pending spec issues (how to do), i will try to allocate resources for implementation (coding).

I understand—it’s reasonable for you to have no plans to implement this. I’m still confused about some of the comments about the specification, though; would you mind clarifying what you mean for me?
I’m uncertain how there would be a problem with untagged (i.e., ? non-specific tagged) mappings. In the schema proposed above, untagged (? non-specific tagged) mappings would always resolve to plain JavaScript objects. However, ! non-specific tagged mappings would always resolve to tag:yaml.org,2002:map, which would correspond to JavaScript Maps (in this schema).
Indeed, the function of the ! non-specific tag is to “quote” a node, ‘allow[ing] the author of a YAML character stream to effectively “disable” the tag resolution process. By explicitly specifying a “!” non-specific tag property, the node would then be resolved to a “vanilla” sequence, mapping, or string, according to its kind.’). No dynamic auto-detection based on keys or whatever would be required.
As far as I can tell, the above would be deterministic, and round-trip conversion would be lossless. It would be just another YAML schema.
Furthermore, there would be no performance regression for existing code: the schema would be opt-in; the default schema would remain DEFAULT_SAFE_SCHEMA. DEFAULT_SAFE_SCHEMA would still resolve both ?- and !-non-specifically-tagged mappings (as well as all other mappings with tags resolved into tag:yaml.org,2002:map) as plain JavaScript objects.
My apologies if I’m misunderstanding something. Thanks in advance, and thank you again for js-yaml.

See example
AFAIK, it should be a map. Adding maps support only for !!map looks strange IMHO. I think, not supporting maps looks more "logical" than partial support (in terms of following specification).
That should be discussed with spec authors.
/cc @ingydotnet
Other spec-related issues are marked as uncertain


Access delegation related test round.

Is your suggestion a test requirement/change or improvements of the test framework? Please describe.
Required to test access delegation relates test scenarios with 7.0.0
Describe the solution you would prefer

[ ] OAuth 2.0 Grant Types

[ ] Microprofile JWT

[ ] SAML2 Bearer Assertion Profile

[ ] Kerberos

[ ] JWT Grant

[ ] OAuth 2.0 Introspection

[ ] OAuth 2.0 Dynamic Client Registration

[ ] OAuth 2.0 Client Authentication

[ ] OAuth 2.0 Transaction Logs

[ ] OAuth 2.0 Token Hashing

[ ] Revoke OAuth Tokens

[ ] Mutual TLS for OAuth clients

[ ] Validate documentations

Optional Fields
Additional context

Related Issues:

Documentation issues:

https://github.com/wso2/product-is/issues/19305
https://github.com/wso2/product-is/issues/19296

Product issues:


Backport Bitcoin PR#8275: Remove bad chain alert partition check

This is backport of Bitcoin PR bitcoin/bitcoin#8275.
This check was disabled in Dash already, so this PR just removes unused code and tests for this code.
The original PR description follows.
As per meeting 2016-03-31 https://bitcoincore.org/en/meetings/2016/03/31/#bad-chain-alerts
The partition checker was producing huge number of false-positives and was disabled in 0.12.1 on the understanding it would either be fixed in 0.13 or removed entirely from master if not.

OK, I've pushed new branch that removes just PartitionCheck test, not all alert tests.

utACK


Should I migrate to Pinia and Vite?

What do you think?

Pinia : 100% yes. I was using Redux with React a year ago before coming to Quasar, and I saw Pinia (I skipped VueX but it seems to be the very same thing as Redux) : it's just simplier, easier, and more readable (and supports TypeScript).
Vite : 50% it depends. I would personnaly wait for the "Unit Test section with Vite" (probably Vitest in coming?) section of the Quasar documentation to be ready, it's in progress. If you're not doing tests, yeah you can go with Vite instead of Webpack.

Pinia : 100% yes. I was using Redux with React a year ago before coming to Quasar, and I saw Pinia (I skipped VueX but it seems to be the very same thing as Redux) : it's just simplier, easier, and more readable (and supports TypeScript).

I'll add it then.


EL-1793: Remove redundant geckoboard code

Jira ticket
What changed and why

remove geckoboard from CCQ

Guidance to review

n/a

Checklist
Before you ask people to review this PR:

Tests and rubocop should be passing
Branch is generally up to date with main Github - definitely no conflicts
No unnecessary whitespace changes. These make diffs harder to read and conflicts more likely.
PR description says what changed and why, with a link to the JIRA story.
Diff has been checked for unexpected changes being included.
Commit messages say why the change was made.

in aws secrets:
cloud-platform decode-secret -n laa-check-client-qualifies-uat -s aws-secrets
there is a GECKOBOARD_API_KEY we can remove


Only .marksman.toml exists, this plugin will be enabled

According to marksman:

check your project into version control, or create a .marksman.toml at the root folder of your project

However, this plugin cannot detect .git, only detect .marksman.toml. Is it a bug?
Thanks.

The same startup conditions apply to VSCode extension. https://github.com/artempyanykh/marksman-vscode

I found that some other LSP clients do indeed have a plugin that starts .git as the root directory.
Check the behavior and consider adjusting coc-marksman.

Looks like https://github.com/yaegassy/coc-marksman/commit/e7e04d541b1ad9e8c2a7008e03816072eccd118b fix this issue.

It seems to work fine, so I adjusted it.  Please update coc-marksman. :CocUpdate.
Thanks for the info. 🙇

I have tested it can work. Great! :+1:


Adding support for importing/exporting in CVAT video format

Adds support for importing/exporting video datasets in CVAT video format.
In order to support this (and in general for video-label-representation), an index field was added to fiftyone.core.label.Detection that can be used to assign a globally unique index to each object across all frames in videos. The CVATVideoDataset format requires this index, for example, which it stores as the id of each "track" that it generates.
@lethosor Can you update the frontend to render Detection.index, if present? Player51 already supports this- ETA format also has an index field for the same purpose that is rendered on object boxes on the Platform Console, for example.
Example usage:
import fiftyone as fo
import fiftyone.zoo as foz

EXPORT_DIR = "/tmp/cvat-video-export"

dataset = foz.load_zoo_dataset("quickstart-video")

dataset.export(export_dir=EXPORT_DIR, dataset_type=fo.types.CVATVideoDataset)

dataset2 = fo.Dataset.from_dir(EXPORT_DIR, fo.types.CVATVideoDataset)

@lethosor Can you update the frontend to render Detection.index, if present? Player51 already supports this- ETA format also has an index field for the same purpose that is rendered on object boxes on the Platform Console, for example

Done


use _max suffix for max values instead of own fields

i hope this will fix issues when linking sheets to tokens.

You've got merge conflicts and I cannot complete the PR. You need to make sure that your local branch is up to date before making changes. You can do this by either pulling from the master branch or deleting and re-forking before you do your work. Please fix these conflicts and reopen the PR and I will merge it.


Milestone 1: Math-Magician[Setup]

In this milestone. I set up the environment and tools needed to develop a React application.

Project Status: INVALIDATED :red_circle:
Hi @Gardimy ,
While you made a great effort in this project, I can't go ahead and review your code.

Invalid Code Review Request

This is because you have submitted a project, that doesn't follow the appropriate flow which in this case is Gitflow. :+1:
Please ensure that you're merging into the dev branch and not the master branch from a feature branch eg.project-setup :+1:
Your current flow

What you should have

Your Code Review Request will be marked as invalid in your Dashboard, so please submit a new one once you are ready 🙏
Cheers, and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me @NahnahAJ in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

Invalid Code Review Request does not count into the code reviews limit.


Lifecycle Costs

Allow assets to have life cycle costs associated with them that are not replacement. There should be no limited on the number of frequency of these. It is preferable if this can designed so that these are determined not only on the basis of age.

Blocked by #1

To do:

[ ] Check required column names in preflight
[ ] Create preflight check for asset_actions
[ ] Only update year based on replacement_flag
[ ] Add non-replacement action to test case and run

To do:

[ ] Fix the following bug: asset_action_id 2 occurs 5 years after most recent replacement despite having an age_trigger of 5 years
[ ] Update the test case to make more sense for asset_type_id. Most notably, the non-replacement action should occur before the replacement action in an actions lifecycle.

Fix the following bug: asset_action_id 2 occurs 5 years after most recent replacement despite having an age_trigger of 10 years

This is caused by the replacement of year_built in the unconstrained file.

To do:

[ ] Now each action is only being deemed necessary once


use dropbox example to explain oauth2

https://www.dropbox.com/developers/reference/oauth-guide

resolved by faf9583fedf2063bdb0aafe37de6c05469be051c


Update data.gs

week_deployed contains either a 0 or a 1, depending on if the week has a deployment.
PERCENTILE_CONT(week_deployed, 0.5) OVER ()  >=1 wouldn't mean that every week has a deployment?. Otherwise we couldn't get a median of 1.
We have a case where we deployed 8  out of 14 weeks, yet it's being listed as monthly deployment, instead of weekly.

Hrm, I think there is a different problem happening.
This statement PERCENTILE_CONT(week_deployed, 0.5) OVER () >= 1 AS weekly means that if the median is 1, then it is "weekly".
Here is a little test showing that a set of 8/14 does result in "weekly":
SELECT
  CASE WHEN weekly THEN "Weekly"
    END AS deployment_frequency
FROM
  (SELECT
    PERCENTILE_CONT(week_deployed, 0.5) OVER () >= 1 AS weekly
    FROM
    (
      SELECT
      *
      FROM unnest([1,1,1,1,1,1,1,1,0,0,0,0,0]) week_deployed
      )
    )
GROUP BY 1;

How is your deployments table looking?   Does the underlying data reflect what you expect to see?
What happens if you take the dashboard script and remove the "LIMIT 1" at the end?

I just found my issue... There were 7, not 8 deployments. Sorry about that.


Deployment of site

Deployment of changes, and making site live to turn in.

deployed site. turned in homework links.


Create extension that adds a Honeypot type of Captcha to the Join and Contact forms.

Nova has no method of spam bot protection built-in. Create an extension that adds a honeypot to the Contact and Join forms.
Honeypot info: https://www.thryv.com/blog/honeypot-technique/
Contact Page: https://novadev.game-hosting.org/index.php/main/contact
Join Page: https://novadev.game-hosting.org/index.php/main/join

done

The contact page looks good.
Join page honeypot fields aren't added correctly.

confirmed fixed


Explicitly setting WP_DEBUG and WP_DEBUG_DISPLAY to false makes them true

Explicitly setting the environment variables to false sets the options to true within Wordpress.
At the very least, this should be documented behavior. Ideally, a fix would check the value of the environment variables and not just whether they are set.

Hi @Morpheus636,
Good catch! I've fixed it this way: https://github.com/TrafeX/docker-wordpress/commit/29d8ac8f3e2528c263503df1ee962fa1449eaaf8
It's fixed in the latest release.


Better actionable error message when using = instead of by.

Expected Behavior
When a task is incorrectly declared like that
tasks {
    val sourceJar = registering(Jar::class) { // notice the `=` instead of `by`
    }

    assemble {
        dependsOn(sourceJar)
    }
}

The error message should be tweaked to be more actionable to indicate a task has been incorrectly declared, in particular suggest that the registering (or others like creating) maybe incorrect (kotlin wise).
Ideally a line number should be given too.
Current Behavior (optional)
With the above gradle incorect task declaration, the build will fail but the reason is not obvious, ...unless one is aware of the gradle types and if one knows kotlin well enough to spot the difference used = instead of by.
* What went wrong:
Could not determine the dependencies of task ':components:assemble'.
> Cannot convert org.gradle.kotlin.dsl.RegisteringDomainObjectDelegateProviderWithTypeAndAction@6f1173b7 to a task.
  The following types/formats are supported:
    - A String or CharSequence task name or path
    - A Task instance
    - A TaskReference instance
    - A Buildable instance
    - A TaskDependency instance
    - A Provider that represents a task output
    - A Provider instance that returns any of these types
    - A Closure instance that returns any of these types
    - A Callable instance that returns any of these types
    - An Iterable, Collection, Map or array instance that contains any of these types

Context
gradle 8.3

Thank you for your interest in Gradle!
This feature request is in the backlog of the relevant team, but this area of Gradle is currently not in focus. It might take a while before it gets implemented.


Download and use dart-sass for css compilation

Adding auto-download functionality for dart-sass as discussed on Discord.

Checklist

[x] Updated CHANGELOG.md describing pertinent changes.
[x] Updated README.md with pertinent info (may not always apply).
[x] Updated site content with pertinent info (may not always apply).
[x] Squash down commits to one or two logical commits which clearly describe the work you've done. If you don't, then Dodd will 🤓.

Open issues

[x] I noticed that the tools can happend to be downloaded multiple times due to asset pipelines being spawned at the same time and trying to download the missing tools. The tool installation should probably be safeguarded behind a mutex of some kind to avoid this. I would say that is a separate issue that may be tackled in another PR?

In the end I had to implement it as part of this PR as 2 pipelines tried to download and extract files to the same location at the same time, leading to errors. That part is the AppCache struct and related changes, pushed as separate commit.

[ ] Windows UNC path are still an issue. dart-sass doesn't support them and we already use dunce to resolved to old-style Windows path, but there is still a chance that it results in UNC paths and then the pipeline will fail. Probably error handling around that area should be improved to make error messages clearer?

Just as a note. This allows us to avoid the dependency on sass-rs and avoid compilation problems.
BUT the zip crate pulls in bzip2-sys as dependency as the zip archive might use that for compression. We might consider disabling it (it's an optional but default-enabled dependency) and try whether it can still decompress the archive.
That said, so far I didn't have any problems compiling a musl version with that bzip2-sys dependency. Likely it's building from source directly and won't cause issues but we'll see 😅.

Will merge when I see the green.


[WIP DO NOT MERGE] Configure hiding table columns through config.js file

Description

We want to support hiding table columns, specifically in metrics table, through config file so that users can make the relevant bits hidden as per their organization. Current work will support the metrics table but can be extended to any table with minimal work in future.
Config file will take the key of the metrics column from metrics.js file for the sake of minimal changes and simplicity of development.
Problem: The keyboard list in the UI is not consistent across views such as in the instance wizard and in the register template form. There is also no way to custom about url/text and doc title and help URL in the UI.
Root Cause: The list is hardcoded in the UI allowing no centralised configuration.
Solution: Introduce a new config.js file installed at the /usr/share/cloudstackmanagement/webapp/config.js location. The config.js allows configurable keyboard list, about url/text, doc title,  and help URL.
Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] New feature (non-breaking change which adds functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[x] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Screenshots (if appropriate):
How Has This Been Tested?
Testing and further documentation in progress and will be updated with proper notes.

Image with all columns showing up -

Change in config.js file -

View after change in config file -

Another Example with Hosts Metrics -

At some point, let's merge this with PR https://github.com/apache/cloudstack/pull/3217 otherwise this will lead to merge conflicts for related features extending/using config.js

@blueorangutan package

@anuragaw a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-2678

Put some after-loaded method/js file that does something looping over sections minimizing changes to the listview/widget/library:
            $.each(cloudStack.sections, function(idx, section) {
                if (section.listView) {
                    section.listView.preFilter = function(args) {
                        const original = section.listView.preFilter(args);
                        return ['name'] + original;
                    };
                    console.log(Object.keys(section.listView.fields));
                }
            });

Closed https://github.com/apache/cloudstack/pull/3217 in favour of this one

@rhtyd I have updated the PR with the changes we discussed.

@blueorangutan package

@borisstoyanov a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-2708

@PaulAngus - addressed all the comments in the latest commit. There are 5 keyboards specified in the config.js. I get first 4 of them. I wanted to confirm if the keyboard options you get were only missing "Simplified Chinese Keyboard" or any more?

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos6 ✔centos7 ✔debian. JID-2765

Purely UI changes, merging based on tests and reviews.

Created PR https://github.com/apache/cloudstack/pull/3429 to clean up config file with redundant columns.


issue in fasion_mnist.ipynb

i used solve a problem by using sequential method in nn module but it return an error of size missmatch .I paste my code to here with error
model = nn.Sequential(nn.Linear(784, 256),
nn.ReLU(),
nn.Linear(256, 128),
nn.ReLU(),
nn.Linear(128, 64),
nn.ReLU(),
nn.Linear(64, 10),
nn.LogSoftmax(dim=1))
criterion = nn.NLLLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
TODO: Train the network here
epochs = 5
for e in range(epochs):
running_loss = 0
for images, labels in trainloader:
# Flatten MNIST images into a 784 long vector
imagees = images.view(1,-1)
    log_ps = model(images)
    loss = criterion(log_ps, labels)

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    running_loss += loss.item()
else:
    print("Training loss:",running_loss/len(trainloader))

when i run this code at that time it prodce error like :
size mismatch, m1: [1792 x 28], m2: [784 x 256] at c:\programdata\miniconda3\conda-bld\pytorch_1532501501514\work\aten\src\th\generic/THTensorMath.cpp:2070

You wrote:
imagees = images.view(1,-1), I think there is mistake in this.
Try this:
images=images.view(images.shape[0],-1) as it means starting from index 0 image and -1 means multiplying all other dimension to make image flat.

@gauravkoradiya
Short Answer - You are Flattening the images in wrong manner.
Lets move on to error and its solution gradually by developing an intuition about it. Firstly you need a function to reshape the images tensor , and you're using view() function which does the job correctly. But the parameters ( or dimensions ) you passed on there needs to be changed.
How and Why??
The images tensor is having the size [64,1,28,28] which simply means it contains 64 images having a single color channel(i.e grayscale ) and each image is having dimensions of 28 by 28 pixels (28x28 = 784 in total) . Now we want to modify its dimensions (i.e Flatten it) But this modification in dimensions must be made in such a manner that resulting tensor will be compatible for matrix multiplication with first layer of our Network model. And Matrix multiplication Compatibility means that _no of columns of first matrix must match the no. of rows of second matrix_also known as matching of inner dimensions ( Now you maybe having some intuitions about your error, see your input is of size [1792,28] and first layer is of size [784,256] clearly 28  != 784 so is the error) .
So we will use images = images.view( images.shape[0],784) where the 0th index of images shape(images.shape[0]) gives us 64, representing no. of total images as explained above and 784 is just used to show conversion of 2D matrix of 28x28 size to 1D tensor of size 784.
At this point your input to NN is having size [64,784] and first layer of NN is having size [784,256].
clearly inner dimensions of these matrix is same and no mismatch is present.
Note :

images.view(images.shape[0],-1 ) is just a short hand representation, where -1 basically let python itself figure out the size of columns.


unmockedModulePathPatterns not working?

I need help figuring something out with unmockedModulePathPatterns.
From my package.json,
  "jest": {
    "scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
    "testFileExtensions": ["es6", "js", "jsx"],
    "moduleFileExtensions": ["js", "jsx", "json", "es6"],
    "verbose": true,
    "testPathIgnorePatterns": [
      "<rootDir>/node_modules"
    ],
    "modulePathIgnorePatterns": [
      "<rootDir>/node_modules"
    ],
    "unmockedModulePathPatterns": [  "<rootDir>/node_modules/react" ]
  },

From the docs: An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them. Should I be using a different syntax inside my array. (Maybe like /react/) I've tried a bunch a combination, wasn't working.
If I don't include in my test jest.dontMock('react');, the mock always stays on. Is it normal? Using 0.5.10.

I have issues with unmockedModulePathPatterns too, so the syntax: "<rootDir>/node_modules/react" doesn't work for me, but it works if I only put "react" without the directory like that:
"unmockedModulePathPatterns": [
  "react",
  "react-dom",
  "react-addons-test-utils"
]

yes, node_modules are unmocked just by their name.

I haven't been able to make any combination of syntax work. The only thing that works is jest.dontMock('react') or jest.autoMockOff().
Form Select component › it encountered a declaration exception
  - TypeError: /home/nmartel/repos/UI-UNIT/node_modules/react/react.js: /home/nmartel/repos/UI-UNIT/node_modules/react/lib/React.js: /home/nmartel/repos/UI-UNIT/node_modules/react/lib/ReactDOM.js: /home/nmartel/repos/UI-UNIT/node_modules/react/lib/ReactDefaultInjection.js: /home/nmartel/repos/UI-UNIT/node_modules/react/lib/BeforeInputEventPlugin.js: Cannot read property 'topCompositionEnd' of undefined

Are you using npm3?

Yes.

:(
https://github.com/facebook/jest/issues/554

We need to fix this in jest!

Well, at least I found out with that other thread that 'fbjs' needed to be unmocked too. Wasn't clear.

Yep! We'll try to figure out a proper solution.


Fix readme

Fixed readme and added some tests for Reaction objects.

Coverage increased (+3.1%) to 92.344% when pulling c0a39ef25a315faa8131693baaace13bcae0eeb6 on hsim13372:fix_readme into a3777fcb101fd16f7b65c619b991a852ba5f302b on cs207-group11:master.


Store identity server in Account Data and support choosing identity server integration in User Settings

From riot-web created by lampholder: vector-im/riot-web#10094

Additional requirements:

when we change IS, we'll need to fetch its policy docs and capture that the user has agreed to them
we should probably also validate that it's really an IS
we should also somehow validate that the HS permits access to this IS if it maintains a whitelist...

Dup of https://github.com/vector-im/riot-ios/issues/2604


templates: have loadContext available in handleRequest

Follow-up of #5836
I had to do this against main as dev still has entry files removed

Keeping this as draft until #5836 is released

Any chance we can fix the "typo" before v2 launches?
getLoadContext should be getLoaderContext or, even better, getAppContext.


Merge 8 -> main

➡ Forward port
Port gz-rendering8 to main
Branch comparison: https://github.com/gazebosim/gz-rendering/compare/main...gz-rendering8
Note to maintainers: Remember to Merge with commit (not squash-merge or rebase)

The INTEGRATION_load_unload_ogre_gl3plus test is failing on the new ubuntu noble jenkins build. Ticketed https://github.com/gazebosim/gz-rendering/issues/1007 to keep track of this test failure.


ImportError: libcudart.so.10.1: cannot open shared object file: No such file or directory

🐛 Bug

To Reproduce
Steps to reproduce the behavior:
1.from torchvision import _C

from torchvision import _C Traceback (most recent call last): File "", line 1, in ImportError: libcudart.so.10.1: cannot open shared object file: No such file or directory.

Environment
python collect_env.py
Collecting environment information...
PyTorch version: 1.1.0
Is debug build: False
CUDA used to build PyTorch: 10.0.130
ROCM used to build PyTorch: N/A
OS: Ubuntu 16.04.5 LTS (x86_64)
GCC version: (Ubuntu 8.4.0-1ubuntu1~16.04.1) 8.4.0
Clang version: Could not collect
CMake version: version 3.14.4
Python version: 3.6 (64-bit runtime)
Is CUDA available: True
CUDA runtime version: 10.0.130
GPU models and configuration:
GPU 0: GeForce GTX 1080 Ti
GPU 1: GeForce GTX 1080 Ti
GPU 2: GeForce GTX 1080 Ti
GPU 3: GeForce GTX 1080 Ti
GPU 4: GeForce GTX 1080 Ti
GPU 5: GeForce GTX 1080 Ti
GPU 6: GeForce GTX 1080 Ti
GPU 7: GeForce GTX 1080 Ti
Nvidia driver version: 418.39
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.7.5.0
/usr/local/cuda-9.0/targets/x86_64-linux/lib/libcudnn.so.5.1.10
HIP runtime version: N/A
MIOpen runtime version: N/A
Versions of relevant libraries:
[pip3] numpy==1.19.5
[pip3] torch==1.1.0
[pip3] torchvision==0.4.2
[conda] cudatoolkit               10.0.130             hf841e97_6    conda-forge
[conda] mkl                       2020.2                      256
[conda] numpy                     1.19.5           py36h2aa4a07_1    conda-forge
[conda] pytorch                   1.1.0           py3.6_cuda10.0.130_cudnn7.5.1_0    pytorch
[conda] torchvision               0.3.0           py36_cu10.0.130_1    pytorch

Additional context
I was using fasterRCNN Object detector in torchvision while doing keep = nms(boxes_for_nms, scores, iou_threshold) it is giving this error. Easy way to reproduce this error is to run

from torchvision import _C

Please help.

Close this one as duplicate of #3261

Close this one as duplicate of #3261


Authorization Redirect always fires on hard refresh

When a user goes to a route and issues a hard refresh, the user is immediately redirected to the root route and presented with a "You are not authorized." message. This includes microservices that the user actually is authorized to see.

Closed by #856


Upgrade issue in k8s

I'm encountering the following when upgrading to the newer v2.0.1 image:
Note: The initial/first (helm-based) deployment works just fine. However, if I need to do a helm upgrade I encounter the issue below. I'm curious if you have any thoughts.
★★★★★ POSTFIX STARTING UP ★★★★★

‣ INFO Not setting any timezone for the container

‣ INFO Using json log format for rsyslog.

‣ INFO Using unlimited message size.

‣ INFO Setting smtp_tls_security_level: may

‣ NOTE Will try to deliver emails directly to the final server. Make sure your DNS is setup properly!

‣ INFO Using default private network list for trusted networks.

‣ INFO Debugging is disabled.

‣ INFO Setting up allowed SENDER domains: <snipped>

‣ DEBUG DKIM_AUTOGENERATE not set -- you will need to provide your own keys.

‣ INFO No DKIM keys found, will not use DKIM.

‣ INFO Applying custom postfix setting: hostname=postfix

‣ INFO Applying custom postfix setting: message_size_limit=0

‣ INFO Applying custom postfix setting: myhostname=hifive-68132031-email-7c8ffc9cf8-nrfbd

‣ INFO Applying custom postfix setting: mynetworks=<IP_ADDRESS>/8,<IP_ADDRESS>/8,<IP_ADDRESS>/12,<IP_ADDRESS>/16

‣ NOTE Starting: rsyslog, postfix

2020-08-19 21:23:38,812 INFO Set uid to user 0 succeeded

2020-08-19 21:23:38,814 INFO supervisord started with pid 1

2020-08-19 21:23:39,819 INFO spawned: 'opendkim' with pid 44

2020-08-19 21:23:39,824 INFO spawned: 'postfix' with pid 45

2020-08-19 21:23:39,827 INFO spawned: 'rsyslog' with pid 46

{"@timestamp":"2020-08-19T21:23:39.842521+00:00","type":"syslog_json","tag":":","relayhost":"hifive-68132031-email-7c8ffc9cf8-nrfbd","relayip":"<IP_ADDRESS>","logsource":"hifive-68132031-email-7c8ffc9cf8-nrfbd","hostname":"hifive-68132031-email-7c8ffc9cf8-nrfbd","program":"","priority":"46","severity":"6","facility":"5","severity_label":"info","facility_label":"syslog","message":" [origin software=\"rsyslogd\" swVersion=\"8.2004.0\" x-pid=\"46\" x-info=\"https:\/\/www.rsyslog.com\"] start","end_msg":""}

2020-08-19 21:23:39,843 INFO success: postfix entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)

{"@timestamp":"2020-08-19T21:23:40.499162+00:00","type":"syslog_json","tag":"postfix\/postfix-script[57]:","relayhost":"hifive-68132031-email-7c8ffc9cf8-nrfbd","relayip":"<IP_ADDRESS>","logsource":"hifive-68132031-email-7c8ffc9cf8-nrfbd","hostname":"hifive-68132031-email-7c8ffc9cf8-nrfbd","program":"postfix","priority":"18","severity":"2","facility":"2","severity_label":"crit","facility_label":"mail","message":" fatal: the Postfix mail system is already running","end_msg":""}

2020-08-19 21:23:41,500 INFO exited: postfix (exit status 1; not expected)

2020-08-19 21:23:42,502 INFO success: rsyslog entered RUNNING state, process has stayed up for > than 2 seconds (startsecs)

2020-08-19 21:23:45,507 INFO success: opendkim entered RUNNING state, process has stayed up for > than 5 seconds (startsecs)

2020-08-19 21:24:31,567 WARN received SIGTERM indicating exit request

2020-08-19 21:24:31,568 INFO waiting for opendkim, rsyslog to die

2020-08-19 21:24:31,569 INFO stopped: rsyslog (exit status 0)

2020-08-19 21:24:33,573 INFO stopped: opendkim (terminated by SIGTERM)

I get events such as:
Normal | Scheduled | Successfully assigned highfive-review/hifive-68132031-email-7c8ffc9cf8-nrfbd to lib-worker2 | 8 minutes ago
-- | -- | -- | --
Normal | Pulling | Pulling image "boky/postfix:v2.0.1" | 8 minutes ago
Normal | Pulled | Successfully pulled image "boky/postfix:v2.0.1" | 8 minutes ago
Normal | Killing | Container hifive-68132031-email failed liveness probe, will be restarted | 7 minutes ago
Normal | Pulled | Container image "boky/postfix:v2.0.1" already present on machine | 7 minutes ago
Normal | Created | Created container hifive-68132031-email | 7 minutes ago
Normal | Started | Started container hifive-68132031-email | 7 minutes ago
Warning | Unhealthy | Readiness probe failed: dial tcp <IP_ADDRESS>:587: connect: connection refused | 6 minutes ago
Warning | Unhealthy | Liveness probe failed: dial tcp <IP_ADDRESS>:587: connect: connection refused | 3 minutes ago

And here is the Helm template for the deployment being used: https://gitlab.com/ucsdlibrary/development/email/-/blob/trunk/templates/deployment.yaml
I'm not setting any DKIM environment variables.
Thanks in advance for any thoughts you might have on what changed in this image that might require changes on my end.

I should add, the version we were using previously, which hasn't had any issues with helm upgrades is:
boky/postfix                           latest                   2d3826433b77    10 months ago    63MB

I can't reproduce this issue. I tried installing like this:
helm install email-test ucsd-helm/email --set envVars[0].name=ALLOWED_SENDER_DOMAINS --set envVars[0].value=example.org

And it seems to work fine. What are the variables you're using to start it?

And here is the Helm template for the deployment being used: https://gitlab.com/ucsdlibrary/development/email/-/blob/trunk/templates/deployment.yaml

I see you are the author of this chart. I never got around to creating a chart but you have. Would you consider donating it to this project as to include it in the default distribution of docker-postfix?

And it seems to work fine. What are the variables you're using to start it?

Sorry, i tried to clarify but didn't use the best language perhaps. The initial helm install goes fine. It is when I try and helm upgrade that I run into this issue.

I see you are the author of this chart. I never got around to creating a chart but you have. Would you consider donating it to this project as to include it in the default distribution of docker-postfix?

In general I'm definitely open to that idea and happy to share it if you like what you see. Until running into this upgrade issue, I've been using the chart happily for a few of our applications. Right now we're distributing the chart using a ChartMuseum instance we're hosting locally. How would you envision hosting it? Should we setup a separate issue for doing this?

I can (kind of) reproduce the said issue.
I used the following code:
helm install --namespace=email-chart-testing --set image.tag=v2.0.1 --set "envVars[0].name=ALLOWED_SENDER_DOMAINS" --set "envVars[0].value=example.org" --set "persistence.storageClass=microk8s-hostpath" email-test ./

helm upgrade --namespace=email-chart-testing --set image.tag=v2.0.1 --set "envVars[0].name=ALLOWED_SENDER_DOMAINS" --set "envVars[0].value=example.com" --set "persistence.storageClass=microk8s-hostpath" email-test ./

# Notice the change from example.org to example.com to force container recreation

I'm left with two containers:
kubectl get pods                                                                                57.6s
NAME                          READY   STATUS    RESTARTS   AGE
email-test-7d76f7ff9b-d5zct   0/1     Running   0          76s
email-test-c4765d485-8q8r2    1/1     Running   0          5m15s

The newly created container hangs here:
2020-09-04T06:19:13.147857+00:00 CRIT    postfix/postfix-script[54]: fatal: the Postfix mail system is already running

I'm guessing the issue is the run file which gets created on the same volume. Investigating.

@bokysan - Ah, that makes sense. Thanks, I will test that out and if it works I'll close this out. I should also have some time next week to do a first pass at #34 to get your feedback.

Yep, using a StatefulSet fixes the upgrade issue. Will mark this closed, thanks again!

Hi @bokysan, I ran into the PID issue today too, as postfix is not stopping gracefully (for me).
Wouldn't it be better to ignore the PID as we're using a StatefulSet anyways?

@juliusrickert I'm not quite sure that postfix not stopping has anything to do with PIDs or the issue mentioned here.

@bokysan by the logs, I thought so, but I may be wrong:

…
2020-08-19 21:23:39,843 INFO success: postfix entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)

{"@timestamp":"2020-08-19T21:23:40.499162+00:00","type":"syslog_json", …, "message":" fatal: the Postfix mail system is already running","end_msg":""}

2020-08-19 21:23:41,500 INFO exited: postfix (exit status 1; not expected)
…


Exception on DNS failure

Hello! If bot is unable to resolve telegram domain, it will get unhanded exception and crash. Should be handled.

[bot.error.webhook] { Error: getaddrinfo ENOTFOUND api.telegram.org api.telegram.org:443
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'api.telegram.org',
host: 'api.telegram.org',
port: 443 }
(node:2497) UnhandledPromiseRejectionWarning: Error: getaddrinfo ENOTFOUND api.telegram.org api.telegram.org:443
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
(node:2497) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:2497) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


"idxs" is missing frames that videoTensor still had when using "--is_folder"

I have 49 video frames, and if I check the length of videoTensor, it matches (49).
However, idxs ends up being only 46 long, resulting in the first and last frame not being interpolated.

Update:
This also happens when using a video input, so --is_folder doesn't seem to be relevant here.

Yes, that is expected. FLAVR requires at least 4 input frame for reliable interpolation, so the boundary frames cannot be interpolated.

Inserting fake entries into the beginning and end of the input file array works fine as a workaround.


STORM-1913: Additions and Improvements for Trident RAS API

New behavior:

Added a way to specify default values for operations in Trident
New behavior requires all components in group have same types of resources set (or defaults)
Added a way to specify resources for master-coord Spouts.

Overall it looks OK, but it seems there are some issues with the build.

OK, looks like one of the tests is failing a check for sane resource assignments per-stream.

+1 looks good to me.
@HeartSaVioR any other comments?

@d2r Nope, since I don't have background on RAS implementation yet. Please go ahead.

@knusbaum Please rebase and squash the commits before merging. It would be better to have meaningful log message.


Add additional check for permissions

Fixes #41

Thank you. I didn't knew that it doesn't check if the player actually has the permission 👍


Add support for VS 2017, fix various bugs

This PR does few things:

Drops project.json in favour of packages.config
Reorganizes project slightly (drops dead dependence on some internal MS libraries borrowed from RTVS)
Resolves some issues with project loading (mostly runtime assembly load failures: eg. turns out, for assemblies *.DesignTime.dll you must always embed interop types)
Adds support for VS2017. Only local debug works atm. AppVeyor and installers are next on the list.
Upgrades ANTLR: targets for codegen of the version we used don't work with msbuild 15. I did the simplest thing and updated us to the newest prerelease version.

it would be great to see the VS2017-compatible version on the Marketplace.


There are some problems with background playback

When I leave the app, the music plays as usual.
But it will not be long before he will be intermittent.
And the detection movie ends and cannot be executed in the background.

Extremely sorry for the late respond, was quite busy since last time I updated the plugin. Will be looking into the issue.
I think it was webview not being disposed properly which has been fixed. Will merge and update the plugin with the fix.

I have the same problem. waiting for the update 😃. Thank you for the plugin.

@Frank0945 @Jay-Jeong1988 Could you please check if it is fixed on version 4 ?

@Frank0945 @Jay-Jeong1988 Could you please check if it is fixed on version 4 ?

Hi @sarbagyastha I just have tested it and webviews seem to be disposing properly after a few seconds leaving the page. Thanks for fast update!!

@Jay-Jeong1988 You may implement AppLifeCycleState and pause the video when the state is paused.

@sarbagyastha Thank you, it works perfect 😄. Btw this is little out of the topic, but I am trying to implement Pip mode with your plugin. I made it working that now it turns into pip mode by clicking the button, but the player turns into pause state as the app goes pip mode. The app state goes into AppLifeCycleState.inactive as it goes into Pip mode and AppLifeCycleState.resume as it comes back to normal mode so there is no problem listening to those changes and call play(). However, there is a middle mode which the app goes into when user clicks the minimized screen and that also pause the video again(which I do not want). The problem is that there is no listenable change in AppLifeCycleState between the smallest mode and the middle mode thus I cannot have control of the video player. To cut the long story short, according to the research I had, there are a few work arounds but I do not know how to.

Use method channel to listen to native method call, isInPictureInPictureMode() -> if true, call play().
Listen to android's other activities such as Resize etc -> if true, call play()
This is what I think would be the best solution. According to the official document(link attached below), I should prevent the player from pausing when the app state goes into pause so the video can continue playing without no pause at all.
https://developer.android.com/guide/topics/ui/picture-in-picture

if you know how to manage any of the options and tell me ,would be really appreciated..👍

@Jay-Jeong1988 if you want pip mode then opt for youtube_player instead. It'll be much more smooth experience with that one.

@sarbagyastha I believe your youtube_player plugin is not compatible with ios. Am I correct ?

same, this buttons background black


Network: try-wtih with specific exceptions

Previously, this block had a generic try-with which is dangerous since it can cause unwanted behaviours and cause confusion for future developers.

I've reverted the merge in master. @parhamsaremi please create new PR tomorrow addressing @aarani's points raised in Telegram. @aarani please next time do reviews in GitHub, even if PR is already merged. From my side, sorry for merging too quickly.


Click to select first element

In HeavySelect2MultipleWidget selecting first element from drop down list is not possible neither by clicking on it or using keyboard arrows. Selecting other elements is successful.
Tests
After merging PR #262 following two test methods should be added to the class TestHeavySelect2MultipleWidget in test_forms.py. First test for selecting first element is failing while second test for selecting second element does not.
    def test_widgets_select_first(self, db, live_server, driver):
        driver.get(live_server + self.url)
        with pytest.raises(NoSuchElementException):
            driver.find_element_by_css_selector('.select2-results')
        genres, fartists = driver.find_elements_by_css_selector('.select2-selection--multiple')
        genres.click()
        genres.send_keys('o')  # results are Zero One Two Four
        # select first element - Zero
        driver.find_element_by_css_selector('.select2-results li:first-child').click()
        result_title = driver.find_element_by_css_selector('.select2-selection--multiple li').get_attribute('title')
        assert result_title == 'Zero'

    def test_widgets_select_second(self, db, live_server, driver):
        driver.get(live_server + self.url)
        with pytest.raises(NoSuchElementException):
            driver.find_element_by_css_selector('.select2-results')
        genres, fartists = driver.find_elements_by_css_selector('.select2-selection--multiple')
        genres.click()
        genres.send_keys('o')  # results are Zero One Two Four
        # select second element - One
        driver.find_element_by_css_selector('.select2-results li:nth-child(2)').click()
        result_title = driver.find_element_by_css_selector('.select2-selection--multiple li').get_attribute('title')
        assert result_title == 'One'

Had this issue come up today. Any idea why it's happening?

I just stumbled on this issue and wrote those tests, did not investigate any further.

Hm... could this be a select2 bug? I just upgraded to 4.0.3 in the latest django-select2 release. Maybe is there any difference?

I found this issue was due to having an "id" of "0".  The tests use enumerate which give the first element a "0" id. If you add a +1 in there the issue disappears.

Closed: This issue has been inactive for an extended period of time. Please reopen the issue if it is still relevant.


Add JSONJoy-Swift

Please add JSONJoy-Swift https://github.com/daltoniam/JSONJoy-Swift to JSON list
Its a very good lib to process JSON. Works great with Just HTTP and Swift 2.x compatible

Thanks for contributing, @singhdd93!!


fix(ux): Align filters horizontally on md breakpoints and higher

Fixes #5231
Fixes #5232

Code-wise LGTM. But the design part is controversial.. this looks good:

while this one (to me personally) looks much worse:

Code-wise LGTM. But the design part is controversial.. this looks good:

while this one (to me personally) looks much worse:

Yeah they could be less wide. I'll remove the w-1/3 and they'll take up less needless horizontal soace.

The longterm fix for many filters would be a dropdown or popover so they're out of the way, but that would take a few more hours