Better support for typical email confirmation flows

First off - thanks for building and supporting this package!
I struggled a bit to implement a reasonable email confirmation flow. I documented my eventual solution in the wiki
What I'd like to happen is this:

User signs up
User sees a page that says we've sent a confirmation email to<EMAIL_ADDRESS>User can still access some parts of the site before confirmation, but others are blocked off

Ideally, I'd be able to implement this flow just by not using confirm.Middleware, and creating my own middleware. But AB registers its confirm checks in the confirm.Init method, making it impossible to override.
Two things that would need to change:

AB should still start a session upon registration even if confirm is enabled
AB should only check user.GetConfirmed() == true in the middleware (which it does now) and not as part of a Before(authboss.EventAuth) check

I think the best course of action here is to create a second confirm module that works as you're specifying. That should allow the flexibility we need for this functionality.

The solution I documented in the wiki is working well, so I'll probably stick with that for now.
I'd suggest leaving this open, maybe for the next major version. The needs here are pretty standard for a typical email confirmation flow. Namely:

rendering a confirmation page with something like an email has been sent to<EMAIL_ADDRESS>resending the confirmation email if the user clicks a link
showing the user as logged in but unconfirmed
restricting access to parts of the site based on confirm status

@rbren I think that you're making an assumption that all sites want to allow partial access to unconfirmed users. In the main site that I use authboss for as an example, this is not the case. Users must be fully confirmed before they have access to anything.
Given that the requirements are different there's three courses of action:

We add configuration to the current confirm module to be able to work in both ways.
We write a new confirm module to support the workflow you're talking about as a drop-in replacement.
We continue to have people implement it as you have done so in the wiki.

The one option that is not on the table is to remove that which is there today and the technically more secure option in favor of the workflow that you're suggesting, since it is in use currently and working as desired. I'm not sure given what you've written thus far if you're suggesting this course of action or not, but I just wanted to explicitly call it out as not desirable.
That said it's definitely a fine idea as you're right many sites could use that sort of a workflow. It could find a place in authboss. Authboss is currently in maintenance mode so I won't be adding any new features (like this) but if there are willing contributors it's definitely possible.


Enable source-map option in CSS build

Why
As we build the CSS with no-source-map option, the source-map it could help to debug the issue.
Related discussion: https://github.com/nimblehq/rails-templates/pull/405/files#r1232024858
Who Benefits?
Developer

If source-map is enabled with embed-sources key, it points to correct .scss. Only downside is that it will generate large map files as mentioned here
Enabling source-map without embedding sources tries to point at .scss files by relative path, and as that path is not publicly accessible, it returns 404.
Should build:css be changed like below?
    "build:css": "sass app/assets/stylesheets/application.scss app/assets/builds/application.css --embed-sources --load-path=node_modules"

@malparty @tyrro

@mosharaf13 , that's interesting, could you compare these three options in terms of the bundled size? I am curious to see how these three options affect the final bundle size.

--no-source-map(current)
--embed-sources
--source-map-urls=absolute

du -sh app/assets/builds returns:
du -sh app/assets/builds returns:
du -sh app/assets/builds returns:

Thanks for the results!
It seems  --source-map-urls=absolute doesn't make any increase in the final bundled size, so we can go with that one! Great!


transactions.adoc small grammar improvement, remove redundant line

[x] You have read the Spring Data contribution guidelines.
[x] You use the code formatters provided here and have them applied to your changes. Don’t submit any formatting related changes.
[ ] You submit test cases (unit or integration tests) that back your changes.
[ ] You added yourself as author in the headers of the classes you touched. Amend the date range in the Apache license header if needed. For new types, add the license header (copy from another file and set the current year only).

Thanks, that's merged.


Best practice for deploying a databases?

How you advise to unroll DB is better? Own container for each database? Or is it possible to have several databases in one container?

Postgres is a database management system so it can have multiple databases https://www.postgresql.org/docs/current/sql-createdatabase.html
For questions like these you might try asking over at the Docker Community Forums, Docker Community Slack, or Stack Overflow. Since these repos aren't really a user-help forum


Release notes missing for latest releases

And no CHANGELOG either :stuck_out_tongue_winking_eye:

@kylef ping — I'm willing to upgrade but don't know if that'll break the API or if I got new features I could adopt (like subcommands summary/description :wink:)

This is done: https://github.com/kylef/Commander/releases/tag/0.3.0


Black screen issue with screen protector

When we try to setting self.view = ScreenShieldView.create() then the entire screen is changed to black even before taking screenshot

When we try to setting self.view = ScreenShieldView.create() then the entire screen is changed to black even before taking screenshot

