API change proposal : inconsistency for getting parameters in a request

Hi,
I come from a java background and I love using flask. But there is some itch with flask GET/POST API (production code and test code) I would like to discuss about.
In a java servlet, it doesn't matter what http method you're using (GET, POST, PUT), you always do this to get a parameter from input :
String username = request.getParameter("username");
String password = request.getParameter("password");

In flask, this is inconsistent :
for a  POST, flasks "assumes" data come from a form (wich is not mandatory, you can submit data without a form) :
username = request.form['username']

To me, in terms of API, form is wrong. But worse, if you do a GET, you can't use form, you'll have to user args :
GET :
username = request.args['username']

I would prefer to see, in POST/GET/PUT/whatever (I'm using parameter, as in java HttpServlet API) :
username = request.parameter['username']

As Im doing TDD, I observed the same inconsiancy in writing unit tests :
to test a POST, you can submit a dict (which is great and very pythonic) :
app.test_client().post('/login', data=dict(
        username=username,
        password=))

to test a GET, you can't pass a dict, you have to reconstruct the URL (which I don't find very pythonic) :
app.test_client().get('/agent/login?username=%s&password=%s' % (username, password))

I would love to be able to write this for a GET too :
app.test_client().get('/login', data=dict(
        username=username,
        password=))

Anyway, what do you think ?
Thanks for your feedback.

That's not an issue, that's very intentional design. There is a huge conceptional difference between data submitted in the form data and data submitted on the URL.
There is already a combining multidict that mashes request.form and request.args together into (called request.values) if you really want do that, but I consider that a horrible idea.

Thanks @mitsuhiko for your answer.
I really think that flask is great, but I lost a great amount of time because of this. I chose this framework for an important new project and I will stick to it. Let me further explain my point of view, if you don't mind. I just want to improve the API because I find it inconsistent, especially if you compare with other technologies (this is why I named this "github issue" "proposal" and not "issue") and discuss about it.

app.test_client().get('/hello', query_string=dict(name='World'))

I'm glad query_string exists (sorry I couldn't find it in the manual), it is better to pass a dict than to construct a string as I did, but having a different name for passing arguments to a GET or a POST is the same API design flaw to me than the difference between request.form and request.args.
I will try using request.values (I strongly disagree with your "I consider that a horrible idea." - I'm not talking about the name request.values here, this would be another discussion) and will let you know.

There is a huge conceptional difference between data submitted in the form data and data submitted on the URL.

I think you're messing up API and implementation details. I'm talking about API here. Conceptually, getting data from the user is not different if you use GET or POST (or PUT) :  you just want to get data.
As a user of the framework, I just see flask from its API. I don't care whether data comes from a GET or a POST : I want my data to do something useful for the end user.
When I design my route, I say once methods=['POST']. I don't want my implementation to be different if I want to change the http method later on. I also see some kind of duplication here when I have to implement in different ways depending on the http method.
 I think this is a good API design (not all java API have a good design - hello Calendar API or being able to open an InputStream without specifying the encoding !)
I wish you left this proposal open to discussion and not close it. Some people might agree with you or me.
Thanks again.

I think you're messing up API and implementation details. I'm talking about API here. Conceptually, getting data from the user is not different if you use GET or POST (or PUT) : you just want to get data.

There is a huge conceptional difference there. A POST/PUT request can carry information in the entity body as well as the URL. Just because GET is a method that does not allow an entity body does not mean that URL parameters are an inherent property of that HTTP method.

I don't care whether data comes from a GET or a POST : I want my data to do something useful for the end user.

My point is: you should care. There are different semantics and different things to consider.

When I design my route, I say once methods=['POST']. I don't want my implementation to be different if I want to change the http method later on.

There is a huge semantic difference between a GET request and any other request. Likewise a POST request can accept parameters on the URL as well and very often does.

And I consider servlet's in general some of the worst API in the Java world, no offense. Partially for the parameter thing, partially because it's method based dispatching is a horror to work with when you need to support HTTP methods like PATCH. (And then irrelevant to that: the fact that it's only allowing IOExceptions to bubble up).

I wish you left this proposal open to discussion and not close it.

Not sure exactly what you want to discuss here? The functionality you want already exists.

Well, our points of view differ a lot and I don't see any converging here. We're still struggling between API of a framework and its implementation.
Anyway, thanks for taking time to answer me with argumentation.

Well, I'm on the same subject (and working with jpcaruana), so I'm interested by that point. We do TDD, and when refactoring step comes, one of the first thing is "where is duplication".
When I see differences between post/get in my test :
def myGetFuntion(app, param1 , param2):
return app.get('/my/url', query_string=dict(param1=param1, param2=param2) )
def myPostFuntion(app, param1 , param2):
return app.post('/my/url', data=dict(param1=param1, param2=param2) )
I see duplication : why I have on one side get/post method AND data/query_string on the other side. Is not the API to tell me how much different conceptually is a GET/POST HTTP method. I know exactly what are these differences.
I'd like an API to help me not wasting my time. When I make a post test, then a get test, I'd expect that I call the methods the same way just saying "get" or "post".
On a semantic point of view I think that the query is part of the url and so is GET. But it could be great to have an alternative method with a common semantic (parameter seems ok).
cf http://www.w3.org/2001/tag/doc/whenToUseGet.html
Whatever flask is great...
See you.

If you want this functionality for the test client you can easily add this in a custom subclass: http://paste.pocoo.org/show/537768/


Updating Version Control in Package Manager causes errors

I recently updated the Version Control package from the Unity Registry in the Package Manager to the latest version (1.15.12) which caused a bunch of errors along the lines of
Assets\MoralisWeb3ApiSdk\Moralis\MobileLogin.cs(29,7): error CS0246: The type or namespace name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?)
Reverting the Version Control package back to 1.15.7 removes these errors. I gathered the following from the changelog for the Version Control package:

Fixed Newtonsoft.Json.dll conflicts with other external packages

I believe this could be the source of the errors when updating to the newest Version Control package.

this maybe due to two projects having the same class name in your project

@shayr80 Could this be related to this issue: #71


Question: How to dynamically set active class in header in Timber?

Hi,
how can I easily add a class active to my active menu item im Timber?
Let's say I have a simple navigation:

      Home

      Features

If I am at domain.com/home, I want the active class be added ot the respective li element (as above), but when switching to domain.com/features I want the active class to be only visible at its li.
I found a solution for Twig in general at SO:
{% if menu.url == current_url %} class="active"{% endif %}
Source: http://stackoverflow.com/a/19687966
But I have no clue how to implement that with Timber. Here's what I tried for features - and failed with:
...

Features

...

How about just using twig blocks? In my base.twig file one line in the html header looks like that for example:

On the front-page twig template i've added the following snippet:
{% block html__id %}id="start"{% endblock %}

{% block html__class %}no-js{% endblock %}

So there is no need for any conditional logic at all. Took me a while to wrap my head around that concept but imho one key twig concept. Hope that helps.

That could work. However, I would need to add an extra block for every
 element in my nav, so it would become in the base.html:

      Home

      Features

And in the page's twig that is active:
{% block nav_item_1 %}active{% endblock %}

Doable for a couple of items. But not very elegant if the list grows.

You could replace the whole nav block. The default state is without active and then replace the whole nav block once with the active state. So actually only one block to exchange.
{% block nav_active %}

Home

Features

{% endblock %}
and the block to exchange
{% block nav_active %}

Home

Features

{% endblock %}

Yes, will do.


Fixes #1835

Itinerary Details Page - Add Team Member AJAX #1835

removed AJAX and knockout used in ItineraryDetails view
cleaned up view

Oops - forgot to update unit tests. Coming soon.

@stevejgordon Wondering if I should add a AddTeamMemberResult to be consistent.

@c0g1t8 Let me pull the code and have a look. It'd be nice to be consistent, but I think we might change the way we do the notifications/messaging.

Had a quick play and I think in the future, some more bootstrap messaging would be nice, but I think it will be easier with a revised notification approach. I'd say for now, this probably meets the key requirement. We can catch up with messaging a little later. Works fine for me. If you're happy with where you have this I can do a final full check over and we can look to get it merged in.

I'm good with it. 😄


Planning Logging Refactor

Must be merged after https://github.com/Autoware-AI/core_planning/pull/36
Refactor of ROS logging for planning modules.
See original MR for more details: https://gitlab.com/astuff/autoware.ai/core_planning/-/merge_requests/78

@icolwell-as Once conflicts are resolved, I will merge.


fix: cache connection to skip refreshes

Reverting https://github.com/redhat-developer/app-services-cli/pull/1624/files
This change was to ensure that we mas-sso tokens refresh have been added. Now since mas-sso tokens are gone we should cache our regular sso tokens across session.
This is still not perfect but due to very large amount of connections created in various helpers (kafka create creates -7 connections on it's own - that is 7 sso refreshes per command). Some better refactor for connection objects is needed.
For now we can cache that object as there is no chance that tokens will outdate during single command run (5minutes)

Merging without review as this is reverting previous PR etc.
We can verify this change by running any command - WE should only see single token refresh happening from now (instead of 7 refreshes before)


[RealmSwiftObject defaultPropertyValues]: unrecognized selector sent to class

I am attempting to create an unmanaged instance of a managed Realm Object.
let managedFooTask: PendingTask = realm.getFooTaskById(10) as! PendingTask
// Above is my managed task I got from the realm, below I am trying to get an unmanaged instance of it.
let fooUnmanagedTask: Object = Object(value: managedFooTask as! Object)

This is my Realm Object model for FooTask:
class FooTask: Object, PendingTask {

    convenience init(realmId: Int) {
        self.init()
        self.realmId = realmId
    }

    dynamic var realmId: Int = 0
    dynamic var createdAt: Date = Date()
    dynamic var manuallyRunTask: Bool = false

    override static func primaryKey() -> String? {
        return "realmId"
    }

    func queryForExistingTask() -> NSPredicate {
        return NSPredicate(format: "realmId == \(realmId)")
    }

    func canRunTask(realm: Realm) -> Bool {
        return true
    }
}

The crash happens on line:
let fooUnmanagedTask: Object = Object(value: managedFooTask as! Object)

If you notice in the Realm model that I have created, FooTask there are default values given for all of the properties. Would that be the issue with this crash?
Goals
Create an unmanaged instance of a managed Realm Object.
Expected Results
Get an unmanaged instance of a managed Realm Object
Actual Results
2017-04-06 16:33:36.269 - Debug[76856:8863377] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[RealmSwiftObject defaultPropertyValues]: unrecognized selector sent to class 0x10711c0f8'

Steps to Reproduce
Create an instance of FooTask somewhere in the app on a background thread. After the Realm write block is complete, send a notification via NSNotification. AppDelegate receives notification by observing it and then runs the code snippet given above in a new background thread where I am (1) querying Realm to get my managed instance of FooTask from the realm and (2) create an unmanaged instance of it.
My managed realm object is valid as I set a breakpoint before: let fooUnmanagedTask: Object = Object(value: managedFooTask as! Object) and po managedFooTask to get a description of the object with class name FooTask and all properties populated with the correct values.
I have read this issue which seems similar and what also told me to use Object(value: ) to create an unmanaged instance of a managed object as well as this issue which gave me the hint to try and clean the project to see if that would fix this issue. I cleaned out all of my pods via rm -rf Pods/ and reinstalled them all via pod update, then performed an Xcode Clean, ran the app again and same exception.
Version of Realm and Tooling

Realm framework version: 2.5.1
Xcode version: 8.3
iOS/OSX version: iOS simulator iPhone 7 version 10.3

Hi @levibostian. Thanks for reaching out about this. I wanted to let you know that we've received your issue and that someone will follow-up with you soon.

Thank you @istx25

The first thing that jumps out at me is that the Object class isn't intended to be used directly, but rather as a parent class to subclass for your own models.
If you refactor your code to avoid that, do you still hit this issue? If so, let me know ideally with a sample Xcode project, and I'll take a closer look.

I do understand that Object is supposed to not be used directly. That is fine. I am all about best practices. I can use another method besides creating an Object instance directly.
I got the idea to creating an Object instance from your comment in this issue.
Is there another way to create an unmanaged instance from a managed instance of an object? I come from the realm-java lib where creating unmanaged instances of managed instances is built into the lib. What is the realm-cocoa equivalent or best practice instead?
My use case: I perform a realm query to get a realm Object > I perform a write on this object > Perform an API call > Perform another write on this object.
I am trying to create an unmanaged object because I can share the object across threads (as I will be on a different thread after the API call is performed since the API call will be performed on another thread and the callback after it is complete will be called from this API thread).
I was looking through the Realm docs yesterday for Swift and it mentioned passing instances across threads. I am guessing this is the realm-cocoa equivalent to working with managed objects across threads?
I don't mind this solution. However, it does not seem as flexible as creating an unmanaged object. Unmanaged objects are very flexible do handle them however you would like. The biggest limitation that I see is A ThreadSafeReference object must be resolved at most once. I may have scenarios that I would need to resolve a ThreadSafeReference 2+ times. What do I do in this case? Is there a pattern that users usually do?

Hi @levibostian!
Like JP said, the Realm Object class is an abstract-like class that isn't intended to be used on its own. The schema that controls the types of data that the Object will store are defined in the user-defined Object subclasses. Object itself has no schema, so it has no idea how to persist those properties. But you can easily use the PendingTask subclass to create unmanaged copies.
To create an unmanaged version of PendingTask, it's completely fine to do this:
let managedFooTask = realm.getFooTaskById(10)
let fooUnmanagedTask = PendingTask(value: managedFooTask)

Creating unmanaged copies in order to pass them between threads would work, but it would be quite inefficient. You'd be paging in and making copies of each object you're working with, and you'd introduce the overhead of re-inserting the objects back into Realm as opposed to to simply updating the values you changed.
If you have a need for tracking objects across multiple threads, and you want to minimize the number of times you need to create a thread reference, the technique we used to recommend before then was to assign a primary key property to each object, pass the primary key value itself across threads, and then use realm.object(ofType:forPrimaryKey:) to re-query for that object on the new thread.
I hope that helped!

@TimOliver, that is super helpful. Super helpful.
I will give the PendingTask(value: managedFooTask) a shot for curiosity reasons. I do understand the overhead that you are talking about. I have been handling unmanaged objects in realm-java for a year now. Luckily I have variable naming on my side :)
I will look into realm.object(ofType:forPrimaryKey:) too.
If I decide to use PendingTask(value: managedFooTask) or realm.object(ofType:forPrimaryKey:), I have never gotten it to work completely. I am never creating direct instances of PendingTask(). I am subclassing it. PendingTask() is a protocol.
So, I have been trying to do generic realm queries with no success. I understand generics. Been using them in Java for years. Swift is a little different, however (and not as complete as Java in terms of functionality) and have had issues getting it to work.
Any tips on generic realm queries? Being able to query realm for a generic type (generic subclass of Object and PendingTask).

Hi @levibostian!
Cool! Give it a try and let us know how you go!
Hmm, generic queries? How would that look exactly?
In terms of what I think you're hoping for, Realm doesn't do generic queries, sorry. When you perform a query in Realm, you specify the exact Object class you wish to query, and the resulting Results object will represent a collection of those subclass model objects.
There's been some discussion about methods of applying polymorphic practices to Realm objects. I'd recommend checking that out if it's something you're curious about adopting. :)

