Brel hub "up" greyed out

Just installed the integration in Home Assistant using the DD-1554 Brel hub. Stop and down functions properly, the "up" button however stays greyed out. The roller blind motor only has up, stop and down function. It does not have a position possibility. When I enable the wait for multicast option, also the stop and down button grey out. In the Brel Home app all 3 functions work fine using the same hub. Any hints or tips that might support me further installing the integration? Many thanks!!
Just read the article in which it says this error should be solved in 2021-11. I am on HA 2021-12-9 running on a Home Assistant Blue.

@JonOve do you see any warning/errors related to the motion_blinds integration in the HomeAssistant log?

@JonOve what kind of blind do you have that has the issue?

@JonOve could you run the following pyhton script
(can be done on a PC where python is installed and motionblinds module using pip3 install --upgrade motionblinds)
from motionblinds import MotionGateway
m = MotionGateway(ip = "<IP_ADDRESS>", key = "12ab345c-d67e-8f")
m.GetDeviceList()
m.Update()
print(m)
for blind in m.device_list.values():
    blind.Update()
    print(blind)

Please adjust the IP and Key in the script and post the result here.

@JonOve do you see any warning/errors related to the motion_blinds integration in the HomeAssistant log?

No warnings or errors in the HA log

@JonOve what kind of blind do you have that has the issue?

I have a bi-directional Brel roller blind. Controlled via the Brel hub DD1554.

@JonOve could you run the following pyhton script
(can be done on a PC where python is installed and motionblinds module using pip3 install --upgrade motionblinds)

from motionblinds import MotionGateway

m = MotionGateway(ip = "<IP_ADDRESS>", key = "12ab345c-d67e-8f")

m.GetDeviceList()

m.Update()

print(m)

for blind in m.device_list.values():

    blind.Update()

    print(blind)

Please adjust the IP and Key in the script and post the result here.

This is new for me. Will try yo do so.

If it is a bi-directional roller blind, why can't you set a position of the blind (instead of only open/close/stop)?

Good question. I actually expected it to do so when I bought the motor, but it seems Brel has several types of motors. Also bi-directional motors which cannot be positioned by percentage via the Brel home app. The DD1554 Brel hub can only steer bi-directional blinds which works in my case.
Verstuurd vanaf mijn iPad

Op 17 jan. 2022 om 12:48 heeft starkillerOG @.***> het volgende geschreven:

If it is a bi-directional roller blind, why can't you set a position of the blind (instead of only open/close/stop)?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.

@JonOve I will need the output of the script above to see what kind of response the blind gives to identify these types that do not properly report the position.

I was able to install python and run the command  pip3 install --upgrade
motionblinds succesfull. Then I saved the  "pip3 install --upgrade
motionblinds" script as a python file named "test.py.
Running python3 c:/python/test.py however gives me a syntax error.
Op ma 17 jan. 2022 om 12:46 schreef starkillerOG @.***>:

@JonOve https://github.com/JonOve you can just use a regular windows 10
pc and install python3, then open command line on that PC.
and run the command pip3 install --upgrade motionblinds
Then save the script above as a test.py file on your computer (using
notepad or something).
Then go to command line and run: python3 path/to/the/file/test.py
with the correct path the the test.py file.
You might also need to specify the path to python3 if it has not been
added to your path variables of your PC (I think that is a option during
install of python3)
—
Reply to this email directly, view it on GitHub
https://github.com/starkillerOG/motion-blinds/issues/18#issuecomment-1014432032,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AP3I7ZK6E7OHOX3XOKVQYR3UWP6RXANCNFSM5MDDMNQQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

@JonOve could you post the syntax error you get?
whant happens if you just run python3 does it actaully open python3?

C:>pip3 install --upgrade motionblinds
Requirement already satisfied: motionblinds in c:\python\lib\site-packages (0.5.8)
Requirement already satisfied: pycryptodomex in c:\python\lib\site-packages (from motionblinds) (3.12.0)

@JonOve alright, do not inlcude the pip3 install --upgrade motionblinds line in the test.py file.
The only contests of the test.py file schould be:
from motionblinds import MotionGateway

m = MotionGateway(ip = "<IP_ADDRESS>", key = "12ab345c-d67e-8f")

m.GetDeviceList()

m.Update()

print(m)

for blind in m.device_list.values():

    blind.Update()

    print(blind)

C:>pip3 install --upgrade motionblinds Requirement already satisfied: motionblinds in c:\python\lib\site-packages (0.5.8) Requirement already satisfied: pycryptodomex in c:\python\lib\site-packages (from motionblinds) (3.12.0)

This is good, that means the motionblinds module has been sucesfully installed.

@starkillerOG
Thank you for your support.
Herewith the outcome of the test.py file;
W:\Mijn documenten>python test.py
<MotionGateway ip: <IP_ADDRESS>, mac: d8bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -41 dBm>
Traceback (most recent call last):
File "W:\Mijn documenten\test.py", line 13, in
blind.Update()
File "C:\Python\lib\site-packages\motionblinds\motion_blinds.py", line 935, in Update
mcast = self._gateway._create_mcast_socket('any', False)
File "C:\Python\lib\site-packages\motionblinds\motion_blinds.py", line 138, in _create_mcast_socket
udp_socket.setsockopt(
OSError: [WinError 10022] Er is een ongeldig argument opgegeven

@JonOve Alright, so we get a socket error when creating the multicast socket.
That is quite strange and I would love to figure out how to solve that, but lets first look at the blinds.
Could you change the test.py script to:
from motionblinds import MotionGateway

m = MotionGateway(ip = "<IP_ADDRESS>", key = "12ab345c-d67e-8f")

m.GetDeviceList()

m.Update()

print(m)

for blind in m.device_list.values():

    blind.Update_trigger()

    print(blind)

So change blind.Update() to blind.Update_trigger()
Besides to go into the socket error could you create a second test script (test2.py) and run it using the following code?:
import socket
import struct

MULTICAST_ADDRESS = '<IP_ADDRESS>'
UDP_PORT_RECEIVE = 32101

print("create socket")
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
print("set blocking")
udp_socket.setblocking(True)

print("set REUSEADDR")
udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

print("set IP_MULTICAST_IF")
try:
    udp_socket.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.INADDR_ANY)
except:
    print("set IP_MULTICAST_IF failed, trying '<IP_ADDRESS>'")
    try:
        udp_socket.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton("<IP_ADDRESS>"))
    except:
        print("set IP_MULTICAST_IF failed with '<IP_ADDRESS>', trying IPPROTO_IP")
        udp_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.INADDR_ANY)

print("set MULTICAST_ADDRESS")
mreq = struct.pack("=4sl", socket.inet_aton(MULTICAST_ADDRESS), socket.INADDR_ANY)
udp_socket.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP, mreq)

print("bind to port")
udp_socket.bind(("", UDP_PORT_RECEIVE))

print("Succes")

That will let me know where the problem is and hopefully how to fix it.

@starkillerOG
Yes, no problem;
W:\Mijn documenten>python test.py
<MotionGateway ip: <IP_ADDRESS>, mac: d8bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -40 dBm>
<MotionBlind mac: d8bfc0c3d1e30007, type: RollerBlind, status: Closing, position: 0 %, angle: 0.0, limit: NoLimit, battery: 0.0 %, 0.0 V, RSSI: -85 dBm, com: BiDirectionLimits>
W:\Mijn documenten>python test2.py
create socket
set blocking
set REUSEADDR
set IP_MULTICAST_IF
set IP_MULTICAST_IF failed, trying '<IP_ADDRESS>'
set IP_MULTICAST_IF failed with '<IP_ADDRESS>', trying IPPROTO_IP
set MULTICAST_ADDRESS
Traceback (most recent call last):
File "W:\Mijn documenten\test2.py", line 28, in
udp_socket.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP, mreq)
OSError: [WinError 10022] Er is een ongeldig argument opgegeven

@JonOve this is greath.
I see that indeed your blind is reported as BiDirectionLimits instead of BiDirection (which my blinds have) so I can indeed see if position is supported.
I would like you to run this test.py script 3 more time:

one in which the blind is completly open
one in which the blind is completly closed (no light comes through the window)
one in which the blind is somewhere halfway the window

Please indicate which result belongs to which situation.
In that way I can figure out if we can see at least if the blind is fully open/closed.

@JonOve in regards to the socket error, could you change the test2.py file to this and test again:
import socket
import struct

MULTICAST_ADDRESS = '<IP_ADDRESS>'
UDP_PORT_RECEIVE = 32101

print("create socket")
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
print("set blocking")
udp_socket.setblocking(True)

print("set REUSEADDR")
udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

print("set IP_MULTICAST_IF using IPPROTO_IP")
udp_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.INADDR_ANY)

print("set MULTICAST_ADDRESS using IPPROTO_IP")
mreq = struct.pack("=4sl", socket.inet_aton(MULTICAST_ADDRESS), socket.INADDR_ANY)
udp_socket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

print("bind to port")
udp_socket.bind(("", UDP_PORT_RECEIVE))

print("Succes")

@starkillerOG
Yes, no problem;
FYI, Updating of the status takes quit some time.
Seems to me there is no update in case of halfway.
Closed
W:\Mijn documenten>python test_closed.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -40 dBm>
<MotionBlind mac: d9bfc0c3d1e30007, type: RollerBlind, status: Closing, position: 0 %, angle: 0.0, limit: NoLimit, battery: 0.0 %, 0.0 V, RSSI: -85 dBm, com: BiDirectionLimits>
Open
W:\Mijn documenten>python test_open.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -41 dBm>
<MotionBlind mac: d9bfc0c3d1e30007, type: RollerBlind, status: Opening, position: 0 %, angle: 0.0, limit: NoLimit, battery: 0.0 %, 0.0 V, RSSI: -85 dBm, com: BiDirectionLimits>
Halfway
W:\Mijn documenten>python test_halfway.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -37 dBm>
<MotionBlind mac: d9bfc0c3d1e30007, type: RollerBlind, status: Opening, position: 0 %, angle: 0.0, limit: NoLimit, battery: 0.0 %, 0.0 V, RSSI: -85 dBm, com: BiDirectionLimits>
Test2
W:\Mijn documenten>python test2.py
create socket
set blocking
set REUSEADDR
set IP_MULTICAST_IF using IPPROTO_IP
set MULTICAST_ADDRESS using IPPROTO_IP
bind to port
Succes

@JonOve Thank you very much for the testing, I have fixed the socket part.
I am still a bit unsure about the open/closed status, the "status" that is shown here i actually just the last command that has been sent to the blind, so that does not represent the open/closed status verry well I think.
Could you run the following script one more time for the 3 situations: open/closed/half way:
from motionblinds import MotionGateway

m = MotionGateway(ip = "<IP_ADDRESS>", key = "12ab345c-d67e-8f")

m.GetDeviceList()

m.Update()

print(m)

for blind in m.device_list.values():

    print(blind._write(blind.QUERY_DATA))

