[AIRFLOW-526] pin all dependencies in setup.py

Pinning all dependencies in setup.py will help having more homogenous
installs across environments. The current approach of allowing version
ranges based on version notation is risky at best and results in bad
surprises.
The downside is that we won't get positive bug fixes and security fixes
for free, but these come at a high cost where a single bad version of a
package may take your Airflow environment down, without warning.

@aoen @plypaul

Couple of questions:
How was it decided which pinned versions should be used?
Could this break airflow for some users who need their own specific versions (i.e. should this change wait for Airflow 2.0)?
Was this tested?

I am also +1

@aoen  I decided on versions based on the most recent within the previously specified range, using this very useful service:
https://requires.io/github/apache/incubator-airflow/requirements/?branch=master
I ran tests locally and on Travis. I did run python setup.py install and python setup.py develop locally and everything was smooth.

That is nifty indeed! What about the airflow 2.0 comment? I think this will likely break some airflow installations out there.

As discussed I'd say we collectively bite the bullet and get uniformity from the next version (1.8.0) forward.

LGTM

I tested this by running python setup.py install on a fresh virtualenv. Firstly, we still have an issue with the python daemon, which resulted in AttributeError: 'module' object has no attribute 'WriteVersionInfoCommand' when executing python-daemon-2.1.1's setup.py file on macosx.
The work-around right now is to issue a separate pip install python-daemon==2.1.1 command and then rerun python setup.py install for airflow. Do we have a better workaround?

@mistercrunch do you want to go ahead with this? It looks like it might have stagnated. Worth going forward IMO.

+1 Same. Got bit by a pandas release over the weekend. (0.19.1)

I forced a version of numpy in setup_requires (runs before install_requires) to fix issues with pandas installation and documented the fact that people should update to the latest pip and setuptools lib prior to installing Airflow.

Note: I have the same issue as @r39132:
Processing python-daemon-2.1.1.tar.gz
Writing /var/folders/tc/1fml66yd3jjg_mj6z601kbcs9h5tkc/T/easy_install-gL1xA8/python-daemon-2.1.1/setup.cfg
Running python-daemon-2.1.1/setup.py -q bdist_egg --dist-dir /var/folders/tc/1fml66yd3jjg_mj6z601kbcs9h5tkc/T/easy_install-gL1xA8/python-daemon-2.1.1/egg-dist-tmp-MdxbJw
Traceback (most recent call last):
  File "setup.py", line 272, in <module>
    do_setup()
  File "setup.py", line 266, in do_setup
    'extra_clean': CleanCommand,
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/install.py", line 67, in run
    self.do_egg_install()
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/install.py", line 117, in do_egg_install
    cmd.run()
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 380, in run
    self.easy_install(spec, not self.no_deps)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 610, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 661, in install_item
    self.process_distribution(spec, dist, deps)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 709, in process_distribution
    [requirement], self.local_index, self.easy_install
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/pkg_resources/__init__.py", line 836, in resolve
    dist = best[req.key] = env.best_match(req, ws, installer)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1081, in best_match
    return self.obtain(req, installer)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1093, in obtain
    return installer(requirement)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 629, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 659, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 842, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1070, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1056, in run_setup
    run_setup(setup_script, args)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 240, in run_setup
    raise
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 193, in setup_context
    yield
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 164, in save_modules
    saved_exc.resume()
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 139, in resume
    compat.reraise(type, exc, self._tb)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 152, in save_modules
    yield saved
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 193, in setup_context
    yield
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 237, in run_setup
    DirectorySandbox(setup_dir).run(runner)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 267, in run
    return func()
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 236, in runner
    _execfile(setup_script, ns)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/sandbox.py", line 46, in _execfile
    exec(code, globals, locals)
  File "/var/folders/tc/1fml66yd3jjg_mj6z601kbcs9h5tkc/T/easy_install-gL1xA8/python-daemon-2.1.1/setup.py", line 56, in <module>

AttributeError: 'module' object has no attribute 'WriteVersionInfoCommand'

The commit I just added: https://github.com/apache/incubator-airflow/pull/1809/commits/4b6aa14ed33570ecb852c6a7afb3fd79888cd28d
fixes the issue.
The problem was that python-daemon's setup.py had a non-relative import version that this was conflicting with my imp.load_source call.

Note that somewhere along the way funcsigs chokes and requires a newer recent-ish pip and setuptools, and I added a note about that in the installation.rst

Thanks!

Confirmed it's working! :)
Without the pip and setuptools upgrade, I still get:
error: The 'python-daemon==2.1.1' distribution was not found and is required by airflow

Even after running:
 pip install --upgrade pip setuptools

I still get it.

@criccomini ok I was able to reproduce and moved python-daemon to setup_requires and things seem to work now.