That's what I needed. Thank you. I have learned what I needed. Thank you so much for all the help, team.

Awesome! Glad I was able to help! Thanks a lot! :)
Best of luck!


KAFKA-13132: Upgrading to topic IDs in LISR requests has gaps introduced in 3.0 (part 2)

Most of KAFKA-13132 has been resolved, but there is one part of one case not covered.
From the ticket:
2. We only assign the topic ID when we are associating the log with the partition in replicamanager for the first time
We covered the case where the log is already existing when the leader epoch is equal (ie, no updates besides the topic ID), but we don't cover the update case where the leader epoch is bumped and we already have the log associated to the partition.
This PR ensures we correctly assign topic ID in the makeLeaders/Followers path when the log already exists.
I've also added a test for the bumped leader epoch scenario.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Just tested and something is still wrong here. Need to followup.

Ok, tested locally (with the correct jar this time) and it looked good.


found vulnerabilities

After clone this repo and exec npm install, there is a warning existed say that
added 600 packages from 432 contributors and audited 2022 packages in 26.486s
found 11 vulnerabilities (1 low, 9 moderate, 1 high)
  run `npm audit fix` to fix them, or `npm audit` for details

Ignore it and enter node lolisafe.js, got an error message
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::8080
    at Server.setupListenHandle [as _listen2] (net.js:1360:14)
    at listenInCluster (net.js:1401:12)
    at Server.listen (net.js:1485:7)
    at Function.listen (/root/lolisafe/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/root/lolisafe/lolisafe.js:58:6)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Function.Module.runMain (module.js:694:10)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3

EADDRINUSE - you already have other app listening on 8080

@ZexuanTHU Are you using NGINX as a reverse proxy? If so you should change the port in the lolisafe config to something like 9696. Just make sure to update the NGINX configuration to reflect that. This is all documented in the README.md.

The NPM errors are because the packages are out of date.


Now, when the container stopped, the snapshot will be removed, In the future, we don't remove the snapshot until the container be removed. If restart the container, can reuse its snapshot.
2.Does this pull request fix one issue?

3.Describe how you did it
4.Describe how to verify it
5.Special notes for reviews
this is a simple PR only, avoid to create a big pr.

LGTM


Is this library alive?

There have been a lot of changes in NextJS router and other core functionalities and it seems that this library hasn't been updated for more than 2 years now

@GMaiolo i think so but luckily this lib is still compatible with next v9. I've been using this start from last week it is still working right now. idk after next.js team release new major version

Not completely https://github.com/fridays/next-routes/issues/329

Considering the number of people that probably use this library, the maintainer/owner of next-routes should update the README informing people that its not longer being actively maintained.
I will be removing it from my project now.

Assuming that this library is kind of abandoned at this point, Is there an alternate library for  routing with next.js, if someone do not want to use file based routing ?

Anyone got a guide for removing this library?
I took over a project using this library & my attempt to remove it resulted in Cannot GET errors from all routes. You'd think I had deleted the pages directory or something.

Unfortunately the problem is that next doesnt have certain features in order to really remove the library. Custom routes in nextjs will help (and maybe enough for certain use cases) but there is no fully dynamic route solution like this library provides (if you have for example routes comming from a CMS).

https://github.com/fridays/next-routes/issues/244#issuecomment-564069911

@kenberkeley still radio silence though, and no updates to the library since June 29, 2018

@kenberkeley still radio silence though, and no updates to the library since June 29, 2018
Ping @Timer!

From what I have seen so far , the next,js project priorities are set for what is required for vercel platform and not necessarily based on the needs of the community. in this case ,this may be a low priority for vercel.

The last commit to github! by the owner was in may 2019. It seems he has not abandoned this library, but rather github in general. What about some contributers here? Someone who would take over? is that even possible?

This library shouldn’t be used anymore. Use the inbuilt nextjs routing

On 28. Nov 2020, at 22:04, Andi<EMAIL_ADDRESS>wrote:

The last commit to github! by the owner was in may 2019. It seems he has not abandoned this library, but rather github in general. What about some contributers here? Someone who would take over? is that even possible?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Thanks for pointing that out @ostenning

I have already started the migration process to  next routing.

I have just forked the repo and updated it to latest versions with the correct types, all test are passing 🟢 👍
https://github.com/meabed/next-routes-extended
https://www.npmjs.com/package/next-routes-extended

@meabed
I think you have an issue here- https://github.com/meabed/next-routes-extended/blob/master/package.json#L39
When trying to install your package, I get an error Invalid tag name "=>15.4.2": Tags may not have any characters that encodeURIComponent encodes.

@meabed
I think you have an issue here- https://github.com/meabed/next-routes-extended/blob/master/package.json#L39
When trying to install your package, I get an error Invalid tag name "=>15.4.2": Tags may not have any characters that encodeURIComponent encodes.

Oops 🙊 you are right, I'll fix this right away and release it.
I'm also planning to add more examples, we are using this routes extensively in a lot of different use cases and I think it will be helpful to share them as well.

@albertvolkman is fixed and pushed!
I am adding an example folder with different use-cases later today!

@meabed thank you to take over.
Do you plan to make it compatible with Next built-in i18n routing?

@meabed thank you to take over.
Do you plan to make it compatible with Next built-in i18n routing?

Yes - absolutely - I am adding and example code-sanebox with all use cases, i use it already multi-lingual and works well!
I will share different complete working solution with codesanbox, if you have something specific let me know.
Thank you!

Great!
And do you think it will support getStaticProps? Like:
MyPage.getStaticProps(({ locale }) => {
  [...]
})

Could we move the convo about the fork to the fork? Seems proper


delete storagepool device doesn't clean up correctly

Issue migrated from https://api.github.com/repos/Jumpscale/lib9/issues/318, opened by @Dinaamagdy
Steps

boot cpu-1 on be scale 2 with http://unsecure.bootstrap.gig.tech/krn/development/8850338390f481e6/development

Issue
Check the zrobot server return the following error :
ERROR:service-205f4241-6001-473d-a631-dea8d7327ac2:error executing action _monitor:
Traceback (most recent call last):
  File "/opt/code/github/zero-os/0-robot/zerorobot/task/task.py", line 79, in execute
    self._result = self._func()
  File "/opt/code/github/zero-os/0-templates/templates/node/node.py", line 51, in _monitor
    sp = self.node_sal.storagepools.get('zos-cache')
  File "/opt/code/github/jumpscale/lib9/JumpScale9Lib/clients/zero_os/sal/StoragePool.py", line 70, in get
    raise ValueError("Could not find StoragePool with name {}".format(name))
