Support diffForStages and failOnDestructiveChanges

This is basically the inverse of the current noDiffForStages and noFailOnDestructiveChanges.
But that's probably just one solution to my actual use case:

I have a large app with many stacks/stages across different regions
For reasons, I cannot have a single role that can perform diff for all stages across all regions
I am looking for a way to group my stacks into multiple jobs that each use a different role and diff a subset of stages
Currently I have to exclude the unwanted stages, which causes a lot of repetition.

PS: Not using failOnDestructiveChanges. Just threw this in for good measure. 😂

noDiffForStages  doesn't even seem to work. Based on code, we get the input, but not doing anything with it.


Move data products into subfolder

Definitely look at individual commits, otherwise it'll be a nightmare

Commit 1: moved data products to products folder
Commit 2

updated filepaths to reflect this
some minor bash cleanup (use pathlink to consistently reference bash/utils.sh from product-specific config.sh files)

@alexrichey and @damonmcc - this is a bit of a nightmare obviously. A couple notes

@alexrichey motivation was primarily around moving in qaqc app to this repo to be able to start parsing out additional python utilities (and making use of what's been added to dcpy). With expanding scope of repo, would make sense to move data products into a subfolder. @damonmcc and I had liked something along the lines of this as a long term goal, though it doesn't need to be that specifically. Also our data products aren't quite just "transformations" right now, hence products for the folder name.
Should we maybe have a huddle to talk about what we're thinking in terms of longer-term repo structure? Might be good before making any big tweaks, to try to minimize having to do this again
Does it make sense to just try to bite the bullet and do this all at once? Might be some gnarly collisions - I would hope just rebasing main into a feature after this would work, but I don't think it'll be quite that simple. Maybe this waits until we hit a point with minimal active dev branches and then do this change, or maybe we move data products in one or a couple at a time when we know there's no other active development on them.

@alexrichey and @damonmcc - this is a bit of a nightmare obviously. A couple notes

@alexrichey motivation was primarily around moving in qaqc app to this repo to be able to start parsing out additional python utilities (and making use of what's been added to dcpy). With expanding scope of repo, would make sense to move data products into a subfolder. @damonmcc and I had liked something along the lines of this as a long term goal, though it doesn't need to be that specifically. Also our data products aren't quite just "transformations" right now, hence products for the folder name.
Should we maybe have a huddle to talk about what we're thinking in terms of longer-term repo structure? Might be good before making any big tweaks, to try to minimize having to do this again
Does it make sense to just try to bite the bullet and do this all at once? Might be some gnarly collisions - I would hope just rebasing main into a feature after this would work, but I don't think it'll be quite that simple. Maybe this waits until we hit a point with minimal active dev branches and then do this change, or maybe we move data products in one or a couple at a time when we know there's no other active development on them.

Actually also it looks like some files got dropped when I pulled latest main in - not sure how that happened. Might need to do this over a bit.

Actually also it looks like some files got dropped when I pulled latest main in - not sure how that happened. Might need to do this over a bit.

Actually nevermind on that - just files that by our current .gitignore should be ignored but were checked in previously

I would love dropping the db- prefixes from the folders personally

I would love dropping the db- prefixes from the folders personally

I guess that would affect the publishing folders, so maybe that's something we'd implement product by product

It wouldn't need to, but it would lead to at least a mismatch between the two

🎉


[1pts]  N+1 queries (Common task)

Make sure there are no N+1 queries happening (Student A)

Here you will find the link to the PR.


Connect fails too often on iOS

in CI a moment ago, seems that the 10 retries weren’t enough for ios https://github.com/ThaliTester/TestResults/blob/62509094b685d58_Make_CI_build_and_unit_tests_pass_vjrantal/iOS_IpadAir2-1.md

search for `WARN testThaliMobileNative Too many connect retries!` which is a logging I added

do you think this could indicate some issue still since 10 re-connects sounds already quite a lot?

for convenience, here is the log of the other device https://github.com/ThaliTester/TestResults/blob/62509094b685d58_Make_CI_build_and_unit_tests_pass_vjrantal/iOS_Iphone5s-1.md

We are re-writing the code so hopefully this won't happen. :)


Demuxer not continuing after received start of stream

Hey there,
i hope this is okay to open this issue. I'm quite new to Membrane and i don't know how to debug this.
I am using this pipeline:
structure = [
      child(:file_source, %Membrane.File.Source{location: path, seekable?: true})
      |> child(:demuxer, %Membrane.MP4.Demuxer.ISOM{optimize_for_non_fast_start?: true})
      |> via_out(Pad.ref(:output, 2))
      |> child(:depayloader_audio, Membrane.MP4.Depayloader.AAC)
      |> child(:audio_parser, %Membrane.AAC.Parser{
        in_encapsulation: :none,
        out_encapsulation: :ADTS
      })
      |> child(:aac_decoder, Membrane.AAC.FDK.Decoder)
      |> child(:sink, Membrane.PortAudio.Sink)

When i use this with the file ref_aac.mp4 from test/fixtures/isom of this repository, everything works fine. But when i use my MP4 file the logging stops at
17:59:02.410 [debug] <0.2606.0>/:demuxer received start of stream

I got the :new_tracks notification from the demuxer:
{:new_tracks,
 [
   {1,
    %Membrane.MP4.Payload.AVC1{
      avcc: <<1, 77, 64, 31, 255, 225, 0, 15, 103, 77, 64, 31, 150, 84, 2, 128,
        45, 210, 80, 32, 32, 32, 32, 1, 0, 4, 104, 239, 53, 32>>,
      inband_parameters?: false
    }},
   {2,
    %Membrane.MP4.Payload.AAC{
      esds: <<3, 128, 128, 128, 34, 0, 2, 0, 4, 128, 128, 128, 20, 64, 21, 0, 0,
        0, 0, 1, 109, 28, 0, 1, 109, 28, 5, 128, 128, 128, 2, 17, 144, 6, 128,
        128, 128, 1, 2>>,
      sample_rate: 48000,
      channels: 2
    }}
 ]}

Could you help me debug this or tell me if this is an issue? I can also ask this question in the Elixir Forum if thisis a better place for such cases.
Cheers
Kevin

This is the ffprobe output of my file if that is helpful:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'at.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.64.100
  Duration: 00:02:59.01, start: 0.000000, bitrate: 1897 kb/s
  Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, progressive), 1280x720, 1799 kb/s, 25 fps, 25 tbr, 25k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]

Quoting the documentation of the demuxer

All the tracks in the MP4 must have a corresponding output pad linked (Pad.ref(:output, track_id)).

You need to link the video track and discard it if you don't need it
structure = [
  child(:file_source, %Membrane.File.Source{location: path, seekable?: true})
  |> ...,
  get_child(:demuxer)
  |> via_out(Pad.ref(:output, 1))
  |> child(:fake_sink, Membrane.Fake.Sink.Buffers) # membrane_fake_plugin
]

It's better to link the pads when receiving the new_tracks notification (in case you don't know which tracks are available and their order).

Wow, thank you! I appreciate the explanation and that solved my issue! I must have overlooked that line in the documentation.
And thanks for the suggestion! I will incorporate it after my prototype is done ;)


setuptool in pip

Hi,
I am not super familiar with all of this stuff, but I have the impression it is a tangent to this issue here:
https://github.com/pypa/setuptools/issues/2004
I am trying to deploy a linux machine using vagrant and install the pywinrm on that machine.
It fails with the following message:
RuntimeError: cryptography requires setuptools 18.5 or newer, please upgrade to a newer version of setuptools

this is the current version of setuptools I have installed
vagrant@vagrant-ubuntu-trusty-64:~$ hostnamectl
   Static hostname: vagrant-ubuntu-trusty-64
         Icon name: computer-vm
           Chassis: vm
           Boot ID: a0191b63293c41e398c6565c1ed115e6
  Operating System: Ubuntu 14.04.6 LTS
            Kernel: Linux 3.13.0-170-generic
      Architecture: x86_64
vagrant@vagrant-ubuntu-trusty-64:~$ pip list | grep setuptools
setuptools (3.3)

so, I tried to update setup tools but it failed
vagrant@vagrant-ubuntu-trusty-64:~$ pip install setuptools --upgrade
Downloading/unpacking setuptools from https://files.pythonhosted.org/packages/68/75/d1d7b7340b9eb6e0388bf95729e63c410b381eb71fe8875cdfd949d8f9ce/setuptools-45.2.0.zip#sha256=89c6e6011ec2f6d57d43a3f9296c4ef022c2cbf49bab26b407fe67992ae3397f
  Downloading setuptools-45.2.0.zip (859kB): 859kB downloaded
  Running setup.py (path:/tmp/pip_build_vagrant/setuptools/setup.py) egg_info for package setuptools
    pkg_resources/py2_warn.py:22: UserWarning: Setuptools will stop working on Python 2
    ************************************************************
    You are running Setuptools on Python 2, which is no longer
    supported and
    >>> SETUPTOOLS WILL STOP WORKING <<<
    in a subsequent release (no sooner than 2020-04-20).
    Please ensure you are installing
    Setuptools using pip 9.x or later or pin to `setuptools<45`
    in your environment.
    If you have done those things and are still encountering
    this message, please comment in
    https://github.com/pypa/setuptools/issues/1458
    about the steps that led to this unsupported combination.
    ************************************************************
      sys.version_info < (3,) and warnings.warn(pre + "*" * 60 + msg + "*" * 60)
    /tmp/pip_build_vagrant/setuptools/setup.py:12: PkgResourcesDeprecationWarning: Parameters to load are deprecated.  Call .resolve and .require separately.

    warning: no files found matching '*.py' under directory 'tests'
    warning: no previously-included files found matching 'pyproject.toml'