Did you use it in a UIViewControllers loadView` function or some where else?
If you can tell me the version of system which this problem appear, it will be helpful.

I tried like this

d
Xcode 13
iOS 15

I tried like this
Xcode 13 iOS 15

I see.
If you want to change the root view of a controller, you should do it like this, not in viewDidLoad :
import UIKit
import RyukieSwifty

class ViewController: UIViewController {
    override func loadView() {
        view = ScreenShieldView.create()
    }
    ...
}

Still facing the same black screen issue even with your sample demo project also.

The example project has been updated.
You can see ScreenShieldViewController.swift for more detail.
It works well.


Validation for a webextension never completes with the unlisted option selected

steps to reproduce:

Load https://addons-dev.allizom.org/en-US/developers/addon/submit/2
Select the checkbox 'Do not list my add-on on this site (beta)'
Upload a valid webextension file like https://www.dropbox.com/s/at0pdlxpdt1m249/sort-test.xpi?dl=0
Wait for validation to complete

expected behavior:
Validator throws an error saying "Webextensions cannot be unlisted"
##actual behavior:
Validation never completes.

I can't reproduce the issue, even if I check the 'Do not list my add-on on this site (beta)' checkbox, the validation completes (we do accept unlisted WebExtensions), with the add-on you provided:

I'm closing this bug for now, please reopen if you can confirm it still fails for you.

I've checked the webextension above in AMO-dev using FF42(Win 7), and the submission was with success even if I've checked the "unlisted" option.
I've also tried adding a new version, more new files, all with success.
Please see the screenshot:

The issue is happening again for listed/unlisted add-ons.
I am on AMO-dev and trying to submit a web-extension but the validation process does not complete.
Please see the screenshot:

Attaching the used add-on. (I've changed the .xpi extension to zip, to be able to upload it)
sort-test-webext.zip

I'm pretty sure this is related to the issues we've been experiencing while uploading add-ons, not webextensions.
Please reopen if I'm wrong.


[Feature Request]: Make Chroma types available as top-level imports (E.g. from chromadb import Collection)

Describe the problem
Chroma types in the Python package aren't exported at the top-level.
E.g. to access Collection I have to import it like so: from chromadb.api.models.Collection import Collection
rather than just: from chromadb import Collection
Describe the proposed solution
Re-export all types at the top-level.
Alternatives considered
No response
Importance
would make my life easier
Additional Information
No response

@ZephyrBlu i agree this is a usability improvement, are you using Chroma types inside your own application code?

I'm doing rough prototyping and exploration right now so my code is in flux a lot. I was previously using Chroma types because I was passing around Chroma objects.
Currently I'm encapsulating Chroma functionality inside it's own class and functions so this is less of a concern. I've abstracted the database, embeddings, ranking, etc so it's easy for me to implement other options and swap pieces out.
From my perspective using Chroma types throughout a code base wouldn't be uncommon though, especially if Chroma is deeply integrated.
For example, I may want to pass around a QueryResult between functions and type the parameter containing it to ensure I'm accessing valid properties.

We should do this!

Happy to take this.

Might make sense to close this now that you've merged @HammadB


Begin linting

I thought I'd start just with glkote.js to see how you think about it.
Run this to try the lint:
npm install
npx eslint glkote.js

The first commit fixes a few footguns and normalises a couple of things to your style, namely quotes and semicolons. We can't enable a linting rule for indents because I couldn't find a way to allow the giant toplevel function to have 0 indent. In the future once we switch to ES modules, then we could switch to true classes, and push the helper functions outside, and then we could start checking the indents.
The second commit replaces var with let or const.

Merged most of these changes. Thanks!
The declarations of GlkOte and GlkOteClass have to use var because of the way Quixe loads them.

Is now a good time to re-indent everything to 4 spaces? My Emacs hasn't been comfortable with 2 for years.

Up to you. The problem wasn't the number of spaces, but that it expected everything inside GlkOteClass to be indented.


Why the predictions result are always the same?

I uploaded about 100 (96x96) hand writing digit photos on teachable machine, trained it and downloaded the model.
Then, I tested it. However, the predictions are always the same.
This is how I read the image file for the prediction demo

window.addEventListener('DOMContentLoaded', (event) => {
     const modelURL = "model/model.json";
     const metadataURL = "model/metadata.json";

     document.querySelector("#upload-img").addEventListener('change', async(e)=>{
        const file = e.target.files[0];

        // load model
        const model = await tmImage.load(modelURL, metadataURL);

        // create image obj
        const image = new Image();
        image.src = URL.createObjectURL(file);

        // show preview
        document.querySelector('.preview').src = URL.createObjectURL(file);

        const predictions = await model.predict(image);
        console.log(predictions)
     })

  })

I also made a sample repo here, including the digit photos.
Can someone help me to check what's wrong with it? Thanks.

Btw, this is not English numbers, they are Shan language numbers.

Just a few changes, it works. Thanks @HalfdanJ
        // create image obj
        const image = new Image();
        image.onload = async () => {
            const predictions = await model.predict(image)
            console.log(predictions);
       }
       image.src = URL.createObjectURL(file);


Nupyviz

This branch contains the new plotting class (currently named plotting.py, feel free to change/recommend something else!). In addition, some bug fixes to the plotting functions themselves were applied. sygma.py and omega.py have become considerably shorter at the expense of quite a large plotting.py file.

Okay, the conflicts are now resolved on this pull request as well, and it can be merged. It looks like there's a lot to take in here, since the new class is 3500 lines long, but there's very little new as it's pretty much just cut and paste from sygma/omega with a few changes and bug fixes.


Bump version.rb to 0.9.1

For 0.9.1 release. Includes:

Bug fix for delete action on vmpooler and nspooler #58

Status
Ready for Merge
Todos

[N/A] Tests
[N/A] Documentation

Reviewers
@demophoon
@briancain

:+1: Merged and released. :+1:

Thanks! ❤


Feature request: Browser share LocalSend APK automatically

Is your feature request related to a problem? Please describe.
LocalSend user has to share the LocalSend APK manually when starting a LocalSend web server.
Describe the solution you'd like
When a LocalSend browser share server is started, it will always share the LocalSend APK file for others to download and install the LocalSend APK if they wish to.
Describe alternatives you've considered
No response
Additional context
No response

Unfortunately, APK sharing is still not mature. This may work when you install the apk directly or via F-Droid. But if you install LocalSend from Google Play Store, then it should not work as the APK and the resources are stored in different locations (aab is used here).


bug: docker compose up - db container permissions issue failing to run the container.

Describe the bug
Running docker compose up command throw error for permission for /var/lib/postgresql/data.
To Reproduce
Steps to reproduce the behavior:

clone the repo
run the command docker compose up

Expected behavior
Container image pull, run the db and cms-docker containers but db container failed to start.
Screenshots or GIFs

Info (please complete the following information):

Windows 11
docker desktop 4.28

PR for the patch of issue : https://github.com/code100x/cms/pull/371
@rituraj00  @hkirat


[FIX ATTACHED] Not working example on Iterators tutorial - SimpleIter

Description
The tutorial at https://mxnet.incubator.apache.org/tutorials/basic/data.html that can be downloaded as iPython doens't work, probably due to outdated code. In particular, the code for the SimpleIter class returns DataDesc object with provide_data and provide_labelfields always empty.
This iterator breaks the fit function when we try to train the simple MLP provided.
Environment info (Required)
----------Python Info----------
Version      : 3.5.2
Compiler     : GCC 5.4.0 20160609
Build        : ('default', 'Sep 14 2017 22:51:06')
Arch         : ('64bit', 'ELF')
------------Pip Info-----------
Version      : 9.0.1
Directory    : /home/ai_ja_nai/pischool/mxnet/venv3/local/lib/python3.5/site-packages/pip
----------MXNet Info-----------
Version      : 0.12.1
Directory    : /home/ai_ja_nai/pischool/mxnet/venv3/local/lib/python3.5/site-packages/mxnet
Commit Hash   : e0c7906693f0c79b0ce34a4d777c26a6bf1903c1
----------System Info----------
Platform     : Linux-4.4.0-98-generic-x86_64-with-Ubuntu-16.04-xenial
system       : Linux
node         : aiMacBookPro
release      : 4.4.0-98-generic
version      : #121-Ubuntu SMP Tue Oct 10 14:24:03 UTC 2017
----------Hardware Info----------
machine      : x86_64
processor    : x86_64
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 69
Model name:            Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz
Stepping:              1
CPU MHz:               2900.531
CPU max MHz:           2900,0000
CPU min MHz:           800,0000
BogoMIPS:              4800.02
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts
----------Network Test----------
Setting timeout: 10
Timing for Gluon Tutorial(en): http://gluon.mxnet.io, DNS: 0.0745 sec, LOAD: 0.1277 sec.
Timing for Gluon Tutorial(cn): https://zh.gluon.ai, DNS: 0.1750 sec, LOAD: 4.3842 sec.
Timing for FashionMNIST: https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/fashion-mnist/train-labels-idx1-ubyte.gz, DNS: 0.0590 sec, LOAD: 0.6070 sec.
Timing for Conda: https://repo.continuum.io/pkgs/free/, DNS: 0.0557 sec, LOAD: 0.3190 sec.
Timing for PYPI: https://pypi.python.org/pypi/pip, DNS: 0.0468 sec, LOAD: 0.1626 sec.
Timing for MXNet: https://github.com/apache/incubator-mxnet, DNS: 0.0343 sec, LOAD: 0.8834 sec.

Package used (Python/R/Scala/Julia):
I'm using Python
Error Message:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-40-a2ae3e4b88e5> in <module>()
      9
     10 mod = mx.mod.Module(symbol=net)
---> 11 mod.fit(data_iter, num_epoch=5)

~/pischool/mxnet/venv3/local/lib/python3.5/site-packages/mxnet/module/base_module.py in fit(self, train_data, eval_data, eval_metric, epoch_end_callback, batch_end_callback, kvstore, optimizer, optimizer_params, eval_end_callback, eval_batch_end_callback, initializer, arg_params, aux_params, allow_missing, force_rebind, force_init, begin_epoch, num_epoch, validation_metric, monitor)
    485                 if monitor is not None:
    486                     monitor.tic()
--> 487                 self.forward_backward(data_batch)
    488                 self.update()
    489                 try:

~/pischool/mxnet/venv3/local/lib/python3.5/site-packages/mxnet/module/base_module.py in forward_backward(self, data_batch)
    189     def forward_backward(self, data_batch):
    190         """A convenient function that calls both ``forward`` and ``backward``."""
--> 191         self.forward(data_batch, is_train=True)
    192         self.backward()
    193

~/pischool/mxnet/venv3/local/lib/python3.5/site-packages/mxnet/module/module.py in forward(self, data_batch, is_train)
    592                 new_lshape = None
    593
--> 594             self.reshape(new_dshape, new_lshape)
    595
    596         self._exec_group.forward(data_batch, is_train)

~/pischool/mxnet/venv3/local/lib/python3.5/site-packages/mxnet/module/module.py in reshape(self, data_shapes, label_shapes)
    454         assert self.binded
    455         self._data_shapes, self._label_shapes = _parse_data_desc(
--> 456             self.data_names, self.label_names, data_shapes, label_shapes)
    457
    458         self._exec_group.reshape(self._data_shapes, self._label_shapes)

~/pischool/mxnet/venv3/local/lib/python3.5/site-packages/mxnet/module/base_module.py in _parse_data_desc(data_names, label_names, data_shapes, label_shapes)
     69     """parse data_attrs into DataDesc format and check that names match"""
     70     data_shapes = [x if isinstance(x, DataDesc) else DataDesc(*x) for x in data_shapes]
---> 71     _check_names_match(data_names, data_shapes, 'data', True)
     72     if label_shapes is not None:
     73         label_shapes = [x if isinstance(x, DataDesc) else DataDesc(*x) for x in label_shapes]

~/pischool/mxnet/venv3/local/lib/python3.5/site-packages/mxnet/module/base_module.py in _check_names_match(data_names, data_shapes, name, throw)
     61             name, name, str(data_shapes), str(data_names))
     62         if throw:
---> 63             raise ValueError(msg)
     64         else:
     65             warnings.warn(msg)

ValueError: Data provided by data_shapes don't match names specified by data_names ([] vs. ['data'])

Minimum reproducible example
During the tutorial at https://mxnet.incubator.apache.org/tutorials/basic/data.ipynb, try to execute the cell 40 containing the following code:
n = 32
data_iter = SimpleIter(['data'], [(n, 100)],
                  [lambda s: np.random.uniform(-1, 1, s)],
                  ['softmax_label'], [(n,)],
                  [lambda s: np.random.randint(0, num_classes, s)])

mod = mx.mod.Module(symbol=net)
mod.fit(data_iter, num_epoch=5)

Steps to reproduce
Executed all the cells in the tutorial up to 41.
What have you tried to solve it?
This is the correct implementation that makes the fit function to train correctly a model (the issue lies in the provide_data/label fields that don't use the DataDesc object:
class SimpleIter(mx.io.DataIter):
    def __init__(self, data_names, data_shapes, data_gen,
                 label_names, label_shapes, label_gen, num_batches=10):
        self._provide_data = [mx.io.DataDesc(name=name,shape=shape,layout='NTC') for name,shape in zip(data_names, data_shapes)]
        self._provide_label = [mx.io.DataDesc(name=name,shape=shape,layout='NTC') for name,shape in zip(label_names, label_shapes)]
        self.num_batches = num_batches
        self.data_gen = data_gen
        self.label_gen = label_gen
        self.cur_batch = 0

    def __iter__(self):
        return self

    def reset(self):
        self.cur_batch = 0

    def __next__(self):
        return self.next()

    @property
    def provide_data(self):
        return self._provide_data

    @property
    def provide_label(self):
        return self._provide_label

    def next(self):
        if self.cur_batch < self.num_batches:
            self.cur_batch += 1
            data = [mx.nd.array(g(d[1])) for d,g in zip(self._provide_data, self.data_gen)]
            label = [mx.nd.array(g(d[1])) for d,g in zip(self._provide_label, self.label_gen)]

            return mx.io.DataBatch(
                data,
                label,
                provide_data=self._provide_data,
                provide_label=self._provide_label
            )
        else:
            raise StopIteration

The NTC layout usually refers to a layout that's used in RNNs, while the tutorial is on image data. From the context, it looks like NCHW is the right layout to use in DataDesc. Could you propose a fix in the form of a pull request, after fixing the layout problem?

Uhm, that tutorial is on random numbers and that Iterator is used on a numeric MLP example

I found the error (if it only appears when you use Python 3.x instead of Python 2): The behaviour of the zip function of python was changed. In python 3, you get a one-time iterator. Therefore, you cannot reuse it. You can change the example code of SimpleIter this way to get it to work in Python 3 (it will create a new zip-iterator when calling the properties and uses a call to that property in next() intead of calling the internal one:
`class SimpleIter(mx.io.DataIter):
def init(self, data_names, data_shapes, data_gen,
label_names, label_shapes, label_gen, num_batches=10):
self._data_names = data_names
self._data_shapes = data_shapes
self._label_names = label_names
self._label_shapes = label_shapes
self.num_batches = num_batches
self.data_gen = data_gen
self.label_gen = label_gen
self.cur_batch = 0
def __iter__(self):
    return self

def reset(self):
    self.cur_batch = 0

def __next__(self):
    return self.next()

@property
def provide_data(self):
    return zip(self._data_names, self._data_shapes)

@property
def provide_label(self):
    return zip(self._label_names, self._label_shapes)