ValueError: Could not find StoragePool with name zos-cache

but when you check from the node you get the following error :
btrfs filesystem show --raw
warning, device 2 is missing
Label: 'ROOT'  uuid: b8049c50-f0a4-4d6b-b6dc-6523ff577e26
  Total devices 2 FS bytes used<PHONE_NUMBER>6
  devid    1 size<PHONE_NUMBER>0 used<PHONE_NUMBER>0 path /dev/sda4
  *** Some devices missing

commented by @zaibon
has been solved: https://github.com/zero-os/0-core/issues/692
setting this one to verification

verified on zero-os development  branch

steps of verifying :

creating zos vm with two additional disks on it .
make  btrfs group for this two disks
mkfs.btrfs /dev/sdb /dev/sdc
ruined one of these two disks using this :

- then try to show btrfs to watch is there proper output or no:
``` node_client.bash("btrfs filesystem show").get()
Out[76]:
STATE: 0 SUCCESS
STDOUT:
Label: 'sp_zos-cache'  uuid: 6dcc31ad-20a8-4271-b582-85a8c16e0190
  Total devices 1 FS bytes used 80.05MiB
  devid    1 size 5.00GiB used 1.02GiB path /dev/sdb1

warning, device 1 is missing
Label: none  uuid: 1aa9be28-fb55-43a6-91ff-ac2f7b53ade3
  Total devices 2 FS bytes used 112.00KiB
  devid    2 size 20.00GiB used 2.01GiB path /dev/sdc
  *** Some devices missing

after deleting the partition found this error on the z-robot logs


Small bug: wrong type of "cube" in drawings.py Laptop class.

##Error message:
File "C:\manim\manimlib\mobject\svg\drawings.py", line 152, in init
body.set_fill(self.shaded_body_color, opacity=1)
AttributeError: 'Cube' object has no attribute 'set_fill'
Expected behavior:
Being able to instantiate the class and use it for whatever
How to reproduce the issue:
import manimlib
class MyScene(manimlib.Scene):
    def construct(self):
        myLaptop = manimlib.Laptop()

How to fix:
In
C:\manim\manimlib\mobject\svg\drawings.py
Import VCube instead of Cube
drawings.py lines [15, 16]
from manimlib.mobject.three_dimensions import Cube #
from manimlib.mobject.three_dimensions import VCube # Bugfix for set_fill() issue. --> Cube is then no longer accessed, so not needed.

and in the class Laptop(VGroup)
drawings.py lines [147, 155]
def __init__(self, **kwargs):
        super().__init__(**kwargs)
        body = VCube(side_length=1) # Changed from Cube() to VCube(), fixed the issue for me ¯\_(ツ)_/¯
        for dim, scale_factor in enumerate(self.body_dimensions):
            body.stretch(scale_factor, dim=dim)
        body.set_width(self.width)
        body.set_fill(self.shaded_body_color, opacity=1)
        body.sort(lambda p: p[2])
        body[-1].set_fill(self.body_color)

Thanks! I believe this is now fixed.


Add static files and GitHub action for SophieBot.Web

Related to https://trello.com/c/IyLJ06WE and https://trello.com/c/UIM4eaQO

 DevOps - static website


theme download --no-ignore no longer works

What happened
Trying to download an ignored file with theme download --no-ignore <filename> no longer works:
% grep -A3 ignore_file config.yml
  ignore_files:
    - assets/algolia_config.js.liquid
    - assets/manifest.json
    - config/settings_data.json

% theme download -e production --no-ignore config/settings_data.json
[production] Warning, this is the live theme on <SHOP_NAME>.
No file paths matched the inputted arguments

Surprisingly, deploy still works:
% theme deploy -e development --no-ignore config/settings_data.json
[development] 1|1 [==============================================================================]  100 %

What I expected to happen
With ThemeKit 0.7.5 and the exact same configuration and command, my config/settings_data.json was downloaded. I'd expect the same thing to happen :)
Steps to reproduce

Add config/settings_data.json to ignore_files in config.yml
Run theme download --no-ignore config/settings_data.json
Weep

My Environment
OS (including version): Arch Linux (up-to-date)
Themekit version: 0.8.0, also reproduced with 526154d (compiled locally)
Ignore Files(if any):
  ignore_files:
    - assets/algolia_config.js.liquid
    - assets/manifest.json
    - config/settings_data.json
    - "\\.*"
    - /(#|~)$/
    - /\/\..*/

This will be fixed in the newest verison. You can try out the prerelease by updating using:
theme update --version=v0.8.1-prerelease

Okay, you fixed that way too quickly. Now you're making the rest of us developers look bad in comparison! :wink:
But seriously, thanks a lot!


refactor: abstract content component common features

Content components (experience item summary, highlights and education item score, courses) all expose an API to wait for animation end. To then generate the content and fill the waitForAnimationEnd. Maybe all of that could be abstracted in something like abstract class ContentComponent
it would reduce tests implementation size too

Moved to https://github.com/davidlj95/website/discussions/314


Ongoing Sync appears broken

The module fetches calendar entries, but then stops updating/freezes. Other modules appear to work as normal.
Any advice would be greatly appreciated!

Hi @gkramer, have you tried checking if there is any issue in the logs? try running pm2 logs mm or check the console for errors.

I'm seeing the same issue.  I see MMM-GoogleCalendar: 10 events loaded for 'calender-id' occasionally i see: Failed to retrieve repo info for default: TypeError: Cannot read properties of null (reading '1').  I'm seeing these through the console of the docker container i'm running. is there another spot to look for logs?


FamilyProvider arguments is null for generated providers

Describe the bug
I was trying to implement a simple logger to see in the console when a provider was initialized or disposed - something like:
"Provider 'providerName' was initialized"
When the provider is a family provider i want to display the arguments as well like:
"Provider 'familyProviderName' with 'id' .... was initialized"
I've noticed there is an provider.argument of the passed ProviderBase<Object?> provider but it seems to be null for generated providers since the used arguments are available directly on the object itself.
This is not ideal though since i don't know which provider is being initialized and thus i don't know their parameters to log them.
The docs on provider.argument state:
/// If this provider was created with the `.family` modifier, [argument] is
/// the variable that was used.
///
/// On generated providers, this will be a record of all arguments.

Which seems not be the case.
To Reproduce
import "package:riverpod_annotation/riverpod_annotation.dart";
import "package:hooks_riverpod/hooks_riverpod.dart";
import "package:logging/logging.dart";

@riverpod
String example(ExampleRef ref, String test) => test;

class RiverpodObserver extends ProviderObserver {
  @override
  void didAddProvider(
    ProviderBase<Object?> provider,
    Object? value,
    ProviderContainer container,
  ) {
    // provider.argument is null even though we
    print("Initialized ${provider.name} with ${provider.argument} was initialized")
}

void main() {
 runApp(
    ProviderScope(
      observers: [if (kDebugMode) RiverpodObserver()],
      // Consume the provider somewhere so it will be initialized
      child: ...,
    ),
  );
}

Expected behavior
The provider.argument variable should hold a Map or Record of all passed arguments so I can display them in the logs by simply iterating.

Thats already how 3.0 behaves. Just wait a bit :)


fix go install command

the current command errors with:
$ go install github.com/rancher/k3d
go install: version is required when current directory is not in a module
	Try 'go install github.com/rancher/k3d@latest' to install the latest version

What

Why

Implications

Hi @Rots , that's true, thanks for the fix! :+1:


codegen: Make phantom fields public.

Otherwise you can't construct structs outside of the bindings file, which is
breaking.
Also, given the previous change was breaking and I didn't notice, I yanked
0.24.1.

r? @fitzgen

@bors-servo r+

:pushpin: Commit 31e4409 has been approved by fitzgen

:hourglass: Testing commit 31e440917cdc8ac57cd69ddf929e90a7c4b46367 with merge 18b7e62c9f424cc2a0b633396fd0dfcd36c3e80f...

:sunny: Test successful - status-travis
Approved by: fitzgen
Pushing 18b7e62c9f424cc2a0b633396fd0dfcd36c3e80f to master...


multiple files: fix typos

Please be aware that this pull request was automatically created using gtf - a typo fixing bot
You should be able to merge this with no other problems.
In case the proposed changes do not make sense, I would be glad to hear about it.

Thank you for this PR, @schneiderl , well done. 👍


v5 draft

https://github.com/react-spring/react-three-fiber/issues/420

@stephencorwin i get this warning now
⚠ Some of your tasks use `git add` command. Please remove it from the config since all modifications made by tasks will be automatically added to the git commit index.

@drcmda ah, I guess they made a QOL change at some point. It looks like we can remove that step from the lint-staged config in the packages.json


Using tabs for navigation

Describe the feature in detail (code, mocks, or screenshots encouraged)
Currently to use navigation you have to either surround a tab with <a> tags or use goto() both comes with their own problems. The <a> solution will cause users to firstly tab onto the <a> and then the <div> with role="tab", another problem with this approach is that now the direct children of the tabgroup are not elements with the role="tab" attribute. The goto() method is a lot better but still not perfect since non-js users are now unable to visit certain parts of my website.
A suggested solution is the following, although it is far from fully thought out and sounds honestly a bit too complex for no reason:
Pass in a prop to TabGroup element called navigation either set to true or false (false by default) if this navigation property is set the tabs will be <a>'s instead of <div>'s, the value of the tab's will now be passed into the href of that tab.
What type of pull request would this be?
Enhancement
Provide relevant links or additional information.
No response

@Hugos68 the App Rail update recently was a test to another approach to this issue - maintaining a separate version of the component that acts purely as an anchor. I have some ideas to refine this a bit, but I think we could apply this here as well. Thanks for the request. I'll use this to try this out soon.

I would like to work on this feat.


TypeError: mix.js is not a function

Laravel Mix Version<EMAIL_ADDRESS>Node Version (node -v): v11.9.0
NPM Version (npm -v): 6.5.0
OS: Ubuntu 18.04.1 LTS

Description:
Whe I follow the instructions on https://laravel-mix.com/docs/4.0/installation#stand-alone-project I get the following error:
TypeError: mix.js is not a function

Steps To Reproduce:
mkdir my-app && cd my-app
npm init -y
npm install laravel-mix --save-dev
cp node_modules/laravel-mix/setup/webpack.mix.js ./
node_modules/.bin/webpack --config webpack.mix.js

/home/vagrant/my-app/node_modules/webpack-cli/bin/cli.js:231
				throw err;
				^

TypeError: mix.js is not a function
    at Object.<anonymous> (/home/vagrant/my-app/webpack.mix.js:14:5)
    at Module._compile (/home/vagrant/my-app/node_modules/v8-compile-cache/v8-compile-cache.js:178:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:745:10)
    at Module.load (internal/modules/cjs/loader.js:626:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
    at Function.Module._load (internal/modules/cjs/loader.js:558:3)
    at Module.require (internal/modules/cjs/loader.js:663:17)
    at require (/home/vagrant/my-app/node_modules/v8-compile-cache/v8-compile-cache.js:159:20)
    at WEBPACK_OPTIONS (/home/vagrant/my-app/node_modules/webpack-cli/bin/convert-argv.js:115:13)
    at requireConfig (/home/vagrant/my-app/node_modules/webpack-cli/bin/convert-argv.js:117:6)
    at /home/vagrant/my-app/node_modules/webpack-cli/bin/convert-argv.js:124:17
    at Array.forEach (<anonymous>)
    at module.exports (/home/vagrant/my-app/node_modules/webpack-cli/bin/convert-argv.js:122:15)
    at yargs.parse (/home/vagrant/my-app/node_modules/webpack-cli/bin/cli.js:228:39)
    at Object.parse (/home/vagrant/my-app/node_modules/yargs/yargs.js:567:18)
    at /home/vagrant/my-app/node_modules/webpack-cli/bin/cli.js:206:8
    at Object.<anonymous> (/home/vagrant/my-app/node_modules/webpack-cli/bin/cli.js:500:3)
    at Module._compile (internal/modules/cjs/loader.js:734:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:745:10)
    at Module.load (internal/modules/cjs/loader.js:626:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
    at Function.Module._load (internal/modules/cjs/loader.js:558:3)
    at Module.require (internal/modules/cjs/loader.js:663:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (/home/vagrant/my-app/node_modules/webpack/bin/webpack.js:156:2)
    at Module._compile (internal/modules/cjs/loader.js:734:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:745:10)
    at Module.load (internal/modules/cjs/loader.js:626:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
    at Function.Module._load (internal/modules/cjs/loader.js:558:3)

same here +1

I'm still running into this problem. All my laravel projects suffer from this problem. Is it a (machine)global npm problem?

Have ya'll tried changing the package.json script to --config=node_modules/laravel-mix/setup/webpack.config.js instead of webpack.mix.js ? Had the same problem and changed webpack.mix.js to webpack.config.js and that fixed it for me.

I'm still running into this problem. All my laravel projects suffer from this problem. Is it a (machine)global npm problem?

Can you please tell me any solution for this if you found any??

Have ya'll tried changing the package.json script to --config=node_modules/laravel-mix/setup/webpack.config.js instead of webpack.mix.js ? Had the same problem and changed webpack.mix.js to webpack.config.js and that fixed it for me.

unable to get you. Can you please explain? Really need help. Thanks in advance

I am also stuck in Laravel , old one 5.0.4. is running but error is coming .
And on new one it is not running properly even generally.


[v2] Have logging configured by a config file

Description of Changes

Switch Stanza logging configuration to be done through a configuration file. (this configuration was previously a series of command line switches)

Please check that the PR fulfills these requirements

[x] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)
Add a changelog entry (for non-trivial bug fixes / features) (Will be done when v2 is ready)
[ ] CI passes

Alright, here's the problem with that:
The config is set using a file path. We pass that file path back to the service builder (WithConfigFile). All good so far.
Then we call build. This creates a LogAgentBuilder. This code here crosses the barrier into opentelemetry-log-collection, where the interface only takes in the config file path.
Since opentelemetry-log-collection handles both the reading from disk AND the unmarshalling, there's no spot for us to intercept and modify the config into the format it should be (e.g., dropping the logging key).
opentelemetry-log-collection ALSO uses yaml.UnmarshalStrict (see https://github.com/open-telemetry/opentelemetry-log-collection/blob/89d49a3897633119bfe20628ff10f945d9741636/agent/config.go#L40 ), which means it errors if there are extra keys in the config, so somehow removing any keys it's not aware of (like an extra "logging" key) is necessary.
Basically, we need to make some change to opentelemetry-log-collection (which we'll have to justify, somehow), or do something like this. I'd certainly prefer if we could improve opentelemetry-log-collection to support this case.

@cpheps I decided to go ahead and just load the plugins up front. I think it solves more problems than it causes, even if it's a little odd to just ignore the option on the opentelemetry-log-collection agent builder.
Let me know what you think about these changes.


A couple of Python 3 fixes

In the example notebooks and for the orientation of axes.

Hey thanks, I just bumped into this and was about to submit patches.


how to show chord over 10 fret?

I want to show some chords over 10 fret, but It cannot input positions="X010101010"

resovled.


[RFC] Pure enums or global enums?

Even though I am not a big fan of the lack of namespace features in Nim and it is clear Araq's position on this take, I have never really ran into any mind boggling issues related to this.
I want to know your take on this topic, the new generator for ImGui binds all the current Enums with the pure pragma. Resulting in this type of code:
io.keyMap[ImGuiKey.LeftArrow.int32] = keyLeft.ord
io.keyMap[ImGuiKey.RightArrow.int32] = keyRight.ord
io.keyMap[ImGuiKey.UpArrow.int32] = keyUp.ord
io.keyMap[ImGuiKey.DownArrow.int32] = keyDown.ord

Is this okay with you or would you prefer a more of a C type solution with a 2-3 letter prefix before the enum? With a code that would look like this:
io.keyMap[igkLeftArrow.int32] = keyLeft.ord
io.keyMap[igkRightArrow.int32] = keyRight.ord
io.keyMap[igkUpArrow.int32] = keyUp.ord
io.keyMap[igkDownArrow.int32] = keyDown.ord

(Would have to properly think the prefixes)
My own taste says that the first example is more readable and less error prone. But would like to know your opinion on what you prefer since this change will be applied to all the future NimGL 1.0 generators and bindings.

I really prefer the former one, as global enums sometimes end in name clashes. You know... don't pollute the global namespace :)


Why pip install still install the version 0.5.6 while we do have 0.6on pypi website.

:+1: I've only tested on OS X, but it does seem to be downloading Flask-WhooshAlchemy-0.56 instead of the last Flask-WhooshAlchemy-0.6.

The problem seems to be that the requirements were set to fixed versions after 0.56. Was there a specific reason for this?


Security Integration

It would be nice if we could integrate the IronJacamar security with Quarkus Security somehow.

@sberyozkin is this something you can help me with? I have the required interfaces implemented here: https://github.com/quarkiverse/quarkus-ironjacamar/tree/main/runtime/src/main/java/io/quarkiverse/ironjacamar/runtime/security


meta ^1.11.0 and every version of flutter from sdk depends on meta 1.10.0

Because more >=4.1.0 depends on meta ^1.11.0 and every version of flutter from sdk depends on meta 1.10.0, more >=4.1.0 is incompatible with flutter from sdk.
So, because shared_package depends on both flutter from sdk and more ^4.2.0, version solving failed.
I'm on the latest stable branch

From a practical standpoint I am unable to test with older package versions. New releases are always published with the latest stable dependencies. Consider sticking with an older version of this package until your dependencies have caught up; or using dependency overrides.


I can not get color  bounding box

Thank you for your excellent work. @charlesq34 My graduation project is to reproduce your thesis. I set up meshlab (wireframe, turn into quad domestic mesh) according to your suggestion, but I didn't get the color bounding box.
What's more,I can not open the .obj file.  Is my version of meshlab wrong? I look forward to your reply. I want to get the same beautiful picture as in your paper, please guide me, thank you very much
Here are some related contents:
turn into quad domestic mesh

Save me,piease
Thank you

Hi,@ jingnanshi ,sorry to trouble you again. I set up meshlab (wireframe, turn into quad domestic mesh) according to your suggestion, but I didn't get the color bounding box.Could you tell me where the problem is, thank you very much

write_ply_rgb write_ply_color在util里，输入加上去就可以了应该，不过我没有验证，原理应该是给每个标签打颜色

@Caicaiyoko 大佬，能说的更详细些吗，具体该修改哪里？
我看代码里用到了write_ply_rgb write_ply_color这两个函数，但是问答区所有结果的目标边界框都是没有颜色区分的。这两个函数好像不能工作，得到的结果和论文里展示的不一样。

你不想想为什么不能工作么，你加个print进去别人根本就没工作啊，打开demo.py 看到 import pc_util没有，自己引入加进去应该就可以了(我没测试，这算法我只是稍微看下),自己多加几个print测试下

大佬，作者在问答区说颜色是提前写入的，in advance，是我理解有问题吗。。。这给了我很大困扰
https://github.com/facebookresearch/votenet/issues/3#issuecomment-525430453
但是domo和eval跑完确实都没有颜色啊。。。demo确实也没引入write_ply_color

大佬，作者在问答区说颜色是提前写入的，in advance，是我理解有问题吗。。。这给了我很大困扰
#3 (comment)
但是domo和eval跑完确实都没有颜色啊。。。demo确实也没引入write_ply_color

ply格式可以是x,y,z,r,g,b 应该输入前处理了，自己通读下代码，问我没用，我只是在选择模型顺便看了下votenet，我不用这个。


BIGTOP-3348. Fix Hive test failures caused by NoSuchMethodError of ApplicationId.fromString.

I've already merged #633, so would you rename the new patch in this PR to a name starting with "patch4" to clarify their application order (though it doesn't matter which one is applied first in this case)?

@sekikn Sure. I renamed the added file.

./docker-hadoop.sh -c 3 --smoke-tests passed with the following configuration.
docker:
        memory_limit: "12g"
        image: "bigtop/puppet:trunk-centos-7"
distro: centos
components: [hdfs, yarn, mapreduce, tez, hive]
enable_local_repo: true
smoke_test_components: [hive]

+1. Thanks!

Thanks, @evans-ye.


IndexError: list index out of range

I received some new ASCII Comtrade files, so I could test the ASCII parser. With the last commit from May 2, 2019 it worked good but with the current commit on master I get this error:
 File "comtrade.py", line 937, in parse
    self.status[i][line_number - 1] = svalues[i]

IndexError: list index out of range

So I changed this line
https://github.com/dparrini/python-comtrade/blob/d17ab5424e79add93c28538dac3175a3d3d4335a/comtrade.py#L924
to this:
svalues = [int(x) for x in values[len(values)-status_count:]]

I accepted and merged your solution, but did other small updates. Let me know if the issue is solved. Thanks!


Added generic-hourglass

Q
A

Bug fix?
no

New sample?
yes

Related issues?

What's in this Pull Request?
Added generic-hourglass.

Very cool! Thanks @tecchan1107!


python312Packages.albucore: 0.0.21 -> 0.0.23

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.albucore is: High-performance image processing library to optimize and extend Albumentations with specialized functions for image transformations
meta.homepage for python312Packages.albucore is: https://github.com/albumentations-team/albucore
meta.changelog for python312Packages.albucore is: https://github.com/albumentations-team/albucore/releases/tag/0.0.22
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.0.22 with grep in /nix/store/11pk4k89zs80i93bzxi23a2wbclpd7kp-python3.12-albucore-0.0.22
found 0.0.22 in filename of file in /nix/store/11pk4k89zs80i93bzxi23a2wbclpd7kp-python3.12-albucore-0.0.22

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

8 total rebuild path(s)

8 package rebuild(s)

First fifty rebuilds by attrpath

immich-machine-learning
python311Packages.albucore
python311Packages.albumentations
python311Packages.insightface
python312Packages.albucore
python312Packages.albumentations
python312Packages.insightface

Instructions to test this update (click to expand)

Either download from the cache:
nix-store -r /nix/store/11pk4k89zs80i93bzxi23a2wbclpd7kp-python3.12-albucore-0.0.22 \
  --option binary-caches 'https://cache.nixos.org/ https://nixpkgs-update-cache.nix-community.org/' \
  --option trusted-public-keys '
  nixpkgs-update-cache.nix-community.org-1:U8d6wiQecHUPJFSqHN9GSSmNkmdiFW7GW7WNAnHW0SM=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

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

Or:
nix build github:r-ryantm/nixpkgs/94611aa2e1c1a099dc3dab17b07c09276210197d#python312Packages.albucore

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/11pk4k89zs80i93bzxi23a2wbclpd7kp-python3.12-albucore-0.0.22
ls -la /nix/store/11pk4k89zs80i93bzxi23a2wbclpd7kp-python3.12-albucore-0.0.22/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:x: 10 packages failed to build:

immich-machine-learning
immich-machine-learning.dist
python311Packages.albumentations
python311Packages.albumentations.dist
python311Packages.insightface
python311Packages.insightface.dist
python312Packages.albumentations
python312Packages.albumentations.dist
python312Packages.insightface
python312Packages.insightface.dist

:white_check_mark: 4 packages built:

python311Packages.albucore
python311Packages.albucore.dist
python312Packages.albucore
python312Packages.albucore.dist

Maintainer pings
cc @bcdarwin for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

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

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.albucore is: High-performance image processing library to optimize and extend Albumentations with specialized functions for image transformations
meta.homepage for python312Packages.albucore is: https://github.com/albumentations-team/albucore
meta.changelog for python312Packages.albucore is: https://github.com/albumentations-team/albucore/releases/tag/0.0.23
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.0.23 with grep in /nix/store/ff7bdp54dcvpfh6vikvh9knrm21mfadc-python3.12-albucore-0.0.23
found 0.0.23 in filename of file in /nix/store/ff7bdp54dcvpfh6vikvh9knrm21mfadc-python3.12-albucore-0.0.23

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

6 total rebuild path(s)

6 package rebuild(s)

First fifty rebuilds by attrpath

immich-machine-learning
python312Packages.albucore
python312Packages.albumentations
python312Packages.insightface
python313Packages.albucore

Instructions to test this update (click to expand)

Either download from the cache:
nix-store -r /nix/store/ff7bdp54dcvpfh6vikvh9knrm21mfadc-python3.12-albucore-0.0.23 \
  --option binary-caches 'https://cache.nixos.org/ https://nixpkgs-update-cache.nix-community.org/' \
  --option trusted-public-keys '
  nixpkgs-update-cache.nix-community.org-1:U8d6wiQecHUPJFSqHN9GSSmNkmdiFW7GW7WNAnHW0SM=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

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

Or:
nix build github:r-ryantm/nixpkgs/ea50cb9bce5bf33c3febc44f711c1da9f42b1c4e#python312Packages.albucore

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/ff7bdp54dcvpfh6vikvh9knrm21mfadc-python3.12-albucore-0.0.23
ls -la /nix/store/ff7bdp54dcvpfh6vikvh9knrm21mfadc-python3.12-albucore-0.0.23/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:x: 6 packages failed to build:

immich-machine-learning
immich-machine-learning.dist
python312Packages.albumentations
python312Packages.albumentations.dist
python312Packages.insightface
python312Packages.insightface.dist

:white_check_mark: 4 packages built:

python312Packages.albucore
python312Packages.albucore.dist
python313Packages.albucore
python313Packages.albucore.dist

Maintainer pings
cc @bcdarwin for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

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


direct references in setup.cfg break mach-nix's requirements parser

If I have a setup.cfg that contains a "direct reference" (https://www.python.org/dev/peps/pep-0440/#direct-references) like
[options]
install_requires =
    tahoe-lafs @ https://github.com/tahoe-lafs/tahoe-lafs/archive/refs/heads/3842.allocate_buckets-without-lease-renewal.zip

and I point mach-nix.buildPythonPackage at it then the build fails like:
Traceback (most recent call last):
  File "/nix/store/ix51kp7zrjp8b0k3x40hcpn8l9aifj55-0qgkv0q5sl216nhvbc62h7fzkrcyd1n7-mach-nix-src/mach_nix/generate.py", line 110, in <module>
    main()
  File "/nix/store/ix51kp7zrjp8b0k3x40hcpn8l9aifj55-0qgkv0q5sl216nhvbc62h7fzkrcyd1n7-mach-nix-src/mach_nix/generate.py", line 103, in main
    do()
  File "/nix/store/ix51kp7zrjp8b0k3x40hcpn8l9aifj55-0qgkv0q5sl216nhvbc62h7fzkrcyd1n7-mach-nix-src/mach_nix/generate.py", line 64, in do
    reqs = filter_reqs_by_eval_marker(parse_reqs(requirements), context(py_ver, platform, system))
  File "/nix/store/ix51kp7zrjp8b0k3x40hcpn8l9aifj55-0qgkv0q5sl216nhvbc62h7fzkrcyd1n7-mach-nix-src/mach_nix/cache.py", line 14, in cache_wrapper
    result = tuple(result)
  File "/nix/store/ix51kp7zrjp8b0k3x40hcpn8l9aifj55-0qgkv0q5sl216nhvbc62h7fzkrcyd1n7-mach-nix-src/mach_nix/requirements.py", line 77, in parse_reqs
    yield Requirement(*parse_reqs_line(line))
  File "/nix/store/ix51kp7zrjp8b0k3x40hcpn8l9aifj55-0qgkv0q5sl216nhvbc62h7fzkrcyd1n7-mach-nix-src/mach_nix/requirements.py", line 136, in parse_reqs_line
    raise Exception(f"couldn't parse: '{line}'")
Exception: couldn't parse: 'tahoe-lafs@ https://github.com/tahoe-lafs/tahoe-lafs/archive/refs/heads/3842.allocate_buckets-without-lease-renewal.zip'
builder for '/nix/store/m1zpn713di22h5wm0nrpz3498vibvwsp-mach_nix_file.drv' failed with exit code 1
error: build of '/nix/store/m1zpn713di22h5wm0nrpz3498vibvwsp-mach_nix_file.drv' failed

I don't know exactly what mach-nix could do with requirements of this type.  Maybe it could get the archive at the given location and apply the chosen (or defaulted) provider to the contents?  Or maybe it could require that a provider like nixpkgs be used for such dependencies (which I believe would essentially tell mach-nix to ignore the value of the direct reference and just provide whatever version is in nixpkgs).
This might take some care by the packager to ensure a correct version of the dependency is supplied to the build but at least it would give the packager an option to make a working package rather than having the direct reference blow up the whole process.

Since #354 was merged maybe this is fixed.


Add created-hook

Added a created-hook so the component can be loaded with a phone number.

#8

On loading of the page, the input wont update with the preloaded number

@prajwalbharadwaj What are the steps to reproduce the issue? can you make it happen in the demo page? https://codesandbox.io/s/bold-butterfly-0yyyk45q7w?from-embed

Hey Steven
I am sorry. Yeah it worked fine.
On Mon, Jun 1, 2020 at 7:16 PM Steven Dao<EMAIL_ADDRESS>wrote:

@prajwalbharadwaj https://github.com/prajwalbharadwaj What are the
steps to reproduce the issue? can you make it happen in the demo page?
https://codesandbox.io/s/bold-butterfly-0yyyk45q7w?from-embed
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/EducationLink/vue-tel-input/pull/8#issuecomment-636870056,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACDRVTNXEAHHI2XUKDXNTHTRUOWLNANCNFSM4FAFYJPQ
.


[Pods] Adjust Marathon groups (pod) fixture

Fix inconsistencies in the Marathon groups (pod) fixture

Nice, thanks 👍

/ping @jfurrow


[MINOR] fix(test): fix flaky test ShuffleServerOnRandomPortTest

What changes were proposed in this pull request?
Fix flaky test ShuffleServerOnRandomPortTest.
Why are the changes needed?
The random port may be 40000.
https://github.com/apache/incubator-uniffle/actions/runs/10087508746/job/27891800095?pr=1952
Does this PR introduce any user-facing change?
No.
How was this patch tested?
CI

@xumanbu cc

Thanks for your review. @xumanbu @rickyma


Changed HttpBody::Item to Data and poll_buf to poll_data

The crate was not compiling, when looking why I found that HttpBody::Item had changed name, as did poll_buf in the http-body crate, so I changed all occurences

The same problem is on tower-h2, I could do the same there too

There must have been a change in tower-hype client::Connect::new because it now takes a single argument, but I do not understand the code to see what should change, so the build still does not work but not because of the Item <=> Data change

It looks to me that the change is just Connect::with_builder(connector, settings).

if I see this correctly this PR can be closed because #174 seems to fix the same things?

Yes, I did a second pullrequest with a non clean repo my bad
On 9 May 2019 17:43:42 CEST, Lucio Franco<EMAIL_ADDRESS>wrote:

if I see this correctly this PR can be closed because #174 seems to fix
the same things?
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/tower-rs/tower-grpc/pull/173#issuecomment-490957847

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.


[Fixes #222] Updated README.md file

Related Issue or bug

had to mention about .env file
Fixes: #222

@harsh-9in Please review my pr

@harsh-9in Please update my points

https://docs.google.com/spreadsheets/d/1Am9XMyGuIUAezCe54hw9fK1DcLuws8O5WiKa2zOSf9w/edit?usp=sharing

The points of today's issue/pr will be increased till tonight.

https://docs.google.com/spreadsheets/d/1Am9XMyGuIUAezCe54hw9fK1DcLuws8O5WiKa2zOSf9w/edit?usp=sharing

check if I have missed previous points.

previous points are ok only points of today's pr are missing. Thanks

@harsh-9in my score has not been updated please look into the matter.


Allow to control byref and recurse pickle options

Right now byref and recurse pickle options are hardcored for interactive env:
https://github.com/ytsaurus/ytsaurus/blob/6021165602a8506451b22e8b9c63d0222b77e386/yt/python/yt/wrapper/py_wrapper.py#L528-L530
And because of this, it is not possible to create a yt_dataclass dynamically according to the current table schema and pass it to the mapper/reducer.
But the ability to do this would be very useful, since yt_dataclasses can significantly reduce the amount of data in input/output stream, especially for tables with a lot of columns (it is just faster to use yt_dataclass with getattr instead of YSON).

Hi!
You've come across NameError exceptions, right? If so, I'd recommend to switch to cloudpickle instead of dill (if there is no reasons to stick with dill, of course), you can change it in client settings:
yt_cli.config["pickling"]["framework"] = "cloudpickle"
If I got the issue right, it will help.
And I'll investigate if it's possible to use dill in this case.

I'd recommend to switch to cloudpickle instead of dill

I already tried it, but this pickler has less functionality than dill, for example I can't pickle PyCapsule with it:
  File "/usr/twix/python3.11/lib/python3.11/site-packages/cloudpickle/cloudpickle_fast.py", line 632, in dump
    return Pickler.dump(self, obj)
           ^^^^^^^^^^^^^^^^^^^^^^^
TypeError: cannot pickle 'PyCapsule' object

And I'll investigate if it's possible to use dill in this case.

Thank you.

However, what is the exact error that you see? Pickling is a very tricky matter, so let's ensure we are talking about the same things. And it would be great if you could share an example of how to reproduce the issue.

Something like this:
from typing import Iterable
from yt.wrapper import TypedJob, YtClient
from yt.wrapper.default_config import get_config_from_env
from yt.wrapper.schema import yt_dataclass

from dataclasses import make_dataclass

@yt_dataclass
class OutputRow:
    str: str

if __name__ == "__main__":
    config = get_config_from_env()
    config["pickling"]["framework"] = "cloudpickle"
    client = YtClient(config=get_config_from_env())

    # Assume that this dataclass is created from table schema.
    dynamic_dataclass = yt_dataclass(make_dataclass('Row', fields=[('str', str)]))

    rows = [
        dynamic_dataclass(str='a'),
        dynamic_dataclass(str='b'),
        dynamic_dataclass(str='c')
    ]

    # Read and write work fine even with dill.
    client.write_table_structured("//tmp/echunaev/test_dynamic_dataclass", dynamic_dataclass, rows)
    print(list(client.read_table_structured("//tmp/echunaev/test_dynamic_dataclass", dynamic_dataclass)))

    class Mapper(TypedJob):
        def __call__(self, row: dynamic_dataclass) -> Iterable[OutputRow]:
            yield OutputRow(str=row.str)

    client.run_map(Mapper(), "//tmp/echunaev/test_dynamic_dataclass", "//tmp/echunaev/test_dynamic_dataclass_output")

Works fine with cloudpickle, but fails with dill:
  File "/usr/twix/python3.11/lib/python3.11/site-packages/yt/packages/dill/_dill.py", line 1917, in save_type
    StockPickler.save_global(pickler, obj, name=obj_name)
  File "/usr/twix/python3.11/lib/python3.11/pickle.py", line 1071, in save_global
    raise PicklingError(
_pickle.PicklingError: Can't pickle <class 'types.Row'>: it's not found as types.Row

Thank you very much! I reproduced the error. I had thought that you faced the error while running mappers in jupyter environment, but now I see that actually everything works in jupyter (due to those params) and you need ability to tune there params in regular envs. I'll return with a PR within a couple days


Revert "Update task executor to handle WorkflowAlreadyCompletedError for signal and cancel workflow (#5956)"

This reverts commit d877674d86e9c3fbcae661f0cbc73a2d82b8929f.

What changed?

Why?

How did you test it?

Potential risks

Release notes

Documentation Changes

Pull Request Test Coverage Report for Build 018f846a-0ed9-49e5-ba3b-9becb261ef60
Details

3 of 3 (100.0%)  changed or added relevant lines in 1 file are covered.
12 unchanged lines in 6 files lost coverage.
Overall coverage increased (+0.06%) to 69.2%

Files with Coverage Reduction
New Missed Lines
%

common/task/weighted_round_robin_task_scheduler.go
1
89.05%

service/history/queue/timer_queue_processor_base.go
1
78.28%

service/history/task/transfer_standby_task_executor.go
2
87.65%

common/task/fifo_task_scheduler.go
2
85.57%

common/persistence/historyManager.go
2
66.67%

service/history/task/fetcher.go
4
85.05%

Totals

Change from base Build 018f7d41-214c-49c8-a08a-b3943f592412:
0.06%

Covered Lines:
101867

Relevant Lines:
147206

💛  - Coveralls


issue with " caracter on iOS

when trying to create a meme in iOS using the standard keyboard, one would get this caracter: “, in stead of " caracter, causing the script to interprete /meme brian “some text“ as a text string ' “some text“ ', and thereby corresponding to /meme brian "“some" "text“" not creating the correct meme.
Suggestion : auto replace “ with " in all strings

@catalintomai to move this ticket to the server repos as it effects the command parser

extra info: mhttps://mattermost.atlassian.net/browse/MM-37926


PR-02 Registration logic with small fixes and docstrings.

Please add description for pull request.
Couple of small comments, please fix them.
Other looks good. Please merge after addressing. 👍


[Company cards] Handle company cars page reloading when changing feeds

When changing the feed in the list or when closing the feed settings, the company card list is showing spinner incorrectly https://expensify.slack.com/archives/C06ML6X0W9L/p1732197668569719?thread_ts=1732108983.281759&cid=C06ML6X0W9L

@mountiny we already have https://github.com/Expensify/App/issues/52818#issuecomment-2488546640 , which is the same, no?

Hey, Im Artem from Callstack and would like to help with this one

@mountiny @joekaufmanexpensify
The reason why we have a loader in the company cards and we dont have in expensify cards is here:

This is ExpensifyCards:  const isLoading = !isOffline && (!cardSettings || (cardSettings.isLoading && !cardsList));
And here (cardSettings.isLoading && !cardsList) this part will always return false, even when cardSettings.isLoading is true, because when cardsList is empty, it will return empty Object: "{}", thats why true && false returns false all the time(imo doesnt make any sense), it means that this full expression will be always false when property cardSettings exists.
In CompanyCards we had the same behaviour previouslyconst isLoading = !cardFeeds || !!(cardFeeds.isLoading && !companyCards);
But after this discussion we decided that it doesn't make sense to do this check for company cards as it will always return false as in the expensifyCardsPage (and it makes sense), but in this situation it makes sense also to remove this check in ExpensifyCards too, but in this situation it will add loader to expensifyCards too or just to cut off those expressions and isLoading will look like this:
CompanyCards: const isLoading = !isOffline && !cardFeeds
ExpensifyCards:  const isLoading = !isOffline && !cardSettings

Got it. Does that mean we will change this for company cards further, or leave as is?

Lets try this and see how it feels const isLoading = !isOffline && !cardFeeds


Slow file saving

Issue Type: Performance Issue
The file saving requires few seconds from the last VSCode update
VS Code version: Code 1.35.1 (c7d83e57cd18f18026a8162d042843bda1bcf21f, 2019-06-12T14:30:02.622Z)
OS version: Windows_NT x64 10.0.16299

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz (8 x 2112)

GPU Status
2d_canvas: disabled_softwarechecker_imaging: disabled_offflash_3d: disabled_softwareflash_stage3d: disabled_softwareflash_stage3d_baseline: disabled_softwaregpu_compositing: disabled_softwaremultiple_raster_threads: disabled_offnative_gpu_memory_buffers: disabled_softwarerasterization: disabled_softwaresurface_synchronization: disabled_offvideo_decode: disabled_softwarewebgl: disabled_offwebgl2: disabled_off

Load (avg)
undefined

Memory (System)
15.88GB (7.71GB free)

Process Argv

Screen Reader
no

VM
0%

Process Info
CPU %	Mem MB	   PID	Process
    5	   123	 14408	code main
    1	    61	  6668	   window (Issue Reporter)
    0	    38	 11004	   shared-process
    0	   199	 16924	   window (PHY_abstraction_SERIAL.m - esim2m - Visual Studio Code)
    0	    23	 12040	     extensionHost
    0	     4	 12820	     watcherService
    0	     1	 12144	       console-window-host (Windows internal process)

Workspace Info
|  Window (PHY_abstraction_SERIAL.m - esim2m - Visual Studio Code)
|    Folder (esim2m): 2426 files
|      File types: png(1299) mat(620) fig(155) txt(112) m(94) pdf(28) eps(13)
|                  mexw64(12) ant(12) xlsx(10)
|      Conf files:;

Extensions (8)

Extension
Author (truncated)
Version

matlab-formatter
Aff
2.4.12

Bookmarks
ale
10.4.4

notes
can
0.9.3

matlab
Gim
1.1.0

latex-workshop
Jam
7.0.2

matlab-snippets
sky
1.11.0

matlab-complete
sla
1.0.2

markdown-all-in-one
yzh
2.4.0

(1 theme extensions excluded)

I wonder if this issue is being caused by an installed extension. Can you try to run VS Code without extensions? From the command line (NOT the integrated terminal in Code), execute: code --disable-extensions and try your steps again to see if it reproduces. If you see it is an issue with the extension, please file it against the extension repository itself.

I tried, the saving time seems to be back to normal but what I didn't get is why the extensions are still active when I open VScode.
Furthermore what probably gives problem is the builtin git extension, which doesn't work properly since the last update

@BlueTeo91 which extension is still active? Can you try to disable extensions one by one to find the one in charge of this issue?

I'm trying disabling extension by extension... Most likely the problem is with the builtin git extension, but I still have to try disable some of the other extensions just to confirm it

Please do.

I tried to disable all the extensions trying them one by one, but apparently after VSCode update of today the problem does not show up anymore

Unfortunately the problem is still there...
Already tried to disable one by one all the extensions, still the problem appears randomly.
I also tried to disable the builtin git extension because on top of the slow saving, when the problem appears, also the git extension stop working as well as the bookmarks one.
At the beginning I thought the problem could have been the bookmarks or git extensions causing the problem, but even with those disabled (simultaneously or one at a time), the problem shows up.
Those are the extensions I installed:


Feature/127 better logging statements

Addresses some of #127 for now.

Current coverage is 0.00% (diff: 100%)

Merging #136 into develop will not change coverage

@@           develop   #136   diff @@
=====================================
  Files            1      1
  Lines           36     36
  Methods          0      0
  Messages         0      0
  Branches         0      0
=====================================
  Hits             0      0
  Misses          36     36
  Partials         0      0

Powered by Codecov. Last update 8fb294a...080fca6


Update parquet thrift to 2.9.0 to support LZ4_RAW compression

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
I'd like to support reading Parquet files with LZ4_RAW compression. It looks like this change happened in Parquet version 2.9.0.
I see that arrow-rs depends on the parquet-format crate, so I'll also make an issue there. Ref https://github.com/sunchao/parquet-format-rs/pull/20

Support for the codec within the metadata has been added, however, support for the compression codec has not been added.
This should be a case of adding a new compression::Codec and should be relatively straightforward

It seems that the estimation of lz4 uncompress_size can cause overflow for small compress size. Any compress size smaller than 10 will overflow and though it will panic.
So now that we pass the uncompressed_size to the decompress method, I see too options now:

To change predictions formula to return 255 for any compressed size smaller than 10.
To only allow lz4_raw if uncompressed_size is provided, and to return an error saying 'LZ4_RAW without known uncompressed_size is unsupported'.

I would go with the second one, as even if the overflow error is only for small compression sizes, if the compressed size is 1G it will reserve ~250GB which is too much. So I would avoid prediction.
What do you think?

seems sensible to me


MRG, ENH: Allow pick_ori="vector" with fixed ori inv

One advantage of plot_vector_source_estimates is that the arrows + glass brain represent the true geometry of the source space better than an inflated view. It would be nice to be able to use this function, even if you are working with fixed orientations. This PR enables pick_ori='vector' with fixed-orientation inverses.

Failures are unrelated (Azure timeout and OSX download failure)

can you add this to documentation? update an example and share a link
in artifact? thanks

https://19360-1301584-gh.circle-artifacts.com/0/dev/auto_examples/inverse/plot_vector_mne_solution.html#sphx-glr-auto-examples-inverse-plot-vector-mne-solution-py


LCFS - Add bottom nav bar for government websites to LCFS site

Describe the task

Add the bottom government nav bar to the LCFS website
Bar persists on every page
Visible to both IDIR & BCeID users

Links:
Home: URL of LCFS dev, test, prod
About this site: https://gov.bc.ca/lowcarbonfuels
Disclaimer: http://gov.bc.ca/disclaimer/
Privacy: http://gov.bc.ca/privacy/
Accessibility: http://gov.bc.ca/webaccessibility/
Copyright: http://gov.bc.ca/copyright
Contact Us: Page to be created in another card
Screenshot: Private Zenhub Image
Purpose
Align with government standards, look & feel for government websites
Acceptance Criteria

[ ] create ui component for bottom navigation
[ ] Ui component follows government standards
[ ] Add links to ui component
[ ] Ensure all links are working properly

Additional context

Use material ui (MUI) component library as template

Hey team! Please add your planning poker estimate with Zenhub @AlexZorkin @hamed-valiollahi @jig-patel @kevin-hashimoto @prv-proton


adding optional time taken per page

The first pass can take some time depending on the complexity of individual pages and the hfuns used. This allows to pass a show_timings=true to serve to get a timing per page on the first full pass something like:
[δt = 0.11s] 09-ridge-cv-2.md
[δt = 0.85s] 09-convex-optimisation-3.md

Whats the reason for (i) having this false by default and (ii) having it configurable at all?

hmm this is mostly for debugging purposes on my side, the initial full pass should be:

some small delay for precompilation
time taken by code blocks if any needs to be evaluated
negligible time taken to process the rest (~10ms per page)

On my current website the last point is not negligible (~1s for some pages) so I wanted to investigate what exactly was causing a bottleneck, this is part of the process.
The reason for not setting this to true by default is that it's verbose and not really actionable information for the user, a technical user might be interested in it but generally my assumption is that a user just wants stuff to not feel sluggish.


make UDP connectivity issues easier to spot

One of our users and myself have just wasted a good few of hours trying to work out why their application wasn't working over weave. The issue was somewhat masked by the complicated setup, and some mistakes in the app config, but was in fact evident from the very first information provided.
The clue was in the weave status output:
Peers:
46:87:fd:fb:ff:48(dn1) (v21) (UID<PHONE_NUMBER>093463412)
   -> ca:90:7b:25:3d:1c(dn2) [<IP_ADDRESS>:48515 (unestablished)]
ca:90:7b:25:3d:1c(dn2) (v21) (UID<PHONE_NUMBER>086581333)
   -> 46:87:fd:fb:ff:48(dn1) [<IP_ADDRESS>:6783 (unestablished)]

I had scanned through that and completely missed the "unestablished". Inexcusable for me, but I can certainly see how users would not notice that. It's really not very apparent at all that something isn't quite right.
Examination of the log showed absence of UDP connectivity, which is the most likely cause of 'unestablished'.

In the interests of getting #1248 merged I suggest we address the remaining comments separately in this issue:
https://github.com/weaveworks/weave/pull/1248#issuecomment-128306579
https://github.com/weaveworks/weave/pull/1248#issuecomment-128317482
https://github.com/weaveworks/weave/pull/1248#issuecomment-128323612


Example: code snipped for local image files

Hello,
very interesting package.
Can someone provide a code snipped for a
"Add implementation for len and getitem methods in dataset.py."
My dataset is a classification problem, and the files are structured
like
Project/group1/*bmp
Project/group2/*bmp
Thank you
Andreas

The following dataset.py is working for me:
import torch.utils.data
import torchvision
from torchvision import dataset
import cv2
cv2.setNumThreads(0)
dataset = datasets.ImageFolder("/Project/")
images = dataset.imgs
class SearchDataset(torch.utils.data.Dataset):
def __init__(self, images_filepaths=images, transform=None):
    self.images_filepaths = images_filepaths
    self.transform = transform

def __len__(self):
    return len(self.images_filepaths)

def __getitem__(self, index):
    path, label = self.images_filepaths[index]
    image = cv2.imread(path)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    if self.transform is not None:
        transformed = self.transform(image=image)
        image = transformed["image"]

    return image, label

Images should be all of the same size. If they are not, you can resize them by adding to __getitem__:
image = cv2.resize(image, (height, width))


You cannot add messages without installing django.contrib.messages.middleware.MessageMiddleware

cd demo
python ./manage.py runserver
http://<IP_ADDRESS>:8000/

I got the same error.

Same error for me with Django 2.0.2 under Windows

Was caused by old MIDDLEWARE_CLASSES notation. Thanks for reporting!


fix: issue with @babel/compat-data causing build to fail

Currently, the build fails on newer version of node with this error:
Error: Cannot find module '@babel/compat-data/corejs3-shipped-proposals'

Apparently it's a known issue with @babel/preset-env. A fix is included in<EMAIL_ADDRESS>Reference:
https://github.com/nodejs/node/issues/32852#issuecomment-613655150

:tada: This PR is included in version 2.0.0-beta.1 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Issue establishing ICE connectivity with Janus SFU as receiver only (Unity)

Describe the bug
Hi, i am having issues setting up a receive-only PeerConnection to Janus SFU using the Unity packages. I have implemented my own signaling with Janus over Websockets and it is working fine, I am able to send video/audio to Janus SFU according to the logs and event messages. However, when attempting to create a new PeerConnection as a receiver-only, I can successfully accept and process Offer SDP messages, reply with an Answer and send ICE candidates to Janus but it claims there are no ICE remote-candidates gathered on the Janus side. Would greatly appreciate any leads!
To Reproduce
Steps to reproduce the behavior:

Create new instance of PeerConnection programmatically (not via Unity Editor)
Add Video and Audio receiver media lines programmatically
Initialize PeerConnection programmatically
Establish Websocket connection with  Janus and process signalling
Process SDP Offer from Janus, reply with Answer
Process ICE candidates from Janus (?) but local PeerConnection ICE state does not change
No ICE remote-candidates found on Janus SFU side (viewable from Admin monitoring panel)

Expected behavior
Receive-only PeerConnection should be able to process Janus ICE Candidates (?) and Janus should be able to process PeerConnection ICE Candidates
SDP messages
SDP messages are extremely helpful to diagnose a wide range of issues from connection not being established to audio/video issues and codecs issues.
Offer message

 v=0
o=-<PHONE_NUMBER>141835 1 IN IP4 <IP_ADDRESS>
s=VideoRoom<PHONE_NUMBER>422058
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS janus
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 <IP_ADDRESS>
a=sendonly
a=mid:0
a=rtcp-mux
a=ice-ufrag:xteG
a=ice-pwd:5wlvJB7FoYRvT11iYfnRF7
a=ice-options:trickle
a=fingerprint:sha-256 ED:61:BA:95:CF:69:47:EC:94:2E:5D:30:F9:E9:39:6D:6D:EE:A1:00:A3:26:96:63:8A:6C:63:A4:54:2A:C8:25
a=setup:actpass
a=rtpmap:111 opus/48000/2
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid
a=rtcp-fb:111 transport-cc
a=msid:janus janusa0
a=ssrc:1658267727 cname:janus
a=ssrc:1658267727 msid:janus janusa0
a=ssrc:1658267727 mslabel:janus
a=ssrc:1658267727 label:janusa0
m=video 9 UDP/TLS/RTP/SAVPF 96 97
c=IN IP4 <IP_ADDRESS>
a=sendonly
a=mid:1
a=rtcp-mux
a=ice-ufrag:xteG
a=ice-pwd:5wlvJB7FoYRvT11iYfnRF7
a=ice-options:trickle
a=fingerprint:sha-256 ED:61:BA:95:CF:69:47:EC:94:2E:5D:30:F9:E9:39:6D:6D:EE:A1:00:A3:26:96:63:8A:6C:63:A4:54:2A:C8:25
a=setup:actpass
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtcp-fb:96 goog-remb
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:4 urn:3gpp:1-orientation
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96
a=ssrc-group:FID<PHONE_NUMBER><PHONE_NUMBER>
a=msid:janus janusv0
a=ssrc:3881950061 cname:janus
a=ssrc:3881950061 msid:janus janusv0
a=ssrc:3881950061 mslabel:janus
a=ssrc:3881950061 label:janusv0
a=ssrc:2032815598 cname:janus
a=ssrc:2032815598 msid:janus janusv0
a=ssrc:2032815598 mslabel:janus
a=ssrc:2032815598 label:janusv0

Answer message

v=0
o=-<PHONE_NUMBER>840866046 2 IN IP4 <IP_ADDRESS>
s=-
t=0 0
a=group:BUNDLE audio video
a=msid-semantic: WMS janus
m=audio 9 UDP/TLS/RTP/SAVPF 111
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:f05R
a=ice-pwd:Q+hpl1gsQPmVWJIgLMe99gPJ
a=ice-options:trickle
a=fingerprint:sha-256 02:37:1D:FC:32:84:1A:F2:D1:99:24:7D:CE:49:CB:F4:00:39:E0:F8:C9:CE:9B:31:9D:31:99:35:9C:84:61:4B
a=setup:active
a=mid:audio
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid
a=recvonly
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
m=video 9 UDP/TLS/RTP/SAVPF 96 97
c=IN IP4 <IP_ADDRESS>
a=rtcp:9 IN IP4 <IP_ADDRESS>
a=ice-ufrag:f05R
a=ice-pwd:Q+hpl1gsQPmVWJIgLMe99gPJ
a=ice-options:trickle
a=fingerprint:sha-256 02:37:1D:FC:32:84:1A:F2:D1:99:24:7D:CE:49:CB:F4:00:39:E0:F8:C9:CE:9B:31:9D:31:99:35:9C:84:61:4B
a=setup:active
a=mid:video
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:mid
a=recvonly
a=rtcp-mux
a=rtpmap:96 VP8/90000
a=rtcp-fb:96 goog-remb
a=rtcp-fb:96 ccm fir
a=rtcp-fb:96 nack
a=rtcp-fb:96 nack pli
a=rtpmap:97 rtx/90000
a=fmtp:97 apt=96

Screenshots
If applicable, add screenshots to help explain your problem.
Environment
Please fill the information for each peer if different

MR-WebRTC version unity package v.2.0.2
Platform: Unity Editor
Architecture: Unity Editor is x64 on Windows
Unity version : 2020.2.1f1
Target device: Windows Desktop (for now)

Additional context
Sample ICE Candidate from Janus : candidate:2 1 udp<PHONE_NUMBER> <IP_ADDRESS> 48658 typ srflx raddr <IP_ADDRESS> rport 48658
Sample ICE Candidate from local PeerConnection :
candidate:3460887983 1 udp<PHONE_NUMBER> <IP_ADDRESS> 50205 typ host generation 0 ufrag f05R network-id 1 network-cost 10
candidate:945327227 1 udp<PHONE_NUMBER> <IP_ADDRESS> 56797 typ srflx raddr <IP_ADDRESS> rport 50205 generation 0 ufrag f05R network-id 1 network-cost 10
candidate:2160789855 1 tcp<PHONE_NUMBER> <IP_ADDRESS> 65141 typ host tcptype passive generation 0 ufrag f05R network-id 1 network-cost 10

It sounds like the issue is ICE candidates either a) not being generated by the Unity lib (never heard of that), or b) not being transported correctly by your custom signalling, or c) not being handled correctly on reception. It would be nice to be able to narrow down where the issue is. Do you see the ICE candidates generated on the sender side (Unity)? Do you see them arriving on the Janus side? In the description you say the issue is Janus -> Unity, but in the repro step 6. you also seem to say that Unity -> Janus may be an issue. If both sides don't work, that sounds like a signalling and/or networking issue.

It sounds like the issue is ICE candidates either a) not being generated by the Unity lib (never heard of that), or b) not being transported correctly by your custom signalling, or c) not being handled correctly on reception. It would be nice to be able to narrow down where the issue is. Do you see the ICE candidates generated on the sender side (Unity)? Do you see them arriving on the Janus side? In the description you say the issue is Janus -> Unity, but in the repro step 6. you also seem to say that Unity -> Janus may be an issue. If both sides don't work, that sounds like a signalling and/or networking issue.

Thanks for the reply. To clarify, what i meant is that in terms of media, it would be Janus -> Unity. However, in order for this to happen, Janus will send an SDP Offer + ICE Candidates to Unity over the custom signalling. I am able to receive this and generate an SDP Answer + my own ICE Candidates, which i send back to Janus. Janus is able to accept the SDP Answer. However, it does not seem to accept the ICE Candidates.
At the same time, when I run _nativePeer.AddCandidate on the ICE Candidates received from Janus, the ICE connectivity state for the PeerConnection does not update to a checking state.
Since my implementation works for sending media from Unity -> Janus works and i have compared my signalling JSON content to that of the Janus.js library (which are identical), it is most likely not a signalling issue. Based on logs on the Janus server instance, it is definitely receiving all the SDP/ICE messages but not processing them, so i dont think networking issues are at play either. This seems to be the case for Unity side too, where it can receive the ICE Candidates but does not process them (?) so I am confused as to which side could be the culprit.
Attached are sample SDP / ICE messages for the process described above. Thanks again.

Thanks for the reply. To clarify, what i meant is that in terms of media, it would be Janus -> Unity. However, in order for this to happen, Janus will send an SDP Offer + ICE Candidates to Unity over the custom signalling. I am able to receive this and generate an SDP Answer + my own ICE Candidates, which i send back to Janus. Janus is able to accept the SDP Answer. However, it does not seem to accept the ICE Candidates.
At the same time, when I run _nativePeer.AddCandidate on the ICE Candidates received from Janus, the ICE connectivity state for the PeerConnection does not update to a checking state.
Since my implementation works for sending media from Unity -> Janus works and i have compared my signalling JSON content to that of the Janus.js library (which are identical), it is most likely not a signalling issue. Based on logs on the Janus server instance, it is definitely receiving all the SDP/ICE messages but not processing them, so i dont think networking issues are at play either. This seems to be the case for Unity side too, where it can receive the ICE Candidates but does not process them (?) so I am confused as to which side could be the culprit.
Attached are sample SDP / ICE messages for the process described above. Thanks again.

UPDATE
Upon further tweaking, it seems that Janus is picky on the exact fields being sent over. I have resolved the signaling portion such that Janus receives the ICE Candidates successfully now. However, it fails when processing them and attempting the connection with the Unity peer. Since this is most likely a connectivity issue, could it be attributed to the lack of response/change in ICE state when calling _nativePeer.AddIceCandiate()?

UPDATE
Upon further tweaking, it seems that Janus is picky on the exact fields being sent over. I have resolved the signaling portion such that Janus receives the ICE Candidates successfully now. However, it fails when processing them and attempting the connection with the Unity peer. Since this is most likely a connectivity issue, could it be attributed to the lack of response/change in ICE state when calling _nativePeer.AddIceCandiate()?

I don't know Janus, if it fails to process ICE messages then there's a good chance indeed that the connection will fail, since the peers won't know how to reach each other to establish a direct P2P connection.

Hmm, is _nativePeer.AddIceCandidate() supposed to result in a change in ice connectivity state everytime? As indicated in the debug logs? Like 'ICE Connectivity : Checking'?
I am trying to determine if it is an issue with Janus itself or not, as calling _nativePeer.AddIceCandidate() as a sender peer has such an output. But calling it as a receiver does not have any output

_nativePeer.AddIceCandidate() is passing 1 ICE candidate received from the remote peer to the internal Google implementation of the local peer. My understanding of Google's code is that the implementation will process ICE candidates as they arrive, and in parallel will try to establish a P2P connection. Even after the P2P connection was established, a new ICE candidate may provide a better route (as decided by that implementation) and therefore switch to a new P2P route. I am not sure about the exact event(s) that change the ICE state reported, I think "checking" corresponds to the first candidate sent or processed, and "completed" to the last one, but I didn't look in detail.

I've finally been able to establish connectivity as a Subscriber to Janus. I went to do further reading into AddIceCandidate() under Google's documentation as you pointed out. The issue was that mixed-reality-webrtc's SDP messages refer to the sdpMid as 0/1, while Janus refers to it as Audio/Video. So in order for them to establish the connection, the sdpMid sent from one side's SDP message must be identical to the sdpMid from its ICE Candidate message as well. I had manipulated the incoming SDP Offer data from Janus (from Audio/Video -> 0/1) for mixed-reality-webrtc to process it, but had not done so to match the SDP Answer + ICE Candidate on the outgoing. Hope this helps others. Thanks again!

Yes I think if I remember correctly some time ago we had such assumption on mid because we don't have any other reliable way to auto-match the transceivers (in Unity). Although I thought this assumption had been lifted and the bug fixed (see #295).

Hi @djee-ms , apologies for the late reply. I had been away from this project during the recent Lunar New Year. Upon further review of my code, it seems that there was some confusion on my end regarding the setting of mid value ( 0/1 vs audio/video ). I had looked up some other related issues and fixes that were pertaining to the pre-bug fix and probably mixed up different values when configuring SDP Answer vs ICE Candidates. You are right, mixedreality-webrtc Unity does accept both sets of values.
However, something to take note from what I have tested is that Janus sends the mid as audio/video. Unity side is able to accept these values and establish ice connectivity/receive and display remote video. Everything works fine. If I were to set it to 0/1 on the Unity side instead, I noticed that it is still able to establish ice connectivity and receive remote video, but is unable to display it. It shows the set of "infinity" values on the remote peer window, which may be a concern.

If I were to set it to 0/1 on the Unity side instead

Where/how do you do that precisely?

I had used .Replace("audio","0") and .Replace("video","1") when assigning the SdpMid of an IceCandidate


Build errors building organizational package

I set the name of my package to @orgname/packname in package.json
Then the build script fails cause it wants to put the artifacts in dist/@orgname folder
I created that folder but then the Uglify step fails with obscure error
I dropped the @orgname in the package.json file and then it built fine again

the same to me


AIP-6392: Add in git tagging

See it working here

Closing this as taking Yun's suggestion to do this via Github Actions, will reopen another PR


update dependencies

I confirm that this contribution is made under the terms of the license found in the root directory of this repository's source tree and that I have the authority necessary to make this contribution on behalf of its copyright owner.

Codecov Report

Merging #30 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #30   +/-   ##
=======================================
  Coverage   72.88%   72.88%
=======================================
  Files          16       16
  Lines         863      863
=======================================
  Hits          629      629
  Misses        218      218
  Partials       16       16

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 d9e0ef5...365fd36. Read the comment docs.


Kanban Board Done

Hi dear reviewer in this team we are 2 people @isaacpitwa and myself @Juanse7793
this is the link to our Kanban Board
Link

Invalid Code Review Request ❌
Hi Team, This is @sja-thedude your code reviewer.
While you made a great effort in this project, unfortunately, I cannot proceed to review your code.
You have submitted a project, that doesn't have a valid link to github project. Also you have not set up your kanban board make sure to do it.
Your Code Review Request will be marked as invalid in your Dashboard, so please submit a new one once you are ready 🙏
Cheers and Happy coding!👏👏👏
Feel free to leave any questions or comments in the PR thread if something is not 100% clear.
Please, remember to tag me [@sja-thedude] in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

Status: Approved :heavy_check_mark:
Hi Team,
Your project is complete! 🍾🚢 Congratulations!  🎉💯🌟
Highlights 👍

Fair distribution of tasks
Good descriptive board title and description of task

Keep soaring higher! 💻 🍷 🚀
Feel free to leave any questions or comments in the PR thread if something is not 100% clear. Please, remember to tag me in your question so I can receive the notification.
Please, do not open a new Pull Request for re-reviews. You should use the same Pull Request submitted for the first review, either valid or invalid unless it is requested otherwise.

As described in the Code reviews limits policy  you have a limited number of reviews per project (check the exact number in your Dashboard). If you think that the code review was not fair, you can request a second opinion using this form.


Create a set of "logical" data types

Agreed 23-08:
We're not using generic data types - which would be reusable, but in this scope we don't need that. We start with the data type designations as we have in IDMP: CD, II, TS, ST,...
We'll also add a page in the IG about data types - "the data types and respective names (initials) are taken from IDMP, inspired by ISO  21090:2011".
We'll also work up the question to bring to ISO as feedback for harmonization for other work items that have a similar question - should ISO have consistent data types across different abstract models? We should see impact, dependencies, value, etc.