@starkillerOG
No problem at all!
Here the results using the Brel Home app to control the blind.
Using the standard remote control, the status remains on "opening" or "closing" Just what is last used in the app.
Closed
W:\Mijn documenten>python test_closed.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -43 dBm>
<MotionBlind mac: d9bfc0c3d1e30007, type: RollerBlind, status: Closing, position: 0 %, angle: 0.0, limit: NoLimit, battery: 0.0 %, 0.0 V, RSSI: -85 dBm, com: BiDirectionLimits>
Halfway
W:\Mijn documenten>python test_halfway.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -39 dBm>
<MotionBlind mac: d9bfc0c3d1e30007, type: RollerBlind, status: Stopped, position: 0 %, angle: 0.0, limit: NoLimit, battery: 0.0 %, 0.0 V, RSSI: -85 dBm, com: BiDirectionLimits>
Open
W:\Mijn documenten>python test_open.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -39 dBm>
<MotionBlind mac: d9bfc0c3d1e30007, type: RollerBlind, status: Opening, position: 0 %, angle: 0.0, limit: NoLimit, battery: 0.0 %, 0.0 V, RSSI: -85 dBm, com: BiDirectionLimits>

@JonOve did you change the test scripts to use the:
print(blind._write(blind.QUERY_DATA)) line?
The output is not what I would expect...

@starkillerOG
So sorry, you are totally right, apologies. Made the changes in the file, but forgot to save them.
Please find the correct results;
Closed
W:\Mijn documenten>python test_closed.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -39 dBm>
{'msgType': 'WriteDeviceAck', 'mac': 'd9bfc0c3d1e30007', 'deviceType': '10000000', 'msgID': '20220122141440951', 'data': {'type': 1, 'operation': 0, 'currentPosition': 0, 'currentAngle': 0, 'currentState': 0, 'voltageMode': 0, 'batteryLevel': 0, 'wirelessMode': 2, 'RSSI': -85}}
Halfway
W:\Mijn documenten>python test_halfway.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -39 dBm>
{'msgType': 'WriteDeviceAck', 'mac': 'd9bfc0c3d1e30007', 'deviceType': '10000000', 'msgID': '20220122140836436', 'data': {'type': 1, 'operation': 2, 'currentPosition': 0, 'currentAngle': 0, 'currentState': 0, 'voltageMode': 0, 'batteryLevel': 0, 'wirelessMode': 2, 'RSSI': -85}}
open
W:\Mijn documenten>python test_open.py
<MotionGateway ip: <IP_ADDRESS>, mac: d9bfc0c3d1e3, protocol: 0.9, firmware: None, N_devices: 1, status: Working, RSSI: -39 dBm>
{'msgType': 'WriteDeviceAck', 'mac': 'd9bfc0c3d1e30007', 'deviceType': '10000000', 'msgID': '20220122141001307', 'data': {'type': 1, 'operation': 1, 'currentPosition': 0, 'currentAngle': 0, 'currentState': 0, 'voltageMode': 0, 'batteryLevel': 0, 'wirelessMode': 2, 'RSSI': -85}}

@JonOve thank you very much for all your debuging.
Unfortunatly I can now say for sure there is no reliable way to determine if your type of blind is opened or closed, it will only report the last command sent to the blind from the gateway, but if you use a remote or manual controls on the blind (if they are present) the last command of the gateway will not represent the state of the blind.
Therefore HomeAssistant will not be able to show a state (knowing if the blind is open or not).
However in this PR https://github.com/home-assistant/core/pull/64695 that was already merged, your issues will be fixed.
The "up" button will no longer be greyed out, and the socket error will be resolved.
Thank you for helping in resolving these bugs (also for other users).
see: https://github.com/home-assistant/core/issues/64685#issuecomment-1019234252 for details about when the fix will be available/how to implement it already.

I will now close this issue since the original problem is fixed.
If you experiance any other problems or have other questions, feel free to open this issue again or open a new issue.

Thanks a lot!


Cryflare::Client is not re-entrant.

Use of the same Cryflare::Client with multiple purge_cache calls in different Fibers results in an IO error in SSL. I'll work out a way to serialize them for now.

Which version of Crystal are you on? Can you provide a simplified code sample (and stack trace)?

I'm going to 0.36 now (I was waiting for shield), but I think the problem is that I tried to use one client from multiple Fibers.


Downport: Syntax errors in unit tests

cl_abap_unit_assert=>assert_true and assert_false do not exist in 702. Use assert_equals instead.

[x] ajson: https://github.com/sbcgua/ajson/pull/170
[x] zcl_abapgit_git_commit https://github.com/abapGit/abapGit/pull/6437
[x] zcl_abapgit_services_repo https://github.com/abapGit/abapGit/pull/6437

abaplint is not able to detect this issue, currently. Should we create a grep script to check all *.testclasses.abap?

need some way of automating this, but well, sometime..


Request: Add Tornado ID's for Echo Gauntlet (Leagues 5)

The new tornadoes added for Leagues 5 in the Echo Hunllef fight are not properly marked. The ID for the new tornadoes is: 14142
MOID link here

done in c56f56fe78e0d89398e9941db2560dd4688712ba


Remove dev-master

Do any members have an issue with removing the dev-master branch? It is 25 commits behind master and 4 to 6 years old.

Sounds good to me!

Have deleted the dev-master branch.
I have reviewed all branches - see the project.
They will remain open for the time being.
I might rename some of them to include development features.


Fix exist subquery when create materializer view

@alexey-milovidov

[x] I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en

Perfect, thanks!
Could you please also provide a test which fails before this commit?

The test case is in #1912 I don't know if I should add on more.

Ok, that's enough.


Layout of offCanvas with form broken after update