:( Still giving me the same thing. I'm starting to get paranoid.
chrisr-MBP-13:airflow chrisr$ virtualenv ~/.virtual-env/AIRFLOW-526
New python executable in /Users/chrisr/.virtual-env/AIRFLOW-526/bin/python
Installing setuptools, pip, wheel...done.

chrisr-MBP-13:airflow chrisr$ source ~/.virtual-env/AIRFLOW-526/bin/activate
(AIRFLOW-526)chrisr-MBP-13:airflow chrisr$ pip install --upgrade pip setuptools
Collecting pip
  Using cached pip-8.1.2-py2.py3-none-any.whl
Collecting setuptools
  Using cached setuptools-28.2.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools
  Found existing installation: pip 7.1.2
    Uninstalling pip-7.1.2:
      Successfully uninstalled pip-7.1.2
  Found existing installation: setuptools 18.2
    Uninstalling setuptools-18.2:
      Successfully uninstalled setuptools-18.2
Successfully installed pip-8.1.2 setuptools-28.2.0

(AIRFLOW-526)chrisr-MBP-13:airflow chrisr$ python setup.py develop
No handlers could be found for logger "__main__"
warning: no files found matching 'MANIFEST'
warning: no files found matching '*' under directory 'extras'
warning: no previously-included files matching '.cvsignore' found under directory '*'
warning: no previously-included files matching '*.pyc' found under directory '*'
warning: no previously-included files matching '*~' found under directory '*'
warning: no previously-included files matching '.DS_Store' found under directory '*'
zip_safe flag not set; analyzing archive contents...
docutils.parsers.rst.directives.misc: module references __file__
docutils.writers.docutils_xml: module references __path__
docutils.writers.html4css1.__init__: module references __file__
docutils.writers.latex2e.__init__: module references __file__
docutils.writers.odf_odt.__init__: module references __file__
docutils.writers.pep_html.__init__: module references __file__
docutils.writers.s5_html.__init__: module references __file__

Installed /private/var/folders/tc/1fml66yd3jjg_mj6z601kbcs9h5tkc/T/easy_install-P5NME8/python-daemon-2.1.1/.eggs/docutils-0.12-py2.7.egg
/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/dist.py:340: UserWarning: The version specified (u'UNKNOWN') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details.
  "details." % self.metadata.version

Installed /Users/chrisr/Code/airflow/.eggs/python_daemon-UNKNOWN-py2.7.egg
Traceback (most recent call last):
  File "setup.py", line 272, in <module>
    do_setup()
  File "setup.py", line 266, in do_setup
    'extra_clean': CleanCommand,
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 111, in setup
    _setup_distribution = dist = klass(attrs)
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/dist.py", line 315, in __init__
    self.fetch_build_eggs(attrs['setup_requires'])
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/setuptools/dist.py", line 361, in fetch_build_eggs
    replace_conflicting=True,
  File "/Users/chrisr/.virtual-env/AIRFLOW-526/lib/python2.7/site-packages/pkg_resources/__init__.py", line 856, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'python-daemon==2.1.1' distribution was not found and is required by the application

Also:
$ git rev-parse HEAD
2aaa629a7122d0d0e28b44f335055b73b8b8feae

I applied the diff for this PR to it. Appears to have your latest commit in it.
$ grep -B 5 -A 5 "python-daemon==2.1.1" setup.py
        include_package_data=True,
        zip_safe=False,
        scripts=['airflow/bin/airflow'],
        setup_requires=[
            'numpy==1.11.0',
            'python-daemon==2.1.1',
        ],
        install_requires=[
            'alembic==0.8.8',
            'croniter==0.3.12',
            'dill==0.2.5',

was that from a fresh venv? if not I'm guessing that pip freeze | grep daemon would show something like python-daemon==UNKNOWN or something like that. A fresh venv or pip uninstall python-daemon should get you back on track.

It was from a fresh venv. Completely new. The very first line is where I create it.

(AIRFLOW-526)chrisr-MBP-13:airflow chrisr$ pip uninstall python-daemon
Cannot uninstall requirement python-daemon, not installed

FYI, I was able to reproduce what @criccomini saw as well.

seems like this change may be a little too rigid and increase friction in installing airflow alongside someone's existing packages. does it not make sense to assume people will follow proper patterns with major vs. minor version changes, and then become more strict on a case by case basis if we see issues with individual packages.. e.g. with pandas; flask just released a very minor backwards compatibility issue in a minor release.

We've been bit 3 times in the past by packages upgrading within the strict-ish range we had setup before (within big number release after 1.0, and within minor release before 1.0). That's not mentioning the dozens of installation, upgrades and configuration specific bugs that are hard to reproduce. In some cases you have to ask people to share the output of their pip freeze and diff it with yours and that's just not sustainable.
Maybe some packages (pandas, numpy) can be set within a range, and eventually for Airflow 2.0 we can break down the airflow package into more smaller packages with less dependencies in each.
We should pin as much as possible though.

Waiting on @bolkedebruin to confirm python-daemon 1.6.1 is ok.

Is it our job to set other people's dependencies?
The piece that I worry about is someone else setting a requirements file with airflow and some other things and having issues controlling the specific versions of libraries used.
As a library, it should be our job to specify the minimum that we need and let our users specify the exact versions they care about.

@mistercrunch let me know what you would like to do with this. This is an important change that I would like to see committed, to please prioritize it, else we will need to close.

@mistercrunch 1.6.1 seems ok, however the patch does not always "work" cleanly (python setup.py install complaining):
Running funcsigs-1.0.2/setup.py -q bdist_egg --dist-dir /tmp/easy_install-FxG2xm/funcsigs-1.0.2/egg-dist-tmp-K9JK1C
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py:2512: PEP440Warning: 'python-daemon (UNKNOWN)' is being parsed as a legacy, non PEP 440, version. You may find odd behavior and sort order. In particular it will be sorted as less than 0.0. It is recommend to migrate to PEP 440 compatible versions.
  PEP440Warning,
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py:2512: PEP440Warning: 'python-apt (<IP_ADDRESS>build1)' is being parsed as a legacy, non PEP 440, version. You may find odd behavior and sort order. In particular it will be sorted as less than 0.0. It is recommend to migrate to PEP 440 compatible versions.
  PEP440Warning,
error: Setup script exited with error in funcsigs setup command: Invalid environment marker: python_version<"2.7"

@mistercrunch Can you get this PR across the line?  This one is def needed.

Can I request a bump of the google api to 1.5.4 (or shall I do it after this one is merged)

I think someone needs to take this on - the PR is more than a month old! This is an important PR and someone needs to carry this across the line. If @mistercrunch can get to this today, I will merge it, else I'd like to see if there are other takers as he seems crunched for time!

@r39132 FWIW I agree with @gwax, I don't think we should be pinning dependencies

From http://stackoverflow.com/questions/28509481/should-i-pin-my-python-dependencies-versions
You should always pin your dependencies as it increases the possibility of safe, repeatable builds, even as time passes. The pinned versions are your declaration as a package maintainer that you've verified that your code works in a given environment. This has a nice side effect of preserving your sanity as you won't be inundated with bug reports in which you have to play inspector into every package codependency and system detail.

Users can always choose to ignore the pinned dependency-versions and do so at their own risk. However, as you release new versions of your library, you should update your dependency versions to take in improvements and bug fixes.

I tend to agree but have read other articles that claim the opposite. I'm not sure what to do here.

Having done some reading and performed a bit of a survey of some other (bigish) packages, my recommendation is that we pin to a known, working state in requirements.txt for development; and not pin in setup.py for distribution; we should probably test against both.
This is based on the following findings:
ipython - not pinned: https://github.com/ipython/ipython/blob/master/setup.py#L200
pytest - not pinned: https://github.com/pytest-dev/pytest/blob/master/setup.py#L51
pylons - not pinned: https://github.com/Pylons/pyramid/blob/master/setup.py#L40
django - not pinned: https://github.com/django/django/blob/master/setup.py#L50
sympy - not pinned: https://github.com/sympy/sympy/blob/master/setup.py#L365
requests - setup.py not pinned: https://github.com/kennethreitz/requests/blob/master/setup.py#L49
requests - requirements.txt pinned: https://github.com/kennethreitz/requests/blob/master/requirements.txt#L1
boto3 - setup.py not pinned: https://github.com/boto/boto3/blob/develop/setup.py
boto3 - requirements.txt not pinned: https://github.com/boto/boto3/blob/develop/requirements.txt

@gwax thanks for gathering the evidence! You have me convinced.

we don't seem to have a requirements.txt?

-1000
Pinning dependencies in setup.py is not the right approach.
Pinning should happen in a requirements.txt
You can pin minimum-requirements in setup.py,
but maximum-requirements only if you know for certain that new packages are not compatible AND you are not going to fix these issues.
Always avoid exact pinning.
BTW major-version changes do not necessary imply breaking-compatibility, and minor-version  do not necessary imply the opposite. It should in theory, but in practice it doesn't.
Setup.py should just list its dependencies,
it is not meant to create a reproducible deployment.
Packages listed in setup.py should never be pinned.
They do not serve the same purpose as a requirements.txt.
Pinning requirements in setup.py immediately creates a dependency-hell in larger projects,
which is the reason why am I searching this repo for a reason why this pinning happened.

@WouterVH Please look at the current setup.py. Not everything is pinned anymore.

Agreed, for Apache Superset we recently changed our setup.py to only set up upper-lower bounds where absolutely needed (when we know that versions of the lib won't work for sure) and leave as much open as possible.
On top of that, we provide an optional requirements.txt that can be used as the "reference implementation" used for the builds and tests. Users can decide to use it or not. Ideally requirements.txt is generated by pip-compile and pins the whole tree.

Yep, I think that's the way forward. This is how dependencies are handled in our Big Data Environment as well. Don't pin unless absolutely necessary, this way we can test with the latest, and maybe package the pinned versions with a tried and tested requirements.txt in the release.

Sure, but then we get early warning that things will break, once we see the issue, we can pin and people can rebase. Java install broke recently, and that's how it was handled, I think that's fine.


TTV #3542 - Add dropdown menu to pick a repo template

Add a dropdown menu instead of the current "Create Repository" button to pick.
Feature flag alert!
The dropdown will only appear if you added the "enable_repo_templates" flag to your browser's local storage.
How it looks like
Without a feature flag

With a feature flag

Closes #3542

The dropdown will only appear if you added the "enable_repo_templates" flag to your browser's local storage.

Can you give more explicit instructions?


no typehint/typeinfer for async fn on rustc-nightly-2021-05-20 with rust-analyzer

I tried this code:
async fn foo() -> Result<i32, ()> {
    Ok(1)
}

async fn bar() -> Result<(), ()> {
    let temp = foo().await?;
    Ok(())
}

But no typehint/type annotation for variable temp if rustc's version is nightly-2021-05-20
If I only change rustc's version by rustup override set nightly-2021-05-16 and reload vscode's window, the typehint for variable temp show correctly.
typehint for async fn foo() -> Result<i32, ()> works ok on nightly-2021-05-16, but failed on nightly-2021-05-20
I use the same rust-analyzer executable file, I think this problem cause by rustc.
Meta
rust-analyzer --version:
rust-analyzer fd109fb 2021-05-20 dev

rustup show:
Default host: x86_64-unknown-linux-gnu
rustup home:  /home/w/.rustup

installed toolchains
--------------------

stable-x86_64-unknown-linux-gnu
nightly-2021-05-16-x86_64-unknown-linux-gnu (default)
nightly-x86_64-unknown-linux-gnu

active toolchain
----------------

nightly-x86_64-unknown-linux-gnu (directory override for '/home/w/temp/no_typehint_for_async_fn_response_on_rustc_0520')
rustc 1.54.0-nightly (40d230204 2021-05-20)

Did something about the representation of futures change in nightly?

I think there were more changes than that. In proprietary code which I cannot share and latest nightly proc-macros panic when running rust-analyzer (target/ was wiped). Rustc works fine with the same code.
I'll try to obtain any logs next week, all I can tell right now the failing proc macro was panicking on out of bounds access to something.

Changes to the proc macro ABI don't matter for this example, though.

@pymongo do you get type hints for other, non-async functions?

Only .await? on async fn return Result without typehint

rustc nightly-2021-05-20 and nightly-2021-05-21 no typehint for let temp = foo().await?;

the typehint for .await? on async fn return value works great on nightly-2021-05-16:

The new try trait got merged on nightly which causes us to fail when looking up the OK assoc type on it as the new version doesn't have that associated type anymore. https://github.com/rust-analyzer/rust-analyzer/blob/3cfe2d0a5d663d29c3d196f9d16e91964780792a/crates/hir_ty/src/infer.rs#L577-L581
https://doc.rust-lang.org/nightly/std/ops/trait.Try.html
So this isnt a problem specific to async functions, but to ? in general I believe.

Aah right. We should build in a fallback to look for Output instead.

Also is there a reason we are resolving the trait via its path instead of the lang item name?

Judging from the cfg_attr, the lang item is new. IIRC the desugaring of ? worked syntactically, not using a lang item. I'm not sure what the lang item is used for, actually.


Move *-serial to nonblocking.

Also remove the -subnet test which is apparently not useful. (per @gmarek)

Pushing this live right now.

-subnet shouldn't be queue blocking? And/or if it is it should be listed at http://submit-queue.k8s.io/#/e2e

it wasn't blocking, but it also wasn't useful. More noise than signal.
On Mon, Jun 20, 2016 at 11:59 AM, Erick Fejta<EMAIL_ADDRESS>wrote:

-subnet shouldn't be queue blocking? And/or if it is it should be listed
at http://submit-queue.k8s.io/#/e2e
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/contrib/pull/1237#issuecomment-227236369,
or mute the thread
https://github.com/notifications/unsubscribe/AAnglnjF2UmIVjCmqM6H3AptaY-cKNvDks5qNuMDgaJpZM4I5Bkb
.


Fix Typo in response of CountryName & File name

Fix typo in Response of country Name
Update the file name to> device-status.yaml

This PR is for fix the issue--> https://github.com/camaraproject/DeviceStatus/issues/27
@monamok @eric-murray  please review

Thank you @ravindrapalaskar17.

@ravindrapalaskar17
An empty array is really [], not [ ]. As we are specifying the response and ideally all implementations will give the same response, it is probably better to be pedantic, so I made the change.

@ravindrapalaskar17 An empty array is really [], not [ ]. As we are specifying the response and ideally all implementations will give the same response, it is probably better to be pedantic, so I made the change.

Thanks @eric-murray

Can we merge this PR..?


Only klaviyo Events not Notifications

I am only gettign Klaviyo Events but not the Klaviyo Notifications.
Woud you please check and confirm if the notifications are really working or not.

Hello Moeez, could you please double check notification setup and integration according Apple and Google requirements.
You can also look on Klaviyo native platform integration: Android, and iOS projects.
Please also check Klaviyo API logs for your Klaviyo account at https://www.klaviyo.com/developer-tools/logs


python311Packages.plotly: 5.20.0 -> 5.21.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python311Packages.plotly is: Python plotting library for collaborative, interactive, publication-quality graphs
meta.homepage for python311Packages.plotly is: https://plot.ly/python/
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 5.21.0 with grep in /nix/store/2razmi261px5s8iydg9s7xxkfa7yrxa4-python3.11-plotly-5.21.0
found 5.21.0 in filename of file in /nix/store/2razmi261px5s8iydg9s7xxkfa7yrxa4-python3.11-plotly-5.21.0

Rebuild report (if merged into master) (click to expand)

56 total rebuild path(s)

56 package rebuild(s)

First fifty rebuilds by attrpath

apkleaks
checkov
cve-bin-tool
das
deeptools
hp2p
jadx
picosnitch
python311Packages.atomman
python311Packages.ax
python311Packages.catboost
python311Packages.chart-studio
python311Packages.compressai
python311Packages.cufflinks
python311Packages.dash
python311Packages.experiment-utilities
python311Packages.explorerscript
python311Packages.igraph
python311Packages.kmapper
python311Packages.leidenalg
python311Packages.optuna
python311Packages.orange3
python311Packages.plotly
python311Packages.pyannote-audio
python311Packages.pyannote-pipeline
python311Packages.pymatgen
python311Packages.scikit-tda
python311Packages.skytemple-dtef
python311Packages.skytemple-files
python311Packages.skytemple-ssb-debugger
python311Packages.sumo
python311Packages.synergy
python311Packages.textnets
python312Packages.atomman
python312Packages.ax
python312Packages.catboost
python312Packages.compressai
python312Packages.dash
python312Packages.experiment-utilities
python312Packages.explorerscript
python312Packages.igraph
python312Packages.kmapper
python312Packages.leidenalg
python312Packages.optuna
python312Packages.plotly
python312Packages.pyannote-pipeline
python312Packages.pymatgen
python312Packages.scikit-tda
python312Packages.skytemple-dtef

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/2razmi261px5s8iydg9s7xxkfa7yrxa4-python3.11-plotly-5.21.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python311Packages.plotly https://github.com/r-ryantm/nixpkgs/archive/fa2cf7ad6c227e649ff0624b24a09aec5f5e03c0.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/fa2cf7ad6c227e649ff0624b24a09aec5f5e03c0#python311Packages.plotly

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/2razmi261px5s8iydg9s7xxkfa7yrxa4-python3.11-plotly-5.21.0
ls -la /nix/store/2razmi261px5s8iydg9s7xxkfa7yrxa4-python3.11-plotly-5.21.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review took longer than 120m and timed out

Maintainer pings

Already on master.


Anonymous classes with captured data

According to our style guide, an anonymous class of over 5 lines or more than 1 method should be turned into a nested class. What about cases where the anonymous class is used to capture variables scoped only to the function which creates it?
For example, consider the current MultiCallback implementation of createCallback(). The variable id is captured by the anonymous callback class. If it were to be split out into a nested class, it would need to be passed as an argument to the new class. This is a simple example, but there are likely other cases we haven't run into yet that will require capturing several variables.
Should we:

Split these classes out into nested classes (adding some boilerplate for each variable captured)
Leave them as anonymous classes (potentially reducing readability)

I think it's better to make them nested classes if they're that big. I think the benefit to readability is definitely worth any cost of passing variables to them.

This is kind of why there isn't really a hard and fast rule about the size we use for anonymous classes more of a guideline. In my opinion extracting that anonymous class out of MultiCallback into a nested class would reduce the readability.
I think we just have to use our judgement. In the case of MultiCallback that anonymous class is very related to it's surrounding code so seeing it in context makes sense.
The places we should avoid using long annon classes is like an activity where you have some type of listener or callback that doesn't really relate to the surrounding code except that you are setting up callbacks / listeners in that section. The code inside the annon class is out of context, so you might as well make it nested anyway.

Hm, I didn't really think about the context anonymous classes would be in. I'm leaning more towards agreeing with @ryant26 now.

Yeah, I agree with @ryant26. Especially if captured variables are being used, that implies that there's some important contextual information.


Henry c

Worked on Landing page and Got it to a good place. Needs a few changes of assets and work on footer, but stands well for now.

Hey @KitsuneNoctus !
The new home page looks awesome!
I know we are still waiting for the new background image, for now, I will not merge and I'll make sure to bring it to their attention at the next client call. I will also get their feedback on the new Mission list page.
Great progress!

Hey @KitsuneNoctus ,
I looked more into the Mixpanel issue, and I added error handling for now - it doesn't fix the issue, but you should be all set when you run the project locally. More details on Issue #41.


Rework database errors into single set

Overview
We currently have a partial distinction between local and remote errors. Instead, let's have a single 'database' error set and add an 'isLocal' setting.

Work for this issue will begin begin on branch work-liquid-labs/standard-error-set/30.


Update on Warhammer: Vermintide 2 EAC

Game Title
Warhammer: Vermintide 2
Game Website
No response
Anti-Cheat Software
Easy Anti-Cheat
Status of the Anti-Cheat
👍 Running
Tinkering Steps
The game got reported as working, though you might want to keep it as Broken until more ppl can validate if it reliable.
I will try it myself but for know it seem to require the following steps:

Beta: temporary_launcher_workaround - Bypass Launcher
Proton Experimental or GE-Proton7-28
Proton EAC Runtime installed in the Steam Library(tools)
EDIT: 4. It is possible that you have to be the host otherwise some users reported that they got kicked

Maybe some more ppl can test it before you change the Anti-Cheat Status of the game
Proof of Mention
https://steamcommunity.com/app/552500/discussions/0/2960544187643622408/?ctp=31#c3457094584913365175

I'll keep an eye on it ^^
If more reports start rolling in I'll update the status
I'll also add an update for this game which describes the current situation, however I can only do that next week as I'm not home currently

PS: I also got the game running and submitted my report to ProtonDB

Install the Game as well as the Proton EasyAntiCheat Runtime from within your Steam Library
Force Proton Experimental
Select the temporary_launcher_workaround - Bypass Launcher Beta
Delete .../steamapps/compatdata/552500 (if it already exists on your PC from before)
Verify game integrity
Launch the Game, I had to replay the tutorial
Now you are in the game, but you have to host the lobby otherwise you will most likely get a timeout during a usual quick match (hopefully they can fix this)

I tried yesterday but got a warning on the screen about EAC.
I moved the installation from a Windows disk to a Linux partition. I selected Proton Experimental and temporary_launcher_workaround (we know it's a lie, it's never "temporary" :grin:), it installed itself Proton EasyAntiCheat Runtime tool when I ran the game.
To be sure I also re-deleted the compatdata and I re-verified the game installation. (Verifying the installation re-installs the compatdata directory.)
The error message says:
State: Untrusted
insufficient resources, cannot continue
something something your progress won't be saved

I can't make a screenshot unfortunately.
Maybe noteworthy: at the end I'm just getting a black screen despite the message indicating that I could still play the game but nothing will be saved. I do see the the loading icon for a little while but then it's black.
The error message makes me think that something is broken for it to work on my system but EAC could maybe work for this game.
OS: ArchLinux
Kernel: 6.0.11-arch1-1

@Lamdarer it was a "my system" issue. I found that comment in the thread you linked:

Make sure you have Proton Easy Anit Cheat installed as well
well it does that every time I verify files whitch i've done multiple times, without a clue again I am,
No you have to manually install the runtime from Steam. The "Proton Easy Anticheat Runtime". I have a feeling 99% of peoples problems revolve around not doing this.

So I gave it a try. It was actually difficult to uninstall Proton EasyAntiCheat Runtime, I had to delete the file appmanifest_1826330.acf manually and the directory common/Proton EasyAntiCheat Runtime. I also deleted the compatdata for Vermintide.
Then when I restarted Steam I first installed Proton EasyAntiCheat Runtime. :warning: I couldn't find HOW to install it manually because the Steam Store does not list it. So, before I uninstalled it, I added it to the favorites in order to be able to select it in the list.
After installing this. I re-started the check file integrity. Then I started the game and everything seems to be working. I will give further updates here for others who might end up here.

@Lamdarer it was a "my system" issue. I found that comment in the thread you linked:

Make sure you have Proton Easy Anit Cheat installed as well

well it does that every time I verify files whitch i've done multiple times, without a clue again I am,

No you have to manually install the runtime from Steam. The "Proton Easy Anticheat Runtime". I have a feeling 99% of peoples problems revolve around not doing this.

So I gave it a try. It was actually difficult to uninstall Proton EasyAntiCheat Runtime, I had to delete the file appmanifest_1826330.acf manually and the directory common/Proton EasyAntiCheat Runtime. I also deleted the compatdata for Vermintide.
Then when I restarted Steam I first installed Proton EasyAntiCheat Runtime. :warning: I couldn't find HOW to install it manually because the Steam Store does not list it. So, before I uninstalled it, I added it to the favorites in order to be able to select it in the list.
After installing this. I re-started the check file integrity. Then I started the game and everything seems to be working. I will give further updates here for others who might end up here.

It's not in the steam store but it can be found in your games list when you toggle the option to show "tools"

It's not in the steam store but it can be found in your games list when you toggle the option to show "tools"

If it's uninstalled you won't see it no?

It's not in the steam store but it can be found in your games list when you toggle the option to show "tools"

If it's uninstalled you won't see it no?

You should still see it, at least I do

You should still see it, at least I do

Yes I think you're right. I wrongly assumed I would not see it but I see everything, even servers for games I don't own. So I suppose there is a mix of everything in there.

I will give further updates here for others who might end up here.

I copied the user setting directory located in Roaming. The mods I had are listed as enabled in the config file but they are not enabled in game. I think it won't enable without the launcher.
I tried a quick play. I got disconnected early after the game launched. I guess joining any game won't work.
Hosting game works perfectly.
I started the game about 7 times and there is 1 time it failed with the error "State: Untrusted". So it's not working consistently. Restarting the game right after without doing anything worked though.


python312Packages.textile: 4.0.2 -> 4.0.3

Diff: https://github.com/textile/python-textile/compare/refs/tags/4.0.2...4.0.3
Changelog: https://github.com/textile/python-textile/blob/4.0.3/CHANGELOG.textile
Description of changes

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

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

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

20 packages built:

pretix
pretix.dist
python311Packages.django-markup
python311Packages.django-markup.dist
python311Packages.markups
python311Packages.markups.dist
python311Packages.python-creole
python311Packages.python-creole.dist
python311Packages.textile
python311Packages.textile.dist
python312Packages.django-markup
python312Packages.django-markup.dist
python312Packages.markups
python312Packages.markups.dist
python312Packages.python-creole
python312Packages.python-creole.dist
python312Packages.textile
python312Packages.textile.dist
retext
retext.dist

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

20 packages built:

pretix
pretix.dist
python311Packages.django-markup
python311Packages.django-markup.dist
python311Packages.markups
python311Packages.markups.dist
python311Packages.python-creole
python311Packages.python-creole.dist
python311Packages.textile
python311Packages.textile.dist
python312Packages.django-markup
python312Packages.django-markup.dist
python312Packages.markups
python312Packages.markups.dist
python312Packages.python-creole
python312Packages.python-creole.dist
python312Packages.textile
python312Packages.textile.dist
retext
retext.dist


Feature request

A "size" parameter, or similar. The maximum amount of characters that can be typed into the input field.
A "allowed" parameter, or similar. A string, containing allowed characters for input.

i realised that there already exists a max_string_length parameter, i apologize for that.

the allowed parameter then?

I'll get around it sometime. Have you tried implementing it yourself? :) The module is not that complicated!

Do you mean changing the src code? I could probably do that. One line of code i think.


[SMALLFIX] 151220089 pr

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19325/
Test FAILed.

this is pr
LineageMasterClientServiceHandler.zip

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19335/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19339/
Test FAILed.

@c151220089 too many unrelated files are added to this PR. Can you clean up the patch ?

closing due to inactivity


is this compatible with win 11? if so how do i fix listener not listening issue. any help would be greatly appreciated :)

      is this compatible with win 11? if so how do i fix listener not listening issue. any help would be greatly appreciated :)

Need more info.


When using make, says include file doesn't exist

intruder-detector/application/src/main.cpp:36:10: fatal error: ie_icnn_net_reader.h: No such file or directory
#include <ie_icnn_net_reader.h>
I've tried searching online what ie_icnn_net_reader is for, but I didn't find anything. Any advice will be appreciated, thanks in advance.

Hi @e-luo this demo was developed with an older version of the OpenVINO toolkit thus I think the last section in this article can help until this repo is updated.

@Propanu, thanks for the help. I tried changing #include <ie_icnn_net_reader.h> to #include <cpp/ie_cnn_net_reader.h>, however the same error would show up.
intruder-detector/application/src/main.cpp:36:10: fatal error: cpp/ie_nn_net_reader.h: No such file or directory  #include <cpp/ie_nn_net_reader.h>
Below is an image of the contents in the /opt/intel/computer_vision_sdk_2018.3.343/inference_engine/include/cpp directory:

I found the problem; I need to first type source env.sh in the root directory before proceeding. @Propanu, thanks for the help.
I am encountering new problems though, I keep getting this error message: warning: libavcodec-ffmpeg.so.56, needed by /opt/intel/computer_vision_sdk_2018.3.343/opencv/lib/libopencv_videoio.so.3.4.3, not found
However, when I type ffmpeg in the terminal, I get:
ffmpeg version 2.7.7 Copyright (c) 2000-2016 the FFmpeg developers   built with gcc 7 (Ubuntu 7.3.0-27ubuntu1~18.04)   configuration:    libavutil      54. 27.100 / 54. 27.100   libavcodec     56. 41.100 / 56. 41.100   libavformat    56. 36.100 / 56. 36.100   libavdevice    56.  4.100 / 56.  4.100   libavfilter     5. 16.101 /  5. 16.101   libswscale      3.  1.101 /  3.  1.101   libswresample   1.  2.100 /  1.  2.100 Hyper fast Audio and Video encoder
I have the correct versions. The ffmpeg is in /usr/bin. Why can't openvino see it?


Example Question (got error) : Try new 40B LLMs demo in Kaggle

i just running jupyter example.
i got error like this
  File "/ssd/data01/ysh/test/.venv/lib/python3.10/site-packages/peft/tuners/lora.py", line 565, in forward
    result = F.linear(x, transpose(self.weight, self.fan_in_fan_out), bias=self.bias)
RuntimeError: mat1 and mat2 shapes cannot be multiplied (6x8192 and 1x18874368)

i used A100 80GB * 2
and if i want to using huggingface trainer, how can i use? just change, for train loop to huggingface trainer?

this is so weird, lora_A and B is weight shape is good, but, self.weight.shape is weird.
this looks like, when another devices values is calculated torch.Size([18874368, 1])
self.weight is on cuda:0 and value is not nan and some kind of 4bit things......
qlora is so hard to me 😢

https://github.com/hiyouga/LLaMA-Efficient-Tuning/issues/15
is work for me
pip install -U git+https://github.com/huggingface/peft.git


SecurityProvider: login form: error handling with custom UserProvider

Hi,
This is the code I have with Silex 2: https://gist.github.com/MacDada/517e3e63139ac8a74c5246483e24c9b6
The problem is: whatever ClientId constructor throws, it's shown to the user.
So, for example, if the user doesn't type a client id starting with IL, he/she gets ClientId value must be prefixed with "IL", "foo" given.
IMHO it's not a good idea. What if the object would throw some sensitive information? Like database credentials? Neither website documentation nor phpdocs say that the component would behave like that.
So, I guess I should do this in my UserProvider:
public function loadUserByUsername($username)
{
    try {
        $client = $this->clientRepository->findOneByClientId(
            new ClientId((string) $username)
        );
    } catch (\Exception $ex) {
        throw new UsernameNotFoundException('', 0, $ex);
    }

    if (null === $client) {
        throw new UsernameNotFoundException();
    }

    return new User(
        (string) $client->getClientId(),
        $client->getEncodedPassword(),
        ['ROLE_USER']
    );
}

Which is to catch any exception that "my" code would throw, so that it doesn't get passed to the user.
Is that a common practice? If so, shouldn't it be recommended in the docs?

BTW, if the username (client id) is not passed, I get ClientId value must be prefixed with "IL", "NONE_PROVIDED" given. That's an ugly hack :-P I'd expect null or empty string when none value is provided :-P

\InvalidArgumentException extends \LogicException.

This kind of exception should lead directly to a fix in your code.
http://php.net/manual/en/class.logicexception.php

You shouldn't create an instance of ClientId if you know the "username" is invalid. Checking the username let you create a valid ClientId or throw a CustomUserMessageAuthenticationException.

Closing this issue as there is no more activity.


replaced lambdas with def

Description of changes

Reduced unnecessary complexity. Replaced lambdas to def.

Test plan
tests run successfully. There should be no additional ut-s. Client/calling code for the changed names is not changed.
Documentation Changes

added docstring to module.

Thanks!


compile error with erl_first_files and behaviour

Hi!
I would like to use oserl in my code, with rebar I have no errors, but with rebar3 but I have the follow error:
$ ./rebar3 compile
===> Verifying dependencies...
===> Compiling oserl
===> Compiling /Users/juise/Documents/myapp/_build/default/lib/oserl/src/gen_esme.erl failed
/Users/juise/Documents/myapp/_build/default/lib/oserl/src/gen_esme.erl:31: behaviour gen_esme_session undefined

The erl_first_files option doesn't help:
$ cat rebar.config | grep erl_first_files
{erl_first_files, ["_build/default/lib/oserl/src/gen_esme_session.erl"]}.

Do you have some way for us to reproduce the issue?

I'm clean _build and rebar.lock and re-run ./rebar3 compile compilation goes without errors. Right now unfortunately I can't reproduce error. Should I close issue?

Yes, if it cannot be reproduced, I would close the issue until it can be done so again. Let me know if you encounter further problems and we'll reopen this.


Get Error for speedtest-cli are not Found

Hi, im getting:
auto-speedtest$ ./capture.sh
./capture.sh: 7: ./capture.sh: speedtest-cli: not found
But im having added manual this file from https://github.com/sivel/speedtest-cli/

Im Found the solution you have to ./ in capture.sh for the speedtest-cli


FIX: unbreak the homing tests

What seems to be happening is that computing the fancy string
representation was taking too long and the motor was finishing it's
move.  Or something.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@844ee4a). Click here to learn what that means.
The diff coverage is 100%.