Installing collected packages: setuptools
  Found existing installation: setuptools 3.3
    Not uninstalling setuptools at /usr/lib/python2.7/dist-packages, owned by OS
  Running setup.py install for setuptools
    pkg_resources/py2_warn.py:22: UserWarning: Setuptools will stop working on Python 2
    ************************************************************
    You are running Setuptools on Python 2, which is no longer
    supported and
    >>> SETUPTOOLS WILL STOP WORKING <<<
    in a subsequent release (no sooner than 2020-04-20).
    Please ensure you are installing
    Setuptools using pip 9.x or later or pin to `setuptools<45`
    in your environment.
    If you have done those things and are still encountering
    this message, please comment in
    https://github.com/pypa/setuptools/issues/1458
    about the steps that led to this unsupported combination.
    ************************************************************
      sys.version_info < (3,) and warnings.warn(pre + "*" * 60 + msg + "*" * 60)
    error: could not create '/usr/local/lib/python2.7/dist-packages/pkg_resources': Permission denied
    Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_vagrant/setuptools/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-Pej2O_-record/install-record.txt --single-version-externally-managed --compile:
    pkg_resources/py2_warn.py:22: UserWarning: Setuptools will stop working on Python 2

************************************************************

You are running Setuptools on Python 2, which is no longer

supported and

>>> SETUPTOOLS WILL STOP WORKING <<<

in a subsequent release (no sooner than 2020-04-20).

Please ensure you are installing

Setuptools using pip 9.x or later or pin to `setuptools<45`

in your environment.

If you have done those things and are still encountering

this message, please comment in

https://github.com/pypa/setuptools/issues/1458

about the steps that led to this unsupported combination.

************************************************************

  sys.version_info < (3,) and warnings.warn(pre + "*" * 60 + msg + "*" * 60)

running install

running build

running build_py

creating build

creating build/lib.linux-x86_64-2.7

copying easy_install.py -> build/lib.linux-x86_64-2.7

creating build/lib.linux-x86_64-2.7/pkg_resources

copying pkg_resources/__init__.py -> build/lib.linux-x86_64-2.7/pkg_resources

copying pkg_resources/py31compat.py -> build/lib.linux-x86_64-2.7/pkg_resources

copying pkg_resources/py2_warn.py -> build/lib.linux-x86_64-2.7/pkg_resources

creating build/lib.linux-x86_64-2.7/setuptools

copying setuptools/depends.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/py33compat.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/extension.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/namespaces.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/monkey.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/wheel.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/build_meta.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/__init__.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/py27compat.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/_deprecation_warning.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/ssl_support.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/lib2to3_ex.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/_imp.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/archive_util.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/unicode_utils.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/version.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/config.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/site-patch.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/py31compat.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/installer.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/dist.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/sandbox.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/errors.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/package_index.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/py34compat.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/windows_support.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/msvc.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/launch.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/dep_util.py -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/glob.py -> build/lib.linux-x86_64-2.7/setuptools

creating build/lib.linux-x86_64-2.7/pkg_resources/_vendor

copying pkg_resources/_vendor/__init__.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor

copying pkg_resources/_vendor/appdirs.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor

copying pkg_resources/_vendor/six.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor

copying pkg_resources/_vendor/pyparsing.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor

creating build/lib.linux-x86_64-2.7/pkg_resources/extern

copying pkg_resources/extern/__init__.py -> build/lib.linux-x86_64-2.7/pkg_resources/extern

creating build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/__init__.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/_compat.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/_structures.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/version.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/specifiers.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/__about__.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/markers.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/requirements.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

copying pkg_resources/_vendor/packaging/utils.py -> build/lib.linux-x86_64-2.7/pkg_resources/_vendor/packaging

creating build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/test.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/install_egg_info.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/__init__.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/saveopts.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/alias.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/bdist_wininst.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/register.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/bdist_rpm.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/py36compat.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/setopt.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/upload_docs.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/install_lib.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/bdist_egg.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/develop.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/rotate.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/dist_info.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/build_clib.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/build_ext.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/sdist.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/upload.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/install.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/install_scripts.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/build_py.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/egg_info.py -> build/lib.linux-x86_64-2.7/setuptools/command

copying setuptools/command/easy_install.py -> build/lib.linux-x86_64-2.7/setuptools/command

creating build/lib.linux-x86_64-2.7/setuptools/_vendor

copying setuptools/_vendor/__init__.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor

copying setuptools/_vendor/six.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor

copying setuptools/_vendor/ordered_set.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor

copying setuptools/_vendor/pyparsing.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor

creating build/lib.linux-x86_64-2.7/setuptools/extern

copying setuptools/extern/__init__.py -> build/lib.linux-x86_64-2.7/setuptools/extern

creating build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/__init__.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/_compat.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/_structures.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/version.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/tags.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/specifiers.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/__about__.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/markers.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/requirements.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/_vendor/packaging/utils.py -> build/lib.linux-x86_64-2.7/setuptools/_vendor/packaging

copying setuptools/script (dev).tmpl -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/script.tmpl -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/gui-32.exe -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/gui-64.exe -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/cli-64.exe -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/cli-32.exe -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/gui.exe -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/cli.exe -> build/lib.linux-x86_64-2.7/setuptools

copying setuptools/command/launcher manifest.xml -> build/lib.linux-x86_64-2.7/setuptools/command

running install_lib

creating /usr/local/lib/python2.7/dist-packages/pkg_resources

error: could not create '/usr/local/lib/python2.7/dist-packages/pkg_resources': Permission denied

----------------------------------------
  Can't roll back setuptools; was not uninstalled
Cleaning up...
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_vagrant/setuptools/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-Pej2O_-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_vagrant/setuptools
Storing debug log for failure in /home/vagrant/.pip/pip.log
vagrant@vagrant-ubuntu-trusty-64:~$

vagrant@vagrant-ubuntu-trusty-64:~$ pip -V
/usr/local/lib/python2.7/dist-packages/pkg_resources/py2_warn.py:22: UserWarning: Setuptools will stop working on Python 2
************************************************************
You are running Setuptools on Python 2, which is no longer
supported and
>>> SETUPTOOLS WILL STOP WORKING <<<
in a subsequent release (no sooner than 2020-04-20).
Please ensure you are installing
Setuptools using pip 9.x or later or pin to `setuptools<45`
in your environment.
If you have done those things and are still encountering
this message, please comment in
https://github.com/pypa/setuptools/issues/1458
about the steps that led to this unsupported combination.
************************************************************
  sys.version_info < (3,) and warnings.warn(pre + "*" * 60 + msg + "*" * 60)
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
vagrant@vagrant-ubuntu-trusty-64:~$

Can anyone of you advise what I should do to fix this?
thanks in advance!

Before you can upgrade setuptools, you should upgrade pip (pip install -U pip). You want at least pip 9 or later to upgrade setuptools safely on Python 2.
However, if you're not wed to Ubuntu Trusty, I'd strongly recommend using something newer (Ubuntu Bionic) and Python 3.


grunt watch not worked on my lunux system where it worked with other editors.

I am working on the angular2 application. I was facing issue with the grunt watch function. whenever I edit any file and save my watch function is not trigged. My whole team facing save issue.

cc @dbaeumer

@rhushi-lokhande How are you triggering grunt watch?


AJ-1586 cWDS sends pubsub to Rawls

https://broadworkbench.atlassian.net/browse/AJ-1586
After storing an import to a gcp bucket, cWDS will now send a pubsub message alerting rawls to the presence of data to upload.
Collects details needed for import into a new ImportDetails object; this is mostly needed for sending the information rawls needs in the pubsub, but helps a bit with the RecordSinkFactory interface.
For the time being, cWDS is using import-service's pubsub topic (will be updated to cWDS' own personal topic in https://broadworkbench.atlassian.net/browse/AJ-1677).  I struggled a bit with the application.yaml hierarchies and welcome suggestions on defining the project-id and topic in each yaml for each environment a little more cleanly.
Reminder:
PRs merged into main will not automatically generate a PR in https://github.com/broadinstitute/terra-helmfile to update the WDS image deployed to kubernetes - this action will need to be triggered manually by running the following github action: https://github.com/DataBiosphere/terra-workspace-data-service/actions/workflows/tag.yml. Dont forget to provide a Jira Id when triggering the manual action, if no Jira ID is provided the action will not fully succeed.
After you manually trigger the github action (and it completes with no errors), you must go to the terra-helmfile repo and verify that this generated a PR that merged successfully.
The terra-helmfile PR merge will then generate a PR in leonardo.  This will automerge if all tests pass, but if jenkins tests fail it will not; be sure to watch it to ensure it merges. To trigger jenkins retest simply comment on PR with "jenkins retest".

I see errors about default credentials when starting with the data-plane profile. Do you think those are eliminatable? I am fine doing that as follow-on work, but it would be real nice to keep data-plane WDS clean.

Argh... oh wait, that happens for me on main too... must be also from gcp storage?  I'm going to punt it for after this PR.


adding tzero.website

https://urlscan.io/result/0e7e5cb4-03f8-4289-a72e-a271612f29ba#summary