def next(self):
    if self.cur_batch < self.num_batches:
        self.cur_batch += 1
        data = [mx.nd.array(g(d[1])) for d,g in zip(self.provide_data, self.data_gen)]
        label = [mx.nd.array(g(d[1])) for d,g in zip(self.provide_label, self.label_gen)]
        return mx.io.DataBatch(data, label)
    else:
        raise StopIteration`

proposed labels: "Bug" , "Duplicate", "Python"

@pracheer can you please verify and close this if this is fixed ?

This has been fixed and can be closed.


what z3 means?

z3 is a SMT solver that's useful for solving constraints
see e.g. https://pypi.org/project/z3-solver/, https://github.com/Z3Prover/z3


Bug: Stacking Buffs to near infinity

There seems to be a bug related to how the Totem poles and the Medicine bag act together.
Entering and exiting the area of a active Totem pole and with a bag that is bound to it will stack up the buff so instead of the Cow totem giving the Intended Slow 1 and Resistance 1 with the bag bound to it having it open and going into the Poles Area of effect and out again, during combat this happens multiple times, The Resistance and Slowness Start to stack up so you suddenly get Resistance 2 than resistance 3 sometimes the buff stays until relogging.
You can basically get the infamous Resistance up to being unkillable and the slowness up to being unable to move.
This also happens with other buffs as i tested.
This is very bothersome as I have found during testing it myself and from player reports.

The buff bag saves the resistance 4 which is super broken. And the totems themselves are to strong as well is there no way to make the totem poles cost ingreatient when creating them. For example the blaze one needs a blaze rod in offhand to make etc.
But what It really needs is a config setting to cap the stacking effects to a certain amount for example only one stack or non at all. As well as the fix of the buff bag infinite stacking

I didn't understood what you meant until I saw the images : I've only built 1 Totem without duplicates for now, that may be why I didn't encountered your bug. I'll try with more and come back to you if I got the same.
About the fact that Totems should need an "activator" or something before granting a Buff, I think I've got a pretty good suggestion. But I wait for the devs to tell me if they have a ToDo list : I don't want to write a pile of text if they're already working on it (or if they already said they don't want it)
... but I don't want to wait for too long either !

@VincentLongiug The thing with the medicine bag its hat it refreshes the current buff you have so if you have resistance 4 from the totem poles and the bag is attuned to the cow basically it would give you resist 2 at most but if you keep it open after exiting the area of resistance 4 totem pole you keep resistance 4 as it refreshes the buff you have doesn’t update to the lower version once the upper version runs out.
As for everlasting abilities it’s a another mod that lets you equip permanent effects (for example resistance 1 is a rare one) but if you have that and pass by the resistance 4 totem pole and exit the area since the ability gets refreshed from the everlasting one tiring to refresh its resistance 1 it keeps refreshing the resistance 4 from the totem pole. This mod isn’t getting well maintained I think I will remove it from my pack I made another post months ago didn’t even get a response there.
I was hopeing there would be a config at some point to limit the totems effects so I can say you get resistance 1 at most even if you stack poles. Currently it’s just broken getting resistance 4 is like 20%*4 damage reduction.
Also on big packs not being able to lower the difficulty of the last rituals (which are impossible to do even with a small lag spike) makes it to hard for players on hardmode (which is force set for the pack. as the totem mod scales with hardmode and easy mode -.-)

No response for months ! Seriously ?! I hope they're not on permanent vacations : this mod is still in 0.X and has too much potential to die now !
Last acivity of a dev on GitHub : 4 July. We have hope (?)
Well, I'm only beginning playing with Totemic, so I can't complain about the difficulty of certain Ceremonies since I haven't perform any of them yet.
About the Medicine Bag, I can assure you that it refreshes a Resistance II when you go away from your 5 Cow Poles Totem. Maybe Everlasting Abilities is responsible of this impression... and maybe the way this mod has to grant Buffs just don't fit with Everlasting since it can give you stacked Buffs near Totems and normal Buffs on demand away from them (which is also kindda OP).
I don't think it's a bad thing that we have a possibility to get stacked Buffs (I mean, we have no obligation to get them if we don't want to, and admins on modded PvP servers can forbid their (abusive) use), but I agree that it's way too easy to get them : we're able to build a Totem within 10 min of game and a Pole on a Base grants a permanent Buff in the nearby area by default...
*cracks his fingers*
Stay tuned my friend, I'm coming with a little something ...


Wrong return data type

Bug report

[x] I confirm this is a bug with Supabase, not with my own application.
[x] I confirm I have searched the Docs, GitHub Discussions, and Discord.

Describe the bug
The foreign key in select function return an object but the type thinks it's an array
To Reproduce
Steps to reproduce the behavior, please provide code snippets or a repository:
supabase.from("comments").select(`
  messageId,
  message,
  isEdited,
  created_at,
  updated_at,
  users(userId, username, profileUrl)