Update from 0.1.0-alpha.160 to 0.1.0-alpha.275
It looks like some grid CSS changes the layout based on if a form is present:
.flow--modal [role="dialog"]:has(form), .flow--modal--off-canvas [role="dialog"]:has(form) {
  grid-template-areas:
"header "
"content";
  grid-template-rows: auto 1fr;

Normally there are 3 areas, where the third one is an action group for the modal. How do I display an action group together with a form? Is there any example how to use forms within modals?
Thanks
Nikita

Hi Nikita,
You can use a form inside a modal like that:
 <Modal controller={controller}>
      <Form form={form} onSubmit={OnSubmit}>
        <Heading>Heading</Heading>

        <Content>

            <Field name="example">
              <TextField>
                Example
              </TextField>
            </Field>

        </Content>

        <ActionGroup>
          <Button color="accent" type="submit">
            save
          </Button>
          <Action closeOverlay="Modal">
            <Button color="secondary" variant="soft">
              abort
            </Button>
          </Action>
        </ActionGroup>
      </Form>
    </Modal>

This works, perfect!


Add Playstore icon

Replace the link to the play store with the following icon.
Clicking on this icon must lead to playstore.

I would like to work on this issue, I am GSSoC participant

Assign me this issue


feat(feature-toggle-service): remove everything except controllers

gh-843
Description
The featureFlag decorator moved to a separate package and only crud api part of service now.
Fixes #843
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Intermediate change (work in progress)

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[ ] Test A
[ ] Test B

Checklist:

[x] Performed a self-review of my own code
[x] npm test passes on your machine
[x] New tests added or existing tests modified to cover all changes
[ ] Code conforms with the style guide
[ ] API Documentation in code was updated
[ ] Any dependent changes have been merged and published in downstream modules

@yeshamavani conflicts


[UBS.Personal cabinet] The expanded order details table isn`t displayed after clicking on arrow at the beggining of the order line.

Environment: Windows 10
Google Chrome 109.0.5414.75
Reproducible: always
Build found: 03/03/2023
Preconditions

Logged in to GreenCity as a User https://www.testgreencity.ga/#/ubs
The tab "Order history"  is opened.
The client has at least one order with 'Done' or 'Cancel' order statuses.

Steps to reproduce

Click on the arrow at the beginning of the order line (before the order number).
Pay attention to the order.

Actual result:  The expanded order details table is displayed after clicking on the order number at the beginning of the order line.
Expected result: The expanded order details table is displayed after clicking on the arrow at the beginning of the order line.
User story and test case links
User story #3477
[Test case] https://jira.softserve.academy/projects/GC/issues/GC-5311?filter=reportedbyme

Duplicate
https://github.com/ita-social-projects/GreenCity/issues/4893


Application does not have permission for this action

I get access token from: https://developers.facebook.com/tools/accesstoken
curl -G \
> -d "search_terms='california'" \
> -d "ad_type=POLITICAL_AND_ISSUE_ADS" \
> -d "ad_reached_countries=['US']" \
> -d "access_token=<>" \
> "https://graph.facebook.com/v7.0/ads_archive"

And I get the following error
{
    "error": {
        "message": "Application does not have permission for this action",
        "type": "OAuthException",
        "code": 10,
        "error_subcode": 2332002,
        "is_transient": false,
        "error_user_title": "Authorization and login needed",
        "error_user_msg": "To access the API, you'll need to follow the steps at facebook.com/ads/library/api.",
        "fbtrace_id": "AOxlW9wwYGgl5evOXSPcbiD"
    }
}

How do I solve this problem, please help me

You need to enter your authentication token in place of <>.
In order to do that you need to confirm your Facebook id first via facebook.com/id
You can refer to step 1 here:
https://www.facebook.com/ads/library/api

I get access token from: https://developers.facebook.com/tools/accesstoken
curl -G \
> -d "search_terms='california'" \
> -d "ad_type=POLITICAL_AND_ISSUE_ADS" \
> -d "ad_reached_countries=['US']" \
> -d "access_token=<>" \
> "https://graph.facebook.com/v7.0/ads_archive"

And I get the following error
{
    "error": {
        "message": "Application does not have permission for this action",
        "type": "OAuthException",
        "code": 10,
        "error_subcode": 2332002,
        "is_transient": false,
        "error_user_title": "Authorization and login needed",
        "error_user_msg": "To access the API, you'll need to follow the steps at facebook.com/ads/library/api.",
        "fbtrace_id": "AOxlW9wwYGgl5evOXSPcbiD"
    }
}

How do I solve this problem, please help me

We can't confirm your Facebook id first via facebook.com/id in VietNam. Poor you and me!


common interface for android and ios

As discussed in #259 , this is a fork for having a common interface for both Android and Ios.
this PR contains the changes required to do the job. this Pr contains the following changes:
1- adding a new android project to sample-apps which is more like the IOS sample app version for testing.
2- changing code generator to support new system and generate files according to new requirement.
3- creating new common elements interfaces and implementing them for ios and android.
4- changing yaml reader to be able to read new style of yaml files.
5- adding some config properties for selecting platform and setting MobileElement annotation parameters from test suite.
6- changing config builder to support selenium grid with multiple appium instances with diferent platforms.
7- adding some test cases and a suite for testing if new system works properly.
Please let me know if any other change is required.

@alizelzele Please update your PR. It needs to be able to compile. It looks like you are missing some files. Also, please squash your commits down to no more than 3 salient commits. Thanks!

@alizelzele Also fyi, our commit comment format is as follows;
Short description on a single line.
{empty line}
Detailed description. Can span many lines

@alizelzele Was there no way to add the new android page objects functionality/needs into the existing app? How difficult would it be to do this? I'm trying to minimize confusion for anyone looking (developer, other) at our test apps.. To me, it is much less confusing to have one clear app for iOS and another for Android. At a minimum, can you give the new app a name (and corresponding top level directory) which better conveys the difference when compared to the pre-existing android page objects app?

@kumaravel-jayakumar @fakrudeen78 @sundaramrajendran @sebady I'm going to need some help reviewing this one, please :)

Note for reviewers:
[X] @alizelzele covered by the CLA. CLA signed.

@alizelzele Please correct your [user.name] in your ~/.gitconfig. Your commits use
 "ali.kia"<EMAIL_ADDRESS>
Or contribution policy asks that you set your [user.name] to be your full name with proper use of case and punctuation.. Here's a good writeup on how to set this - https://help.github.com/articles/setting-your-username-in-git/
to fix this in your existing commits, you will have to amend your commits and reset the author

@mach6 Sorry, i did not know where to answer to your comments, so i add a comment here.
1- copyrights are changed and fixed.
2- sorry about compile problem. i forgot to add a test page file to git. it is added now.
3- i will squash them as soon as i solve naming with android app.
4- the new Android app is almost the same as ios version for testing porpose, if i had changed the previous app, there would be lots of changes and lots of test cases would need to be updated, so i decided to but it that way. but for sure, it could have a better name. i am not good with naming ( ;) ), do you have any suggestion for the name of new app, or you think it worth to make it only one app and change test cases according to that one?
5- after i squash them all into one commit, the user.name problem will be solved.
thank you.

@mach6 i changed the old test cases to work with the new android app and removed the old one.
@sebady from com.paypal.selion.reader.YamlV1Reader(line 56) that says PageYAML V1 only needs to support platform = web and some where that i do not actually remember that was saying "Yaml V1 is deprecated" i figured out it is not required to add this functionality to this version and only V2 is enough. shall i add this functionality to V1 too?

@alizelzele please do not update PageYaml V1.. Yes, it is deprecated (and undocumented) .. It will be removed in a future release.

Hi @alizelzele fyi, I'm still waiting for your updates -- squashed commits, etc.  cheers.

@mach6 sorry i was waiting for review and comments before squashing them all to one.
i will do that ASAP.

Thanks @alizelzele .. It makes it easier on the reviewer(s) when the changes are in a single (or 3 max) commits (and corresponding diffs) to go through each change.. It enables us to review them offline without also cross-referencing the output on github and the PR

@mach6 It was a bit scary to force push to server, but it is done now. :-)
Hope i did not broke anything while force pushing :-)
It is my first time forking and pull requesting. I did not know about making that easier for reviewers and others by making it only one commit. Sorry for late reset.

@alizelzele will you please submit a PR for the doc updates that coincide with this PR's feature changes? Documentation is on the gh-pages branch. Thanks!

@mach6 I changed all the parts you asked for except the documentation part.
is documentation essential for pull request?  since it is in another branch i thought maybe it can be done later.

@alizelzele Thanks. The documentation will be needed though it will not prevent this PR from moving forward. This said, I'd like to minimize the gap between merging this PR and the documentation updates. So, if you could please start the changes on your gh-pages branch and work towards opening a new PR, I would appreciate it. Also, pending doc changes could help those of us reviewing this PR understand the approach a bit better. :)

@alizelzele fyi - I'm working on this code. I have rebased / merged it with the latest changes on develop .. My goal is to move it to a branch on this repo for final review and merge it asap.
Here is the start of this work -- https://github.com/mach6/SeLion/commits/alizelzele-develop
I might reach out to you for some more help. Hope that is okay!

@mach6 Sure, let me know how i can be of any help.

@alizelzele @sebady Moved this PR to the local branch https://github.com/paypal/SeLion/tree/alizelzele-develop for final readiness. Also opened #296 for further tracking/review


Problem in "samples/2.hello-kubernetes/"

Followed the instruction "https://github.com/dapr/samples/tree/master/2.hello-kubernetes":
......
Step 2 - Create and Configure a State Store
Dapr can use a number of different state stores (Redis, CosmosDB, DynamoDB, Cassandra, etc.) to persist and retrieve state. For this demo, we'll use Redis.
Follow these steps to create a Redis store.
......
I tried several times to install redis in macos, Unfortunitely, it didn't  work, could you let me know how to do it?
Thanks,

The sample you are mentioning is a Kubernetes hello world. It should not matter that you are on macOS to make Redis work. Can you describe what you did that didn't work?

Thanks for your reply(I have not tried it since then).
As what I remembered I followed the instruction from https://github.com/dapr/docs/blob/master/concepts/components/redis.md#creating-a-redis-store
but it didn't work.

@youngbupark  In January, I installed Redis into the cluster (helm install stable/redis --name redis)  error message showed up. I just noticed something changed in the document maybe I should try it late.
Thanks in advance!


imagemagick has build error

Pkg.udpate() (Julia master, Homebrew 0.3.1) wants to install imagemagick, and fails:
==> Downloading https://dl.bintray.com/homebrew/mirror/imagemagick-6.9.5-1.tar.x
######################################################################## 100.0%
==> ./configure --disable-osx-universal-binary --prefix=/Users/eschnett/.julia/v
Last 15 lines from /Users/eschnett/Library/Logs/Homebrew/imagemagick/01.configure:
checking if BZLIB package is complete... yes
checking for X... disabled
-------------------------------------------------------------
checking for ZLIB... yes

-------------------------------------------------------------
checking for libltdl...
checking ltdl.h usability... yes
checking ltdl.h presence... yes
checking for ltdl.h... yes
checking for lt_dlinit in -lltdl... no
checking if libltdl package is complete... no -- some components failed test
configure: error: in `/private/tmp/imagemagick-20160712-49100-zjcykd/ImageMagick-6.9.5-1':
configure: error: libltdl is required for modules build
See `config.log' for more details
Warning: It appears you have MacPorts or Fink installed.
Software installed with other package managers causes known problems for
Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.

READ THIS: https://git.io/brew-troubleshooting
If reporting this issue please do so at (not Homebrew/brew):
  https://github.com/Homebrew/homebrew-core/issues

These open issues may also help:
imagemagick 7.0.2-1 https://github.com/Homebrew/homebrew-core/pull/2209
Upgrade: ImageMagick 7.0.x-y https://github.com/Homebrew/homebrew-core/issues/1828
==============================[ ERROR: Homebrew ]===============================

LoadError: failed process: Process(`/Users/eschnett/.julia/v0.5/Homebrew/deps/usr/bin/brew install imagemagick`, ProcessExited(1)) [1]
while loading /Users/eschnett/.julia/v0.5/Homebrew/deps/build.jl, in expression starting on line 2

================================================================================

I have MacPorts installed, including this package:
  ImageMagick @6.9.5-0_0+x11 (active)

Homebrew.jl should never be building from source.

It does for me fairly regularly...

Hm, that's a bug then. @staticfloat ?

Always in situations like this: https://github.com/JuliaLang/Homebrew.jl/issues/125

@eschnett please Pkg.checkout("Homebrew"), then run the following and post the output:
using Homebrew
Homebrew.rm("imagemagick")
Homebrew.add("imagemagick"; verbose=true)

several things are still building from source, e.g. pkg-config and fontconfig here: https://travis-ci.org/JuliaLang/BinDeps.jl/jobs/146334302

@tkelman I just crushed an annoyingly subtle bug in the translation machinery, see https://github.com/JuliaLang/Homebrew.jl/pull/132

Please Pkg.update() and try again. :)

I believe I am experiencing a related bug.  On Pkg.update() this morning I experienced this error:
julia> Pkg.build("ImageMagick")
INFO: Building Rmath
INFO: Building Homebrew
Already up-to-date.
Uninstalling mbedtls... (122 files, 2.7M)
==> Installing mbedtls from staticfloat/juliatranslated
==> Downloading https://juliabottles.s3.amazonaws.com/mbedtls-2.1.2.el_capitan.b
Already downloaded: /Users/tcovert/Library/Caches/Homebrew.jl/mbedtls-2.1.2.el_capitan.bottle.tar.gz
==> Pouring mbedtls-2.1.2.el_capitan.bottle.tar.gz
🍺  /Users/tcovert/.julia/v0.4/Homebrew/deps/usr/Cellar/mbedtls/2.1.2: 122 files, 2.7M
Warning: Already linked: /Users/tcovert/.julia/v0.4/Homebrew/deps/usr/Cellar/mbedtls/2.1.2
INFO: Building ImageMagick
==> Installing imagemagick from staticfloat/juliatranslated
Error: Operation already in progress for xz
Another active Homebrew process is already using xz.
Please wait for it to finish or terminate it to continue.
=============================[ ERROR: ImageMagick ]=============================
LoadError: failed process: Process(/Users/tcovert/.julia/v0.4/Homebrew/deps/usr/bin/brew install staticfloat/juliatranslated/imagemagick, ProcessExited(1)) [1]
while loading /Users/tcovert/.julia/v0.4/ImageMagick/deps/build.jl, in expression starting on line 98
================================================================================
================================[ BUILD ERRORS ]================================
WARNING: ImageMagick had build errors.

packages with build errors remain installed in /Users/tcovert/.julia/v0.4
build the package(s) and all dependencies with Pkg.build("ImageMagick")
build a single package by running its deps/build.jl script

================================================================================

If you Pkg.checkout("Homebrew") and try again, does the issue persist?

Note that Homebrew.jl has a bug that kills its ability to auto-update, you may need to try the following:
using Homebrew
;cd $(Homebrew.brew_prefix)
;git fetch
;git reset --hard origin/master
;$(Homebrew.brew_exe) update

Note that the semicolons at the beginning of the line switch Julia into "shell mode", so be sure to paste that line by line into an open julia session.

thanks, that seems to work now.  note I had to actually type the semicolon and then paste the text that followed.  cutting and pasting with the semicolon at the beginning did not work

Great, I'm going to call this confirmed fixed now.


Configuring admins and admins_pat

Details
This is just a question regarding how to configure the admins and admins_pat fields. In a repo I work with we would like to have this but we are unsure on how to configure it. While the admin key is clear enough (just add the org/team), it is not clear how to add the admins_pat. Our understanding is that PATs are personal (i.e. each user can create PATs). Does this mean that each user would need to create one for their account and add it to the repo secrets? If so, let's assume we create a secret with PAT1;PAT2;PAT3;etc will the runner/action be able to tell which PAT belongs to which person??
Thanks

👋 Hey there @daczarne! It looks like you have a good understanding of the admins field. However, in order to use a team you are correct that you have to use a GitHub PAT that has the read:org scope.
What I have done in a few open source projects that I work on this the following:

Create a new "bot account" (sometimes people call these service accounts). Here is an example of one. A bot account is essentially just a GitHub account that represent a "bot" instead of a "human". You would use this because at work, employees may come and go so you don't want a PAT for deployments tied to a single human because if they leave the company, their PAT will cease to work.
Mint a new PAT via this new bot account with the read:org scope. It might not be ideal, but you would use a "classic PAT" as the tokens that you can mint for classic PATs can have infinite expirations. This means that you don't have to worry about rotating the token every X days.
Add the PAT you minted in step 2 to the admins_pat field of this Action.

If you want to greatly enhance your security, and not have long lived tokens, I would suggest looking into GitHub Apps + this workflow GitHub Action to create short-lived tokens to pass into the admins_pat field instead -> create-github-app-token

@GrantBirki thank you very much for your quick response. One small follow up.

However, in order to use a team you are correct that you have to use a GitHub PAT that has the read:org scope.

My personal PAT that I create in my developer settings you mean?? Would that work for the other people in my team?? Even if we (my team and I) use a PAT from a bot that the company has, under the hood this bot would still be just a normal user account as far as GitHub is concerned.

What I have done in a few open source projects that I work on this the following:

Create a new "bot account" (sometimes people call these service accounts). Here is an example of one. A bot account is essentially just a GitHub account that represent a "bot" instead of a "human". You would use this because at work, employees may come and go so you don't want a PAT for deployments tied to a single human because if they leave the company, their PAT will cease to work.
Mint a new PAT via this new bot account with the read:org scope. It might not be ideal, but you would use a "classic PAT" as the tokens that you can mint for classic PATs can have infinite expirations. This means that you don't have to worry about rotating the token every X days.
Add the PAT you minted in step 2 to the admins_pat field of this Action.

If you want to greatly enhance your security, and not have long lived tokens, I would suggest looking into GitHub Apps + this workflow GitHub Action to create short-lived tokens to pass into the admins_pat field instead -> create-github-app-token

These are very good tips on how to set it up. Really appreciated. I will look into using them.

My personal PAT that I create in my developer settings you mean?? Would that work for the other people in my team?? Even if we (my team and I) use a PAT from a bot that the company has, under the hood this bot would still be just a normal user account as far as GitHub is concerned.

Yep that is correct! Here is an example:

Please note that if your organization requires SSO, you will need to "SSO authorize" your PAT after you create it to access resources in your org.

Ok. That clarifies it. Thanks. Appreciate the help 😄
Closing the ticket now as I believe this clarifies/answers all questions.


[MMP] Reply counts are occasionally the same seemingly random large number for all threads

Reply counts are fine in debug output, but the displayed value is a random large number.
Example:

Seemingly fixed with 413370a13fd975fca5a53132836a767a9e18c944, but will keep an eye out for it happening again.

Confirmed fixed for good. Found the root cause (after fixing) from reddit's javascript:
function unread_thing(e) {
    var t = $(e);
    t.hasClass("thing") || (t = t.thing()),
    alterUnreadCount(1),
    $(t).addClass("new unread")
}

function alterUnreadCount(e) {
    var t = $(".message-count");
    t.length > 0 && t.text(parseInt(t.text(), 10) + e)
}


llava inference works incorrectly if adapt_transformers_to_gaudi called after transformers import

System Info
Optimum Habana version v1.12.1
Synapse 1.16.2
docker vault.habana.ai/gaudi-docker/1.16.2/ubuntu22.04/habanalabs/pytorch-installer-2.2.2:latest

Information

[ ] The official example scripts
[X] My own modified scripts

Tasks

[ ] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[X] My own task or dataset (give details below)

Reproduction
Running minimal llava inference code fails (on cpu or hpu). I have also verified on original llava (if you want that example). Change line 7 to false to verify it the correct behavior.
import requests
from PIL import Image
from transformers import AutoProcessor
from habana_frameworks.torch import hpu
from optimum.habana.transformers.modeling_utils import adapt_transformers_to_gaudi

fails = True
if fails:
  from transformers import LlavaForConditionalGeneration
  adapt_transformers_to_gaudi()
else:
  adapt_transformers_to_gaudi()
  from transformers import LlavaForConditionalGeneration

checkpoint = "Intel/llava-gemma-2b"

# Load model
model = LlavaForConditionalGeneration.from_pretrained(checkpoint)
processor = AutoProcessor.from_pretrained(checkpoint)

# Prepare inputs
# Use gemma chat template
prompt = processor.tokenizer.apply_chat_template(
    [{'role': 'user', 'content': "<image>\nWhat's the content of the image?"}],
    tokenize=False,
    add_generation_prompt=True
)
url = "https://www.ilankelman.org/stopsigns/australia.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=prompt, images=image, return_tensors="pt")

# Generate
generate_ids = model.generate(**inputs, max_length=30)
output = processor.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print(output)

Expected behavior
the output should say "The image features a red stop sign on a" rather than " ss wasteAsian\n\n\nt".

Yes, that's expected. A workaround would be to fully re-import all the imports that are done in adapt_transformers_to_gaudi, but it's not that straightforward to do. Let's see if some other people encounter this issue and in that case I'll give a higher priority to it.

Would it be hard to throw a warning? I can imagine myself running into this problem again in a few months and not realizing I put the call in the wrong spot.


updated data url

Re-run this please

Seems to fail randomly on different chunks, the data may have to be cached.  The layer name implies that it's 3 years old and not updated so caching may be the best approach.

Woah.

There are < 5 million points in this source but there are > 10 million people in the state so there's probably still value in sourcing as many counties as possible.

👏🏼

Hello outer banks! Nice job!
On Sat, Apr 8, 2017 at 7:11 AM, Michal Migurski<EMAIL_ADDRESS>wrote:

👏🏼
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/openaddresses/openaddresses/pull/2821#issuecomment-292720666,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA0EO-Sewre9QoHhdwjeSxNGxdUtojHDks5rt5WegaJpZM4M3c39
.


When CUD of hosts is restricted for a member, host addition should error out as "action not allowed"

Rancher versions:
rancher/server:v1.6.3-rc2
rancher/agent:rancher/agent:v1.2.3-rc2
**Operating system and kernel: (cat /etc/os-release, uname -r preferred)**Ubuntu
**Type/provider of hosts: (VirtualBox/Bare-metal/AWS/GCE/DO)**AWS/GCE
**Setup details: (single node rancher vs. HA rancher, internal DB vs. external DB)**Single node
**Environment Template: (Cattle/Kubernetes/Swarm/Mesos)**Cattle
Steps to Reproduce:

Create a member-auth.json file with read only permissions set
Create a rancher server using the below command:
docker run -d -p 8080:8080 -v /local/path/to/member-auth.json:/usr/share/cattle/war/schema/member-auth/member-auth.json.d/overrides/member-auth.json rancher/server:v1.6.3-rc2
Enable auth using git-hub
Create another environment and add another github user as a member
Login as a member and add a host

Host addition fails with " Error: No machine name specified". It should fail with  action not allowed for a member or some appropriate error

@soumyalj can you provide the contents of the auth.json file(s) that you used?

@cjellick , contents of auth.json file
root@sangeetest1:~# cat member-auth.json
{
    "authorize" : {
        "machine": "r",
        "machine.authCertificateAuthority": "r",
        "machine.authKey": "r",
        "machine.dockerVersion": "r",
        "machine.driver": "r",
        "machine.engineEnv": "r",
        "machine.engineInsecureRegistry": "r",
        "machine.engineInstallUrl": "r",
        "machine.engineLabel": "r",
        "machine.engineOpt": "r",
        "machine.engineRegistryMirror": "r",
        "machine.engineStorageDriver": "r",
        "machine.externalId": "r",
        "machine.labels": "r",
        "machine.name": "r",

        "host" : "r",
        "host.agentState" : "r",
        "host.agentId" : "r",
        "host.computeTotal" : "r",
        "host.hostname" : "r",
        "host.info" : "r",
        "host.physicalHostId" : "r",
        "host.zoneId" : "r",
        "host.labels" : "r",
        "host.publicEndpoints" : "r",
        "host.agentIpAddress" : "r",
        "host.instanceIds" : "r",
        "host.localStorageMb" : "r",
        "host.memory" : "r",
        "host.milliCpu" : "r",
        "host.stackId" : "r",
        "host.hostTemplateId" : "r",

        "end" : ""
    }
}

@cjellick , When a member’s access is restricted to read only for host (by overrriding member-auth.json) , user is allowed to deactivate/ evacuate/edit hosts and download machine config.
These actions should also be restricted on the hosts.

We are changing the implementation to be based off a settng, not overriding the auth file

To @alena1108 for review

Tested with rancher-server version - v1.6.6-rc2.
Set modify.infrastructure.roles to not include roles:
member/v1-member
As a member of the host , "Add account" option is presented to the user. When member attempts to add hosts , it fails with "Cannot create host"  as expected.
As a member of the host , deactivate/ evacuate/edit hosts and download machine config options are not presented to the user in UI.
When Attempting delete using API , API fails with:
"status": 403,
"code": "Forbidden",
"message": "Cannot delete host",

When Attempting to edit using API , API fails with:
"status": 403,
"code": "Forbidden",
"message": "Cannot update host",


Update to 1.22.6

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


feat(calcite): support reading in list and map literals

feat: inject ExpressionRexConverter into SubstraitRelNodeConverter

Let's us read Substrait List and Map literals into Calcite.
Additionally, allows for the injection of the ExpressionRexConverter to allow users extra control over conversion if they need it.


Install.ps1 not working anymore

Line 7 in Install.ps1 should be spelled choco upgrade -y tesseract adb. Looks like the cup command doesn't exists in modern Chocolatey versions.

fixed


Selection Editing Tests

Tests of commands that directly manipulate the number and composition of selections.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 59.10%. Comparing base (5823ffa) to head (d129a6e).

Additional details and impacted files
@@             Coverage Diff             @@
##             main      #62       +/-   ##
===========================================
+ Coverage   44.66%   59.10%   +14.43%
===========================================
  Files          11       11
  Lines         956      956
  Branches      244      244
===========================================
+ Hits          427      565      +138
+ Misses        479      312      -167
- Partials       50       79       +29

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


feat: add Repr instance for quaternions

Adds a Repr instance for QuaternionAlgebra. A quaternion <w, x, y, z> is shown as "{ re := w, imI := x, imJ := y, imK := z }". The components are displayed as Cauchy sequences for quaternions over the Reals.

Could you add a test? There should be one somewhere that already tests complex numbers that you can copy. If you can't find it, I can have a look in a day or two.

@eric-wieser it seems like this might have fallen through the cracks. Are you happy?
bors d=eric-wieser


Cow: Watch snapchatplanetsofficial.com

Cow requests the watch of the watch_keyword snapchatplanetsofficial\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

snapchatplanetsofficial\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.


podcast:categories - a suggestion for a different approach

I'm seeing some people asking for "tabletop games" as a category, and doubtless we're likely to have more arguments about categories in the future.
Could I humbly suggest we're doing this all wrong?
We shouldn't be setting categories. That's not our job. We should be allowing podcasters to set them for us.
Here's an alternative:
podcast:categories
Specification:
<podcast:categories>
   (a comma separated list of freeform categories ...
   ... most important first ...
   ... to a maximum of 128 characters)
</podcast:categories>

Fallback: If this field is empty or not present, the podcast client may use the three categories in the iTunes tag as default values.
Example:
<podcast:categories>
   daily news,business news,podcasting news,aloof british accents,snarky remarks
</podcast:categories>

This is a free-form list of categories. It's expressed as tags, like Flickr does photo tagging, or Twitter does hashtagging, or Medium does with subjects, or Unsplash does in searching.
It has a maximum of 128 characters, just like Medium has a maximum of five subjects per post, or Twitter has a limited space.
It also suggests that the 'most important' category is first in the list. This might be used by search algorithms to give more weight, in my example, to "daily news" than to "snarky remarks".
It means that if you want a category called cooking with cheese, then you can go right ahead and make one. If enough other people like the idea of the category, then it'll be a popular category.
Categories can also be in the native language of the podcast, too. A search for saucissons will find me French-language podcasts about sausages. (You could use that in conjunction with the lang tag, too).
These categories, more properly called 'tags', are well-understood by many creators on the internet, and show clear blue water between Apple's intransigent categories where you need to run a campaign to get them to add just one of them, and where we want to be, which is a podcast service to everyone.
These are self-policing, fluid and reactive. Want a BLM category? Go for it. Want a Trump category? Be my guest. Want a category for impeachment? For snowstorm? For power outages? It's a super-simple way to tie podcasts together on a common subject.
 Simple and easy, and already has 100% support since everyone has set up to three categories as a starting point.

I like this idea. Some academic publisher work the same way. They have their fixed, controlled vocabulary, to put order into chaos ;-) done by their reference librarians, but allow the author to add a low number of own keywords (creativity galore ;-).
So we would not be off the tracks regarding the Pomme standard.

Using tabletop role-playing games as an example, this opens up the ability to dynamically add genre tabs like osr or dreamsword or actual play or interviews etc.
But it does also open up the problem of alternate spellings diluting finding content. In our example; ttrpg, tabletop rpg, tabletop role-playing games, table-top roleplaying games and table-top roleplaying games are all valid spellings and get their own tags. There needs to be an easy way to check existing popular categories to prevent proliferation of multiple spellings.

I am always a fan of controlled vocabularies. Doesn't fit the idea of @jamescridland ,but the itunes categories would be fixed (at least).

This feels more like topics than categories. Maybe we abandon categories and go with topics?
My first thought was also the mis-spellings and variants issue. I wonder if we could provide a “master list” of current topics that is searchable by podcast creators from host UI’s to make their choices less likely to be “wrong” in that way.
I’m sure that various aggregators and directories would be willing to contribute to such a list in an automated fashion. I know we would, and I’m sure you would too @jamescridland .  We could cook up some code to coalesce the various input lists coming from the different contributors.
Just brainstorming here.

I think having a "master list" would be good, and maybe it's something that should be maintained in a repo devs could pull for easily updating to new additions.
The app could read these tags—or whatever we call them—and properly organize into any pre-supported categories, or they could optionally support one of their own choosing.
So, for example, our master list could contain the full representation of the consensus of necessary tags, while app developers could use unofficial categories to raise awareness. (After all, categories in Apple Podcasts are not about raising awareness, but about organizing content.) So the app developer could, if they want, make an easy "US Election 2024" category to automatically highlight such podcasts, but the organizational category would fall back to "politics" or "government."
We would need a repo not only for developers, but also for podcasters. It'd be great if Podcast Index could syndicate that, like "Here are popular unofficial tags." This could naturally help reduce the alternate spellings or formats. And developers could easily get a glimpse of what they might want to support of their own initiative, and Podcast Index could also see the actual demand—by usage—for categories to be added to the master list.

Would this accept characters like emoji?  Standard UTF-8?
Is this a valid topic?
🚁🏞📱🤛🏼🦁🤚🏾👨🏻🤝👨🏿🌌🈚🤼🏾♀🌹🇲🇭⚒🦊🏴🇸🇾🦞🧚♂👷🏼♀👳🏼♀🇮🇸🖊🤟🏿👨🏽🍳👩🏾❤💋👨🏾🕵♂🧑🏿🦳🏃🏿♀🆕🇬🇧❌🧑🔬😡🐂👨🏿🎓🧑🏻⚕🐩🤹🏽☚🏿👨🏾🤝👨🏽🙋🏼♂🀊👳🏾♂🧠🤟🏻🎏👨🏾❤💋👩🟫👨⚕🦗👨🏽🦰🇲🇶🤾🏾🥍🤦🏾♂🕵🏼♀🧗♀🇳🇦🧑🌾🇧🇭🤹♀🥚🧑🏾⚕🥿🥑🇺🇾👩👨👧👐📪⛹🏽🤵🏻♀🏦🎍☔💈👊🏼🌁🧑🏻✈🇮🇩🗝🔥🤵🏾♀🔉🧑🏾🦽🕵🧏🏾🗳🧝🏾♀☜🏾👨🏻🔧👩🏿💼🧑🤝🧑🧑🏽🚒🇳🇮🏭💁🏿🧓🏿🇹🇻🕶💇♀🙏👧🏻🐮💏🏿🏋🏼♂⏭👷🏿♂🧙👩👩👧👶👱🏾♀👨🏽❤👨🏿🀕👩🏻❤👨🏿🧍🏻🇱🇸😑👨🏼⚕🎊📛👩🏾🏫💿🦋🚶🏾♀🧍🏼👯👋🏾👠🥑🆕🧗♀

Just adding my two cents here, but we also have the standard rss category tag for free form topics : https://validator.w3.org/feed/docs/rss2.html#ltcategorygtSubelementOfLtitemgt

we also have the standard rss category tag

Great point. Why not use this?

controlled vocabularies

I'm a fan of those too. In this case, vocabularies like this appear to self-control themselves quite well. If you get the UX right, a podcaster would choose the categories that are most popular. It's certainly how I set categories for my Medium posts. ("Podcasts or Podcasting? One has 22,000 followers, one only 5,000. I'll choose the more popular.")
No reason why someone couldn't provide a list of synonyms or misspellings to assist this, but that's something that would need to be humanly curated.

PS: @agates I guess anything accepts emojis. Remember: the point of this is to make sure you appear in categories which people are using to discover new shows. Emojis are unlikely to be the right choice.

@jamescridland I understand that, but developers should be prepared to handle cases like that for UX.

I would also like to see this where search results can result in long tail hits, such as 'Science' 'History' 'Octopus' would result in the one podcast about the History of Octopus Science. This might also be good for something on the item level, so an episode about the History of Octopus Science would show up in a search.

I’ve been thinking on this since dinner. Here’s what I’ve come up with. Sorry if I'm rambling, it's been a day :)
From a computer science perspective, free-form categories are more satisfying because they doesn’t tie the namespace to any current trends or culture. With no boundaries, new categories can wax and wane with public interest and use. In theory, anyway.
In practice, categories of unlimited form and detail are a big mess. At the logical extreme, the categories of a podcast might be so niche that the tag effectively just another podcast:guid. Anyway, if you want to use a free-form list, you don’t need a new tag to do it. The vanilla  element already provides that... Sort of.  In my quick survey, the  element was uncommon in podcast feeds, and when it does appear, it’s usually a mirror of the ubiquitous itunes:category element. Yes, the free-form list tag, as far as I can tell, is only used to echo the Apple-curated menu of categories.
So why is this the itunes:category element the de-facto standard in podcast tagging instead of ? I don’t think this is because  was forgotten, or some slick move by Apple tricked people into not using it. It’s because there’s a natural appeal to limited choice. It’s like how people prefer to order from a menu. In other words, we know that the nature of itunes:category is to pigeonhole podcasts. It’s successful because on some level, a fixed vocabulary is just necessary to make sense of things.
That said, the itunes categories aren’t actually static. They’ve had to edit the menu to keep up with the times (most recently in 2019) and it’s doubtless that given enough time, Apple will have to edit them again. See: https://podnews.net/update/podcast-categories-changed for a refresher. We should not be relying on a single authority to tell us what is important, or what phrasing is cannon, or what terms we describe ourselves by.
Sill, I think we can learn something from Apple’s category design: Categories aren’t flat lists, they are hierarchies. Each is rooted by an enduring category (fiction, health, kids) and branches to more timely ones (drama, nutrition, stories for kids). Each higher branch is just finer specificity. If the podcaster wanted, they could extend the “health -> nutrition” chain to “health -> nutrition -> keto diet”. This makes each category into a prioritized list, not unlike how font-families work.
As a reminder font families define a hierarchy of fall-backs to common fonts when the specialized one isn’t available. For example { font-family: Helvetica, Arial, sans-serif} will render text in Arial if the browser doesn’t know what Helvetica is. I think this is a good mechanic to copy, because even podcasts with hyper-specific categories would be guaranteed to fall-back to something “normal” eventually.
With this in mind, here are my proposed modifications:

The name should be podcast:category, to keep convention with  and itunes:category
Multiple podcast:category elements may exist per . The ordering is emphatic, with the most significant element first.
Each element has a text attribute which lists the category hierarchy, root first, comma separated. It’s understood that the true category is the rightmost and the rest are fallbacks in case the host/app/whatever doesn’t understand (or care).
All root level categories will be defined in the specification. Some 2nd level categories will be defined (the ones in common use today). Podcast hosts may append new 2nd (or higher) categories as desired, but they must all be traceable to a root category.

Examples:
<podcast:category text=health, nutrition, keto diet />
<podcast:category text=leisure, table top games, old school renaissance />
<podcast:category text=music, metal, thrash metal/>

In this case, a parser which doesn’t understand  “old school renaissance” would at least know we’re talking about table top games, or -worst case- the general category of leisure, and could try its best to put us in the right place. Comparability with all itunes:category is there, so long as their base categories are a sub-set of ours. But it also gives free and open podcasting room to grow as it chooses.
So basically tl;dr what @jamescridland said, except different.

That’s an interesting idea @ablekirby.  I like the concept of splitting the concern in two and having a fixed list for sanity and then a free form for user control.  That’s essentially what iTunes:category + iTunes:keywords is supposed to be. But this would be in a single tag.
I also keep coming back to the notion that limited choice is attractive to people. The “menu” as you call it. But I’m also sympathetic to the idea of not formalizing it out of use.
🧐…

@ablekirby Good write up, and makes a lot of sense. I like the idea of the first category needing to be one of the predefined major categories, but the subsequent categories can be user defined for fine tuning. This allows for backwards compatibility, which is important.
Rather than the rightmost category being the true category, I'd prefer all three categories to be the true category.
<podcast:category text=leisure, table top games, old school renaissance />
<podcast:category text=leisure, cosplay, old school renaissance />
If I'm understanding you correctly, in your implementation, both of these categories would bring up 'old school renaissance' podcasts, but what I'm actually interested in is the table top games and not the cosplay. If there's 100 'old school renaissance' podcasts, and 100 'table top games' podcasts, but only one of those is both 'old school renaissance' & 'table top games' it may never come up in a category search. Something that takes all the categories into account would make sure finetuning of category searches would be possible.

This is a nice idea.
The reality is that iTunes categories will remain in RSS feeds for many years to come. I don't believe that we need to look at this in isolation, then - we have the formalised categories (thank you Tim Apple), and we can have fluid, unformalised categories with this specification.
Alternatively, we use keywords to achieve what I think I'm trying to do; and retain the Apple categories in the feed as well.
I'm unconvinced of the need to build an alternative formalised master list of categories. The Apple one isn't perfect, but there's a degree of wheel-reinvention that I'd be eager to avoid.

I'm unconvinced of the need to build an alternative formalised master list of categories. The Apple one isn't perfect, but there's a degree of wheel-reinvention that I'd be eager to avoid.

We could just take Apple's list and create a 'fork'. Then you'd have a good starting point (not the work) while having flexibility if (in future) there's any request for change that Apple might reject/not consider. The question with any curated list, though, is how decisions are being made (a simple vote in a repo)?

I'm against a total free style of categories (even if it's additional to the iTunes categories). Besides that you get 🐈egories people will use similar words, synonyms or different spellings/singular/plural to describe their podcast. It will be to open and the structure will be bad or even worth then now. Controlled vocabulary is the way to go. It brings order into chaos.
Think about the user experience and discoverability. It's SEO in the wrong place. They can do that in the description. Hashtags for podcasts (see YouTube).

As a host with peertube video feeds, I'm not going to modify the category system to fit into any officially proposed "list" and I imagine many other non-podcast hosts are in the same situation.

If we're going to indicate hierarchy within a single tag, I think we should use colons, not commas. For example, <podcast:category text="health:nutrition:keto diet" />Commas usually denote a list, not a hierarchy.

people will use similar words, synonyms or different spellings/singular/plural to describe their podcast. It will be to open and the structure will be bad or even worse than now. Controlled vocabulary is the way to go. It brings order into chaos. Think about the user experience and discoverability.

Exactly, the world will end up with 30 categories/topics/hashtags describing the same thing. Or categories that are actually just a brand name for some company trying to sneak in some exposure. Here's a decent list:
https://en.wikipedia.org/wiki/Wikipedia:Contents/Categories
I like standards, it makes our stuff more interoperable.

What I think you need here is an ontology gives you a bit more than just a controlled vocabulary, see this for music for example: http://musicontology.com/specification/


Support for multiple covarying GPs

A number of tasks like co-kriging, derivative observations, and Bayesian quadrature involve two (or more) GPs with different kernels. Often, there's some covariance structure between observations from different GPs in these settings (e.g. integrals and derivatives depend naturally on the function).
The two GPs can be collected in a single Gaussian field with a block covariance matrix structure so that if we have observations x_1 ~ GP(0, K_11) and x_2 ~ GP(0, K_22)
k( (x_1, x_2), (x_1, x_2) )  = [[K_11, K_12],
                                [K_21, K_22]]

which doesn't seem to be too far from something you could model in GPflow. I was thinking that maybe an approach like what's used in the coregional kernel could be repurposed? The framework could maybe also work by defining separate GPs and then have a function that takes the two GPs along with a covariance between them.
Am I wrong in stipulating that this would be a pretty core thing to support? Derivative observations in particular should be plenty of reason since it integrates rather simply with all existing approaches.

Hi @Bonnevie ,
Sure, multiple-output GPs fit into the GPflow framework in the way that the Coregion kernel works, exactly as you noted. The idea is that instead of specifying the blocks separately, you simply specify a kernel which takes an extra input column to specify where the blocks are.
Thus, you can identify any multiple-output GP with a single-output GP, with an  extra indicator on the input.
The neat thing about this approach is that one only has to implement a new kernel, and then it can plug in to any of the model classes in GPflow to do sparse GPs or VB or MCMC etc.
I'm not sure that the working model you propose is the way to go, since it's not clear how to ensure that the resulting covariance matrix is positive-definite. Specifying an arbitrary off-diagonal block might lead to non-positive-definiteness.
As for whether it's a core thing, I'm not sure. I think derivative GPs might be a core thing, so long as the implementation was pretty general.
Perhaps the first thing to have a go at is a derivative kernel. Take the RBF as an example, and introduce extra columns that specify the derivative(s). That's something that I think many people would be interested in any could form a part of GPflow.

Won't you need to exploit the block structure for it to scale well? Of course, using the indicator approach, you could possibly just run a sort prior to computation, but I don't know whether that's a waste of computational effort.
You're right that specifying an arbitrary off-diagonal block is a recipe for disaster. I was thinking of just passing a proper kernel function, but that's not good enough either, I think (imagine an off-diagonal block with extremely high variance coefficient).
Mathematically, the key is that the multiple GPs are often linear transformations of each other which naturally induces a valid covariance, but I'm not sure how that can be exploited.
As a high-level argument for why I think it's a core thing: while I agree that GPflow shouldn't be bloated with functionality, it should (ideally, IMHO) support any natural extensions by third parties so that they can easily implement more complicated models in GPflow inside their own packages and scripts. But of course, this depends on whether you think of GPflow as GPy-in-Tensorflow or Tensorflow-for-GPs.
I'd love to take a look at a derivative kernel, but I think it would be a bit of an academic detour for me at the moment unfortunately. I'm more likely to need something like co-kriging at the moment (i.e. GPs related by standard affine maps). But I'll come back to the issue when I find the time, unless somebody else picks it up.

Hi Rasmus,
Re block structure: you'll get a speed up if the matrix can be written as a
Kronecker product. That is something I want to see in GPflow, most
certainly. @c0g is also interested in Kronecker structures. You can read a
paper about kronecker structured GPs here:
http://machinelearning.wustl.edu/mlpapers/paper_files/NIPS2011_0443.pdf
There is some code in vff (github.com/jameshensman/vff) that could be
useful.
To do co-krigging, you can actually do a lot with the existing kernels. I
suggest reading this excellent review: https://arxiv.org/abs/1106.6251. The
models discussed can be made using the coregion kernel and taking the
product with another kernel (using the active_dims feature).
To save computation in cokrigging (where the observations are aligned: i.e.
you see every 'output' value at every input value) you can use the
Kronecker stuff, where one of the kernels is the coregion kernel.
On Thu, 12 Jan 2017 at 14:14 Rasmus Bonnevie<EMAIL_ADDRESS>wrote:

Won't you need to exploit the block structure for it to scale well? Of
course, using the indicator approach, you could possibly just run a sort
prior to computation, but I don't know whether that's a waste of
computational effort.
You're right that specifying an arbitrary off-diagonal block is a recipe
for disaster. I was thinking of just passing a proper kernel function, but
that's not good enough either, I think (imagine an off-diagonal block with
extremely high variance coefficient).
Mathematically, the key is that the multiple GPs are often linear
transformations of each other which naturally induces a valid covariance,
but I'm not sure how that can be exploited.
As a high-level argument for why I think it's a core thing: while I agree
that GPflow shouldn't be bloated with functionality, it should (ideally,
IMHO) support any natural extensions by third parties so that they can
easily implement more complicated models in GPflow inside their own
packages and scripts. But of course, this depends on whether you think of
GPflow as GPy-in-Tensorflow or Tensorflow-for-GPs.
I'd love to take a look at a derivative kernel, but I think it would be a
bit of an academic detour for me at the moment unfortunately. I'm more
likely to need something like co-kriging at the moment (i.e. GPs related by
standard affine maps). But I'll come back to the issue when I find the
time, unless somebody else picks it up.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/GPflow/GPflow/issues/312#issuecomment-272173260, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAJbD8EXJMkIn1Fx_Mw1Q5RDyLvNXc-6ks5rRjVfgaJpZM4LhoX5
.

This is related to the discussion in #79 which perhaps should be closed now.
I am quite interested in taking advantage of the kronecker structure and scaling the methods to many outputs (thousands).
Happy to help on this.

Alexis, I am also interested in this.  Do you know if there is any work
started along this path?  I know in Eigen 3.3, there is (unsupported)
sparse Kronecker products.  Is this the functionality that you would want?
Or would you think homegrown lapack/blas backend is the way to go?
On Thu, Jan 12, 2017 at 10:06 AM, Alexis Boukouvalas <
<EMAIL_ADDRESS>wrote:

This is related to the discussion in #79
https://github.com/GPflow/GPflow/issues/79 which perhaps should be
closed now.
I am quite interested in taking advantage of the kronecker structure and
scaling the methods to many outputs (thousands).
Happy to help on this.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/GPflow/GPflow/issues/312#issuecomment-272221517, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACQPhQFS4DzXlQjzsVHDXD8EWsv0vQ1lks5rRl2ngaJpZM4LhoX5
.

@mathDR : the first rule of Kronecker products is that one never computes the Kronecker product. The second rule of Kronecker products is, one finds a way to avoid computing the Kronecker product :)
The most important thing to note is that this:
np.dot(np.kron(A, B), x)

is the same as this:
X = np.reshape(x, [B.shape[0] , A.shape[0]], order='F')
np.reshape(np.dot(np.dot(B, X), A.T), [-1, 1], order='F')

but the latter is much cheaper. You can usually do the latter product quickly even when the result of kron(A, B) doesn't fit in memory.
Check out my vff code, which does Kronecker operations efficiently in pure tensorflow, including operations like matrix_triangular_solve.

Nice.  I will absolutely take a look.  As an aside, do you know if anyone has implemented a spectral mixture kernel yet?  If not, I could also take a stab at that.

@mathDR: I for one would be grateful to see spectral mixture kernels in GPflow! Did you see the generalized spectral kernel paper? (https://paperpile.com/shared/Io1WIL)
@jameshensman: thanks for pointing me towards the vector-valued GP paper. I think I skimmed it a while back, but I'll look into it a bit more deeply now. Now that you have mentioned it a couple of times, does the VFF package add a lot of functionality to GPflow aside from the variational fourier features?

Recipe for a spectral kernel:
rbf = GPflow.kernels.RBF
cos = GPflow.kernels.Cosine

k = rbf(1) * cos(1) + rbf(1) * cos(1) + rbf(1) * cos(1)

simple, right?
VFF doesn't add much other that what I've stated. VFF has to use Kronecker structures, so I worte quite a bit of code to help them along (working from a template by Chris Lloyd). VFF is limited in many ways: you can't use an arbitrary kernel, for example. But for the cases where it does work, it is extremely computationally efficient.

I would like to see Kronecker functionality in GPflow too.

@jameshensman I agree that SM kernels via add/products of rbf and cosine are easily accomplished.  I think the "work" will be in the initialization of the hyperparameters for these.  A lot of the work shows how sensitive good results are on the initialization of these kernels.  That said, perhaps a new thread discussing hyper-priors on hyperparameters?

@jameshensman: that construction of the spectral mixture kernel really is beautifully simple and a demonstration of why object-oriented code is great. I had clearly over-dramatized how complicated the kernel is in my head :)
I think the generalized version (at least the non-stationary one) requires a bit more work, but not a lot.
@mathDR: out of curiosity, what papers show initialization sensitivity? Not that I'm surprised. What worries me is that the choice of kernel is how you encode prior knowledge, so an arbitrarily complex kernel like the SM kernel can model a lot more, yes, but it is also increasingly prone to overfitting.

@Bonnevie Most papers,starting with Wilson's thesis speak to it.  When Wilson, et.al implemented their kernel in GPML, there was an initialization script to go along with it (that now has an advanced version that uses the Fourier series of the observations)  That, and this comment by Neil Lawrence (when implemented in GPy)

@mathDR: uff, that init script is just a recipe for overfitting isn't it? the degenerate kernel yy^T (empirical covariance) is the optimum choice of covariance, so I cannot imagine that fitting the spectral density instead much improves the issue.

I tried the SM kernel with Andrew when he was a student here in Cambridge. Certainly it can overfit like any other flexible parametric model without regularization. The optimization surface can also be very challenging. On the other hand for large audio time series where the ML estimate was fine we found that it worked extremely well.

@alexggmatthews: yes, it's definitely a pretty powerful kernel. Did you manage to extrapolate well with it? Even though the original paper was on extrapolation, it seems like the only way the model can extrapolate out into the future is by having inordinately long lengthscales - even in the original paper you see a regression towards the prior. (sorry to derail the discussion a bit)

Certainly the Mauna Loa example in the original paper relied on a very long lengthscale to model the linear component of the trend.
As far as I can remember the successful audio experiments we did were interpolation of a gap in the data done over a non trivial range of time.
I'm not sure I'd make a general comment about extrapolation though - it depends on the details.

I'm kinda thrilled that the following worked. This Gist gives a method for doing recursive co-kriging (where your observations can be from different levels and each new level is the sum of the GP of the previous level plus a new perturbation GP) where you can observe points at individual levels.
The basic method is to take in the data and then reorder it so that the matrix has a block structure, then use the block structure to build the kernel matrix, and then reorder to get back to the original ordering.
With all that shuffling, I don't think this will scale super-well, but the bottleneck is most likely the reordering steps, so it would be a lot better if we could assume a priori that the data was ordered or even split.
It must be possible to use the same order-build-reorder approach to construct other inter-domain GPs.

Thanks.

This should be addressed soon.


Access Policy: Fixed misleading error response when same policy set twice

Fixes: https://github.com/minio/minio-go/issues/429

When same policy is set twice on same prefix, return directly with nil error
response(without sending a request to server).

Can you vendorize this for mc @mkash32 as well ?. Thanks

Sure, I found another small issue as well, will post the issue and send a pr for that as well and vendorize for both changes. Will get it done by tonight.


Fixed #6336 -- request.current_page should always respect draft/live state

Backport https://github.com/divio/django-cms/pull/6350

Coverage remained the same at 77.757% when pulling 5e520fa5a02ac601e53ebda9a74f43a81b34bb1b on czpython:bp/3.5.x/6350 into 9e60ff11dfa32fb3324ad057c9cf1f50c1df2d1f on divio:release/3.5.x.


JSON output file is empty when using both --export-json and --cli-only

Using both --export-json and --cli-only switches creates an empty .json file. Using the commands individually works as expected.

Hi @franciso, thanks for reporting! It should be fixed now. Enjoy! - Jasper


Use the latest version of the mempool from tendermint

We need to use a very similar behaving, if not identical, mempool as tendermint does because we want to be as close to a drop in replacement as possible. This means we should update our version of the mempool to look and act like the most recent version.

This was resolved by #91.


fix: allow backslashes in app config (file format)

Escape backslashes in app config strings.
Fixes #2202

Do we need to do this for layouts? We put them in a subdirectory too, I just haven't see anyone have issues

Do we need to do this for layouts? We put them in a subdirectory too, I just haven't see anyone have issues

This change escapes backslashes all string arguments, so it will apply to layouts too (if the layout has a backslash).


[Pool] Return full pool

Hi,
For debugging purposes we want to have access to the Pool.pool field. It's too useful to know how many pools are in the channel and how many are in use.
Is a unexportable field, so it's impossible to access to the pool without this method.
Regards.

Hey there! I'm not super comfortable just outright returning the channel itself like you're doing in your PR, that exposes an implementation detail that really ought not to be exposed. It'd safer to just make it an Avail method or something along those lines that simple returns how elements are currently buffered in the channel.
Thanks for the PR though!

Hey @mediocregopher
I've just updated the PR. The Avail method will be too helpful for us.
Thanks

Merged, thanks!

Many thanks!


undefined reference to `AMQP::TcpConnection::~TcpConnection()'

Facing the error again
/rabbitq/AMQP-CPP/include/mytcpqu.cpp:179: undefined reference to AMQP::TcpConnection::TcpConnection(AMQP::TcpHandler*, AMQP::Address const&)' /usr/bin/ld: /rabbitq/AMQP-CPP/include/mytcpqu.cpp:198: undefined reference to AMQP::TcpConnection::~TcpConnection()'
collect2: error: ld returned 1 exit status

Are you using GCC or something else? And what's your linux command？

g++ -g -Wall -ldl -lpthread -lamqpcpp include/mytcpqu.cpp -o myampp

Undefined reference happens when the g++ can't find a lib. -lamqpcpp will find libamqpcpp.so you can search it on your computer and then tell the g++ your location of libamqpcpp.so.

I tried that but still same error which happened on 4.0.1 #267  problem with connection

Can you provide the smallest possible test program that demonstrates this issue + the compile-command that you use?

I got the same problem, by running the example code provided in the readme I get the same error:
/usr/bin/ld: /tmp/cc3Caghi.o: in function `main':
 undefined reference to `AMQP::TcpConnection::TcpConnection(AMQP::TcpHandler*, AMQP::Address const&)'
/usr/bin/ld:  undefined reference to `AMQP::TcpConnection::~TcpConnection()'
collect2: error: ld returned 1 exit status

To compile the file I used:
 g++ -g -Wall  -lamqpcpp -lpthread -ldl main.cpp -o main
I also tried to explicitly set the library path and the path to the files to be included by using -Lusr/local/lib  and  -Iusr/local/include but it didn't work

No

Typical, can you run nm /usr/lib/libamqpcpp.so|grep TcpConnection -- and copy/paste the output to www.demangler.com? It is supposed to list TcpConnection::~TcpConnection.

Typical, can you run nm /usr/lib/libamqpcpp.so|grep TcpConnection -- and copy/paste the output to www.demangler.com? It is supposed to list TcpConnection::~TcpConnection.

Yes, it shows TcpConnection::~TcpConnection, this is the complete output
00000000001019f4 W AMQP::TcpConnection::onReceived(AMQP::TcpState*, AMQP::Buffer const&)
000000000010191c W AMQP::TcpConnection::onSecuring(AMQP::TcpState*, ssl_st*)
00000000001018c8 W AMQP::TcpConnection::onConnected(AMQP::TcpState*)
0000000000101834 W AMQP::TcpConnection::onHeartbeat(AMQP::Connection*)
0000000000100d2c T AMQP::TcpConnection::onNegotiate(AMQP::Connection*, unsigned short)
0000000000100cd4 T AMQP::TcpConnection::onProperties(AMQP::Connection*, AMQP::Table const&, AMQP::Table&)
0000000000100b14 T AMQP::TcpConnection::close(bool)
0000000000100dc4 T AMQP::TcpConnection::onData(AMQP::Connection*, char const*, unsigned long)
0000000000101a30 W AMQP::TcpConnection::onIdle(AMQP::TcpState*, int, int)
00000000001010d8 T AMQP::TcpConnection::onLost(AMQP::TcpState*)
0000000000100e0e T AMQP::TcpConnection::onError(AMQP::Connection*, char const*)
0000000000100f68 T AMQP::TcpConnection::onError(AMQP::TcpState*, char const*, bool)
000000000010187e W AMQP::TcpConnection::onReady(AMQP::Connection*)
00000000001009f8 T AMQP::TcpConnection::process(int, int)
0000000000101a8e W AMQP::TcpConnection::expected()
0000000000100f0c T AMQP::TcpConnection::onClosed(AMQP::Connection*)
0000000000101988 W AMQP::TcpConnection::onSecured(AMQP::TcpState*, ssl_st const*)
000000000010050c T AMQP::TcpConnection::TcpConnection(AMQP::TcpHandler*, AMQP::Address const&)
000000000010050c T AMQP::TcpConnection::TcpConnection(AMQP::TcpHandler*, AMQP::Address const&)

000000000010091e T AMQP::TcpConnection::~TcpConnection()
0000000000100802 T AMQP::TcpConnection::~TcpConnection()
0000000000100802 T AMQP::TcpConnection::~TcpConnection()

00000000001009c6 T AMQP::TcpConnection::closed() const
0000000000100962 T AMQP::TcpConnection::fileno() const
0000000000100994 T AMQP::TcpConnection::queued() const
0000000000101a25 W non-virtual thunk to AMQP::TcpConnection::onReceived(AMQP::TcpState*, AMQP::Buffer const&)
000000000010197e W non-virtual thunk to AMQP::TcpConnection::onSecuring(AMQP::TcpState*, ssl_st*)
0000000000101912 W non-virtual thunk to AMQP::TcpConnection::onConnected(AMQP::TcpState*)
0000000000101a84 W non-virtual thunk to AMQP::TcpConnection::onIdle(AMQP::TcpState*, int, int)
00000000001011d9 T non-virtual thunk to AMQP::TcpConnection::onLost(AMQP::TcpState*)
00000000001010ca T non-virtual thunk to AMQP::TcpConnection::onError(AMQP::TcpState*, char const*, bool)
0000000000101ab2 W non-virtual thunk to AMQP::TcpConnection::expected()
00000000001019ea W non-virtual thunk to AMQP::TcpConnection::onSecured(AMQP::TcpState*, ssl_st const*)
000000000010094d T non-virtual thunk to AMQP::TcpConnection::~TcpConnection()
0000000000100911 T non-virtual thunk to AMQP::TcpConnection::~TcpConnection()
0000000000100957 T non-virtual thunk to AMQP::TcpConnection::~TcpConnection()
0000000000100904 T non-virtual thunk to AMQP::TcpConnection::~TcpConnection()
0000000000140610 V typeinfo for AMQP::TcpConnection
0000000000110420 V typeinfo name for AMQP::TcpConnection
000000000013fed0 V vtable for AMQP::TcpConnection

LIttle update, the error does not appear if I compile using:
g++ -g -Wall  main.cpp -o main -lamqpcpp -lpthread -ldl
i.e. putting at the end the libraries to link.
It seems that the order of the linked libraries does not matter, what's important is that main.cpp -o main must be before the libraries..
The code seems to work, I'll update this post if everything  work as intended or if there are other issues.


UaClient error to read a matrix

Hello Nauful,
I am having some problems when I try to read a matrix (array with two dimensions).
With an array with 1 dimension, it works perfectly
I am using your api to connect to KepServer.
I create there a matrix 3x3

Using Kepware Click Client, it can read correctly: [0;0;0][0;0;0][0;0;0]

When I try to read with you api, it returns an ushort[9], but with a invalid 2

But if I change the values of the matrix, it returns null

Am I doing something wrong?
Thank you,
Vítor Guedes

Hello Vitor!
Could you please rerun that test while capturing with Wireshark and security mode set to None? I wonder what data is coming back. I may be deserializing incorrectly, 2D matrix has been a rare case for testing. I can look at the Wireshark capture to see what was read.
Thanks,
Nauful

I downloaded the latest version, but it still has the same errors

Hello Vitor,
Do you have this commit?
https://github.com/nauful/LibUA/commit/cef29f87ec0c2b2b44c8077b065390de97721897
I am able to reproduce the issue before but not after this change. Let me know if that still fails with the latest commit.
Thanks,
Nauful

I am sorry, I think I haven't.
Now I have it, and it worked

Thank you,
Vítor Guedes

Hello Vitor,
Glad it worked! Feel free to let me know if you come across anything else.
Happy holidays,
Nauful


Added tofts model

Added source code for tofts modelling and example usage.

Hi Sirisha - we should not be pushing changes directly to the main branch. Please make a new pull request to merge your changes with the dev branch instead.


docker build is not working

invalid argument "************************************************/br-test:latest" for t: invalid reference format
See 'docker build --help'.
Exited with code exit status 125

@Rahul1804 Are you having issues with running the build in your fork? Could you share your config?

https://github.com/Rahul1804/bloomreach-prodops-assignment/blob/master/.circleci/config.yml

version: 2.1
orbs:
aws-eks<EMAIL_ADDRESS>aws-ecr<EMAIL_ADDRESS>kubernetes<EMAIL_ADDRESS>jobs:
deploy-application:
executor: aws-eks/python3
parameters:
cluster-name:
description: |
Name of the EKS cluster
type: string
docker-image-name:
description: |
Name of the docker image to be deployed
type: string
version-info:
description: |
App version information
type: string
aws-region:
description: |
AWS region
type: string
default: ""
steps:
- checkout
- run:
name: Create deployment manifest
command: |
# Replace the placeholders in the manifest with the intended values.
# This is to avoid hardcoding the image name in the manifest, to make this
# demo project more portable.
BUILD_DATE=$(date '+%Y%m%d%H%M%S')
cat deployment/demo-app-deployment.yaml.template |
sed "s|DOCKER_IMAGE_NAME|<< parameters.docker-image-name >>|
g;s|BUILD_DATE_VALUE|$BUILD_DATE|g;s|VERSION_INFO_VALUE|
<< parameters.version-info >>|g" > deployment/demo-app-deployment.yaml
- aws-eks/update-kubeconfig-with-authenticator:
cluster-name: << parameters.cluster-name >>
install-kubectl: true
aws-region: << parameters.aws-region >>
- kubernetes/create-or-update-resource:
resource-file-path: "deployment/demo-app-deployment.yaml"
get-rollout-status: true
resource-name: deployment/demoapp
- kubernetes/create-or-update-resource:
resource-file-path: "deployment/demo-app-service.yaml"
test-application:
executor: aws-eks/python3
parameters:
cluster-name:
description: |
Name of the EKS cluster
type: string
aws-region:
description: |
AWS region
type: string
default: ""
expected-version-info:
description: |
Expected app version (this is used for testing that the
correct version has been deployed)
type: string
steps:
- aws-eks/update-kubeconfig-with-authenticator:
cluster-name: << parameters.cluster-name >>
install-kubectl: true
aws-region: << parameters.aws-region >>
- run:
name: Wait for service to be ready
command: |
kubectl get pods
kubectl get services
sleep 30
for attempt in {1..20}; do
EXTERNAL_IP=$(kubectl get service demoapp | awk '{print $4}' | tail -n1)
echo "Checking external IP: ${EXTERNAL_IP}"
if [ -n "${EXTERNAL_IP}" ] && [ -z $(echo "${EXTERNAL_IP}" | grep "pending") ]; then
break
fi
echo "Waiting for external IP to be ready: ${EXTERNAL_IP}"
sleep 10
done
sleep 180
curl -s --retry 10 "http://$EXTERNAL_IP" | grep "<< parameters.expected-version-info >>"
undeploy-application:
executor: aws-eks/python3
parameters:
cluster-name:
description: |
Name of the EKS cluster
type: string
aws-region:
description: |
AWS region
type: string
default: ""
steps:
- aws-eks/update-kubeconfig-with-authenticator:
cluster-name: << parameters.cluster-name >>
install-kubectl: true
aws-region: << parameters.aws-region >>
- kubernetes/delete-resource:
resource-types: "deployment,service"
label-selector: "app=demo"
wait: true
- run:
name: Check on pod status
command: |
kubectl get pods
workflows:
deployment:
jobs:
- aws-ecr/build_and_push_image:
name: build-and-push-image
account-url: AWS_ECR_URL
region: AWS_DEFAULT_REGION
repo: br-test
dockerfile: ~/project/bloomreach-prodops-assignment/app/Dockerfile
path: ~/project/bloomreach-prodops-assignment/app
tag: ${CIRCLE_SHA1}
#tag: latest
# Uncomment if the repository does not yet exist
# create-repo: true
- aws-eks/create-cluster:
cluster-name: eks-orb-demo-app-deployment
aws-region: $AWS_DEFAULT_REGION
requires:
- build-and-push-image
- deploy-application:
cluster-name: eks-orb-demo-app-deployment
aws-region: $AWS_DEFAULT_REGION
docker-image-name: "${AWS_ECR_URL}/eks_orb_demo_app:${CIRCLE_SHA1}"
version-info: "${CIRCLE_SHA1}"
requires:
- aws-eks/create-cluster
- test-application:
name: test-application
cluster-name: eks-orb-demo-app-deployment
aws-region: $AWS_DEFAULT_REGION
expected-version-info: "${CIRCLE_SHA1}"
requires:
- deploy-application
- undeploy-application:
cluster-name: eks-orb-demo-app-deployment
aws-region: $AWS_DEFAULT_REGION
requires:
- test-application
- aws-eks/delete-cluster:
cluster-name: eks-orb-demo-app-deployment
aws-region: $AWS_DEFAULT_REGION
wait: true
requires:
- undeploy-application

@Rahul1804 Could you share a link to the failed job?

https://circleci.com/gh/Rahul1804/bloomreach-prodops-assignment/30

I'm trying to apply ci/cd with similar kind of project written in python+flask

@Rahul1804 Could you try SSH-ing into a rerun of the job and then running echo $AWS_ECR_URL/br-test:${CIRCLE_SHA1} to check what the output is?

thank you for helping, there was extra "/" in the environment variable for ECR registry url

@Rahul1804 Glad I could help :slightly_smiling_face:


utf8: Specify [[fallthrough]] attribute

When compiling with this version I got a number of warnings (aka errors) in the unit tests where the self assignment is checked:
tests/test-array.cc:156:5: error: explicitly assigning value of variable of type 'Json::Array' to itself
      [-Werror,-Wself-assign-overloaded]
        a5 = a5;
        ~~ ^ ~~
tests/test-object.cc:189:5: error: explicitly assigning value of variable of type 'Json::Object' to itself
      [-Werror,-Wself-assign-overloaded]
        o5 = o5;
        ~~ ^ ~~
tests/test-json.cc:108:5: error: explicitly assigning value of variable of type 'Json::Number' to itself
      [-Werror,-Wself-assign-overloaded]
        n1 = n1;
        ~~ ^ ~~
tests/test-json.cc:220:5: error: explicitly assigning value of variable of type 'Json::String' to itself
      [-Werror,-Wself-assign-overloaded]
        s1 = s1;
        ~~ ^ ~~

This commit attempts to fix this by using the according pragmas.

This gives an error when compiling with g++ 6.3.0 20170516 (Debian 6.3.0-18+deb9u1):
src/utf8.cc: In function ‘int next_state(int, unsigned char)’:
src/utf8.cc:25:37: error: attributes at the beginning of statement are ignored [-Werror=attributes]
case (s * 4) + 0: if (r0) return 0; [[fallthrough]];
^
src/utf8.cc:45:33: note: in expansion of macro ‘SEQ1_HELPER’
#define SEQ1(s, r0)             SEQ1_HELPER(s, r0)
^~~~~~~~~~~
src/utf8.cc:76:2: note: in expansion of macro ‘SEQ1’
SEQ1(0, EGNAR(0x00, 0x7F))
^~~~

fixed with:
b358682 utf8: fix implict fallthrough warning
de81b47 utf8: fix implict fallthrough warning


docker tag and push :latest when building a git tag

Signed-off-by: Steve Kriss<EMAIL_ADDRESS>Since we're no longer using the Jenkins docker build/publish plugin, we need to tag and push :latest in our Makefile.
Ref. https://github.com/heptio/sonobuoy/blob/master/Makefile#L84-L92

LGTM


Revert trailing slash change

https://github.com/zeta-chain/docs/pull/306 actually broke the docs, because now when you click on a sidebar item, it collapses the sidebar. This reverts the change.

I think I understand the problem now. The static HTML files of the toolkit docs have relative URLs linking CSS and JS files. They import files like so: ../foo/style.css.
If the HTML file importing the CSS file is hosted under example.org/bar, then the CSS file is imported correctly from example.org/foo/style.css, but if the it's hosted under example.org/bar/, then the it tries importing the CSS file from example.org/bar/foo/style.css, which is wrong. In other words, trailing slashes matter.


Add skew transform to all instances of tags

additionally remove border radius

additionally remove border radius

[x] Border radius removed


add spark thrift server example

With Spark Thrift Server, business users can work with their shiny Business Intelligence (BI) tools, e.g. Tableau or Microsoft Excel, and connect to Apache Spark using the ODBC interface. That brings the in-memory distributed capabilities of Spark SQL’s query engine (with all the Catalyst query optimizations you surely like very much) to environments that were initially "disconnected".
Universe PR: https://github.com/mesosphere/universe/pull/1182

@ryadav88 this should be good to go. Spark shuffle example is here: https://github.com/dcos/examples/pull/175


Enable writing to python stdio streams

Enables creation of handles for printing directly to python sys.stdout and sys.stderr.    This is a (partial) fix for #2247.
Usually calling Rust's println!result's in output appearing in the python interpreter.   However, in some cases this fails (particularly in some, but not all, Jupyter notebooks and on Google Colab) because the Rust std::io::stdout and std::io::stderr streams are not redirected to match Python's sys.stdout and sys.stderr.
This does not directly fix the problem with println!, but instead enables printing via
writeln!(pyo3::stdio::stdout(),...)
I have not written a unit test for this because it's unclear what such a test should do other than not crash.   I don't see an obvious way of checking via a unit test whether text piped to a python stream actually appears.

Thanks for opening this PR! I will do my best to review tomorrow.

Thanks @adamreichold for picking up the review 👍
As well as the above, I think tests are definitely worth adding here. It would be possible to achieve that by temporarily assigning the Python sys.stdout / sys.stderr streams to io.StringIO objects (or similar), use these APIs to write to them, and validate the final contents.

Thanks @adamreichold for picking up the review 👍
As well as the above, I think tests are definitely worth adding here. It would be possible to achieve that by temporarily assigning the Python sys.stdout / sys.stderr streams to io.StringIO objects (or similar), use these APIs to write to them, and validate the final contents.

Good idea.   I had not thought to redirect the python side streams someplace else for inspection.   I will give this a try.


Add serverinfo

Discord Username
Walshy
Suggestion
Add a server info command into the bot.
This will be added in with the administration update
Details it needs:
Server name
ID
Region
Members (total and online)
Channels (text and voice)
Owner
Created
Icon
Roles

Done.


fix(avatar): remove extra disableAnimation prop in getImageProps

Closes #3257
📝 Description
Introduced in a merge conflict
⛳ Current behavior (updates)

Please describe the current behavior that you are modifying

🚀 New behavior

Please describe the behavior or changes this PR adds

💣 Is this a breaking change (Yes/No):

📝 Additional Information

Summary by CodeRabbit

Bug Fixes

Resolved an issue with the @nextui-org/avatar package by removing the redundant disableAnimation property, ensuring smoother avatar rendering.

Sorry but I use Tabs, it still has the error 'React does not recognize the disableAnimation prop on a DOM element'.

And this is my code

@ttp2410 please create a new issue with a reproducible example.


Error on clicking 'Details' button

I just cloned bolierplate and ran the RNapp and metor apps, but after clicking on 'Details' button, I am getting this error below. Hope you will fix it soon.

-Naveen.

I ran into this and I think the thing that fixed it for me was updating the react-native-meteor package. But I went ahead and updated all NPM packages for the RN app and did a meteor update for the Meteor app and made some tweaks to remove a couple of deprecation warnings - I created a fork if you want to try it:
https://github.com/bryanterrell/react-native-meteor-boilerplate

Should be fixed in #39! Let me know if not!