Domain Name: TZERO.WEBSITE
Registry Domain ID: D55908428-CNIC
Registrar WHOIS Server: whois.reg.ru
Registrar URL: https://www.reg.ru/
Updated Date: 2017-11-17T06:36:58.0Z
Creation Date: 2017-11-16T12:05:54.0Z
Registry Expiry Date: 2018-11-16T23:59:59.0Z
Registrar: Registrar of Domain Names REG.RU, LLC
Registrar IANA ID: 1606
Domain Status: serverHold https://icann.org/epp#serverHold
Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
Domain Status: addPeriod https://icann.org/epp#addPeriod
Registry Registrant ID: C160197898-CNIC
Registrant Name: Protection of Private Person
Registrant Organization: Privacy Protection
Registrant Street: PO box 87, REG.RU Protection Service
Registrant City: Moscow
Registrant State/Province:
Registrant Postal Code: 123007
Registrant Country: RU
Registrant Phone: +7.4955801111
Registrant Fax: +7.4955801111
Registrant Email<EMAIL_ADDRESS>Registry Admin ID: C160197908-CNIC
Admin Name: Protection of Private Person
Admin Organization: Privacy Protection
Admin Street: PO box 87, REG.RU Protection Service
Admin City: Moscow
Admin State/Province:
Admin Postal Code: 123007
Admin Country: RU
Admin Phone: +7.4955801111
Admin Fax: +7.4955801111
Admin Email<EMAIL_ADDRESS>Registry Tech ID: C160197918-CNIC
Tech Name: Protection of Private Person
Tech Organization: Privacy Protection
Tech Street: PO box 87, REG.RU Protection Service
Tech City: Moscow
Tech State/Province:
Tech Postal Code: 123007
Tech Country: RU
Tech Phone: +7.4955801111
Tech Fax: +7.4955801111
Tech Email<EMAIL_ADDRESS>Name Server: NS1.HOSTING.REG.RU
Name Server: NS2.HOSTING.REG.RU
DNSSEC: unsigned
Registry Billing ID: C160197913-CNIC
Billing Name: Protection of Private Person
Billing Organization: Privacy Protection
Billing Street: PO box 87, REG.RU Protection Service
Billing City: Moscow
Billing State/Province:
Billing Postal Code: 123007
Billing Country: RU
Billing Phone: +7.4955801111
Billing Fax: +7.4955801111
Billing Email<EMAIL_ADDRESS>Registrar Abuse Contact Email<EMAIL_ADDRESS>Registrar Abuse Contact Phone: +7.4955801111
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/

Last update of WHOIS database: 2017-11-17T10:01:07.0Z

For more information on Whois status codes, please visit https://icann.org/epp
This whois service is provided by CentralNic Ltd and only contains
information pertaining to Internet domain names registered by our
our customers. By using this service you are agreeing (1) not to use any
information presented here for any purpose other than determining
ownership of domain names, (2) not to store or reproduce this data in
any way, (3) not to use any high-volume, automated, electronic processes
to obtain data from this service. Abuse of this service is monitored and
actions in contravention of these terms will result in being permanently
blacklisted. All data is (c) CentralNic Ltd https://www.centralnic.com/
Access to the whois service is rate limited. For more information, please
see https://registrar-console.centralnic.com/pub/whois_guidance.


Incorrect display of characters

Description
Some symbols are displaying incorrect.
Steps to reproduce

Open file that contains special unicode characters, for example:
vidar E:\Projects\Github\vidar\navigator\tree_button.go

Expected behavior
...
	{
		expanded:  '▼',
		collapsed: '►',
	},
...

Actual behavior

Right, thanks, now I see. I'll also change font in settings.


benchmark: add auto-compact flags

For https://github.com/coreos/etcd/issues/4633.

can you please try to get some initial benchmark result out of this? So we know this is useful?

Sure, I will rework on this with some initial results. Thanks!

@xiang90 PTAL. Added same-key option:
Results:
# without compaction
benchmark --conns=10 --clients=1000 put --total=1000000 --same-key

Summary:
  Total:        96.4195 secs.
  Slowest:      0.2931 secs.
  Fastest:      0.0179 secs.
  Average:      0.0964 secs.
  Stddev:       0.0265 secs.
  Requests/sec: 10371.3499

Response time histogram:
  0.018 [1]     |
  0.045 [5966]  |
  0.073 [183154]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.100 [416139]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.128 [279370]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.156 [92690] |∎∎∎∎∎∎∎∎
  0.183 [17999] |∎
  0.211 [2784]  |
  0.238 [915]   |
  0.266 [550]   |
  0.293 [432]   |

Latency distribution:
  10% in 0.0650 secs.
  25% in 0.0777 secs.
  50% in 0.0935 secs.
  75% in 0.1120 secs.
  90% in 0.1308 secs.
  95% in 0.1431 secs.
  99% in 0.1687 secs.

# with compaction
benchmark --conns=10 --clients=1000 put --total=1000000 --same-key --compact-index-delta=1000 --compact-interval=0.5s

Summary:
  Total:        102.2650 secs.
  Slowest:      0.5117 secs.
  Fastest:      0.0194 secs.
  Average:      0.1022 secs.
  Stddev:       0.0283 secs.
  Requests/sec: 9779.9628

Response time histogram:
  0.019 [1]     |
  0.069 [76991] |∎∎∎∎
  0.118 [681804]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.167 [224576]        |∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.216 [15464] |
  0.266 [310]   |
  0.315 [2]     |
  0.364 [0]     |
  0.413 [233]   |
  0.462 [206]   |
  0.512 [561]   |

Latency distribution:
  10% in 0.0715 secs.
  25% in 0.0841 secs.
  50% in 0.0990 secs.
  75% in 0.1170 secs.
  90% in 0.1362 secs.
  95% in 0.1489 secs.
  99% in 0.1760 secs.

So in this specific case, compaction has -5.7% of impact in terms of request/sec.

5% seems to be a pretty small number. Have you tried this multiple times? Is the result stable? The overhead is always 5%?

also in the test, we can put 10k keys per second. but we only compacts 1000 revision per second. the compaction will not be able to keep up with the key put.

@xiang90 I tried several times with 100k keys and they all vary between 3 ~ 7% (slower in auto-compaction side).

oh. i was wrong. it is the delta not the compaction increase.

Yeah compaction is 10k as fixed, I think.
Btw. just deleted same-key flag.

/cc @mitake Can you take a look at this? maybe play with this a little bit?

@xiang90 sure, I'll try it tomorrow. I cannot allocate a time today for a while. Could you wait for a while?

@mitake Take your time! This is not urgent. Thanks!

@gyuho I see, thanks :)

@gyuho @xiang90 I tried to execute the new flags related to compaction but I got the below error:
$ ./benchmark --conns=10 --clients=1000 put --total=1000000 --compact-index-delta=1000 --compact-interval=0.5s
6200 / 1000000 Bom                                                                                ! 0.62 % 2m8spanic: rpc error: code = 11 desc = "etcdserver: storage: required revision has been compacted"

goroutine 1141 [running]:
panic(0xa71180, 0xc82088a6c0)
        /usr/local/go/src/runtime/panic.go:464 +0x3e6
github.com/coreos/etcd/tools/benchmark/cmd.compactKV(0xc8202ec000, 0x3e8, 0x3e8)
        /home/mitake/gopath/src/github.com/coreos/etcd/tools/benchmark/cmd/put.go:150 +0x389
github.com/coreos/etcd/tools/benchmark/cmd.putFunc.func2(0xc8202ec000, 0x3e8, 0x3e8)
        /home/mitake/gopath/src/github.com/coreos/etcd/tools/benchmark/cmd/put.go:103 +0x45
created by github.com/coreos/etcd/tools/benchmark/cmd.putFunc
        /home/mitake/gopath/src/github.com/coreos/etcd/tools/benchmark/cmd/put.go:105 +0x526

I tried compact branch of @gyuho 's repository. Could you take a look, @gyuho ?

@gyuho BTW I'm using V3DemoProcfile on single machine (of course I should test on a cluster later). Should I change a way of booting etcd servers?

@mitake What was the error message that you got from Compact?

Oh I see
"etcdserver: storage: required revision has been compacted"

@mitake  So this happens when:

compact at revision 100
put... current revision 1090
compact at revision 90 (1090-1000)
90 < 100, so returns error

It means during the compact interval, it didn't proceed fast enough to cover the compact delta.
I will cache the previous compact revision and compare two revs to prevent this.

@gyuho I see. I'll wait for your update.

@mitake Currently there's no way to prevent it other than just print out the logs.
Can you try this again? And I recommend to pass smaller compact-index-delta
if you keep seeing errors. (I changed it from panic to error with log.Println)
Please let me know how it goes.
Thanks.

@gyuho I still got errors like below even with compact-interval-delta == 1:
602 / 1000000 Bm                                                                                ! 0.06 % 22m9s2016-03-04 16:22:03.875702 I | error (rpc error: code = 11 desc = "etcdserver: storage: required revision has been compacted") when current revision 112404, revision to compact 112304

How about simply breaking the compaction request loop after success? Current loop issues compaction requests to single revision so it is causing the errors. This change solved the error: https://github.com/mitake/etcd/commit/55c27a42e0feb9dfcf29b17b3ec789cacb0f83c7

BTW, should compaction request to already compacted revisions be treated as an error? I'm still not sure but how about finish without error such a request simply?

@mitake You are right. Compact goes through raft so we need to break after success. Just pushed fix. Can you try again? You can ignore the logs if you get only a few. Try to minimize the errors, so that we can maximize the compaction runs during benchmark.
Thanks.

This is my result. I tried 3 times for w/ and w/o compaction. Options are same to @gyuho 's benchmarking (without --same-key):
w/o compaction

1st

Summary:
  Total:        159.0316 secs.
  Slowest:      0.8735 secs.
  Fastest:      0.0474 secs.
  Average:      0.1583 secs.
  Stddev:       0.1180 secs.
  Requests/sec: 6288.0583