`).then(({ data }) => console.log(data))

Expected behavior
The return should be
type ReturnType = {
  messageId: string
  message: string
  isEdited: boolean
  created_at: string
  updated_at: string
  users: {
    userId: string
    username: string
    profileUrl: string
  }
}

but the supabase type thinks it's
type ReturnType = {
  messageId: string
  message: string
  isEdited: boolean
  created_at: string
  updated_at: string
  users: {
    userId: string
    username: string
    profileUrl: string
  }[]
}

Screenshots
https://cdn.discordapp.com/attachments/1157503006447775785/1157503007064346624/image.png
https://cdn.discordapp.com/attachments/1157503006447775785/1157503007446007848/image.png
System information

OS: Windows
Browser: Firefox
Version of supabase-js: v2.37.0
Version of Node.js: v18.16.0

Solution:
https://github.com/supabase/postgrest-js/pull/345


feat(launcher): integrate Antares Solver v8.5.0-rc3.

Update the hard-coded configuration done in the back-office to add the version "850" in the list.

NOTE: the goal is to be able to launch Antares Simulator v8.5.0-rc3. Feature like Study creations or Migrations will not be implemented in this US.

Are you sure v8.5.0-rc3 is a valid verison?

I think the modifications done here concerne this issue #1281
Few questions about the code :

In this screenshot, I see is about associate an empty study for version 8.5.0 but file associate is of 8.4.0 version. So this empty_study_850.zip file must be create. It will be done here or in #1281 ?

In this screenshot I see the return of the fonction have been modified. What're the changes excepted ?

Yes, the "empty_study_850.zip" file will be done in #1281 (unless it is really trivial).
Yes, the change maid in get_studies_versions is expected : I try to correct some clumsiness slightly whenever I see it.


bucket type properties in CREATE WITH clause

RTS-865
This PR is a refurbished #1328, obsoletes #1332. Requires https://github.com/basho/riak_ql/pull/113.
KV support for setting custom table properties in an optional WITH clause of the CREATE TABLE query. This allows clients to create TS tables with custom properties via query API call.
There is also a more strict and accurate validation of property names accepted in WITH clause (as well as in json supplied to riak-admin bucket-type create command. Now an attempt to create a bucket type with an unknown property will result in appropriate error message.

@borshop: retry

One last bit I'd like to see before this is merged: I don't see any tests to provoke the new error tuples from erlify_bucket_prop: bad_linkfun_modfun, bad_linkfun_key, and bad_chash_keyfun. A unit test for these would be lovely.

:+1: df1862e

@borshop: merge

@borshop merge


Update ex1

Updated structure

Cannot find last errors.
Counting too many values for cat1/cat2
Updated folder structure
Uploaded src and program


profile delete feature

Fixes Issue
fixes #8260

Changes proposed

Added delete feature on update profile page.
Update profile api can now update isEnabled flag.

Check List (Check all the applicable boxes)

[x]  My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.
[x]  This PR does not contain plagiarized content.
[x]  The title of my pull request is a  short description of the requested changes.

Screenshots

Note to reviewers

Are we expecting a redirection from statistics tab as well or user can see statistics page with disable profile ?

Are we expecting a redirection from statistics tab as well or user can see statistics page with disable profile ?

Redirect also please, they should not be able to do anything until they re-enable their account

@eddiejaoude i have made all the changes, let me know if we can make any more improvements in this feature.

Looks good to me

Thank you for making the changes, I will take a look 👍

I've left a comment about the broken user creation

Hey how can i test the user creation flow? Generally i connect locally by the help of access token generated by github.

Due to lack of activity I am going to close this PR.


Repo sync for protected CLA branch

The pull request is created from master637661990405062241 to master to fix git push error for protected CLA branch

@ghogen : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Honor Forced/Default track flags in MKV files

Currently with the HD300, SageTV ignores the forced/default flags in MKV files for audio/subtitle tracks, this means the user has to manually select them each time they play a video.

To fix that you'd need to update FFMPEG to output that information as part
of the format data...and then SageTV would need to parse that in and set
that audio track to be the 'main' one (sage.media.format.BitstreamFormat
has a field for that).  Currently it just adds the audio streams in the
order they come out of FFMPEG...so the first one will be considered the
primary one (unless you set your default audio language, and the first one
doesn't match that language..then it'll switch it).
On Fri, Mar 25, 2016 at 1:29 PM, stanger89<EMAIL_ADDRESS>wrote:

Currently with the HD300, SageTV ignores the forced/default flags in MKV
files for audio/subtitle tracks, this means the user has to manually select
them each time they play a video.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/google/sagetv/issues/114

--
Jeffrey Kardatzke
<EMAIL_ADDRESS>Google, Inc.


format balance and value

What type of PR is this?

Uncomment only one  /kind <> line, hit enter to put that in a new line, and remove leading whitespaces from that line:
/kind api-change
/kind backend-change
/kind ui-change
/kind bug
/kind cleanup
/kind design
/kind documentation
/kind failing-test
/kind feature
/kind flake

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #1375
Special notes for your reviewer:
Does this PR introduce a user-facing change?:


Add functionality to filter based on whether the repo already uses Pull Requests

(Spawned from #1)

we can use https://octokit.github.io/rest.js/v18#pulls-list to list PRs of the repository.

use state: all parameter to get list of all PRs.

PR was merged, closing the issue


Wikitext pipeline

Hi, can you please share pipeline for the wikitext dataset. I found results with 16.3 for mamba and 18 (vs. 18.6 everywhere else) perplexity for the transformer baseline and can not reproduce it. Maybe there is something different in preprocessing etc. Could you provide any details on the preprocessing steps or hyperparameters used that may be different from the default? Understanding those differences could help me reproduce the results.

The pipeline should similar to the one from the H3/Hyena repo, which was forked off our internal repo. A couple of noteworthy hyperparameters that seem to differ from their base settings:

train.global_batch_size=128 (131k toks/batch at a seqlen of 1024)
25 epochs total, or around 27000 training steps (<1 hr total training on 8xA100 node)
dropout 0.2-0.3
learning rate 0.0015

Thank you for the detailed reply! I found that the smallest mamba-130m model uses 24 layers instead of 12, according to the config. Is this a case for the wikitext experiment?
Additionally, I was able to reproduce the results based on the Hyena repo, achieving a best test perplexity of 15.9 without using dropout. This was done using a 24-layer model, which is quite interesting.

Thank you for clarifying! I found it confusing that the README file mentions a 12-layer model,
https://github.com/state-spaces/mamba/blob/2ee7fd287a8f5c826af6f69ae3aad4682c4afd15/README.md?plain=1#L85
while on Hugging Face, there is a 24-layer model.

Thanks, we'll fix that in the README. Mamba 130m has 24 layers, matching Transformers with 12 layers.

Thank you for the detailed reply! I found that the smallest mamba-130m model uses 24 layers instead of 12, according to the config. Is this a case for the wikitext experiment? Additionally, I was able to reproduce the results based on the Hyena repo, achieving a best test perplexity of 15.9 without using dropout. This was done using a 24-layer model, which is quite interesting.

Did you use the hparams that Albert mentioned, or sth else? As Albert said we didn't really tune for wt103, pretty cool that you're getting better numbers on wt103.

The README mentions the double layer count right below the table, do you
have a suggestion for a presentation that would be more clear?

I think 96ec4e4 solved all my concerns.

Did you use the hparams that Albert mentioned, or sth else? As Albert said we didn't really tune for wt103, pretty cool that you're getting better numbers on wt103.

I utilized dataloading pipeline from s5 repo and adapted the training loop to work with PyTorch; Long story short here are my hyperparameters:
# Training
lr: 0.001
weight_decay: 0.25

dtype: "bf16"

lr_schedule: "cosine"
total_steps: 115000
warmup_steps: 1000
save_interval: 200000
log_interval: 150

# Data
dataset: "wikitext103"
vocab_size: 50257
l_max: 1024

data_kwargs:
    batch_size: 16
    batch_size_eval: 16
    num_workers: 16
    pin_memory: False
    data_dir: cache

# Model
d_model: 768
n_layer: 24

I should mention that there are actually 130M parameters in the model, instead of 125M. The better results could possibly be attributed to the presence of these additional 5M parameters. If you are interested, I can share my pipeline with you.
Thank you once again for all your replies.

I don't think the parameter increase matters much. The bigger difference is probably a longer training time.

The README mentions the double layer count right below the table, do you
have a suggestion for a presentation that would be more clear?

I think 96ec4e4 solved all my concerns.

Did you use the hparams that Albert mentioned, or sth else? As Albert said we didn't really tune for wt103, pretty cool that you're getting better numbers on wt103.

I utilized dataloading pipeline from s5 repo and adapted the training loop to work with PyTorch; Long story short here are my hyperparameters (batch_size is global):
# Training
lr: 0.001
weight_decay: 0.25

dtype: "bf16"

lr_schedule: "cosine"
total_steps: 115000
warmup_steps: 1000
save_interval: 200000
log_interval: 150

# Data
dataset: "wikitext103"
vocab_size: 50257
l_max: 1024

data_kwargs:
    batch_size: 16
    batch_size_eval: 16
    num_workers: 16
    pin_memory: False
    data_dir: cache

# Model
d_model: 768
n_layer: 24

I should mention that there are actually 130M parameters in the model, instead of 125M. The better results could possibly be attributed to the presence of these additional 5M parameters. If you are interested, I can share my pipeline with you.
Thank you once again for all your replies.

Hi sorry might be a naive question but are you finetuning here with wiki103 or pretraining on it? Thanks!


Perf-Test: Database change event queue gets exhausted

Test Type: Broadcast POST /message/broadcast
Number of workers: 5
Frequency: 10 tx/sec per worker
Duration of worker's test before waiting for transactions to finish: 5 Seconds
Time elapsed before failure: ~15 Minutes
After running a broadcast test at ~50 tx/sec, FireFly consistently starts to log a Database change event queue is exhausted warning. Due to this, the workers of the test do not receive an event notification that all of their transactions have completed, preventing them from proceeding to their next job and sending more POST requests.
The warning is being triggered at this line in FireFly: https://github.com/hyperledger/firefly/blob/main/internal/orchestrator/persistence_events.go#L31
Grafana

Log
broadcastTest.log - Warnings begin on line 4932

Increasing the dbevents buffer size in the firefly config files has made this error go away. This suggests FireFly should increase the default size from 1,000 to 10,000.
event:
  dbevents:
    bufferSize: 10000

merged here: https://github.com/hyperledger/firefly-cli/pull/132


Forge built-in JS coremods are not remapped

It appears that while architectury loom is capable of remapping js coremods in mod dependencies, it doesn't do so for forge itself. This leads to further issues at runtime.
Steps to reproduce

Download the 1.19.4 forge architectury template from the template repo.
Set the mappings to yarndependencies {
    mappings "net.fabricmc:yarn:1.19.4+build.2:v2"
}

Import and setup the project
Open the field_to_method.js coremod inside the forge jar.
Observe that the contained class names are still in srg, and therefore the coremod won't be applied at runtime.

Expected behavior
Forge coremod target names are remapped to yarn so that they can be applied.

P.S.: This should probably also be applied in remapJar to remap any coremods in the project itself.

These should get remapped at runtime using the forge service for doing so when in dev with the arch provider for that to use tiny mappings

That's correct, but unfortunately runtime target remapping of JS coremods is limited to method and field names. While modlauncher's name mapping service is set up correctly to map SRG -> YARN for all types, the JS coremod api doesn't support renaming class names or descriptors.

https://github.com/MinecraftForge/CoreMods/issues/25
net.minecraftforge.coremod.CoreMod#buildCore

TBH I'm a little surprised how long this issue's been around, given the fix is quite trivial.
In an ideal situation, we wouldn't need to touch coremod files at all, since all remapping would be done at runtime. I believe this issue is what led to the implementation of CoreModClassRemapper.
Right now, my only option in a forge yarn environment is writing all JS coremods in yarn and then remapping them to srg when building the project. Or perhaps I could migrate the coremod logic to a mixin plugin instead.


Reduce binary size for codecs by making field registry non-templated.

@punchfox this change makes spotify-json related symbols go from ~800kB to ~500kB in spclientd.


Also create 'PORT_' env variables for ports defined in port mappings

Right now, PORT_<NAME> env variables are only added for ports defined in portDefinitions, but not for ports defined in portMappings.
cc/ @jdef @jasongilanfarr

It looks like https://github.com/mesosphere/marathon/pull/4008 fixes this.  can we close this @gkleiman ?

There's still a TODO in the code, so we might not be generating the named env vars in all cases:
https://github.com/mesosphere/marathon/blob/master/src/main/scala/mesosphere/mesos/TaskBuilder.scala#L420

@jdef can you fix this TODO?

It seems the case @gkleiman mentions is related to #4183. Can you verify this @jdef?

I guess I wouldn't consider them closely related. But they should both be
addressed
On Wed, Sep 7, 2016 at 6:47 AM, Karsten Jeschkies<EMAIL_ADDRESS>wrote:

It seems the case @gkleiman https://github.com/gkleiman mentions is
related to #4183 https://github.com/mesosphere/marathon/issues/4183.
Can you verify this @jdef https://github.com/jdef?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mesosphere/marathon/issues/4005#issuecomment-245243966,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACPVLMNmup3gBxM7q2SogWx0HjdLJSyuks5qnpZdgaJpZM4I51w9
.


MNT: Re-render the feedstock

Hi! This is the friendly conda-forge-admin automated user.
I've re-rendered this feedstock with the latest version of conda-smithy (0.10.4) and noticed some changes.
If the changes look good, then please go ahead and merge this PR.
If you have any questions about the changes though, please feel free to ping the 'conda-forge/core' team (using the @ notation in a comment).
Remember, for any changes to the recipe you would normally need to increment the version or the build number of the package.
Since this is an infrastructural change, we don't actually need/want a new version to be uploaded to anaconda.org/conda-forge, so the version and build/number are left unchanged and the CI has been skipped.
Thanks!
Fixes https://github.com/conda-forge/django-redis-cache-feedstock/issues/2

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Going to go ahead and merge this re-rendering PR. Hope that is ok. Trying to clear these out while we have low CI usage.


Toaster add extension not working properly

Describe the bug
Toaster.Add("string") extension function is not working. IDE states this: "The type 'MatBlazor.IMatToaster' must be convertible to 'MatBlazor.BaseMapper' in order to use it as parameter 'T' in the generic method 'T MatBlazor.BaseMapperExtensions.Add<T>(this T, string)'"
To Reproduce
Steps to reproduce the behavior:

Create a new project (server side)
Add MatBlazor and prepare the Toaster
Try to use the example way to show toast
See the error

Expected behavior
Toaster.Add("whatever"); will not show any errors.
Screenshots

Did you try adding a MatToastType after the message parameter ? as your IDE shows, this parameter does not seem to be optional.

Maybe I am missing something, but to me this just looks like you're calling the method to add toast with an incorrect method signature.

Maybe I am missing something, but to me this just looks like you're calling the method to add toast with an incorrect method signature.

Yeah, found that out later. The problem is https://www.matblazor.com/Toast - the documentation shows that only a single string is required for one of the overloads.

@Luk164 ,
Would you like to open the PR to fix the documentation, or shall I?

@Luk164 ,
Would you like to open the PR to fix the documentation, or shall I?

Feel free to do so, I am playing with JAVA rmi rn

@Luk164 ,
Added a PR for this


Cant find owner

Please tick all applicable boxes.

[x ] I am using Python 3.5 or higher (run python --version on the command line)
[x ] I have followed the official guides to install the bot for my system
[x ] I have updated my dependencies to the latest version using the appropriate update script

Which version are you using?

[ x] The latest master version (1.9.8)
[x ] The latest review version

What type of issue are you creating?

[ ] Bug
[ ] Feature request
[ x] Question

Description of issue
Bot launches but says "WARNING: Owner could not be found on any guild (id: XXXXXXXX)
Guild List:

None (unavailable)

Not bound to any text channels
Steps to reproduce

Everytime I use the run.bat I have tried updating/doing several fresh installs and changing nothing but token+owner nothing seems to fix it

musicbot.log
Log file
Please attach your MusicBot log file (located at logs/musicbot.log) to this issue. You can do so by dragging and dropping the file here. If you do not include your log file, you WILL be asked to provide one.

You just need to invite the bot to your server, when starting it should give you qn invite link

You just need to invite the bot to your server, when starting it should give you an invite link

its in the server and seems to be working just wont bind to a text channel

its in the server and seems to be working just wont bind to a text channel

In config/options.ini, add channel ids that you want the bot to bind to in the option BindtoChannels

its in the server and seems to be working just wont bind to a text channel

In config/options.ini, add channel ids that you want the bot to bind to in the option BindtoChannels

Thats done as well I think it might just be the bot lagging behind in load time as the server its in is 100k+ people although in the command prompt it appears to be not correct

Actually, after I read the code again I think the BindtoChannels and
AutojoinChannels are bugged at the moment. I can't test my hypothesis right
now (I'm away from my home) but I think this is another "rewrite id is an
int not a string" bug.

Actually, after I read the code again I think the BindtoChannels and AutojoinChannels are bugged at the moment. I can't test my hypothesis right now (I'm away from my home) but I think this is another "rewrite id is an int not a string" bug.

Bot appeared to have fixed itself after waiting for awhile I think it was just lagging due to the amount of users

Now that I really look at it it should work as intended, albeit verifying data like this is a little bit "strange"


Inflector - v5n issues on some verbal forms

Need to replace べ by ね

Form
Kanji
Kana

POTENTIAL_NEUTRAL
死~べ~ねる
し~べ~ねる

POTENTIAL_POLITE
死~べ~ねます
し~べ~ねます

CONDITIONAL_BA
死~べ~ねば
し~べ~ねば

Fixed on refactor_inflector branch d202abcab072ed799937ce073c7b4468d6073d18


support for readuntil

serial.readUntil support.
Replacement for https://github.com/Microsoft/pxt-common-packages/pull/603

Fixing.


Disconnect bettween 0x Mesh in Docker container and the Browser

With latest v2 sources there is seem to be a disconnect between 0x Mesh running in the Docker container and the 0x Mesh running in the Browser. When I create an Open Order it is shown in Augur UI, but I can't get it using webserivce, webservice returns 0 orders.
Attaching screenshot for more details

I think this order in the Browser is being fetched from IndexDB of the browser, but not from 0x Mesh Node running locally. Because this is the error I am seeing in the console ordersync could not get orders from enough peers (trying again :
{"level":"info","msg":"core.App was started","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","time":"2020-09-01T10:37:00-05:00"}
wasm_exec.js:65 {"approxDelay_number":3600000000000,"level":"info","msg":"starting ordersync service","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","perPage_number":500,"subprotocols_array":["FilteredPaginationSubProtocol"],"time":"2020-09-01T10:37:00-05:00"}
wasm_exec.js:65 {"addresses_array":[],"level":"info","msg":"starting p2p node","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","time":"2020-09-01T10:37:00-05:00","topic_string":"/0x-orders/version/3/chain/102/schema/eyJwcm9wZXJ0aWVzIjp7Im1ha2VyQXNzZXREYXRhIjp7InBhdHRlcm4iOiIuKjZjZmMxMjVkZjdiYTI3YjI2MTM4Y2RiY2Q1ODA0MTM3ZGMzYmExYTYuKiJ9fX0="}
wasm_exec.js:65 {"bootstrapList_array":["/dns4/localhost/tcp/60558/ipfs/16Uiu2HAmRMgvPQV2UYKXuuCnNaFLpc36PhLp2UKVcL1ePseVcz4y","/dns4/localhost/tcp/60559/ws/ipfs/16Uiu2HAmRMgvPQV2UYKXuuCnNaFLpc36PhLp2UKVcL1ePseVcz4y"],"level":"info","msg":"connecting to bootstrap peers","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","time":"2020-09-01T10:37:00-05:00"}
wasm_exec.js:65 {"delayBeforeNextRetry_string":"250ms","level":"debug","minPeers_number":5,"msg":"ordersync could not get orders from enough peers (trying again soon)","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","successfullySyncedPeers_number":0,"time":"2020-09-01T10:37:00-05:00"}
wrap-log-handler.ts:8 event ZeroX:Status:Synced
wasm_exec.js:65 {"error_string":"failed to dial : all dials failed\n  * [/dns4/localhost/tcp/60559/ws] failed to negotiate security protocol: connected to wrong peer","level":"warning","msg":"failed to connect to bootstrap peer","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","peerInfo_json_string":"{\"Addrs\":[\"/dns4/localhost/tcp/60558\",\"/dns4/localhost/tcp/60559/ws\"],\"ID\":\"16Uiu2HAmRMgvPQV2UYKXuuCnNaFLpc36PhLp2UKVcL1ePseVcz4y\"}","time":"2020-09-01T10:37:00-05:00"}
wasm_exec.js:65 {"delayBeforeNextRetry_string":"500ms","level":"debug","minPeers_number":5,"msg":"ordersync could not get orders from enough peers (trying again soon)","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","successfullySyncedPeers_number":0,"time":"2020-09-01T10:37:01-05:00"}
wasm_exec.js:65 {"delayBeforeNextRetry_string":"1s","level":"debug","minPeers_number":5,"msg":"ordersync could not get orders from enough peers (trying again soon)","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","successfullySyncedPeers_number":0,"time":"2020-09-01T10:37:01-05:00"}
react-dom.development.js:332 [Violation] 'message' handler took 1361ms
ZeroXOrders.js:147 Adding orders back to mesh [{…}]
Router.js:58 CACHE HIT: getUserOpenOrders
wasm_exec.js:65 {"delayBeforeNextRetry_string":"2s","level":"debug","minPeers_number":5,"msg":"ordersync could not get orders from enough peers (trying again soon)","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","successfullySyncedPeers_number":0,"time":"2020-09-01T10:37:02-05:00"}
react-dom.development.js:332 [Violation] 'complete' handler took 465ms
react-dom.development.js:332 [Violation] 'complete' handler took 461ms
wasm_exec.js:65 {"level":"debug","msg":"added new valid order via RPC or browser callback","myPeerID":"16Uiu2HAmDN6WjjJTvSuR5HSJSQcaLMtRM34gVjwQojZDpDDAqpVT","orderHash_string":"0xab95f06b936b89333196e83d694ac0028363abc2dedceeef8eb1cd8f69e46578","time":"2020-09-01T10:37:03-05:00"}

I have found an easy way to reproduce this problem. Just open 2 browsers: Chrome and Firefox.

Create the Open Order in Chrome
Start Firefox and open the Market at the outcome, the order is not going to show.

Attaching screenshot

Tested, fixed in #9248

Solved


Add support for RFC 3820

Add module and test for RFC 3820

Codecov Report

Merging #113 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master    #113      +/-   ##
=========================================
+ Coverage    99.4%   99.4%   +<.01%
=========================================
  Files         103     104       +1
  Lines        6364    6382      +18
=========================================
+ Hits         6326    6344      +18
  Misses         38      38

Impacted Files
Coverage Δ

pyasn1_modules/rfc3820.py
100% <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 58954d7...33de980. Read the comment docs.

Thank you!


Channel shutdown should trigger pending calls to fail

When calling grpc_channel_destroy() on a channel and the channel state becomes SHUTDOWN, all calls that are still pending on this channel should fail.
This is currently not the case, reproduced by Guggyco/firebase-network-bug-reproduce.
Debugging shows that the call's pending op RECV_STATUS_ON_CLIENT was not returned by completion queue. In the transport, function end_all_the_calls was never called.

I see. I can understand the expected behavior now.
@muxi Which version is the bug reporter using? The subchannel file they are using looks quite different from the one on our master.

I think there may be a problem in the case where there are two channels open to the same server and only one of them shuts down.  I've described that situation (and a possible but not ideal fix) in #14292.
I'm not sure this is actually what's happening in this case, because even if there was a second channel open to the same server, I would expect both of them to be destroyed at the same time by the same iOS hook, thus causing the subchannel to shut down and the transport to cancel all calls.  So the problem I just described may be unrelated to this bug, but I thought I'd mention it here for completeness.
As I said earlier, I think we need to start by finding a way to reproduce this, so that we can see what's actually happening.

This bug is very easy to reproduce by hand. By checking the refcount log, I see that the last pending ref of the subchannel is for state_watcher. And I've verified that the unref doesn't happen because the callback watching the connectivity state is never invoked. This seems to make sense, because the user is expecting to destroy the whole channel top-down. The user watches the network connectivity and calls  grpc_channel_destroy() when the network dies. Everything else has gone, but the "state_watcher" of the subchannel insists that it hasn't seen any connectivity change so it can't unref the subchannel.
@markdroth  By reproducing this, do you mean reproducing by test?

After closer investigating, I think there is something like circular dependency between connected_subchannel and subchannel_call, if we want to shut down the channel and the calls in a top-down style.
Since the user is using 1.8.4 version (although this bug also happens in 1.9.x), let's look the file in that version.
Here are two paths to unref a connected_subchannel:

grpc_subchannel_unref() -> disconnect() -> GRPC_CONNECTED_SUBCHANNEL_UNREF().
subchannel_call_destroy() always calls GRPC_CONNECTED_SUBCHANNEL_UNREF().

From path 2 we can see that each subchannel_call holds a ref to the connected_subchannel, then it seems impossible to cancel the subchannel_call by destroying the connected_subchannel first (i.e., the first path).
A workaround is to cancel the call directly when the user detects network disconnection instead of propagating the unrefs down. The following log shows that the subchannel_call unrefs the connected_subchannel after it is cancelled directly. Before this workaround is added, the refs to the connected_subchannel can only be decreased to 4.

2018-02-20 16:03:41.262 firebase-network-bug-reproduce[2250:761125] error:Error Domain=io.grpc Code=1 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled}
trailers:{
}

xxxxxxxxxxxxxxxxxxxxxxxxx Directly cancelled the first call.

D0220 16:03:43.523257000<PHONE_NUMBER> transport.cc:56]                   CALL_STACK 0x12f0ab3c8:0x12f0aab68 UNREF 1->0 destroy
D0220 16:03:43.523355000<PHONE_NUMBER> transport.cc:56]                   CALL_STACK 0x12f071548:0x12f071538 UNREF 1->0 client_channel_destroy_call
D0220 16:03:45.092736000<PHONE_NUMBER> transport.cc:56]                   CLIENT_SUBCHANNEL 0x1304a8cf0:0x1304a8cf0 UNREF 4->3 picked
D0220 16:03:48.166225000<PHONE_NUMBER> transport.cc:56]                   CLIENT_SUBCHANNEL 0x1304a8cf0:0x1304a8cf0 UNREF 3->2 subchannel_call

xxxxxxxxxxxxxxxxxxxxxxxxx The first call unreffed the connected_subchannel.

D0220 16:03:50.034821000<PHONE_NUMBER> transport.cc:56]                   CLIENT_CHANNEL 0x12eda4810:0x12eda4780 UNREF 1->0 call
D0220 16:03:55.332504000<PHONE_NUMBER> subchannel.cc:572]                 SUBCHANNEL: 0x12ee90930   WEAK_UNREF 0x1 -> 0x0 [state_watcher]

I think we do want to let subchannel_call hold a ref to the connected_subchannel.
If this rationale sounds reasonable, I think we'd better tell the iOS users to use the workaround and document this somewhere.

Hypothetically, if there is a separate channel refcnt to a subchannel, would it tell us that subchannel is not in use any more when that count hits zero and hence all calls on that subchannel can be destroyed?
I am not clear on the workaround here. Users need to also cancel the calls?

We currently have separate counts for external (strong) refs and internal (weak) refs. But we planned to remove this kind of refcounting, because it's complicated and the only use case is for subchannel.
When the users detect some network failure, they will destroy the channel hoping that the calls will also be cancelled. But actually the calls are not being cancelled, probably because of the refcounting pattern we use. A workaround can be explicitly cancelling the calls when the network failure is detected.

@AspirinSJL, yes, I am suggesting that we have a test for this case.  Otherwise, we have no way to prove that any potential fix actually works or that we don't break that fix with subsequent changes in the future.
I don't think it's feasible to have the iOS code cancel all of the calls, because it does now have a list of all of the calls.  We don't currently keep a list of all calls on a channel anywhere.  If we actually need to cancel all of the calls (and I'm still not convinced that we do; see below), then it probably makes more sense to do this inside of core than to push this work onto the application or the iOS interface.
Keep in mind that there is not actually any requirement that the destruction happen on a top-down basis.  Or, to say this another way, we do not need to ensure that the calls get cancelled as a result of grpc_channel_destroy() being called from the surface.  As long as the calls will eventually finish, and as long as the channel gets destroyed when the last call does finish, I think that's fine.
I think the bug here is not that we are not destroying the calls when grpc_channel_destroy() is called; it's that a call started before grpc_channel_destroy() was called is not finishing afterwards.  So the question is, why is that not happening?

The bug here is that when grpc_channel_destroy() is called, the user is expecting all pending calls on that channel to return immediately. I think @AspirinSJL is suggesting the user to explicitly cancel calls along with destroying the channel. This mean the user has to keep track of calls on that channel. Just to be clear, the calls do return eventually after a long delay. The user is expecting the calls to return immediately when the channel is destroyed.

Ah, okay, so the original description of this bug is wrong?  @muxi said that the RECV_STATUS_ON_CLIENT op was never returned, but it sounds like you're now saying that it is actually returned; the issue is actually that it's not being returned immediately, which is what's being asked for here.  Is that right?
If so, then I think this will require fixing #14292.

Sorry I was wrong on this. It seems the op returns after a long (a few minutes) delay.
From its description I think #14292 is the right direction.

Actually the workaround is not too bad to me. In iOS layer, we have two kinds of network monitor: a single channel-level monitor; some per-call monitors. The channel-level monitor will destroy all the channels upon network error. The workaround I mentioned above is a one-line change in the call-level monitor, which cancels the call upon network error.
But I definitely agree that this workaround is not good enough for long-term use. Since the customer is already using some other workaround, I think fixing #14292 is the right choice. That will be much cleaner.

FYI- In case there's any confusion, the customer is not calling grpc_channel_destroy() or "using some other workaround" as far as I know.
The repro project linked in the issue description is an iOS app using the Firebase iOS SDK for Cloud Firestore (which uses grpc internally).  I work on the SDK, and all we we do is initiate a streaming RPC request to the backend. The user-facing issue is that upon a network change (e.g. switching from wifi to cellular), it takes ~90 seconds for the streaming RPC to fail (at which point we can retry it and resume connectivity with the backend). This timeout is too long.
I haven't followed all of the discussion above but I just wanted to clear up the use case / symptom in case there was any confusion leading to false assumptions.

@mikelehen Thanks for clarifying!
grpc_channel_destroy() is not called by the customer explicitly; it's called in gRPC Objective-C when some network error happens.
Sorry for misunderstanding the workaround status! The customer workaround that we thought is for this issue is actually for another issue. Then I think the workaround I proposed can be used if we want a quick fix. Fixing #14292 is a better solution to this issue, but it will be a much larger change and will take longer to finish.

After discussion, we decided to cancel the call in Objective-C layer when the per-call monitor detects network error. Re-assigned to @muxi .


Using a dataset for a use other than it was intended for.

Describe the bug
Hi, I want to use the rotten tomatoes dataset but for a task other than classification, but when I interleave the dataset, it throws 'ValueError: Column label is not present in features.'. It seems that the label_col must be there in the dataset for some reason?
Here is the full stacktrace
  File "/home/suryahari/Vornoi/tryage-handoff-other-datasets.py", line 276, in create_dataloaders
    dataset = interleave_datasets(dsfold, stopping_strategy="all_exhausted")
  File "/home/suryahari/miniconda3/envs/vornoi/lib/python3.10/site-packages/datasets/combine.py", line 134, in interleave_datasets
    return _interleave_iterable_datasets(
  File "/home/suryahari/miniconda3/envs/vornoi/lib/python3.10/site-packages/datasets/iterable_dataset.py", line 1833, in _interleave_iterable_datasets
    info = DatasetInfo.from_merge([d.info for d in datasets])
  File "/home/suryahari/miniconda3/envs/vornoi/lib/python3.10/site-packages/datasets/info.py", line 275, in from_merge
    dataset_infos = [dset_info.copy() for dset_info in dataset_infos if dset_info is not None]
  File "/home/suryahari/miniconda3/envs/vornoi/lib/python3.10/site-packages/datasets/info.py", line 275, in <listcomp>
    dataset_infos = [dset_info.copy() for dset_info in dataset_infos if dset_info is not None]
  File "/home/suryahari/miniconda3/envs/vornoi/lib/python3.10/site-packages/datasets/info.py", line 378, in copy
    return self.__class__(**{k: copy.deepcopy(v) for k, v in self.__dict__.items()})
  File "<string>", line 20, in __init__
  File "/home/suryahari/miniconda3/envs/vornoi/lib/python3.10/site-packages/datasets/info.py", line 208, in __post_init__
    self.task_templates = [
  File "/home/suryahari/miniconda3/envs/vornoi/lib/python3.10/site-packages/datasets/info.py", line 209, in <listcomp>
    template.align_with_features(self.features) for template in (self.task_templates)
  File "/home/suryahari/miniconda3/envs/vornoi/lib/python3.10/site-packages/datasets/tasks/text_classification.py", line 20, in align_with_features
    raise ValueError(f"Column {self.label_column} is not present in features.")
ValueError: Column label is not present in features.

Steps to reproduce the bug
Delete the column labels from the rotten_tomatoes dataset. Try to interleave it with other datasets.
Expected behavior
Should let me use the dataset with just the text field
Environment info
latest datasets library? I don't think this was an issue in earlier versions.

I've opened a PR with a fix. In the meantime, you can avoid the error by deleting task_templates with dataset.info.task_templates = None before the interleave_datasets call.
`