@@            Coverage Diff            @@
##             master     #431   +/-   ##
=========================================
  Coverage          ?   91.38%
=========================================
  Files             ?       48
  Lines             ?     6659
  Branches          ?        0
=========================================
  Hits              ?     6085
  Misses            ?      574
  Partials          ?        0

Impacted Files
Coverage Δ

ophyd/status.py
92.44% <100%> (ø)

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 844ee4a...8b63b0c. Read the comment docs.


fzf usage from acme/missing t cmd file

Hi there.  First, thanks for your blog post on acme, it's probably the best one I've found.
You mention using t cmd mapped to fzf - I can't figure out how to make it work from within win - I get garbage on the screen and it locks up the process.
What's your secret sauce?
(I turned off preview and set colors to bw but I think it's still sending ansi codes for highlighting selected entries which confuses acme)

Ha, I never actually tried running t interactively inside win! 😅
For reference, my t is here. I usually open the project root directory and run t from inside that window, or from its +Errors window once that's up. T isn't interactive in that case but I can 3 any line from its output.

ah, that makes sense now.  win is known for being very tricky with interactive tools.
Thanks!


React hooks

Looks like a really nice project!
I think having a useChaos hook can be really useful and will also won't encapsulate the wrapped component

@EladBezalel I agree, this is a good idea. I'll add it to the roadmap. Thanks for sharing!

@EladBezalel @jchiatt  It seems reasonable because of hooks using everywhere, but I can't imagine how I would implement chaos with hooks in my project. Because with HOC, we can change logic of the whole child component, but can we do this with hook? And will it be clear enough to not write boilerplate condition for render every time?
Honestly, I can't even imagine about using this with renderProps pattern because we don't need any returnable value from chaos


add feature hide-sidebar (WIP), fixes #183

Inspect element shows that Twitter is using some kind of CSS class minification, but there is a way to select the whole sidebar and hide both at once. The downside of this is that it cannot be toggled individually.
I could hide it on the home page, but failing for onRouteChange

fixes #183

Hi @filipekiss @jezdez
would like to hear any suggestion you may have for this

So this targets the new layout? I'm not on that, so I cannot really test this.

yes, this is for the new layout. Only works for the first load and comes back after route change


Round time

Evaluate if we need to perform changes to the Round time, where 90 minutes without extra turns might be not the best solution.

the 90 minute timer without extra turns better for the organizers since round times are more predictable, although i've seen games still go beyond the 90 minute mark by more than 40 minutes due to a combination of deck check where sleeves had to be swapped + a very long last turn.
So all in all, the tournament organizer benefit is kind of limited, and for the players, having the chance to play one more turn after the time runs out, definitely results in less draw % overall.
Not to mention that the potential for stalling is quite bigger when there are no extra turns, since the additional remedy for slow play can't be applied (which would be to remove the extra turns from the player that commited the slow play infraction).
So yeah 90 minutes without extra turns is not so great for players...

this isnt my idea,
but id like to try the idea @fbatista brought to me.
75min + 1 extra turn each + extra turns allowed + game ending on the end step of the turn its on after 15m of calling clock
that would allow decks like najeela turns and tivit seive to have a chance.
as the current 90m no extra turns just smothers these type of decks/gameplans

personally i think playing withouth extra turns immensely decreases the quality of the game for the players since a lot of times you will pass the turn with 40ish minutes on the clock and chances are you don't see another turn (even though attempts maybe have been made no one won the game) meaning you had a lot less time to play for a win and your best plan for the game becomes playing for a draw. I'm not saying getting to a point in a game where the best option is to play for a draw is a bad thing, but having this point come on as early as 45-50 minutes into the game is very very bad for the quality of the format. Extra turns are needed in order to stop this from happening. Since, from what i have seen this 40ish minute statistic is very realistic i would suggest we try a format of 65 minutes game + extra turns.

At the last pirate chest tournament, one of the players had a really nice suggestion.
We should separate the round time, from mulligan time.
Maybe instead of 90 minutes per round, we should have 80 minutes per round and 15min to sit down players and resolve mulligans. This 15min timer could start as soon as the pairings are posted.
This way we insentivise players to show up earlier and start resolving mulligans as soon as possible.

At the last pirate chest tournament, one of the players had a really nice suggestion. We should separate the round time, from mulligan time.
Maybe instead of 90 minutes per round, we should have 80 minutes per round and 15min to sit down players and resolve mulligans. This 15min timer could start as soon as the pairings are posted.
This way we insentivise players to show up earlier and start resolving mulligans as soon as possible.
Edit: this could even be applied with the extra turns rule. Making rounds instaead of being 75min + turns, 15min(seeting, shuffling, mulligan) + 60min(game time) + extra turns.

I like the idea of separating the mulligan time, because it's a best of 1 match (which makes mulligans more important) and it's a 100-card deck (which is harder to shuffle).

At the last pirate chest tournament, one of the players had a really nice suggestion. We should separate the round time, from mulligan time.
Maybe instead of 90 minutes per round, we should have 80 minutes per round and 15min to sit down players and resolve mulligans. This 15min timer could start as soon as the pairings are posted.
This way we insentivise players to show up earlier and start resolving mulligans as soon as possible.
Edit: this could even be applied with the extra turns rule. Making rounds instaead of being 75min + turns, 15min(seeting, shuffling, mulligan) + 60min(game time) + extra turns.

I like the idea of separating the mulligan time, because it's a best of 1 match (which makes mulligans more important) and it's a 100-card deck (which is harder to shuffle).

After some further thought...
Players are already free to make mulligan decision before the clock starts, so technically we would just be formalizing a "hidden" rule, and allocating a specific amount of time for that.
Now this raises a couple of issues:

How would we deal with players that mulligan down to 4, compared with players that kept the first seven ?

Do we expect both of them to spend whole 10 minutes shuffling and making mulligan decisions?
Seems like the pod that kept the first 7 will just be bored waiting for the 10 minute mark to pass by.
At the same time, the pod with players mulligan down to 5 / 4 will be hard pressed to keep because the 10 minutes timer is running out.

What happens if the allocated time for mulligan ends?
One nice thing is that by having a specific timer we could issue tardiness penalties.
In the current system, we CAN already issue slow play penalties for players taking too long to mulligan...

Idea A:

Round time 80 minutes
1 extra turn per player still "alive"
Players have at most 10 minutes to make all the mulligan decisions after the clock starts, otherwise they incur in Tardiness.
Slow play warning has an additional remedy of having the perpetrator skip ALL extra turns granted by the End of Round procedure. (as of now)
Tardiness warning has an additional remedy of having the perpetrator skip their first turn. (as of now)
Each extra turn players take during End of Round is capped at 5 minutes. If the 5 minutes run out, the player simply passes priority on everything until their cleanup step. (5 x 4 = 20 minutes maximum)
Allow for loops that involve extra turns to be presented and executed, and taking an extra turn in the context of a loop doesn't count for the (4) extra turns from the end of round procedure.

Idea B

Same as above except: there is no individual time cap on the extra turns, instead there is a 20 minute total time limit for all the extra turns; The game continues until the end of the current AP's turn, whoever that player is.

Idea C

Same as above, except: the game ends abruptly after the 20 minutes in a draw, no matter what is on the stack.

Pros and cons:

A seems to more evenly distribute the time across players, however, it disregards the time NAPs take during AP's turn.
If we're giving 20 minutes extra time, why not make it 100 minutes total time?
Ending a game abruptly can create feels bad situations where a player might be performing a actions that aren't being shortcut but ultimately lead to a win.

NOTE: The times mentioned above are subject to being adjusted:

60~80 minutes round time.
5~10 minutes mulligan time.
15~20 minutes End of Round extra turns time.

I think we're walking in the right direction with this one, but I feel like we still need to iron out some things.
Personally, and even though we've never done any statistics for this, I feel like most games that go into EoY end as draws anyway. I understand this policy can be quite annoying for players who see a way for them to win if they had the extra turns, but a lot of the time, the extra turns just lead to everyone present waiting 30+ minutes for a result we knew would come: draw.
However: player satisfaction is very important. I would say probably more important than statistics (and that's saying a lot, coming from me!). If the general feeling is that extra turns would be better, then that's what we'll do.
That creates all sorts of problems, however. Extra turns can take a looooooooooong time. Like, 40-minutes long. That's possibly half a round. However, if you cap it, are you really adding extra turns? Say we go with the shared 20 minutes, not the 4*5 minutes. What changed from the regular timer? It's like Fábio was saying: that's just a timer of 100 minutes with extra steps.
I like idea A the best. Yes, it also has problems, and we'll probably need to polish it further in the future. But as of right now, from the ones presented, I feel like it makes the most sense

The linked Pull request introduced the change for the 75 + extra turns with a total 20 minute cap.
@purplejudge you were talking about option A, that has 80 + extra turns of 5 minutes each, and there is a forced "pass the turn" if that time expires.
My perspective is that this has more potential for "feels bad" moments, where you are dealing with a very complex win situation, and you are going as fast as possible, and if opponents just ask you questions to throw you off, they can severely break your thought process and abuse that to make you pass the turn once the 5 minutes are over.
The 75 + turns <= 20 solution for me creates an interesting dynamic:

During regular time, players won't feel they "wont have another turn" even with 20 minutes on the clock, which is a feeling that happens now with the 90 minutes
During extra turns, opponents of the active player will have a HUGE reason to make sure AP plays fast (because they want to play!), and that translates in a bigger motivation to call a judge on slow play.
During the extra turns, the floor judge availability to control slow play is better.


Create a state stream as the action property being accessed

Why
If the state weren't subscribed from anywhere, actions sent to Reactor would be simply ignored.
func bind(reactor: Reactor) {
        reactor.action.onNext(.load)
}

What
Touch state property in action property to ensure the initialization of the state stream

cc @hedjirog

Codecov Report

Merging #49 into master will increase coverage by 0.04%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #49      +/-   ##
==========================================
+ Coverage   91.91%   91.95%   +0.04%
==========================================
  Files           7        7
  Lines         198      199       +1
  Branches       26       26
==========================================
+ Hits          182      183       +1
  Misses         14       14
  Partials        2        2

Impacted Files
Coverage Δ

Sources/ReactorKit/Reactor.swift
79.16% <100%> (+0.29%)
: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 1fd88d7...85cc80d. Read the comment docs.

Oh my god. I have no idea why I haven't try this approach. I really love this. Thanks!
cc. @innocarpe
By the way, there is a generic subclassing issue(#30). I'll fix it after merging this. Thanks again!


Tag service reimplementation

In #46 most of the functionality was removed
We should reenable the functionality and tests, as well as rely on and store Meta

Blocked by #44


Fix tag uploads for junit test

Fix issue reported in #10 that incorrectly sets the tags for the tests. Using the env var DD_TAGS instead of the terminal option --tags saves us having to parse the input.

I guess the README should be updated too to reflect that change?

Why? The interface stays the same the user still needs to do:
  - uses: datadog/junit-upload-github-action@v1
        with:
          api-key: ${{secrets.DD_API_KEY}}
          datadog-site: datad0g.com
          logs: "true"
          files: ./ci/fixtures/
          service: junit-upload-github-action
          env: ci
          tags: "foo:bar,alpha:bravo"

We only changed inside the action how we pass the input tags from the CLI to the env vars.


Version 0.3.3 doesn't work when built without the auto-splitting feature

There is an optional feature auto-splitting, but when building without it, it doesn't work anymore in version 0.3.3 (it worked in 0.3.2). There are no error messages related to livesplit-one in OBS output logs, except that OBS doesn't find the plugin for the sources:
error: Source ID 'livesplit-one' not found
error: Failed to create source 'LiveSplit One'!

It's just not in the list of "Loaded Modules".
I don't know how else to debug that, or if I can test anything to give more information. Enabling the auto-splitting feature fixes it, and everything is working again. But I don't need auto-splitting and it has a lot smaller binaries and shorter build times without the auto-splitting enabled.
OS: Gentoo Linux
OBS-Version: 29.1.3

Hello there, i can reproduce this and it seems like that was introduced in 27d6eb2ff1f7a73e853c641a0e17bbbc1327584e , thank you for reporting this, I will try to take a look at it when i have time.


Set timeout for keeplive

Etcd server will elect new leader, when leader(client) lost all message with etcd server permanently， but origin leader can't know about it.

Thanks for the work, but I think the timeout feature needs more effort and should be available across all APIs.
I won't merge this PR at this time, but thanks for trying the idea and prompt the priority of the problem!

Because my project need this feature, I want know if the code changes by me will work well, Thanks

Hi @LiChengZiMu,
May I get more idea bebind the adding of timeout to keepalive? The refresh() action happens in the background thread and shouldn't have any effect in the main thread.
I cannot see why we need a timeout inside the refresh() operation. Could you give more detail about the iseue that you encountered?
Thanks!

Thanks

我遇到的问题是我需要一个keepailve客户端超时机制，否则我彻底中断网络连接(非重启场景，此时tcp连接不会关闭)

sudo iptables -A OUTPUT -p tcp --dport 2379 -j DROP
sudo iptables -A OUTPUT -p tcp --sport 2379 -j DROP

会导致keepalive消息发送不到etcd，然后leader key超时失效，但是超时的response也没办法被收到，此时一个已经失去主的节点，没办法感知自己失去了主。
当然这个问题或许可以通过设置激进的grpc keepalive策略来解决。

grpc_args.SetInt(GRPC_ARG_KEEPALIVE_TIME_MS, 1000);
grpc_args.SetInt(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 5000);
但是不知道如此设置是否有意料之外的副作用

Ok.
但是keepalive的refresh是一个后台线程在自动执行，你也没办法monitor它超时的response？

Ok.
但是keepalive的refresh是一个后台线程在自动执行，你也没办法monitor它超时的response？

I see. 你是依赖keepalive的那个handler来得知当前的refresh失败了么

A bit better implementation has been added in #135.


feat(index.js): added labels for markdown and preview

Fixes Issue #345  #337
Separate labels for Markdown and Preview have been added.
Screenshot

Please Review and suggest changes @irmerk @Michael-Grover @DianaLease  :)

I want to wait for #315 to be finished to see how that would affect this PR.

With Shadow

Without Shawdow

@irmerk @DianaLease @Michael-Grover I have added the shadow under formatting toolbar and changed the label size to 18px.

You'll need to rebase. to resolve conflicts.

@irmerk Do I still need to rebase it if it does not have merge conflicts?

Yeah there are still conflicts, and we don't want merge commits in the git log, so you'll need to interactive rebase and get rid of that.

Sure @irmerk I will do that :)

@irmerk I will close this PR and create a fresh PR for this.


Getting the parent (case) id of a task description

Request Type
Feature Request
Problem Description
The function find_tasks() returns a list of tasks including their identifying id's. I cannot see a way to find what case that task corresponds to (e.g. a parent_id being equal to the id of the case that owns the task).
Steps to Reproduce

response = api.find_tasks(query={'status':'inProgress'}, sort=['-createdAt'])
The response consists of a list of tasks with the status: inProgress, but there is no link to the cases with these tasks.

Possible Solutions
If the backend can return this information, have the json-response for a task contain the case id (parent_id), e.g.:
{
"_id": "~10128176",
"parent_id": "~23589374",     <-----------------------
"_type": "case_task",
"createdAt":<PHONE_NUMBER>313,
"createdBy": "user",
"description": "description"
"flag": false,
"group": "default",
"id": "~10128176",
"order": 1,
"owner": "user",
"startDate":<PHONE_NUMBER>237,
"status": "InProgress",
"title": "Title",
"updatedAt":<PHONE_NUMBER>316,
"updatedBy": "user"
}
Or maybe there is already a solution to this, but I have not been able to find it.

I was just having the same problem with observables. The UI adds an additional parameter to the equivalent of the "params" structure in "__find_rows". I did a quick bodge to see how it would work & added in exactly what the UI put in:
params = {
"range": attributes.get("range", "all"),
"sort": attributes.get("sort", []),
"nparent": "10"
}
I'm not sure why the value of 10 is used for the nparent, but it did return the parent case under a 'seen' structure within the usual JSON response.

I was just having the same problem with observables. The UI adds an additional parameter to the equivalent of the "params" structure in "__find_rows". I did a quick bodge to see how it would work & added in exactly what the UI put in:
params = { "range": attributes.get("range", "all"), "sort": attributes.get("sort", []), "nparent": "10" }
I'm not sure why the value of 10 is used for the nparent, but it did return the parent case under a 'case' structure within the usual JSON response.

That worked perfectly, thanks for the tip! This should really be a default for the find_tasks/observables functions.


reuse globalThis logic for JSX namespaced custom elements

Suggestion
It seems likely the compiler logic used for globalThis could be reused to support automated global types for custom elements , which is especially annoying and difficult to deal with in jsx
Use Cases
this is the current dev workflow for creating and using custom elements
The custom element
loading-spinner.ts

 class LoadingSpinner extends HTMLElement {
  constructor() {
    super();
  this.innerHTML =  `<div class="loading-spinnner">`
   }
//omitting code for brevity
}

customElements.define('loading-spinner', LoadingSpinner); //<-- could this be added to a global namespace using similar logic as globalThis ?

the type definition
loading-spinner.d.ts
//this is coupled to a specific JSX namespace's types (preact in this case)
//maybe adding a JSX.CustomElementsNamespace to lib.d.ts could be an option as well?

interface LoadingSpinner extends JSX.HTMLAttributes {}

declare namespace JSX {
  interface IntrinsicElements {
    'loading-spinner': LoadingSpinner;
  }
}

Using the custom component
usage in a jsx component
import h from Reactish
let MyComponent = () => {
return (
 <loading-spinner/> //<--so difficult not to get errors here
)
}

I don't think so, but it sounds like you want an easier way to apply global augmentations for registration patterns which are necessary for custom elements, which is a reasonable request.

Ah, was hoping it could be implemented easily by treating the customElement  registry similar to a global var, but yes you summed it up perfectly. There is really a need beyond just custom elements , but i think that is the best target to aim for currently. On a related note, the stencil compiler generates types and writes them to disk on the fly , which may be a useful resource if you decide to pursue this


Imports cleanup (second attempt)

Description

Removed 'index'-files with re-exports (IMO there's no point in exporting the same symbol from different places, that just leads to confusion)
Removed most default exports (exporting actual consts/functions instead)
Slightly reduced duplication in networking.ts and sharedNetworking.ts (this duplication exists because of the legacy code-sharing when this was in a monorepo).
Renamed get/post/put functions to httpGet/httpPost/httpPut to avoid confusing these with saga effects.
Added eslint rules to disallow default exports and re-exports in the future. Names exports are easier to work with, IMO, but let me know if you disagree.

Related Issue(s)

#874 (first attempt)

Verification/QA

Manual functionality testing

[ ] I have tested these changes manually
[ ] Creator of the original issue (or service owner) has been contacted for manual testing (or will be contacted when released in alpha)
[x] No testing done/necessary

Automated tests

[ ] Unit test(s) have been added/updated
[ ] Cypress E2E test(s) have been added/updated
[x] No automatic tests are needed here (no functional changes/additions)
[ ] I want someone to help me make some tests

UU/WCAG (follow these guidelines until we have our own)

[ ] I have tested with a screen reader/keyboard navigation/automated wcag validator
[x] No testing done/necessary (no DOM/visual changes)
[ ] I want someone to help me perform accessibility testing

User documentation @ altinn-studio-docs

[ ] Has been added/updated

[x] No functionality has been changed/added, so no documentation is needed
[ ] I will do that later/have created an issue

Changes/additions to component properties

[ ] Changes are reflected in both src/layout/layout.d.ts and layout.schema.v1.json, and these are all backwards-compatible
[x] No changes made

Support in Altinn Studio

[ ] Issue(s) created for support in Studio

[x] This change/feature does not require any changes to Altinn Studio

Sprint board

[ ] The original issue (or this PR itself) has been added to the Team Apps project and to the current sprint board
[ ] I don't have permissions to do that, please help me out

Labels

[x] I have added a kind/* label to this PR for proper release notes grouping
[ ] I don't have permissions to add labels, please help me out

@bjosttveit @Magnusrm @lassopicasso What do you think? Should we disallow default/unnamed exports, and re-exports (such as export { * } from 'some/other/file')?

@olemartinorg I agree with you to disallow default/unamed exports. Perhaps because I'm used to it, but I find more readable when using: import React, {useState, etc.} from 'react'

@olemartinorg I agree, better to explicitly import what we need 👍


Generic caching for steps

Hi!
I'm writing req_snowflake, and like req_bigquery I am in need of storing the token. But this would be slightly different and cached at a request level (so when a different user/password/role/etc is passed in, it returns a different token).
Maybe there could be a recommended way of caching, I like the way req_bigquery does it, maybe something along those lines?

Hey, thanks for looking into req_bigquery and req_snowflake!
I'm not sure token caching is very Req specific, I'd say the only particular thing is this: it is very important that we fetch from the cache in a request step, so that we always have a fresh token when we make requests. But broadly speaking I'd say you'd want something like Goth: a GenServer that maintains an ets table, you always fetch the token from ets in the caller process, you prefetch the token on server boot, and you periodically fetch new token (a few minutes before it is about to expire).
Does that help at all?

It does, is having it per plugin okay? I don't think many would req plugins require caching intnhis manner, mostly plugins involving authentication to third parties where a login step is required.
Snowflake works like this:
1/ Login using their login endpoint with either Username/Password, Key Pair or OAuth. You are then returned a token and how long it is valid for.
2/ This token can then be used in subsequent steps.
If you then do another step, it should use the cached token, or fallback to reauthing.
Should that GenServer be in the req_snowflake module? Otherwise we could use ets or whatever to store it. This is also per user/password, but IMHO most systems won't have many different users. So won't be a huge amount of memory used.

Yes, I think per plugin is OK. As we add more plugins we can consider extracting and consolidating things but let's not do it too prematurely.
ets is definitely the way to go. The only question is if you want to have one process per user/pass pair, or just one process that maintains multiple pairs. I believe it might be easier to implement the former actually, you just need to start them under dynamic supervisor.

Perfect, thanks!


Measurement uncertaininty question

If I had a dataset where the measurement uncertainty varies across various measurement points, how can I take that into account?
From the execute doctring in OrdinaryKriging

    This is now the method that performs the main kriging calculation.
    Note that currently measurements (i.e., z values) are considered
    'exact'. This means that, when a specified coordinate for interpolation
    is exactly the same as one of the data points, the variogram evaluated
    at the point is forced to be zero. Also, the diagonal of the kriging
    matrix is also always forced to be zero. In forcing the variogram
    evaluated at data points to be zero, we are effectively saying that
    there is no variance at that point (no uncertainty,
    so the value is 'exact').

    In the future, the code may include an extra 'exact_values' boolean
    flag that can be adjusted to specify whether to treat the measurements
    as 'exact'. Setting the flag to false would indicate that the
    variogram should not be forced to be zero at zero distance
    (i.e., when evaluated at data points). Instead, the uncertainty in
    the point will be equal to the nugget. This would mean that the
    diagonal of the kriging matrix would be set to
    the nugget instead of to zero.

Questions:

We may be able to set the diagonal of the kriging matrix to unequal values of the measurement uncertainity. What does this imply to the nugget parameter of the variogram estimated?
What happens in the case where we supply the variogram parameters, but specify unequal values in the diagonal of the kriging matrix?

If I had a dataset where the measurement uncertainty varies across various measurement points, how can I take that into account?

I am not sure, and haven't looked at the underlying math for some time. Hoping @bsmurphy would know the answer.
I imagine, supporting user provided weights (sample dependent) could be a way to specify sample uncertainty but again I'm not sure what's the convention for this in other krigging software..

I've been thinking about this, and to my knowledge taking into account heterogeneous data errors (or even a specific uniform error) isn't clearly defined in the usual math behind kriging. I don't think putting the error values on the diagonal of the kriging matrix is the right way to handle this (although I could be wrong). Also not sure how to implement data weighting, although I need to think about that more. Seems like some kind of Monte Carlo thing might in fact be the best way go -- run a bunch of kriging realizations with data randomly perturbed within the error bars and then look at the spread of the resulting kriged values.
I need to think about this more tho, and do some research/reading. One way or another, handling uncertainty in measurements would be great for v2.


Test transaction is not displayed in Explorer

Respected developers
I have made a transaction in the testnet. The transaction worked, but it is not displayed in Explorer.
Error message:
The requested txid c4034a8b28705a06de38dfa1062b5a7978f0afcbc6efb53007557080d3411d35v could not be found, it is most likely still being confirmed, please try again in a few minutes.
https://testnet.defichain.io/#/DFI/testnet/tx/c4034a8b28705a06de38dfa1062b5a7978f0afcbc6efb53007557080d3411d35v

Hi @RobinTorque , thanks for your feedback, please give us time to investigate this.

Hi @RobinTorque , update v2.3.1 is out, I'll be closing this issue for now, if the issue occurs again please take note of the error & send logs. Thank you!


fix: prettier snowpack/src/build dir

Changes

This line ignore all build directories, includes snowpack/src/build which shouldn't be exclude.
https://github.com/snowpackjs/snowpack/blob/df3919802f85278722ad2b9fb252959d0c2a02c5/.prettierignore#L3
So we need to add !snowpack/** to .prettierignore too so that snowpack/src/build directory can be formated too.
Refs: https://github.com/snowpackjs/snowpack/commit/690d3b1d6dae52cb212c1195b6ebeadd531f8820#r46029320
Testing

Format.
Docs

Format.

LGTM! Thanks for the PR

LGTM! Thanks for the PR


Implement "beta" experiment

Study cross-correlation between stocks, and most importantly, correlations with indexes. In particular:

Model a stock's log-profit P as P = beta*I + R, where I is the log-profit of some reference index, R is a random variable, and beta is a constant factor minimizing R's standard deviation.
Study beta:

How steady is it across time for individual stocks? Can it be reasonably used in modeling?
What is the sample error of measuring beta? Test on synthetic data.

Study R:

What is R's distribution? Is it also Student's t? What's the parameter a?
How large is its contribution? Compare MAD(R) with MAD(P).
How Rs of different stocks are correlated? Can we assume their independence for modeling portfolios?

First, we derive the formula for beta. If we model P = beta * I + R, then:
Var(R) = Var(P - beta*I) = Var(P) + beta^2 *Var(I) - 2*b*Cov(P, I)

where Cov(X, Y) = E[(X-E[X])*(Y-E[Y])] is covariance.
This is a quadratic equation over beta, and its minimum is at the point of zero derivative:
d(Var(R)) / d(beta) = 2*beta*Var(I) - 2*Cov(P, I) = 0
b = Cov(P, I) / Var(I)

which is precisely the definition of beta as used in trading. And now we know where it comes from.
Moreover, we know that beta is only half the story. The other half is R, its distribution, mean and variance. The latter two we can readily derive:
E[R] = E[P] - beta*E[I]
Var(R) = Var(P) + (Cov(P, I) / Var(I))^2 * Var(I) - 2 * Cov(P, I) / Var(I) * Cov(P, I)
  = Var(X) - Cov(X, Y)^2 / Var(I)

In particular, it's obvious that for any beta != 0, we have Var(R) < Var(P). Which, of course, how it should be, since Var(R) = Var(X) when beta=0, and the minimum can only be smaller.

Quick observations so far, with NASDAQ Composite (^IXIC) as the reference:

Beta varies not that much: 90% are in [0.125..1.46] with mean 0.76 for liquid stocks (vol > $1M).
The distribution of R is the same as the general log-profits P, that is, Student's t distribution with alpha~=3.0.
MAD[R]/MAD[P] 90% interval is [0.8..1.0], and Sigma[R]/Sigma[P] - [0.825..0.997], suggesting that stocks generally don't follow the index that closely.
Mean of R seems smaller than mean of P in general, but this needs to be compared ticker by ticker, and relative mean didn't make sense. TBD.

To do next:

Find out how Rs from different stocks correlate. Compute the histogram of pairwise correlations.
Find out if beta and/or E[R] predicts performance relative to the index. E.g. compute the metrics for N samples, then measure performance in the subsequent K samples. Plot a scatterplot of the results.

The distribution of R cross-correlations for the liquid stocks has a mean of 0.038 and 90% interval of [-0.07..0.18], which is encouraging as the numbers are not very large. The sample has 10,262 tickers and 2,5121,390 log-profit samples. Note, that not all tickers will intersect, since there are usually 7-8K tickers listed at any given point in time.
Moreover, the distribution of synthetic R cross-correlations for 5,000 tickers each of 2,500 samples  has a mean very close to 0 with the 90% range [-0.035..0.035]. This gives us an underapproximation of the confidence interval, which is 3x as small as in the experiment.
However, all synthetic correlations are computed over 2,500 samples, while in the experiment the lengths vary. Therefore, it would be useful to find out the actual distribution of sequence lengths and perhaps generate sequences of random length from a similar distribution for a more accurate confidence interval estimation.

To estimate the stability of beta over time, for each ticker compute beta[t-n]/beta[t] (option: do it for all available t), then add it as a point to a histogram. The expected value should be 1.0.

The ratio beta[t-n]/beta[t] proved to be too noisy and not representative, especially (I'm guessing) for beta close to 0. I need to find a better measure of stability and/or predictiveness of beta. Or, in fact, stability of any statistic - this could be useful for many other parameters.
Let's assume a statistic s[t] computed over a window w (that is, over log-profits in [t-w+1..t]). The null hypothesis is that s is constant for a given ticker over time, but may be different for different tickers.

In fact, we don't need to normalize the entire series; it is sufficient to compute (beta1-beta2) / beta, still ignoring tickers with too small an average beta.


Is the higher library compatible with pytorch's distributed RPC?

ref: https://pytorch.org/tutorials/intermediate/rpc_tutorial.html

crosspsoted: https://discuss.pytorch.org/t/is-the-higher-level-library-for-meta-learning-compatible-with-pytorchs-distributed-libraries/112753

It is not, as DDP does a bunch of copying and we can't track or monkeypatch this behaviour, and therefore can't track higher order gradients.
We're working to support higher's functionality within core pytorch, but can't comment on timelines. This sort of aspect will hopefully be catered for. Tagging @albanD for visibility.

It is not, as DDP does a bunch of copying and we can't track or monkeypatch this behaviour, and therefore can't track higher order gradients.

@egrefen I am not asking about DDP in this issue. I am asking about the distributed autograd and RPC framework https://pytorch.org/docs/stable/rpc.html.
I understand from your comments it does not work with DDP. But does it work with the distributed RPC & autograd framework? My understanding is that they are not the same.

Apologies for the hasty reply.

Apologies for the hasty reply. I think the answer is likely no, because I don't think we can take gradients of gradients across graphs including RPC calls. Have you tried doing it? What happened?

unfortunately, my current code does not quite run yet , so I was inquiring because I realized it might not even work even if I got it to work, hence my question. If I decide to try it I am happy to share my findings here.
Probably the only way to debug this is to implement two version, a serial and a parallel and make sure both get the same gradients/update etc.

Probably the only way to debug this is to implement two version, a serial and a parallel and make sure both get the same gradients/update etc.

That's indeed the principled way to do this, but to be honest I expect that it will just crash.


Extract Zine from Book

Currently
Book and Zine are one table and model. Code references look like Book.book.find_by … and Book.zine.find_by …. In hindsight, I don't love that I (prematurely) combined Book and Zine the two.
Requested

[x] Create a Zine model
[x] Create a zines table with the exact same schema as books
[x] Write stand alone script that moves all zines in the books table over to the zines table
[ ] Change references of Book.book to just Book
[ ] Change references of book.book to just book
[x] Change references of Book.zine to just Zine
[x] Change references of book.zine to just zine

Leaving Book.book and book.book because if changed, that would reveal the zine records still in books table.
After zine records in books table are deleted, this code should be changed.

This script will copy zines from books table to zines table:
https://gist.github.com/mofo37/6d8c116a6e4852759ff765b4512feacb


Only ConstantConditions in CI

How to have just one check in CI? When I implemented the recommended code from the readme file, it starts to download 480mb. How can we avoid this?

IntelliJ IDEA inspections are not packaged as standalone libraries; all inspections are part of the same IntelliJ IDEA distribution, and the download size doesn't depend on the number of enabled checks. It's not really feasible to change this at this time.


Multiple units with the same name

when scanning github.com/TryGhost/Ghost
srclib config
SCANNERS (1)
 - sourcegraph.com/sourcegraph/srclib-javascript scan-commonjs

SOURCE UNITS (3)
 - CommonJSPackage: asset-delivery
 - CommonJSPackage: ghost
 - CommonJSPackage: ghost

CONFIG PROPERTIES (0)

closed via #49


Request: Support pgx VectorCodec string encoding

Hey there!
Just wondering if you'd be open to supporting pgx VectorCodec string encoding? We have a use-case where we're running a CopyFrom using a csv as a source, meaning that the rowSrc argument that gets passed into the pgx.Tx.CopyFrom contains all strings.
Currently we're getting the error -
ERROR: COPY from stdin failed: unable to encode \"[0.002...]\" into binary format for vector (OID 16576): cannot find encode plan (SQLSTATE 57014)

We wrote a custom implementation that works that looks like the following:
func (VectorCodec) PlanEncode(_ *pgtype.Map, _ uint32, format int16, _ any) pgtype.EncodePlan {
	if format != pgx.BinaryFormatCode {
		return nil
	}

	return encodePlanVectorCodecBinary{}
}

func (encodePlanVectorCodecBinary) Encode(value any, buf []byte) ([]byte, error) {
	var vector pgvector.Vector

	switch v := value.(type) {
	case string:
		if err := vector.Parse(v); err != nil {
			return nil, err
		}
	case pgvector.Vector:
		vector = v
	default:
		return nil, fmt.Errorf("invalid encode type: %T", v)
	}

	return vector.EncodeBinary(buf)
}

Thank you for the great work on the library!

Hi @ohheydom, thanks for reporting! Addressed in the commit above (adding support for the text format to PlanScan handles it automatically).


Doesn't work when setting the src

Event triggers on initial  render but not if subsequently the src is set multiple times through javascript to new URL. I would expect it to trigger the event every time the src is changed.

I would expect it to trigger the event every time the src is changed.

Sorry! This is not how imagesLoaded was designed to work. You can build your own solution to track that sort of change, listening for load or error event.

On load is not reliable for cached images and error event is not appropriate if there is no error. That's the whole reason we needed an imagesloaded library to begin with. So neither are a good solution. Hope you can add this ability since the library seems incomplete without it.


Remove unit_name from processing unit serialization

Description:
Remove unit_name field from processing unit serialization since it's already persisted in the metadata when the ProcessingUnit.persist_metadata method is called

Codecov Report

Merging #655 into develop will increase coverage by <.01%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           develop     #655      +/-   ##
===========================================
+ Coverage    89.13%   89.14%   +<.01%
===========================================
  Files           59       59
  Lines         3294     3297       +3
  Branches       626      626
===========================================
+ Hits          2936     2939       +3
  Misses         258      258
  Partials       100      100


Installing more than one replica doesn't work

I am trying to install using helm chart on DigitalOcean, but I believe the same would happen on GCS or AWS since the default storageclass on these providers doesn't support ReadWriteMany access mode.
When I tried installing the chart using replicaCount: 2, I see that the first pod is created and running as expected and the second one is stuck in the status ContainerCreating
Following the is the events when I execute describe command on the pod:
Events:
  Type     Reason              Age    From                     Message
  ----     ------              ----   ----                     -------
  Normal   Scheduled           4m52s  default-scheduler        Successfully assigned dega/meili-meilisearch-1 to pool-8gb4cpu-3stpq
  Warning  FailedAttachVolume  4m52s  attachdetach-controller  Multi-Attach error for volume "pvc-f256af54-5cb1-451c-86f8-d03ba4861014" Volume is already used by pod(s) meili-meilisearch-0
  Warning  FailedMount         2m49s  kubelet                  Unable to attach or mount volumes: unmounted volumes=[data], unattached volumes=[meili-meilisearch-token-zd9rl data]: timed out waiting for the condition
  Warning  FailedMount         33s    kubelet                  Unable to attach or mount volumes: unmounted volumes=[data], unattached volumes=[data meili-meilisearch-token-zd9rl]: timed out waiting for the condition

Hey @deshetti,
Indeed, this seems to be an issue, but as for now MeiliSearch itself wouldn't support it either, since it desn't allow reading from the same database by several instances. The core team is workin on a high availability and consensus feature that will let us create several instances for replication and consistency. This should be available in the next few months (can't tell what would be the eta exactly), but as it should be a consensus algorythm instances would own their own isolated storage and at the same time data would be syncronised in different instances of a cluster, fix this problem (I think). WDYT?

Hi guys! I'm also expecting a real-time synchronization feature for mutiple databases. This would be a lot better to use in production than using snapshots/dumps.

Hi @simonxxz
This is in MeiliSearch's roadmap indeed, but as for now, the engine is not capable of providing replication and a distributed deployment. If this feature is important for you I invite you to give it a little upvote in the roadmap, but be reassured that the team is working on that :)
High Availability on our roadmap

Is there any update on this topic or an eta?

Hi @laurenz-glueck,
Thanks for asking. The team has planned to move forward on the issue around the end of the year but it is possible that it will change. Nevertheless, it is still a goal that we would really like to achieve.

Closing due to lack of answer, feel free to re-open if needed of course 🙂

Information update:
For now, Meilisearch doesn't manage high availability, and for the moment the team doesn't work on it anymore. I close this topic until the subject is put back in the roadmap.


Unimplemented OBJ format statement 'Tf' on line 'Tf 1 1 1' and not show 3D picture

when i run this code:
`import pywavefront
from pywavefront import visualization
obj = pywavefront.Wavefront('0421-1.obj')
visualization.draw(obj)`
i meet this error:
Unimplemented OBJ format statement 'Tf' on line 'Tf 1 1 1'
i delete "Tf 1 1 1" in .mtl file. it can run. but it cant show the 3D picture in the window

can you share this object/mtl file? The Unimplemented message is really just a warning. It might be that your object is drawing outside the camera. We need to add some kind of bounding box calculations to automatically place it in a reasonable spot.

If you get actual errors you are loading the object with strict=True.
Closing this issue for now. Be free to re-open or create a new issue in the future.


fixed error with setting DateTime property

fixed the following error: System.ArgumentException Invalid Primitive Type System.DateTime. Consider using CodeObjectCreateExpression

Hi,
Thank you for this change.  I'm going to run this through to see how it looks.  If it's ok, I'll pull it in.
Thanks,
Ryan

No problem! Nice work on this by the way, this code worked great for generating the document templates I needed for another project I'm working on.
Mike

Thanks for your kind words.
Looks ok.  Can you do 2 quick things if possible?

Add a comment on the new section saying something to the effect of DateTime values need to be handled differently than other simple types, just so it is quick to understand what is going on in there.
Add a note to the change log in the fixed section of the upcoming 0.5.0-beta release.  Feel free to add a note saying "fixed by vtgrady2k" if you like

If not, I can do it but it would help me out if you can put those items in there.

Sure thing, you go it.

On Feb 22, 2022, at 1:08 PM, Ryan Boggs @.***> wrote:
Thanks for your kind words.
Looks ok. Can you do 2 quick things if possible?
Add a comment on the new section saying something to the effect of DateTime values need to be handled differently than other simple types, just so it is quick to understand what is going on in there.
Add a note to the change log in the fixed section of the upcoming 0.5.0-beta release. Feel free to add a note saying "fixed by vtgrady2k" if you like
If not, I can do it but it would help me out if you can put those items in there.
—
Reply to this email directly, view it on GitHub https://github.com/rmboggs/Serialize.OpenXml.CodeGen/pull/5#issuecomment-1048072986, or unsubscribe https://github.com/notifications/unsubscribe-auth/AXYSZMKCKJOXMCKHOO3T4L3U4PGLRANCNFSM5OP2FJTQ.
You are receiving this because you authored the thread.

Perfect, thank you for your help. :)


Automated testing

Hey @avidraghav , how did you set up automated testing so that whenever someone commits to your code, it runs those tests and generates the report? Could you explain it step by step, or if you have any resources on this? Is there anything else I should know before setting up a CI/CD pipeline?

It took me some iterations to make the required CI/CD pipeline. I followed a blog/tutorial from RayWenderlich way back  and can't remember exactly the author. But you may search from the same website.

closing it for now


[Bug] Enabling breaks pf2e chat card buttons

Tested with no other modules active. https://i.imgur.com/MOUEib1.png https://i.imgur.com/q35Ktwc.png none of these buttons function with this module active. Too bad, because I would very much like to use it 😞

I will give it a test in a pathfinder world.  I don't play pathfinder, so I never tested it with that system

I've just pushed an update that fixes the issue.  An update of the module should get things cleared up

Can confirm, that fixed it, ty 😊


minSdkVersion why 21

Actually minSdkVersion is 23. The reason is that it covers nearly 94 % of devices. But I can decrease it if you need to.

hi @Dzmitry-Lakisau  can you replace minSdkVersion 21 ?

Hi, @Dzmitry-Lakisau
if i will change your minSdkVersion 23 to 21 ? Do i get any error or bug about that ?
Thanks.