Response time histogram:
  0.047 [1]     |
  0.130 [686410]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.213 [202784]        |∎∎∎∎∎∎∎∎∎∎∎
  0.295 [26722] |∎
  0.378 [19840] |∎
  0.460 [13546] |
  0.543 [10299] |
  0.626 [19852] |∎
  0.708 [13910] |
  0.791 [5962]  |
  0.873 [674]   |

Latency distribution:
  10% in 0.1063 secs.
  25% in 0.1128 secs.
  50% in 0.1222 secs.
  75% in 0.1344 secs.
  90% in 0.2510 secs.
  95% in 0.4676 secs.
  99% in 0.6808 secs.

2nd

Summary:
  Total:        175.4088 secs.
  Slowest:      1.0111 secs.
  Fastest:      0.0369 secs.
  Average:      0.1747 secs.
  Stddev:       0.1445 secs.
  Requests/sec: 5700.9696

Response time histogram:
  0.037 [1]     |
  0.134 [722481]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.232 [135684]        |∎∎∎∎∎∎∎
  0.329 [31727] |∎
  0.427 [25165] |∎
  0.524 [21161] |∎
  0.621 [25696] |∎
  0.719 [26071] |∎
  0.816 [9719]  |
  0.914 [2143]  |
  1.011 [152]   |

Latency distribution:
  10% in 0.1061 secs.
  25% in 0.1133 secs.
  50% in 0.1227 secs.
  75% in 0.1370 secs.
  90% in 0.3632 secs.
  95% in 0.5907 secs.
  99% in 0.7299 secs.

3rd

Summary:
  Total:        197.2390 secs.
  Slowest:      0.9406 secs.
  Fastest:      0.0395 secs.
  Average:      0.1966 secs.
  Stddev:       0.1683 secs.
  Requests/sec: 5069.9922

Response time histogram:
  0.039 [1]     |
  0.130 [599415]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.220 [210293]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.310 [28798] |∎
  0.400 [30555] |∎∎
  0.490 [23010] |∎
  0.580 [30485] |∎∎
  0.670 [45866] |∎∎∎
  0.760 [22554] |∎
  0.850 [8181]  |
  0.941 [842]   |

Latency distribution:
  10% in 0.1067 secs.
  25% in 0.1145 secs.
  50% in 0.1246 secs.
  75% in 0.1466 secs.
  90% in 0.5184 secs.
  95% in 0.6357 secs.
  99% in 0.7554 secs.

w/ compaction

1st

Summary:
  Total:        164.0097 secs.
  Slowest:      1.1610 secs.
  Fastest:      0.0395 secs.
  Average:      0.1633 secs.
  Stddev:       0.1240 secs.
  Requests/sec: 6097.2010

Response time histogram:
  0.039 [1]     |
  0.152 [814208]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.264 [108618]        |∎∎∎∎∎
  0.376 [23988] |∎
  0.488 [14311] |
  0.600 [11893] |
  0.712 [6655]  |
  0.825 [10380] |
  0.937 [6582]  |
  1.049 [3350]  |
  1.161 [14]    |

Latency distribution:
  10% in 0.1130 secs.
  25% in 0.1192 secs.
  50% in 0.1301 secs.
  75% in 0.1449 secs.
  90% in 0.1911 secs.
  95% in 0.4162 secs.
  99% in 0.8242 secs.

2nd

Summary:
  Total:        165.1095 secs.
  Slowest:      1.0715 secs.
  Fastest:      0.0533 secs.
  Average:      0.1644 secs.
  Stddev:       0.1224 secs.
  Requests/sec: 6056.5861

Response time histogram:
  0.053 [1]     |
  0.155 [837092]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.257 [76034] |∎∎∎
  0.359 [24774] |∎
  0.461 [15710] |
  0.562 [13111] |
  0.664 [11530] |
  0.766 [11565] |
  0.868 [7308]  |
  0.970 [2378]  |
  1.071 [497]   |

Latency distribution:
  10% in 0.1130 secs.
  25% in 0.1188 secs.
  50% in 0.1297 secs.
  75% in 0.1446 secs.
  90% in 0.2147 secs.
  95% in 0.4395 secs.
  99% in 0.7675 secs.

3rd

Summary:
  Total:        162.0420 secs.
  Slowest:      1.0151 secs.
  Fastest:      0.0537 secs.
  Average:      0.1614 secs.
  Stddev:       0.1204 secs.
  Requests/sec: 6171.2405

Response time histogram:
  0.054 [1]     |
  0.150 [812465]        |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.246 [105385]        |∎∎∎∎∎
  0.342 [22751] |∎
  0.438 [14110] |
  0.534 [9127]  |
  0.631 [9789]  |
  0.727 [8696]  |
  0.823 [13414] |
  0.919 [3352]  |
  1.015 [910]   |

Latency distribution:
  10% in 0.1123 secs.
  25% in 0.1184 secs.
  50% in 0.1285 secs.
  75% in 0.1429 secs.
  90% in 0.1843 secs.
  95% in 0.4035 secs.
  99% in 0.7798 secs.

The worst latencies could be seen w/o compaction benchmark. Maybe --key-space-size would change the result.

@mitake Thanks a lot. I tried with --key-space-size flag so that we can force to write same keys. Here are my results:
benchmark --conns=10 --clients=1000 \
	put --total=1000000 --key-space-size=1

Summary:
  Total:        98.2062 secs.
  Slowest:      0.2805 secs.
  Fastest:      0.0227 secs.
  Average:      0.0981 secs.
  Stddev:       0.0275 secs.
  Requests/sec: 10182.6544

---

benchmark --conns=10 --clients=1000 \
	put --total=1000000  --key-space-size=1 --compact-index-delta=1000 --compact-interval=0.5s

Summary:
  Total:        106.0674 secs.
  Slowest:      0.5915 secs.
  Fastest:      0.0232 secs.
  Average:      0.1060 secs.
  Stddev:       0.0305 secs.
  Requests/sec: 9427.9705   <=============  -7.4%

benchmark --conns=10 --clients=1000 \
	put --total=1000000 --key-space-size=30

Summary:
  Total:        97.9946 secs.
  Slowest:      0.2404 secs.
  Fastest:      0.0179 secs.
  Average:      0.0979 secs.
  Stddev:       0.0259 secs.
  Requests/sec: 10204.6425

---

benchmark --conns=10 --clients=1000 \
	put --total=1000000  --key-space-size=30 --compact-index-delta=1000 --compact-interval=0.5s

Summary:
  Total:        105.8640 secs.
  Slowest:      0.3079 secs.
  Fastest:      0.0212 secs.
  Average:      0.1058 secs.
  Stddev:       0.0293 secs.
  Requests/sec: 9446.0834   <=============  -7.4%

So users can expect 5 ~ 7% performance impact when it compacts every half-second.

  Slowest:      2.1752 secs.
  Fastest:      0.0126 secs.
  Average:      0.1038 secs.
  Stddev:       0.0686 secs.
  Requests/sec: 9627.8907   <=============  -5.6%

/cc @xiang90

@gyuho thanks for sharing. Your result seems to be matching with my experience: https://github.com/coreos/etcd/pull/4642

@mitake @xiang90 Ignore my previous comment. I did the math wrong.
Mitake's code errors because the previous code didn't handle the loop correctly.
We just need to send compact request to one node, and let raft replicate and apply
compaction, and exit the for-loop. Previous code tries to compact to all 3-node and
it panics when it runs the duplicate compact call with the same compact revision.
Code fixed.
Thanks.

LGTM

LGTM

Merging first, and will share more results through google docs.
Thanks.

@gyuho Which comment should I ignore? I'm not sure what is the difference between the latest version and the version I benchmarked. Call panic() in compaction failure or continue the loop?

@mitake I was talking about https://github.com/coreos/etcd/pull/4638#issuecomment-192132266.
So my math was wrong.

error when it tries to compact with revision that is smaller than current compact revision
we get revision to compact by {current revision - compact delta}
let's say we start with current revision 10k, revision to compact 9k
then next round, the compact revision is 9k
if we try to compact at somewhere before 9k, it will error
but we get revision to compact always from {current revision - compact delta}, the revision to compact is every increasing
even if the next current revision is 10k + 1, we will compact at 9k + 1, which is still valid revision to compact

@gyuho I understood, thanks.
But I'm still not sure that a compaction request to already compacted revision should cause an error. Is threre a reason of the error?


Adds didChange parameter to onChange reducer modifier

Hey TCA peepz, 👋
We have been using our own custom version the onChange reducer for a while now and are really happy with it. We tried to get rid of our custom impl, but one tiny thing kept us from doing it: not being able to pass a custom didChange function to .onChange.
This pull request adapts the _OnChangeReducer to accept a didChange: (V, V) -> Bool closure. As laid out in the test, this is especially useful when observing child state change in a parent domain where you want to define the changes in the child domain the parent domain is interested in. It reduces the performance impact of these child state observations as the full equality check can be replaced by a simplified equality check. See the added test case where we test for ID set equality and only trigger the onChange when a new child state is added.
Looking forward to some feedback, especially on the documentation / comment side. Congrats on releasing 1.0 🙌

Hi @ohitsdaniel, overall this looks good! Thanks for taking the time to open it. We just have a few small comments.


fix: find regex in test configuration hierarchy check instead of match

I guess it was a typo to use ==~ in the hierarchy check which will not find the intended configurations
as then the whole name would need to match. It should probably be =~ which uses find just like in the
configuration name check right above.