change the default value of escape_slash to false

Close https://github.com/moonbitlang/core/issues/1080

Pull Request Test Coverage Report for Build 3386
Details

0 of 0   changed or added relevant lines in 0 files are covered.
10 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.2%) to 83.013%

Files with Coverage Reduction
New Missed Lines
%

json/lex_string.mbt
1
76.47%

tuple/tuple.mbt
9
0.0%

Totals

Change from base Build 3385:
-0.2%

Covered Lines:
4100

Relevant Lines:
4939

💛  - Coveralls


chore: add NOT_FOUND to sfdc 404 error map

Test Plan
[Describe test plan here]
Deployment instructions
[Add any special deployment instructions here]

Verified locally


Error in Example "causal_simulator.ipynb"

Hello and thank you for your amazing work!
I stumbled upon a tiny mistake in one of the examples in causallib/examples/causal_simulator.ipynb
You'll find the following first code cell:
import pandas as pd
from causallib.datasets import load_nhefs
from causallib.simulation import CausalSimulator
from causallib.simulation import generate_random_topology

which does not work properly, since the simulator is now part of dataset
to regain function just change the call accordingly:
import pandas as pd
from causallib.datasets import load_nhefs
from causallib.datasets import CausalSimulator
from causallib.datasets import generate_random_topology

Expected behavior:
import library and run cell
Observed behavior:
ImportError: cannot import name 'CausalSimulator' from 'causallib.simulation' (/opt/conda/lib/python3.10/site-packages/causallib/simulation/__init__.py)
Thanks for your time and efforts.

Hi, thank you for your kind words and apologies for my late response, it has been a busy week.
Thanks for pointing this error up! We did move the Simulator import around at some point and probably missed that.
let me know if you would like to submit this small fix yourself in a pull request (I will interpret silence as a no 🙂)


fixes addresses for getAvgQ() and getInstQ()

getAvgQ() should be read from address 14, not 15
getInstQ() should be read from address 15, not 16

Thanks!


Changing the benchmarks to operate on square whole images

As discussed in https://github.com/PyAbel/PyAbel/issues/207, I think that it makes the most sense for the benchmarks to operate on square whole-images that possess left/right symmetry. Prior to this PR, abel.benchmark.AbelTiming(n=[101]) completes a 101x101 transform, which actually corresponds to a transform of a left/right symmetric 101x201 image.
This PR changes that behavior, and completes a transform on the 101x51 half-image. It should make most of the benchmarks faster, since they are operating on a smaller image. BASEX and LinBasex operate on whole images, so they are passed the complete image and maintain their previous benchmark speeds.

Good work @DanHickstein:

In principle the basex and linbasex time should be divided by ~2.
The benchmark listing uses n, when it should be hxw.
The following compares the old and new. They look as expected.

In [2]: abel.benchmark.AbelTiming(n=[501])                      In [2]: abel.benchmark.AbelTiming(n=[501])
Out[2]:                                                         Out[2]:
PyAbel benchmark run on x86_64                                  PyAbel benchmark run on x86_64

time in milliseconds                                            time in milliseconds

=========    Basis Abel implementations ==========              =========    Basis Abel implementations ==========

Implementation      n = 501                                     Implementation      n = 501
----------------------------------------                        ----------------------------------------
        basex_bs   19335.7                                              basex_bs   19750.6
     linbasex_bs      12.8                                           linbasex_bs      13.1
onion_peeling_bs       6.9                                      onion_peeling_bs       1.7
  three_point_bs      25.3                                        three_point_bs       6.2
    two_point_bs       8.4                                          two_point_bs       2.1

=========  Forward Abel implementations ==========              =========  Forward Abel implementations ==========

Implementation      n = 501                                     Implementation      n = 501
----------------------------------------                        ----------------------------------------
        direct_C      77.7                                              direct_C      22.5
   direct_Python     919.7                                         direct_Python     229.0
       hansenlaw      14.6                                             hansenlaw       7.2

=========  Inverse Abel implementations ==========              =========  Inverse Abel implementations ==========

Implementation      n = 501                                     Implementation      n = 501
----------------------------------------                        ----------------------------------------
           basex      22.4                                                 basex      22.4
        direct_C      80.3                                              direct_C      22.3
   direct_Python     937.6                                         direct_Python     236.8
       hansenlaw      16.7                                             hansenlaw       7.5
        linbasex      98.5                                              linbasex     103.5
    onion_bordas     912.0                                          onion_bordas     241.3
   onion_peeling       2.9                                         onion_peeling       0.9
     three_point       2.7                                           three_point       0.7
       two_point       2.7                                             two_point       0.7