Thanks for noticing the issue and providing a PR! Really appreciate it.


The Virtual Keyboard pictures might be wrong

On the Virtual Keyboard tab of Karabiner-Elements, when I select ANSI (which has a tick ` next to the 1) pressing the key next to the 1 enters §.  When I select ISO (which has a § next to the 1) pressing the key next to the 1 enters tick `).
This might just be me misunderstanding something, but I wondered if maybe the pictures were just the wrong way around.

I have a UK MacBook keyboard and am using the British input source and am experiencing this same issue.

I should add though that if I use my UK external keyboard (also using British input source), then it does the right thing (i.e. for the ISO keyboard, pressing the key next to 1 gives §. The problem only seems to be for the Apple internal keyboard.


Missing phantomjs-2.0.0 linux-x86_64.zip download

At the time of writing this bug, the url:
https://github.com/bprodoehl/phantomjs/releases/download/2.0.0-20141016/phantomjs-2.0.0-20141016-linux-x86_64.zip
returns a 404.  This is causing an unrecoverable error when trying to npm install phantomjs2.
Was the linux distribution forgotten about?
Below is the console output when I run "sudo npm install phantomjs2":
sudo npm install phantomjs2
\

<EMAIL_ADDRESS>install /home/mwingfield/node_modules/phantomjs2
node install.js

Downloading https://github.com/bprodoehl/phantomjs/releases/download/2.0.0-20141016/phantomjs-2.0.0-20141016-linux-x86_64.zip
Saving to /home/mwingfield/node_modules/phantomjs2/phantomjs/phantomjs-2.0.0-20141016-linux-x86_64.zip
Receiving...
Install exited unexpectedly
npm ERR<EMAIL_ADDRESS>install: node install.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is most likely a problem with the phantomjs2 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls phantomjs2
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 2.6.32-431.3.1.el6.x86_64
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "phantomjs2"
npm ERR! cwd /home/mwingfield
npm ERR! node -v v0.10.36
npm ERR! npm -v 1.4.28
npm ERR! code ELIFECYCLE
npm ERR! not ok code 0

Sorry, but we don't maintain NPM package. You should open a new issue in the original repo (https://github.com/bprodoehl/phantomjs/releases)


Prevent incorrect usage of Token.for_user

Attempt to address #779

for_validated_user() replaces current for_user() method (no functionality change, it is just a rename)
for_user() now checks user.is_active flag thanks the api_settings.USER_AUTHENTICATION_RULE callable

It is still possible to call the .for_validated_user method on every user (also disabled ones).

It is still possible to call the .for_validated_user method on every user (also disabled ones).

yes, because for_validated_user is just a rename of the old for_user method.
What has changed:

for_validated_user is not documented (whereas for_user is mentioned in the documentation)
for_validated_user naming suggests that the user must be validated before using the method

We have the security issue alerting for almost 4 months now:
https://github.com/advisories/GHSA-5vcc-86wm-547q
Is there anything to be done to accelerate the merge and shipping of the new version?

We have the security issue alerting for almost 4 months now: GHSA-5vcc-86wm-547q
Is there anything to be done to accelerate the merge and shipping of the new version?

+1 can we get this shipped ??

Hi @nils-van-zuijlen is there anything remaining for this to be merged?

Hi @nils-van-zuijlen is there anything remaining for this to be merged?

I do not know, I'm not a member / I don't have merge rights.

This PR probabily is not going to be merged.
Please read these comments on the original issue: https://github.com/jazzband/djangorestframework-simplejwt/issues/779#issuecomment-2088709374 and https://github.com/jazzband/djangorestframework-simplejwt/issues/779#issuecomment-2208889198
TL; DR: if you do not use JWTStatelessUserAuthentication you are not vulnerable, the advisory was incomplete.

Hi Developers,
Could you please merge this PR and provide the Updated version for this package


Nan if register module with default and use Throttle decorator

Is there an existing issue for this?

[X] I have searched the existing issues

Current behavior
When ThrottlerModule.forRoot()  is registered with no parameters and @Throttle decorator is set on one of the methods and try to call method where decorator is not set we get Nan in ttlMilliseconds when in storageService trying to add key
   const ttlMilliseconds = ttl * 1000;
In memory realisation is we have [Nan]
In https://github.com/kkoomen/nestjs-throttler-storage-redis realisation we have exception
Minimum reproduction code
later
Steps to reproduce
No response
Expected behavior
Ttl must not be Nan, maybe return earlier when ttl is not set or add default value. And need to fix typing from
handleRequest(     context: ExecutionContext,     limit: number,     ttl: number,   )
to
handleRequest(     context: ExecutionContext,     limit?: number,     ttl?: number,   )
Package version
8.1.3
NestJS version
8.1.3
Node.js version
16.13.1
In which operating systems have you tested?

[X] macOS
[ ] Windows
[ ] Linux

Other
No response

Please provide a minimum reproduction repository (Git repository/StackBlitz/CodeSandbox project).

Please provide a minimum reproduction repository (Git repository/StackBlitz/CodeSandbox project).

https://github.com/kanopa/throttler-issue
issue reproduce on default route http://localhost:3000/

i think we need add more stronger typing ttl and limit on handle request, because they could be undefined
If use throttler module without redis error not throwing, but in memory storage saving Nan date

i think we need add more stronger typing ttl and limit on handle request, because they could be undefined

Either that or set defaults that we know will be there. Defaults will be more sensible at the moment as to not need a breaking change.
20 hits per minute is the default of the @Throttle() decorator, should we set the default to that?

If use throttler module without redis error not throwing, but in memory storage saving Nan date

for the redis plugin, please bring that issue up with the package owner. This package is for the main logic and memory storage integration

i think we need add more stronger typing ttl and limit on handle request, because they could be undefined

Either that or set defaults that we know will be there. Defaults will be more sensible at the moment as to not need a breaking change.
20 hits per minute is the default of the @Throttle() decorator, should we set the default to that?

If use throttler module without redis error not throwing, but in memory storage saving Nan date

for the redis plugin, please bring that issue up with the package owner. This package is for the main logic and memory storage integration

Defaults is good but someone may use logic where he set only limit param and if we set defaults its will be breaking change for him.
I think there are two solutions

Add defaults
Typing handleRequest to (context: ExecutionContext, limit?: number, ttl?: number) and handle ttl on in memory storage, maybe set infinity instead of NaN or not store values without ttl

Depending on the solution in this package, I will either create a pull request on the redis package or we will solve the problem here :)

I'd like to not have to worry about the handleRequest method, so we'd ensure that there are defaults set by that time. Just want to make sure that what we set are sensible. I know how to handle ensuring they are set and that we don't override though, so that's not an issue