and the results look consistent with individual timings:
In [3]: realimg = abel.tools.analytical.SampleImage(501)

In [4]: proj = abel.Transform(realimg.image, method='hansenlaw', direction='forw
   ...: ard')

In [5]: rows, cols = proj.transform.shape
In [18]: half = proj.transform[:, cols//2:]

In [19]: half.shape
Out[19]: (501, 251)

In [20]: %timeit abel.hansenlaw.hansenlaw_transform(half)
8.81 ms ± 17.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [21]: %timeit abel.direct.direct_transform(half, back_end='C')
22 ms ± 24 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [29]: %timeit abel.linbasex.linbasex_transform_full(proj.transform)
109 ms ± 131 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

All good.

My only "beef" (nothing to do with this PR) with AbelTiming() is that it makes no attempt to verify the transform, the various sub-components could mangle the transform, and happily, return a fast time. Perhaps, at a later stage we could add a verify method.

My only suggestion for this PR is item 2., that the output table heading be changed from Implementation      n = 501 to 501x251 e.g. for n=501.

@DanHickstein feel free to merge, so that I may rebase and PR another hansenlaw fix

Hmmm, so, maybe we should just clarity the "definition" of the benchmark in the docstring for AbelTiming to specify that a n=501 image corresponds to passing a 501x251 image to the individual transform methods.
What I'm attempting to do there is to make our benchmarks consistent with the (few) existing benchmarks from the photoelectron community. Rallis et al gave us this table:

If we want to compare our results to these, then we should not pass a 661x661 pixel image to three_point. This would correspond to a 661x1322 image. We should transform a 661x331 pixel half-image to three_point, and this corresponds to a 661x661 full image.
So, labeling the table with h=501, w=251 is probably just as confusing as labeling it with just n=501. Maybe we can include some text in the AbelTiming docstring, to the extent of:
"The benchmarks assume a left/right symmetric image, and perform the transform on just the right half of the image. For example, or n=501, a h=501, w=251 image is passed to the transform methods. For methods that only support whole image transforms (BASEX, LinBASEX), a whole image is passed."

Ok, agreed, the docstring change is sufficient.
We have a rough factor of ~25x speed up:
In [4]: half.shape
Out[4]: (661, 331)

In [5]: %timeit abel.dasch.onion_peeling_transform(half)
1.72 ms ± 40.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [6]: %timeit abel.dasch.three_point_transform(half)
1.74 ms ± 52.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Things sped up by a factor of 25??
I thought that we were seeing a dependence of n^2.5 for most of the transform methods, where n is the width and height. Here, we have cut the width in half. So, I would expect that the speedup factor should be less than 2^2.5 = 5.5. If I had to guess, I would expect that it would be 2^1.5 = 3 times faster.
In a quick test, I see a speedup of about 2.6x for three_point, which seems reasonable:
In [4]: half = np.random.random((501,501))

In [5]: whole = np.random.random((501,501))

In [6]: half = np.random.random((501,251))

In [7]: %timeit abel.dasch.three_point_transform(half)
The slowest run took 36.65 times longer than the fastest. This could mean that an intermediate result is being cached.
100 loops, best of 3: 2.17 ms per loop

In [8]: %timeit abel.dasch.three_point_transform(whole)
The slowest run took 10.12 times longer than the fastest. This could mean that an intermediate result is being cached.
100 loops, best of 3: 5.81 ms per loop

Oh, perhaps you meant to type 2.5x?

No, I meant relative to the Rallis Table I. onion peeling time of 50(5) ms cf ~2 ms (PyAbel) on similar CPU speed system, with same image size n=661.
Good size analysis on your part. What I like is that abel.Transform() does its job efficiently too.
[etalon:/home/stg121]$ ipython3
Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 18:10:19)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import abel

In [2]: whole = abel.tools.analytical.SampleImage(661).image

In [3]: half = whole[:, 330:]

In [4]: %timeit abel.dasch.three_point_transform(half)

1.66 ms ± 3.21 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [5]:

In [5]: %timeit abel.dasch.three_point_transform(whole)
4.79 ms ± 3.02 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [6]: %timeit abel.Transform(whole, method='three_point')
8.54 ms ± 5.09 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [7]: 4.79/1.66
Out[7]: 2.885542168674699

In [8]: 8.54/4.79
Out[8]: 1.7828810020876824


Generic Distribution Library: First Pass

This library is meant to isolate all distribution-code from the interpreter.
There's clearly more work to do, but I want to allow us to do this in steps, because it's pretty heavy, and could use multiple people involved.

oof, rebasing made the files changed go up to 61 :/

@OAGr I think what'd be best is if you would paste this https://gist.github.com/quinn-dougherty/414528276729e00091dc81281e991ea3 into a new file, on a new branch off staging, and file a new PR. Cuz I messed up with the rebase (been trying to back out of it but nothing's been working)

There, fixed.
Just needed a merge commit.
Obviously, if you're working on this branch, delete it and re-fetch it please

Btw, @quinn-dougherty , do you know why the CI skipped the squiggle-language tests? Two should be failing now.

Btw, @quinn-dougherty , do you know why the CI skipped the squiggle-language tests? Two should be failing now.

I'll solve this before proceeding. will followup on slack.

It looks like it's still skipping

(I'm doing some refactoring, I plan to reopen later today)


Feat: raw info

Add --raw option to the info command.
xst info --raw

will output something along the lines of
{
  "db": {
    "name": "eXist",
    "version": "6.2.0-SNAPSHOT",
    "git": "ac2c7e17867013bb9aac76f3413ee837f540550b"
  },
  "java": {
    "vendor": "Azul Systems, Inc.",
    "version": "1.8.0_362"
  },
  "os": {
    "name": "Mac OS X",
    "version": "12.6.2",
    "arch": "aarch64"
  }
}

The ability to receive raw JSON data will open up a host of new use-cases.
To give you an example:
❯ xst info --raw | jq .db.version
"6.2.0-SNAPSHOT"

LGTM! (Even if I can't always adjust my system to be able to properly test xst PRs, I'll aim to read them and offer feedback.)


Add a FAQ about authorizing DHCP server into Azure ADDS.

[Enter feedback here]
below FAQ can be included in the doc as we have many cx's requesting this ask via support requests.
To authorize a DHCP Server into AADDS:
please note that the users are only part of AAD DC Admin group - these users are not full domain or enterprise admins and hence do not have permissions for these operations.
IT looks like performing DHCP Server Authorization requires Domain Administrator rights.  Ref:
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dhcpe/56f8870b-a7c1-4db1-8a86-f69079fe5077
Configuring a DHCP server on AAD DS is not a supported operation and this behavior is by design.
Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 1ac3ceff-f36d-91b3-c722-a7a280cc17c4
Version Independent ID: 32420f48-3d50-1e20-a994-66230dc3a00f
Content: Frequently asked questions about Azure AD Domain Services
Content Source: articles/active-directory-domain-services/faqs.yml
Service: active-directory
Sub-service: domain-services
GitHub Login: @Justinha
Microsoft Alias: justinha

@GudlaPreethi
Thanks for your feedback! We will investigate and update as appropriate.

@Justinha
Could you Please review this and update as appropriate.

@GudlaPreethi
Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can take a look at it accordingly

@GudlaPreethi Thanks for the suggestion and sorry for the delay. I created an internal work item to have a SME review and add to the FAQ. We are migrating repos so need to close this now. #please-close


Added http-protection

http-protection
Added to HTTP section

[x] Tests pass (crystal spec)
[x] Description of the entry is clear and concise. There is no excessive information like
"... for Crystal programming language",
"... for Crystal",
"... written in Crystal" etc.

@veelenga, done!

Thx


Cleanup Normalizer Converter Code

We have the original draft of the normalizer code uploaded in this branch. All credit here goes to @scnakandala, the original author and brains behind this.
It contains an un-edited implementation of SklearnNormalizer here.
There is a single test file here that needs to be cleaned up and passing.

Hey Karla,
Can I take up this one?

Hi @ahmedkrmn Sure, thank you!

I did one small commit to the branch, just adding a flag that might be confusing and cause the code to not work; let me know if you run into issues or have questions!


Bug: Constant STDOUT already defined

PHP Version
8.1
CodeIgniter4 Version
4.2.11
CodeIgniter4 Installation Method
Composer (as dependency to an existing project)
Which operating systems have you tested for this bug?
macOS
Which server did you use?
cli
Database
MariaDB 10.9.3
What happened?
When I trying to call command from Controller with params I'm getting
ErrorException
Constant STDOUT already defined

Here is the screenshot:

Steps to Reproduce
Controller method includes line:
command('command:command -i ' . $id)

Command includes line:
$isId = (bool) CLI::getOption('i');

where it's failing.
Expected Output
Execute command.
Anything else?
I tried to look at method in vendor/codeigniter4/framework/system/CLI/CLI.php and what I found is when I delete define('STDOUT', 'php://output'); // @codeCoverageIgnore then it's working as expected.
Do we need to define it in else statement ?  Or I'm calling command wrong.
Documentation is not clear how to use params in command.
https://codeigniter.com/user_guide/cli/spark_commands.html#id2
/**
     * Static "constructor".
     */
    public static function init()
    {
        if (is_cli()) {
            // Readline is an extension for PHP that makes interactivity with PHP
            // much more bash-like.
            // http://www.php.net/manual/en/readline.installation.php
            static::$readline_support = extension_loaded('readline');

            // clear segments & options to keep testing clean
            static::$segments = [];
            static::$options  = [];

            // Check our stream resource for color support
            static::$isColored = static::hasColorSupport(STDOUT);

            static::parseCommandLine();

            static::$initialized = true;
        } else {
            // If the command is being called from a controller
            // we need to define STDOUT ourselves
-          define('STDOUT', 'php://output'); // @codeCoverageIgnore
        }
    }

The CLI SAPI defines STDOUT.
https://www.php.net/manual/en/features.commandline.io-streams.php
So if you use PHP via web, the constant is not defined.
Why is STDOUT defined in your environment?

@kenjis I added in vendor/codeigniter4/framework/system/CLI/CLI.php
    /**
     * Static "constructor".
     */
    public static function init()
    {
+        if (defined('STDOUT')) {
+            dd(STDOUT);
+       }
+        else {
+            dd('STDOUT not defined');
+       }

        if (is_cli()) {
            // Readline is an extension for PHP that makes interactivity with PHP
            // much more bash-like.
            // http://www.php.net/manual/en/readline.installation.php
            static::$readline_support = extension_loaded('readline');

            // clear segments & options to keep testing clean
            static::$segments = [];
            static::$options  = [];

            // Check our stream resource for color support
            static::$isColored = static::hasColorSupport(STDOUT);

            static::parseCommandLine();

            static::$initialized = true;
        } else {
            // If the command is being called from a controller
            // we need to define STDOUT ourselves
            define('STDOUT', 'php://output'); // @codeCoverageIgnore
        }
    }

too see how is STDOUT defined and it returns

and it seems it comes from psalm required package amphp/amp.
So, I removed "codeigniter4/devkit": "^1.1.0", from composer.json and now it returns:
STDOUT not defined
So here is the problem.
We need to improve init() method to define define('STDOUT', 'php://output'); // @codeCoverageIgnore even if there is STDOUT defined from other package to the correct one.
What do you think ?
After removing all of the test code it's working as expected. Now I even don't need to check if some CLI method  is CLI like
            if (is_cli()) {
                CLI::write(CLI::color('Something to update: ', 'white') . $something->something);
                CLI::newLine();
            }

and run commands from Controller.

We should make that an elseif for ! defined('STDOUT'), especially if third-party dependencies may be grabbing the output stream already.


some questions about the tutorial

Hello,thanks for the sharing
I am really appreciate your amazing job,but I still have some questions about it.and I notice @inkyusa and @fmina you have been working on this.can you give me some light on this?
I've follow this tutorials for about 2 months,and I found some questions and I can't handle it by myself.
1.about "Dynamic System Identification (via VirtualRC)". I found some information from issues that it has been Deprecated since last year and I won't use the Logitec Gamepad F710 to control the M100 any more, because  you use attitude thrust to replace z velocity.(https://github.com/ethz-asl/mav_dji_ros_interface/issues/21).
so my first question is:should I use the DJI's remote control to control the M100 or others like keyboard?
The Dynamic System Identification (via attitudeThrust) page is not updated,I know it has been a long time since you have finished this section,and you must don't have time on it ,all I need to know is if this section is important to the flight?can I just skip this section and directly do the job in "First Autonomous Flight: Hover and Step Response"section after I finished the job in "MPC with MSF and ROVIO"  section?because I found the "First Autonomous Flight: Hover and Step Response" just need the steps in the "MPC with MSF and ROVIO"  section.
2.about First Autonomous Flight: Hover and Step Response:
1).when I do this job in simulation environment  by using DJI Assistant2 software,I've a question about step6 :

Now all modules are up and running in position control mode (i.e., you send position commands via the transmitter not attitude commands). Slowly increase desired z position.

Does that mean I have to use the Dji's remote control to increase desired z position?if yes ,I've found I can't control the M100 nicely in simulation environment,no matter how Slowly I push the Remote control rod up,the z position will increase without stopping and no matter how Slowly I push the Remote control rod down,the z position will decrease without stopping.I can't make it stay in a fixed hight and it will drift a lot on x and y axles,but it can still response to my remote controller.when I publish topic message like fly 1 meter high via rqt the M100 in dji assistan2(simulation) didn't response.  this question is crucial to me.I guess if there are some parameter files I missed.
I notice the launch file has load a dji_interface_params.yaml file  in /cfg/raven/  folder but the frequency of some sensor are different from the parameters in params.yaml which is located in  /cfg/ folder
Here is params.yaml:

device: "/dev/ttyUSB0"
app_id: 1040678
enc_key: "a41335b074411eb3408029cd0955324df2d3b84e5c0d80ed8344ae5c34e05cb2"
thrust_minimum: 10
thrust_maximum: 100
thrust_offset: 8.945
thrust_coefficient: 0.7389
#available freq: 0 1 10 50 100 Hz
imu_update_rate: 50
gps_updae_rate: 10
time_stamp_update_rate: 1
magnetometer_update_rate: 10
rc_update_rate: 50
status_update_rate: 10

Here is dji_interface_params.yaml:

device: "/dev/ttyUSB0" #"/dev/tty.usbserial-A104JS3T"
app_id: 1040678
enc_key: "a41335b074411eb3408029cd0955324df2d3b84e5c0d80ed8344ae5c34e05cb2"
thrust_constant: 1.2
baudrate: 921600
#921600,
#available freq: 0 1 10 50 100 Hz
imu_update_rate: 50 #100
gps_updae_rate: 1
time_stamp_update_rate: 1
magnetometer_update_rate: 1
rc_update_rate: 10
status_update_rate: 1

the frequency of status_update_rate,rc_update_rate,magnetometer_update_rate,gps_updae_rate are different.so which one is correct? need I modify the parameters?and Do these parameters have connection with the fly drift?
Here are the screenshots of my experiment:(the world-imu(M100)-imu(zr300) coordinate is stable)

Hello wqwanghanzhang,
Sorry for delayed response.
For the first question,

1.about "Dynamic System Identification (via VirtualRC)". I found some information from issues that it has been Deprecated since last year and I won't use the Logitec Gamepad F710 to control the M100 any more, because you use attitude thrust to replace z velocity.(#21).
so my first question is:should I use the DJI's remote control to control the M100 or others like keyboard?

In case your drone keeps the similar configuration what we used (intel nuc and vi-sensor center mounted), you can test with the same parameters. Could you tell more about your drone configuration?


v3.5.1

Fixes path of systemd system service in nfpm

Gonna just update the binaries in place while we can.


common: improve unit test coverage of 'common' package

Signed-off-by: Lonng<EMAIL_ADDRESS>
What problem does this PR solve?
Improve unit test coverage of 'common' package

/run-all-tests

/run-all-tests

@kennytm @GregoryIan PTAL

/run-all-tests

/run-all-tests

PTAL @july2993


Display all available 'Link' headers

Some feeds have more than one link for the same entry - the main difference being the protocol, i.e.:
<link rel="alternate" type="text/html" "href="http://www.example.org/foo" />
<link rel="alternate" type="text/gemini" href="gemini://gemini.example.org/foo" />
<link rel="alternate" type="text/plain" href="gopher://gopher.example.org/foo" />

What happens now is that last entry wins, it seems, and the only Link header looks like so:
Link: gopher://gopher.example.org/foo

I don't think HTTP should automatically win here so, if this doesn't break anything, it would be nice to have them all displayed.

@rjc I have a guess why this is happening. Document parsed node by node. Each node is analyzed and information is entered into class Item. Hence, in your example, the value of Item::link changes three times in process of parsing and, logically, stop at the last.

@rjc I propose the following solution. We will not display all links at once. This link is needed mainly to open the article in the browser, so when displaying the article, we will add next to the main link (say, the first one), the number of links. And when you try to open it in a browser, a window will open asking you to select a link.

Yes, that's correct - sometimes, when an entry is image-heavy, I want to open the link in a web browser, but other times, I might chose an alternative option.
Either way, the way I use newsboat is via SSH without any web browser on the remote end - all I rely on is the terminal on my local machine, which ensures that all links are clickable.
I belive that, what you propose here, is to use the built-in support for a web browser, in which case, I'm not sure how would that work in my scenario - using a local GUI web/gemini/gopher browsers and a remote newsboat session via SSH.

@rjc that should work for you, because I propose that a new ListFormAction open with a list of links, just like that:
http://www.example.org/foo
gemini://gemini.example.org/foo
gopher://gopher.example.org/foo

and you can  just click in terminal.

@rjc Can you give me a URL of the feed that does this? I wonder if all their links are marked with rel="alternate".
At the very least, I think Newsboat should pick the link without any rel attributes; if there are multiple, pick https:// or, if that's not available, http://. That would support the most common use-case.
To support multiple links per item, we have to extend the database (because we only have a single column for a link right now). Then, we can use the existing urls dialog to show them. I think we should still pick one link as the default, to be opened with open, and treat the rest as we treat links inside articles: number them and put them into the links list at the end of the article (which also makes them available through the urls dialog).

Can you give me a URL of the feed that does this? I wonder if all their links are marked with rel="alternate".

Yes, they all are.
By saying that it would be nice to have them all displayed, what I had in mind was simply not to penalise non-HTTP links, i.e. gemini, gopher, etc. but I guess http(s) could simply be made default as they'll be the most commonly used ones.

@Minoru If I already stated the correct hypothesis above (I checked, everything is correct), then I think I will take up this issue.
I suggest that firstly implement a default link, and then a choice from several. The default link will not be selected in order of links follows, as it is now, but in order of priority. First http/https, then others.

@rjc I admit I'm slow to respond right now, so might be my fault, but the provided URL doesn't contain any links with rel=alternate. Is there any chance this is a wrong URL?

@Minoru I obviously picked the wrong feed, sorry about that! Here's the correct one! I'll edit my earlier reply in case someone reads this issue but stops there ;^)
P.S. Links to all three feeds (there's also a JSON one) are available on the main web page :^P

Thanks!
I just merged the first change by @bogdasar1985, which makes Newsboat useable with such feeds by always picking an HTTP(S) link. This improves the common case. We still need a way to store and display alternative links, but this is a good start.

@Minoru I thought that supporting multiple links to an article was a redundant feature since this case is extremely rare. As for me, it would be good to take out the task of processing several links in a separate python script, for example. It would process the xml file with the feed, removing extra lines from it, and then newsboat would read the already processed file.


Output contains temperature in F too now

closes #1 issue.

You are merging into the wrong branch!


[DUOS-1993][risk=no] Move "Add Institution" button on Admin Console Institutions Page

Addresses DUOS-1993

Moved the "Add Institution" button to within the right header container section.
Added some styling to give some space between the button and the search bar, added the lineHeight property to get text to fit into the button.
Added styling to the admin_manage_users page to center the button text vertically.

Have you read Terra's Contributing Guide lately? If not, do that first.

Label PR with a Jira ticket number and include a link to the ticket
Label PR with a security risk modifier [no, low, medium, high]
PR describes scope of changes
Get a minimum of one thumbs worth of review, preferably two if enough team members are available
Get PO sign-off for all non-trivial UI or workflow changes
Verify all tests go green
Test this change deployed correctly and works on dev environment after deployment

The icon looks like it's not fitting in the card anymore, shoudl it be inside?

The icon looks like it's not fitting in the card anymore, shoudl it be inside?

It looks like that's what's currently happening in dev, so I don't think it's his code (maybe a dependency update messed with the icons?). In my opinion we can just get rid of the icon and just display the text. These buttons are only used on the admin pages and I prioritize having the buttons be clear before being stylish.


Installation requires pywps branch at present

pip uninstall -y pywps; pip install<EMAIL_ADDRESS>
@jhaigh0: please try the above installation and check it works in your working environment.

Dealt with in playbook so closing.