Why not having early return as we had previously  ?? (see https://github.com/nestjs/throttler/commit/2c4b2ffabbf4b6dc95180bcc64545d8309e73034), we just need to put it right after the limit and ttl resolution regarding context :
   // Check if specific limits are set at class or route level, otherwise use global options.
    const limit = routeOrClassLimit || this.options.limit;
    const ttl = routeOrClassTtl || this.options.ttl;

     if (typeof limit === 'undefined' || typeof ttl === 'undefined') {
      return true;
    }

    return this.handleRequest(context, limit, ttl);

https://github.com/nestjs/throttler/blob/ed3c2e354dee3b40f1b8fa09ac6a3c5685ad7b91/src/throttler.guard.ts#LL50C2-L53C52
wdyt ?

I'll need to find when we removed that and why, but it seems reasonable

I am also having this issue, setting a default ttl and limit solves the problem.
I am adding this so people like don't waste a lot of time finding out why this error shows up:
[Nest] 562190  - 06/02/2023, 2:17:47 AM   ERROR [ExceptionsHandler] @ntegral/nestjs-sentry:  ERR Error running script (call to f_f7788d43191d9ad66c866e8c63f3c3e361391849): @user_script:5: ERR value is not an integer or out of range
ReplyError: ERR Error running script (call to f_f7788d43191d9ad66c866e8c63f3c3e361391849): @user_script:5: ERR value is not an integer or out of range
    at parseError (/srv/api/node_modules/redis-parser/lib/parser.js:179:12)
    at parseType (/srv/api/node_modules/redis-parser/lib/parser.js:302:14)

Will be fixed in 5.0.0 with #1565


Update documentation to include examples of ES6-style imports (import * as .... from 'esri-leaflet-geocoder')

I installed this project via npm as well as it's types for my Gatsby (react) project, but I am unable to use it thru the leaflet package as the documentation suggests.
I ran npm i esri-leaflet-geocoder --save and npm i @types/esri-leaflet-geocoder --save which installed properly, but when I go to use the geocode like the documentation suggests:
L.esri.Geocoder.reverseGeocode(...

I get a runtime error that Geocoder is undefined.
I can get around this by importing the package directly:
import * as ELG from 'esri-leaflet-geocoder'

ELG.reverseGeocode(....

However, when I do it this way. I run into issues with the api key that I've opened another issue about

Hi, I think that import style is correct when using ES6 import style.

Import style works, but the way the documentation shows to use it does not.

Hi, thanks for the feedback. Which documentation are you referring to?

Under the API Reference section of this repo's README, it shows to use L.esri.Geocoding. indicating it extends the L import of Leaflet, but it does not.

Note that before we document using this library as ESM, we'll need to get the other Esri Leaflet libraries working with ESM here: https://github.com/Esri/esri-leaflet/issues/1386
So if anyone has time to look into that one ^ it would be much appreciated.

Any update on this one as I am unable to use the geocoder with esri-leaflet-vector?

@shakyad please see my response in the other thread: https://github.com/Esri/esri-leaflet-geocoder/issues/318#issuecomment-2312607259


Links not working on IGdm and can't see previous messages

Im currently using IGdm, but tool doesn't convert links (if you put a link is not clickeable) and can't see previous dms. Any help with this?

btw, this on MacOS

any updates on this or any way I can help?
thank you,


az keyvault certificate list --id

az feedback auto-generates most of the information requested below, as of CLI version 2.0.62

Describe the bug
According to the documentation az keyvault certificate list --id (kv_id) should list all of the certificates. Other parameters should not be required when using --id
But when you run  az keyvault certificate list --id (kv_id) you get response 'vaultBaseUrl'
Marcin@XPS  D:                                                                                 [15:00]
❯ az keyvault certificate list --id /subscriptions/7a77d45b-dbdc-4831-b3d9-e5a9c23fc1af/resourceGroups/AZ-RG-CS-APGv2-NA-Prod-01/providers/Microsoft.KeyVault/vaults/AZ-KV-CS-Cloud-EASTUS-2
'vaultBaseUrl'
Marcin@XPS  D:                                                                                 [15:01]
❯

To Reproduce
az keyvault certificate list --id (kv_id)
Expected behavior
List of certificates
Environment summary
azure-cli                         2.20.0
core                              2.20.0
telemetry                          1.0.6
Extensions:
azure-devops                      0.18.0
azure-firewall                     0.9.0
Python location 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\python.exe'
Extensions directory 'C:\Users\Marcin.azure\cliextensions'
Python (Windows) 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 23 2018, 23:31:17) [MSC v.1916 32 bit (Intel)]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
Please let us know how we are doing: https://aka.ms/azureclihats
and let us know if you're interested in trying out our newest features: https://aka.ms/CLIUXstudy
Additional context

hi @houk-ms,  could you pls have a look?

I'm seeing the same behavior in 2.30.0 on Windows.
PS> az keyvault certificate list --id /subscriptions/redacted/resourceGroups/redacted/providers/Microsoft.KeyVault/vaults/redacted  --output json
'vaultBaseUrl'
PS> $LASTEXITCODE
1

Here's my  environment summary:
Windows-10-10.0.22000-SP0
Python 3.8.9
Installer: MSI

azure-cli 2.30.0

Extensions:
azure-devops 0.18.0

@evelyn-ys to help with

Hi @chwarr and @kaletkamk, sorry for the ambiguous param --id. In fact, it should be Vault URI instead of Resource ID

See my results:

Yup. Passing the vault's URI for --id works. Thanks!
I've created a PR to revise the help text for the --id parameter.


AlgoliaIndexer for DataObject requires object|string but receiving an array

I am receiving an error when I try to call $this->indexInAlgolia() after creating a ‘Provider’ dataobject which is not using the versioning extension.
I have added the following method to my dataobject to manually add the object to the Algolia index when creating/updating as (I think) it said in the instructions:
public function onAfterWrite()
{
        parent::onAfterWrite();
        if ($this->canIndexInAlgolia()) {
            $this->indexInAlgolia();
        }
}

When creating a new Provider I receive the following error:
method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given at /var/www/localhost/htdocs/vendor/wilr/silverstripe-algolia/src/Service/AlgoliaIndexer.php:66
I can temporarily fix the error by hacking the Wilr\SilverStripe\Algolia\Service\AlgoliaIndexer indexItem() method code to check if the result is already an array (which it appears to be):
if (!is_array($fields)) {
    if (method_exists($fields, 'toArray')) {
        $fields = $fields->toArray();
    }
}

I can't work out how I should implement this correctly to avoid the error. Are there any examples I could see, or could the docs be padded out a little to show how to do this? :) Thank you.
(Also posted on the SilverStripe forum here but there were no responses.)

@earthwytch can you provide you exportAttributesFromObject method on Provider.
It should return a Map instance.


fix: prompt library conditionals

Description
This PR fixes the issue with condition fields in the prompt_library option. The resolve function does not carry over the setting, and it is therefor not used.
I also sorted the fields, just for improve readability and maintainability.
Key Changes

Reordered fields in the table inserted into _prompts:

Added condition field.
Moved name field after description.
Moved strategy field to the end.

Related Issue(s)

Fixes https://github.com/olimorris/codecompanion.nvim/issues/268

Checklist

[x] I've read the CONTRIBUTING guidelines.

Thanks so much for this! Great spot


Fix --scrape-examples-target-crate using package name (with dashes) instead of crate name (with underscores)

This PR fixes #10035.

r? @ehuss
(rust-highfive has picked a reviewer for you, use r? to override)

@bors: r+

:pushpin: Commit 7ee3ffc7e6f430108ee250fb45084800271d2c5e has been approved by alexcrichton

:hourglass: Testing commit 7ee3ffc7e6f430108ee250fb45084800271d2c5e with merge e3f2953bcba2bd85f31950980e90f144e1a62302...

:sunny: Test successful - checks-actions
Approved by: alexcrichton
Pushing e3f2953bcba2bd85f31950980e90f144e1a62302 to master...


Small Fix

It’s not that important for sure and yeah this small issue can be a fixed by a sinpe JavaScript developer.


feat($rootScope): Add $once method

This listens on events just like $on, but will deregister
the listener automatically upon the first call.

I signed it!

It's essentially sugar, so I am not a huge fan of adding it. Let's see what others say.

I think this can be added as a third party module. With this in mind, I agree with @Narretz that it should not be added

I still do not like the idea of adding the $once method. It should be possible to add this method thru a third party module by modifying the prototype.

Ok, let's close this. This is good for a 3rd party module.


Code cleanup

Just some typos, missing doc entries and unused use cases.

Please rebase your branch to get rid of that revert commit

hope it worked, looks a bit odd in github.. hmm..

Doesn't some of this need fixing on an earlier branch?

@GrahamCampbell woundn't hurt. How is the flow for fixes over versions? Symfony like; lowest only and the collaborators merge it upstream? Or PRs on all effected versions?

@SpacePossum same than Symfony. Maintainers are merging older branches into newer ones regularly

Thanks @stof :+1:  I'll figure out what branch to target and send in a new PR.


feat: Add ability to pass architecture to Lambda function

By explicitly specifying the architecture, you can reconcile differences in architecture at build time and run time.
Closes #913

This has been published as part of 2.8.0:
npm<EMAIL_ADDRESS>pypi: https://pypi.org/project/renovosolutions.aws-cdk-certbot/2.8.0/


Use signatures instead of hashes

Verification of hard-coded hashes makes updates tedious and error-prone. It's much better to verify signatures instead.

Now done for lnd and bitcoin core.


Treat default filter as isFilterActive = false

I'd like to propose that filter is not considered active when it is in it's default state. Force filter active would still override that though.
/********************************************************************************
 *                                  FILTERING *
 ********************************************************************************/
public function isFilterActive(): bool
{
+	if ($this->filter === $this->defaultFilter && !$this->forceFilterActive) {
+		return false;
+	}

	$is_filter = ArraysHelper::testTruthy($this->filter);

	return $is_filter || $this->forceFilterActive;
}

@radimvaculik If this is stupid, could be add method isFilterDefault() (or something) to determine if grid is on its defaults?

@radimvaculik So should I prepare another PR? To Which branch?

next branch 🙏

@radimvaculik Could you merge #1081 before I start working on this please?

Fixed in #1084


install  fails

go get -u github.com/influxdata/influxdb-relay
package github.com/influxdata/influxdb/v2/pkg/escape: cannot find package "githu                                                                             b.com/influxdata/influxdb/v2/pkg/escape" in any of:
/usr/local/go/src/github.com/influxdata/influxdb/v2/pkg/escape (from $GO                                                                             ROOT)
/root/go/src/github.com/influxdata/influxdb/v2/pkg/escape (from $GOPATH)
Centos7.5    golang:1.5.4(I also have tried 1.7.6 and  1.14.2)
I am not good at golang. The  used package has been removed or changed dir?

@JulianXin thanks for the issue. not a lot of activity in this repo lately, but maybe someone from the community can help here.

It seems that refactoring would be the problem for influx v2, but the current one for Centos is v1.8.
Does anyone know what can be done to actually install influxdb-relay on Centos at the moment?

There's two options for this. We either update the readme or just add a go.mod file.
I kind of favor adding go.mod but I'm hesitant to change any code or dependencies.
If you want to install this with a more recent version of Go, you'll have to add GO111MODULE=off as an environment variable when building. You will also need to use godeps to retrieve the specific versions of the dependencies.

I have the same issue, GO111MODULE=off didn't help. What should I do with godeps, can you please send exact steps how can I install relay? Any workaround will help. Thank you.
go get -u github.com/influxdata/influxdb-relay
/opt/go/src/github.com/influxdata/influxdb/models/points.go:18:2: code in directory /opt/go/src/github.com/influxdata/influxdb/pkg/escape expects import "github.com/influxdata/influxdb/pkg/escape"

yes, GO111MODULE=off, does not to fix it for me either, so I cannot get the code in order to use 'godeps' on it.
... on the other hand I am not in depth familiar with GO, so I might be doing something wrong.

You should give a try to https://github.com/veepee-oss/influxdb-relay.

@vgrozev I just merged a change to add a go.mod file to this repository so that the install would be easier. Can you give it another try? This time the GO111MODULE value should be either not set or set to on.
@rockyluke thanks for bringing that fork to our attention! We're giving it an active look to see how we could better integrate community changes to the upstream repository.

@jsternberg I will be happy to help you backporting some simple features we added.
@vgrozev sadly we had to change the whole configuration file 😢 on the other hand we implemented some nice features.

tried all suggestions, none of them is working. Please help out here

tried all suggestions, none of them is working. Please help out here

Relay is not supported anymore and is not recommended by influx support. Try to use telegraf instead.

Relay is not supported anymore and is not recommended by influx support.
Is there an official statement on that?  Telegraf and the influxdb-relay do very different things.


ADD HOVER EFFECT AND ON CLICK  ON QUICK BUTTON BAR

Is your feature request related to a problem? Please describe
ADD EFFECT ON QUICK BUTTON

On hover buttons of quick bar there is not any type of effect is there when user hover on it

On click "+" and "-" Button Not any type of effect is there which show button is clicked.

IMAGE OF FEATURE WHERE TO BE ADDED

Describe the solution you'd like
SOLUTION

ADD effect  "+" button AND "-" button . Which create an effect that is was clicked by them.
ADD hover effect on other buttons in bar.

Browser

Brave
Microsoft Edge

No response
Are you working on this?
Yes

Hey @tanmoysrt  Please visit this Issue Regarding on click effect on button.

May i work on this issue, i think this could be done easily with using hover in css , assign this to me so that I can work on this

Hi @DhananjayDogne
The icon buttons are too small due to a slick design. So adding any hover effect on them, make it feel good ?
So what do you think?
Secondly, use the Issue template that has been provided during raising the Issue, don't change it.
It's better to use lowercase on issue title as well.

Hi @DhananjayDogne I have assigned you.
If you are working on this, raise the PR. Based on how it will look with hover effect, we can merge the changes.
same for #4403

Hi @DhananjayDogne are you still working on the issue ?

Hi @DhananjayDogne are you still working on the issue ?

If not shall I take this up.

Hi @DhananjayDogne are you still working on the issue ?

If not shall I take this up.

Yeah you can.
Let's wait for him.

Hi @DhananjayDogne are you still working on the issue ?

If not shall I take this up.

Yeah you can. Let's wait for him.

Pls. assign me since issue is inactive for a month.

@tanmoysrt Pls. assign me since issue is inactive for a month.

@tanmoysrt shall I start working on this ?

It has been fixed by #4525, so may be assigned to him. Although he haven't commented here for assigning issue, As he is contributing for first time, we can consider that.

@tanmoysrt shall I start working on this ?

It has been fixed by #4525, so may be assigned to him. Although he haven't commented here for assigning issue, As he is contributing for first time, we can consider that.

Sounds good to me pls. consider this one since its his first PR : )

#4404


use patching to scale clusters

Addresses https://jira.oraclecorp.com/jira/browse/OWLS-72764

looks fine, but i would like to see a full test run success before merging it

Test is running: http://wls-jenkins.us.oracle.com/view/weblogic-operator/job/weblogic-kubernetes-operator-javatest/1318/


tests: benchmarking: cleanup of the benchmakring code.

The kernel will no longer reference the code written in the
test folder.
GH-1236
Signed-off-by: Adithya Baglody<EMAIL_ADDRESS>

There's a typo in commit title: "benchmakring"

Delta:

fixed commit msg
fixed checkpatch related issue.


[1.1] Bump continuity to fix copy files > 2^32 bytes

Full diff: https://github.com/containerd/continuity/compare/3e8f2ea4b190484acb976a5b378d373429639a1a...a60600ad77f38aaa70165825f61e2ea72e51c9b1

Codecov Report

Merging #2356 into release/1.1 will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           release/1.1    #2356   +/-   ##
============================================
  Coverage        50.07%   50.07%
============================================
  Files               75       75
  Lines             7269     7269
============================================
  Hits              3640     3640
  Misses            2956     2956
  Partials           673      673

Flag
Coverage Δ

#linux
50.07% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

LGTM


Add ESLint

TO DO:
Add and configure linting for this project.
Use ESlint
Confiture lint to use Airbnb style guidelines
Acceptance Criteria
GIVEN A developer
WHEN Add features, fixing bugs in this project
THEN ESLint should constraint me to the defined code styles and guidelines
DEV NOTES
n/a

@Jkarage closed this issue


feat: use neon http

feat: use neon http
set migrations in config

#124  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @gneiru and the rest of your teammates on  Graphite


[HAMMER] Fix locale names for hammer

This PR:

contains updated catalogs with fixed locale_name
contains compiled catalogs
contains updated available_languages.json

@AllenBW @himdel
https://bugzilla.redhat.com/show_bug.cgi?id=1655584

@himdel @AllenBW for some reason, switching the UI locale to any of es fr ja works correctly. Switching to either pt-BT or zh-Hans-CN fails :-/

Switching to either pt-BT or zh-Hans-CN fails :-/

Makes sense, both still use underscores in available_languages but dashes in the translation.
Need to make sure the keys match.

Switching to either pt-BT or zh-Hans-CN fails :-/

Makes sense, both still use underscores in available_languages but dashes in the translation.
Need to make sure the keys match.

available_languages.json contains pt_BR, so does manageiq-ui-service.json (the file that matters here). So what needs to match with what here?

maybe we need to 🔪 https://github.com/ManageIQ/manageiq-ui-service/commit/2f356c85db60604ac26ccc711f8687b03d91ce83 ?

Aah, yeah, exactly... it will only match if both are dashes. If both are underscores, that code breaks it.

The true fix here was to fix language codes in the .po catalogs: from pt_BR to pt-BR and from zh_Hans_CN to zh-Hans-CN.
Now things should work correctly.


Accessible List of Links

Question
I'm trying to produce accessible pdf and need bulleted list of links (or text with links). Is it possible to produce list of links with doc.list() method or is it accepting only strings array ?
Description
I need to put Link element into LBody.
The code below works only if urls is array of strings.

Code sample

// list of pages
const list = doc.struct('L');
testedPages.add(list);
doc.list(urls, { structParent: list })
Your environment

pdfkit version: 0.12.1
Node version: 14
Browser version (if applicable):
Operating System:

@nippoolg for the list() shortcut method, only a list of strings is supported as documented. If you need something more complicated, you will have to write your own function.


quick patch on nvfuser getnv/reshape to handle sequence with NumberProxy

recursively go through getnv on sequence to retrieve dynamic scalar for nvfuser.
update reshape parsing in nvfuser executor to allow NumberProxy in new shape.

PR not functional yet, blocked by https://github.com/NVIDIA/Fuser/pull/2530


fix: Recover from URL expiry if paused when URL expires

Fix to issue where URL expiry doesn't resume playback if you're paused when the URL expires and then press play

The issue is that it never gets to a "playing" state if you press play after the URL expires, so it thinks it should be paused after the source is reloaded.


Added a simple policy creation/setter/watcher for v5 appliance

this should make it easy to set up a demo where you can see how the
variable is set and updated.

I removed the link to the demo epic as it's not entirely part of that demo. Let's get this PR in once it's ready.

@jtuttle Fixed your comments
@micahlee Added ability to specify follower as the target for watching a variable.


Add SGX C types

cc @jethrogb

This avoids duplicating all the common libc code, adds the SGX C types, and also avoids having wasm32-unknown-unknown as an exception. Basically, there is now just a top level cfg_if! that includes what's relevant for each target, and if no target matches, the library is almost empty.
Almost empty because we have to include the macros module for cfg_if, and we are also unconditionally including the dox module (which TBH don't really understand why all of it is necessary).

I would personally prefer to land https://github.com/rust-lang/libc/pull/1124 myself. I realize the libc crate is a bit backwards from traditional development, but I feel like it has really good reasons for doing so. Binding all platforms ever is basically an insanely hard task, and we want to keep things as absolutely simple as possible to optimize for readers of this crate.
The most common operation for libc is to add a new platform or add a new API. If users have to follow a long checklist of where to add an API it gets pretty difficult and very tangled very quickly. Having a dead-simple rule of thumb makes it trivial to know where to add an API, and with the verification on CI we can't get additions wrong.
Due to the nature of inheritance of APIs are you move up the module hierarchy to the root, adding a new platform is often a nontrivial task because APIs need to be duplicated into submodules as they can no longer be inherited on one platform or another. This duplication is fine, though, because it's still easy to read the crate and modify it, and all bindings are verified to be correct.
Historically I've found that 100% of the time any attempt to be more clever by sharing various subsets of APIs has ended in tears long-term. Sticking to a simple rule has been tried-and-true for quite some time now with libc.
For all that I'd prefer to go the route of https://github.com/rust-lang/libc/pull/1124 which preserves the current organization of libc, where platforms inherit from modules as they move up the hierarchy, and that's basically it. We could reorganize the entire tree into a root node with "sgx" and "non-sgx" as child nodes to improve sharing as well, but I could go either way on that.

I'd be fine with copy pasting the libc module into the submodules and remove it. But I'd prefer to have a single cfg_if at the top-level (like in this PR) to make things clearer.
For example, if you move things into submodules like in #1124 , all tests pass, but we don't have any tests checking for API removal, and IIUC #1124 removes all the stuff in the libc module of this PR from targets like switch, emscripten, etc. These removals are not clear from the #1124 PR because what is compiled for which target is not clear.
In fact, looking at this PR, I think it is wrong. We need an } else if wasm32-unknown-unknown { in the top-level cfg_if that is empty, and then the fallback case should include everything from the libc module as well.

Oh sorry yeah I'm not saying that we should take literally #1124, but I want to avoid adding multiple roots or multiple children for a submodule because it sets a very dangerous precedent that makes it very difficult to modify the library in the future.
It's true that we don't have tests for removal of APIs, because that's a major project that requires a huge amount of effort and really doesn't have that much benefit where we can otherwise just be vigilant during reviews.

I'm not sure I fully understand what you mean by multiple roots and multiple children, but I don't really mind the duplication either as long as it is clear where to add what for which targets.

It's true that we don't have tests for removal of APIs, because that's a major project that requires a huge amount of effort and really doesn't have that much benefit where we can otherwise just be vigilant during reviews.

I'll check cargo semverver out and see if I can set it up for some targets at least. Should be able to detect the most common API breaking changes.

Er sorry, I mean that with respect to the module hierarchy. Currently for any one platform there's just a straight line of a module hierarchy, which makes it easy to know what's included, but with a PR like this there's optionally two different child nodes of the root (the ctypes/libc modules)

I am not sure I understand. On the root there is only a cfg_if for each group of targets, and then it goes down to the concrete targets. Almost all targets share the code in ctypes (e.g. c_void, ...) and also almost all targets share the most common C standard library functions.
We could copy paste these into each submodule, and also, in the "default" branch of the cfg_if. I don't mind much, but doing so makes PRs like #1130 much harder.

I think what @alexcrichton is saying is that there are multiple locations in lib.rs with the line mod libc;. This is not a very standard way of building your module hierarchy.

Indeed yeah, but not only is it odd to have multiple mod libc; but this is setting a very dangerous precedent. What if in the future we have functions shared on wasm and unix, but not windows? Do we add a wasm_and_unix.rs and add the functions there?
The libc crate embraces duplication, it really is just easier to manage over time. Deduplication is a local optimum that is nigh impossible to maintain long term as more platforms are added

So I'll update this PR  with that, but I would prefer not to merge until we are sure that we are not removing APIs from any cfg node.

Ok! What do you think about landing this in the meantime and we can verify afterwards?
Also FWIW I think that it's probably fine to move definitions like int8_t and c_void to the root of the crate (even for the wasm/sgx targets), as those type definitions, if they work on a C compiler, are fundamentally guaranteed to the be that definition

@bors: r+

I'll send a different PR moving those to the root.

:pushpin: Commit 5c1a6b8a6d558882927a0816d91c01b9c2a88018 has been approved by gnzlbg

:hourglass: Testing commit 5c1a6b8a6d558882927a0816d91c01b9c2a88018 with merge 5b403753da9ec8ff501adf34cb6d63b319b4a3ae...

:sunny: Test successful - status-appveyor, status-travis
Approved by: gnzlbg
Pushing 5b403753da9ec8ff501adf34cb6d63b319b4a3ae to master...


Support Raspbian Buster

Works fine on Raspbian @artis3n .
Just one point, according to Tailscale documentation :
Add Tailscale’s package signing key and repository

curl -fsSL https://pkgs.tailscale.com/stable/raspbian/buster.gpg | sudo apt-key add -
curl -fsSL https://pkgs.tailscale.com/stable/raspbian/buster.list | sudo tee /etc/apt/sources.list.d/tailscale.list

With your role i've got on my Pi:
> cat /etc/apt/sources.list.d/pkgs_tailscale_com_stable_debian.list
deb https://pkgs.tailscale.com/stable/debian buster main

I'd like to get a docker image in the CI framework with Raspbian. I'd say right now there's accidental support through the debian steps.


Fix CodeBuild/SAR error as result of Nodejs version change

Is this issue regarding the nodejs 8.x deprecation? In that case I'd +1


Exclude tests and vendored modules from code coverage

Description

In this PR there is the exclusion of tests and vendored modules from code coverage reports. This allows us to better see the impact of PR on napari code coverage.
Type of change

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

References

How has this been tested?

[ ] example: the test suite for my feature covers cases x, y, and z
[ ] example: all tests pass with my change

Final checklist:

[ ] My PR is the minimum possible work for the desired functionality
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] If I included new strings, I have used trans. to make them localizable.
For more information see our translations guide.

FYI there are also ways to tweak how coverage get reported by codecov by tagging some path to be part of lieb, test, vendors... https://github.com/ipython/ipython/blob/af37d7b2206fa3c3520b304011b4294fa3019da2/codecov.yml
Codecov will then report each individually.

Approved, but maybe reenable test and show test/library separately as a test result in codecov in. subsequent PR ?

I do not know about this option. I will test it first in the side project.

FYI there are also ways to tweak how coverage get reported by codecov by tagging some path to be part of lieb, test, vendors<EMAIL_ADDRESS>
I test this with PartSeg and it really nice allows to trace how it impacts different modules (for example napari may have a separate project for Qt part.
But badge still will report coverage that includes tests. And test lines should not be counted when reporting total project coverage.

I don't have strong opinions here but fyi Ned Batchelder, who created coverage.py, recommends including tests in coverage statistics:
https://nedbatchelder.com/blog/202008/you_should_include_your_tests_in_coverage.html

(vendored modules are another thing)

And test lines should not be counted when reporting total project coverage.
... And
Ned Batchelder, who created coverage.py, recommends including tests in coverage statistics:

I think I tend to agree with Juan here, I've too often see tests that for X or Y reason are not run. So I see test coverage as useful.
The badge may show the full coverage, CI should show multiple lines :

Ok, in the above it's not completely working, but it should be possible.

I don't have strong opinions here but fyi Ned Batchelder, who created coverage.py, recommends including tests in coverage statistics:

I read and understand arguments.

Ma

close as  #4595 was merged


Shotgun shots if they have a recipe it doesn't show up in just enough items

There is no shotgun shots recipe. I decide to leave it up to modpack authors. You can exchange emerald to some shotgun shots from "Mechanic" villager.

Fair enough


[Bug]: Meeting scheduler Template shows Page Not Found error on trying to invoke it.

Is there an existing issue for this?

[X] I have searched the existing issues

Description
When I try to use the Meeting Scheduler template, the template view shows up with Page Not Found error. This works fine on app.appsmith.com
Steps To Reproduce
Release

Production

Public Sample App
No response
Environment
Release
Issue video log
No response
Version
Cloud

It is available now: https://release.app.appsmith.com/templates/631f7e8a47a7d75706eb6ef7
Please reopen if you notice this again.


train code complete from zero

Hi，
I try to train code complete from zero， below is two settings， and the performance is bad:
1. train from utf-8 encode, the default BPE encoding, 1 batch_size, 3 GPU card, 500K iteration
2. train from ascii encode, 1 batch_size, 3 GPU card, 500K iteration
and method 2 is just map ascii from 1 to N, the size is much less, and the performance of the two settings ard bad.
do you train by finetune the release model of gpt2? can you share your training settings?

I should say that, currently, Galois is not at its best stage. I made just a little bit finetuning works but still, results are not bad. These are the configs/parameters that I used:

Base model: GPT-2 345M
Encoder: Default BPE
Batch size: 1
Gradient accumulation: 5 (As I remember)
Optimizer: Adam
Learning rate: 1e-5 or 1e-4
Device: 1 V100
Iteration: I interrupted when loss and unconditional generations were well enough but it took almost 48 hours.
Dataset:  ~45K preprocessed python files. Make sure that your dataset is well enough. Don't forget that GPT2 is powerful enough to learn any well-structured (I mean all programming languages). So should either find the best parameters experimentally or make sure that your dataset is well enough.

Nowadays, I suggest who wants to train a generative model to use huggingface's transformers library.

great thanks for your detailed help


Settings integration bug

I am using cloth config:
Some other mods suffer the same issue like for example OK Zoomer.
The Problem
When I am opening the settings from outside modmenu there are no problems at all.
Now I integrate the Settings Screen Builder into modmenu and open it. I can set all values just fine..
But when I leave those settings and find myself back inside the modmenu GUI, then reopen it:
The "Save" Button is already activated, and I cant change the value back, because the save button gets deactivated when switching the toggles back.
==> Modmenu is reusing the same Screen object while its GUI is opened, while Cloth Config explicitly stated not to do that:.
I've found the code where that is happening.
All you need to do:
ModsScreen.java
Add
// As I've looked trough the code I've found out that it relies on the screen being constantly initialized ;-; so sad
// This is to Re-Initialize a Screen once it was already used; true if Screen was used once
private ImmutableMap<String, Boolean> configScreenUsages = new HashMap<>();

public Screen buildConfigScreen(String modid) {
	try {
		return configScreen = ModMenu.getConfigScreen(modid, this);
	} catch (Throwable e) {
		LOGGER.error("Error from mod '" + modid + "'", e);
		return null;
	}
}

Modify
Line 116
for (Mod mod : ModMenu.MODS.values()) {
	configScreenCache.put(modId, getConfigScreen(mod.getId()));
	configScreenUsages.put(mod.getId(), false);
}

Modify
Line 129
ButtonWidget configureButton = new ModMenuTexturedButtonWidget(width - 24, paneY, 20, 20, 0, 0, CONFIGURE_BUTTON_LOCATION, 32, 64, button -> {
	final String modid = Objects.requireNonNull(selected).getMod().getId();
	// <-=<-=-===-FROM HERE-===-=->=->

	// If it was used already, create new screen
	if (configScreenUsages.get(modid)) {
		configScreenCache.put(modId, getConfigScreen(modid));
	}

	//  <-=<-=-===-TO HERE-===-=->=->
	final Screen screen = configScreenCache.get(modid);
	if (screen != null) {
		client.openScreen(screen);
	} else {
		button.active = false;
	}
},

Images illustrating the problem
Using Ok Zoomer

Opening settings from mod menu button

Changing first two values

Leaving

Reopening -> Savebutton is already active; values cant be saved after changing them back to normal

Thanks for the detailed report! We'll look into getting this fixed.