[DEV environment] Asgardeo Websubhub event logs are being missed in random deployment environments

Description:
I have created three Asgardeo trigger type webhooks in Choreo dev environment. When I publish content from Asgardeo side, events are not being received or logs are not getting printed in some Choreo webhooks. Below listed are the two webhooks that show this incorrect behavior (Asgardeo User Operations Webhook [NEW] webhook is working as expected).

Asgardeo Logins Webhook: Event logs are not printed in production deployment.
Asgardeo Registration Webhook: Event logs are not printed in development deployment.

Moreover, insights count of the both deployments are getting incremented in Asgardeo Logins Webhook. However development environment insights count is not increased in Asgardeo Registration Webhook webhook.
1. Asgardeo Logins Webhook: Event logs are not printed in production deployment.
environment: dev
organization: tdorg
trigger type: Asgardeo logins
callback url: https://28525254-1586-4e93-a72c-f2cc19f32c71-dev.e1-us-east-azure.preview-dv.choreoapis.dev/wxcm/asgardeo-logins-webhook/1.0.0
code: https://github.com/ThaminduDilshan/choreo-websub-dev/tree/tdorg-logins/

2. Asgardeo Registration Webhook: Event logs are not printed in development deployment.
environment: dev
organization: tdorg
trigger type: Asgardeo registrations
callback url: https://28525254-1586-4e93-a72c-f2cc19f32c71-dev.e1-us-east-azure.preview-dv.choreoapis.dev/wxcm/asgardeo-registration-webhook/1.0.0
code: https://github.com/ThaminduDilshan/choreo-websub-dev/tree/tdorg-registration/

Steps to reproduce:
Affected Versions:
OS, DB, other environment details and versions:
Related Issues (optional):

Suggested Labels (optional):

Suggested Assignees (optional):

Observed this issue in stage environment as well. Received logs in production, but not in development.
Tenant: tdorg
Component: Asgardeo Registrations Webhook
Callback: https://997c1921-7f8a-4ab7-9ef9-bde2f6d92d1a-dev.e1-us-east-azure.st.choreoapis.dev/xqcf/asgardeo-registrations-webhook/1.0.0

Verified this issue with following steps in the stage environment;

Created a webhook for a topic
Start a dev deployment
Do relevant actions to receive messages
Propagate the deployment to prod state
Do relevant actions to receive messages
Stop the dev deployment
Do relevant actions to receive messages
Restart the dev deployment and see the received notifications

And the issue was not reproducible for ayeshalm tenant.


Annotation error : @http in method Aws\AwsClientInterface::getCommand()

Hey,
I have this error :
The annotation "@http" in method Aws\AwsClientInterface::getCommand() was never imported.
when I try to use S3.
Symfony thinks that "@http" is an annotation, is it possible to do otherwise?
I tried aws-sdk-php-symfony without any more success
Thanks

@GCalmels this looks like it's not related to flysystem. I'd open up an issue with the annotation package vendor or the corresponding symfony bundle.

Ok, thank you!


Display CPU info in CI

This displays the CPU information on the CI runners in the logs. This can be helpful for diagnosing CI issues and to better understand the environment they are running under.

@bors r+

:pushpin: Commit a371b1a6f46db9a10266c433ef3cefd18623cc6d has been approved by weihanglo
It is now in the queue for this repository.

:sunny: Test successful - checks-actions
Approved by: weihanglo
Pushing 4534dd67bf7ceca6088a170f3f68a5bc9a37d437 to master...


KML - Hotspot don't play well with scale by distance

Hi,
There is a problem when using hotspot with KML : it does not play well with scale by distance. At least when the unit is fraction (untested otherwise).
Here a simple gist for sandcastle that show the problem :
https://gist.github.com/theOgrable/6883ac6a4e9be381f3dd0f1d1f97b121
We can see that when zooming out the billboard will start flying above its position target. Not what is expected.
The first option show the problem, the second show a simple solution using pixelOffsetScaleByDistance instead of simply pixelOffset.
I think this solution (pixelOffsetScaleByDistance) should be integrated natively during KML processing.
What do you think ?
Olivier

Thanks for including the code example @theOgrable!  This looks like a bug.  Your solution of using pixelOffsetScaleByDistance looks good to me.  Would you be interested in opening a pull request with the fix?   The change would need to be made in KmlDataSource.

No problem,
Here it is : https://github.com/AnalyticalGraphicsInc/cesium/pull/3837
Please, let me know if it's ok.
I had some problems to build sand castle and I was a little bit confuse about the different build scenarii. I'll write some comments about this on the forum.

Fixed in #3837


chore: peg minimum Node.js version to >=16.0.0

Initial installation went through a few different loops of needing a newer version of Node- looks like 16 is what is the minimum required

Hey, thank you for this!


Creating DDL [DATAJDBC-338]

cemo koc opened DATAJDBC-338 and commented
Support creation of DDL for tables

Affects: 1.1 M2 (Moore)
5 votes, 4 watchers

Duplicate of #756


Mouse cursor doesn't work in some UE 5.1 projects

I used Pixel Streaming with Unreal 4.27 and recently wanted to update my project to 5.1.
I updated my Unreal project and started your original SWS from the UE5.1 branch. I both tested starting the Unreal app as a standalone game and later via the editor (as Standalone Game) with the parameters: -AudioMixer -AllowPixelStreamingCommands -PixelStreamingIP=localhost -PixelStreamingPort=8888.
But I had the problem that the streamed application wasn't able to detect the mouse movement and click inputs. Keyboard inputs worked fine. Same issue with LockedMouse and HoveringMouse mode.
I tried to reproduce this behavior in freshly created Unreal projects (FP- & TP- default templates from Unreal) but the mouse input worked fine there.
But I managed it to recreate the problem with the Lyra Sample Game template. I created two projects with this template. Once for UE 5 and a second one for UE 5.1. I started them with the corresponding SWS from your UE5.0 and UE5.1 branches. The 5.0 stream is working fine. But the 5.1 Lyra stream has the same problem. The running application doesn't receive any data from mouse movement and inputs.
There appears to be a problem according updated unreal projects and templates created before Unreal 5.1.
I couldn't figure out, if there are any settings for this kind of projects that I need to configure. Maybe this is a general bug or you might be able to tell me what I need to do.
The only information I was able to gather during my research according to this problem is this community post answer
I couldn't find any errors in log files.

Hi @JRosenschon , I also have a similar issue, I'm letting my app and signalling server run on an AWS instance. There I can run pixel streaming smoothly with no issue, but when connecting to the server remotely I can't have control over my mouse, after each click it simply jumps on the top left corner of screen.
I noticed that in the registerLockedMouseEvents function the requestPointerLock and some events the "webkit" is missing, so  for example I changed playerElement.requestPointerLock = playerElement.requestPointerLock || playerElement.mozRequestPointerLock; to playerElement.requestPointerLock = playerElement.requestPointerLock || playerElement.mozRequestPointerLock || playerElement.webkitrequestPointerLock; , and actually there are more of this missing "webkit" prefixes.
Sad point it doesn't work still for me, I thought this could be something not intentional anyways.

Is there any update on having this fixed for 5.1?

I have not found a solution myself, nor have I received a response from the developers yet.

Hi, i've had the same problem and i've been testing a view thing, for me the problem come from the "Async Loading Screen" plugin, disabling it fix the issue. I've put a comment on the market place page, now waiting for a fix/response.
Hope it fix the problem for you to ;)

I am also having the same issue.

My project is UE5.1, built on Linux (Ubuntu 20.04).
Tested locally and on AWS with the older pixel streaming cirrus webserver and the released docker image from pixelstreaminginfrastructure.
And no dice, no mouse cursor in the web broswer client.
If i run the packaged game locally, the mouse cursor does display in the game engine client.

Also looking for suggestions to resolve

@wurrego We cannot reproduce this issue. Are you able to share a project with us that reproduces this issue?

Also to confirm, @wurrego you are able to run the project locally and connect with a local web browser and see no mouse. That is to say, AWS is not required to reproduce this issue?

Also to confirm, @wurrego you are able to run the project locally and connect with a local web browser and see no mouse. That is to say, AWS is not required to reproduce this issue?

That is correct. I can run the project locally and connect with a local web browser and not see the mouse cursor.
Let me see if I can share an example project tomorrow that is able to reproduce the issue.

Let me see if I can share an example project tomorrow that is able to reproduce the issue.

@wurrego That would be a great help. Much appreciated.

@lukehb Ok I created a very simple project that reproduces the issue.
https://github.com/wurrego/ue5-test-project/
On ubuntu 20.04 after git clone:

$UNREAL_ENGINE_DIR/Engine/Build/BatchFiles/RunUBT.sh -projectfiles -vscode -project=$PWD/TestProject.uproject -game -engine
./package.sh
./run.sh

I was also able to reproduce this issue with the UE 5.1.1 linux .zip release bundle from Unreal and the 5.1 branch in PixelStreaminghInfrastructure, using the following steps:
. create new blank cpp project
. add pixel streaming plugin and restart
. add additional launch parameters under editor settings->level editor -> play -PixelStreamingIP=localhost -PixelStreaminPort=8888
. add player controller blueprint with show mouse and mouse events selected
. add game mode base blueprint using new mouse controller
. set game mode override in the world settings using new game mode
. git clone PixelStreamingInfrastructure
. start pixel streamer
. launch game from editor as: "Standalone Game"
Game application window will have the mouse present (where it was absent before adding the mouse controller)
Browser http://localhost:80 will have the pixel streaming game instance without a mouse visible.
I ran @lukehb's PixelStreamingDemoMinimal by compiling it with the same UE 5.1.1 release and the PixelStreamer provided in that same PixelStreamingDemoMinimal repo.
Using http://localhost:80/PixelDemoMinimal.html the mouse is visible.
Using the default player.html the mouse is not visible.
The PixelStreamingDemo player controller BP_OrbitController does NOT have "Show Mouse Cursor" set.
Does this mean the solution is in the  PixelDemo.js ??
inputOptions.controlScheme = ControlSchemeType.HoveringMouse;
inputOptions.fakeMouseWithTouches = true;

@jgiovino2 For your use case and what I understand, you'll want to be using the "Hovering Mouse" control scheme.
Activating this control scheme using that latest frontend is as simple as flipping the "Control Scheme" toggle in the settings panel. The reason your cursor disappears is because you're using the "Locked Mouse" control scheme which isn't effected by any options you set in blueprints.

@JRosenschon We've identified the issue you're reporting and are attempting to reproduce using 5.2.
If you're comfortable using source builds of the Unreal Engine, there's a workaround that's been posted to the forums here

Fix will be in for 5.2!

Fix was on UE side - https://github.com/EpicGames/UnrealEngine/commit/9f448608c4fdc43f45e14bab2884e2a888914ab8

<IP_ADDRESS>/?hoveringMouse=true

I just rolled back my RTX 3060 driver by one month....and it solved


Wake up from deep sleep does not work

On HHKB2 Pro custom build,
with
CONFIG_ZMK_IDLE_TIMEOUT=5000
CONFIG_ZMK_SLEEP=y
CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=900000
CONFIG_ZMK_BLE=y
CONFIG_ZMK_EXT_POWER=n
CONFIG_ZMK_BATTERY_REPORT_INTERVAL=3600

,
hhkb_pro2_connector: hhkb_pro2_connector {
        compatible = "zmk,hhkb-pro2-header";	        compatible = "zmk,hhkb-pro2-header";
        #gpio-cells = <2>;	        #gpio-cells = <2>;
        gpio-map-mask = <0xffffffff 0xffffffc0>;	        gpio-map-mask = <0xffffffff 0xffffffc0>;
        gpio-map-pass-thru = <0 0x3f>;	        gpio-map-pass-thru = <0 0x3f>;
        gpio-map = <0 0 &gpio1 6 NRF_GPIO_DRIVE_S0H1>,	        gpio-map = <0 0 &gpio1 6 NRF_GPIO_DRIVE_S0H1>,
                   <1 0 &gpio1 4 0>,	                   <1 0 &gpio1 4 0>,
                   <2 0 &gpio0 11 0>,	                   <2 0 &gpio0 11 0>,
                   <3 0 &gpio1 0 0>,	                   <3 0 &gpio1 0 0>,
                   <4 0 &gpio0 24 0>,	                   <4 0 &gpio0 24 0>,
                   <5 0 &gpio0 22 0>,	                   <5 0 &gpio0 22 0>,
                   <6 0 &gpio0 20 0>,	                   <6 0 &gpio0 20 0>,
                   <7 0 &gpio0 17 0>,	                   <7 0 &gpio0 17 0>,
                   <8 0 &gpio0 8 0>,	                   <8 0 &gpio0 8 0>,
                   <9 0 &gpio0 6 0>;	                   <9 0 &gpio0 6 0>,
                   <10 0 &gpio0 9 0>,     /* D10/A10 */
                   <19 0 &gpio0 2 0>;     /* D19/A1 */
    };	    };

, and
pm_wake_sensor {
        compatible = "zmk,pm-wake-sensor";
        status = "okay";
        power-gpios = <&hhkb_pro2_connector 19 GPIO_ACTIVE_HIGH>;
        sensor-gpios = <&hhkb_pro2_connector 10 (GPIO_ACTIVE_LOW|GPIO_PULL_DOWN)>;
    };

It doesn't wake up hhkb from sleep.

Did you connect anything to pin 19 and 10?
Something like a button or vibration sensor is needed.

Well, the code might be buggy. I haven't tested the integration after last update.
config PM_WAKE_SENSOR is default n for that reason. Please check if you have enabled it in your .config.
Your pm_wake_sensor device tree node looks correct. The hhkb_pro2_connector node doesn't need to define D10 and D19 because it is only used to discover the wiring of the JST connector.

Yes, you are right. The problem was CONFIG_PM_WAKE_SENSOR. After set it up, it works.
Thanks a lot.


CORS Missing Allow Origin when deployed using docker

Description

There is a problem with verba when I deploy it on another machine (not on my local machine.
When I want to open Verba UI I I get stuck on Welcome to Verba Choose your deployment view.

Installation

[ ] pip install goldenverba
[ ] pip install from source
[X] Docker installation

Weaviate Deployment

[ ] Local Deployment
[X] Docker Deployment
[ ] Cloud Deployment

Configuration

Reader:
Chunker:
Embedder:
Retriever:
Generator:
Steps to Reproduce

You need 2 machines in your network:

Your local dev machine with IP: <IP_ADDRESS>
Your strong server with IP <IP_ADDRESS>

Steps:

Deploy verba using docker compose from this repo docker compose up -d --build on your server machine
Open http://<IP_ADDRESS>:8000 on your dev machine
Press Docker option
App is stuck

Additional context
Possible workaround is using ssh tunnels to access Verba ssh -L 8001:localhost:8000<EMAIL_ADDRESS>then website works under http://localhost:8001 on dev machine

Hey thanks for the issue! This is because of this @middleware section
https://github.com/weaviate/Verba/blob/30ae51ef66279fa2d001ccbfbc7f5659277c3467/goldenverba/server/api.py#L82
It checks if the requests have the same origin, since it's deployed on another machine it fails with the CORS error message. I'll think of a way to disable this, but for now the workaround would be to simply delete the whole custom middleware logic. Let me know if that works for you 🚀

@thomashacker
Thank you for fix. It helped me.


Bug: Jest test fails with marker

Is there an existing issue for this?

[X] I have searched the existing issues

Is this a regression?
No
Current behavior
I just moved from ngneat/transloco-keys-manager to jsverse/transloco-keys-manager v4.0.1.
When running my Jest tests, I get following error inside every file where I am using the marker.

Expected behavior
I shouldn't get syntax error in my jest test when using marker.
Please provide a link to a minimal reproduction of the bug
https://github.com/mirinio/jest-transloco-issue
Transloco Config
module.exports = {
  rootTranslationsPath: './src/assets/i18n/',
  langs: ['en', 'de', 'it', 'fr'],
  keysManager: {}
};

Debug Logs
No response
Please provide the environment you discovered this bug in
Transloco:   "@jsverse/transloco": "^7.0.0"
Transloco Keys Manager:    "@jsverse/transloco-keys-manager": "^4.0.1"
Angular:    "@angular/core": "~17.3.1"
Node: v18.18.0
Package Manager: pnpm v8.15.4
OS: Windows

Additional context
No response
I would like to make a pull request for this bug
No

I just ran into this issue too, you happen to know a workaround for time being?

Yeah I ran into the same it seemed solved, then I ran into flat. and after that it said ... is not a function ( the marker function ).

Another thing to add that might be related, storybook also fails with the following error message:
Module not found: Error: Package path ./marker is not exported from package ./node_modules/@jsverse/transloco-keys-manager (see exports field in<EMAIL_ADDRESS>    at ./node_modules/@storybook/builder-webpack5/dist/index.js:1:8954
    at ./node_modules/webpack/lib/HookWebpackError.js:68:3

We have a UI component with some default text, which is overriden by input. But by default the UI component just uses a default translation ( with marker function etc ).

Here's a workaround for Jest until this gets fixed. Put it in your test-setup:
jest.mock('@jsverse/transloco-keys-manager/marker', () => ({
  marker: jest.fn(),
}));

Here's a workaround for Jest until this gets fixed. Put it in your test-setup:
jest.mock('@jsverse/transloco-keys-manager/marker', () => ({
  marker: jest.fn(),
}));

I ran into another problem with a test somewhere I edited the workaround to:
jest.mock('@jsverse/transloco-keys-manager/marker', () => ({
  marker: jest.fn((x) => x),
}));

So it mimics the implementation

@JelleBruisten Which version are you using? there was an issue with the marker export.
ESM and jest are an issue, there are discussions (1, 2) on it in the transloco repo where I updated to flat@6.
I need to review all the suggestions and try to document which path mostly resolves the issue, same goes here as this is now an ESM package.
If @JelleBruisten solution resolves the issue I'll add it as a section in the docs.
@mirinio You are running component tests? where did this meet you?

@shaharkazaz
We are on "@jsverse/transloco-keys-manager": "4.1.0",

@shaharkazaz in the example repo attached, I've added a simple jest test test for the app component where the marker is used.


Update cocaine to capture stdout and stderr

This allows for capturing STDOUT and STDERR which is super helpful. It would be great if this is all we need to get Benzo to place nicely

this looks good. I think testing only against 2.x should be ok.
thanks! :+1:


Empty Folder after Cancelled Search

Description
When you press the back button, after a search results, results in it saying that the folder is empty.
Steps To Reproduce

Go to Downloads through quick access sidebar
Search test
Press enter
Press the back button

Requirements
Should result in going back to root folder
Files Version
Version <IP_ADDRESS>
Windows Version
Windows 11 Insider: 23xxx series
Log File
debug.log

Update: It isnt just when you go back, it also says that the folder is empty if you select a folder from the quick access sidebar after completing a search

Thanks for making the report, I have added it to the project board

Thank you for reporting this issue, it'll be fixed in the next release.


fix: bump python core version to 3.11.0

PR summary
This PR bumps the python core version to 3.11.0 to pull in the ContainerAuthenticator functionality.
PR Checklist
Please make sure that your PR fulfills the following requirements:

[ ] The commit message follows the Angular Commit Message Guidelines.
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

Current vs new behavior

Does this PR introduce a breaking change?

[ ] Yes
[ ] No

Other information

:tada: This PR is included in version 0.19.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Bug: node-switchbot not found; can't establish BLE connection

Describe the Bug
I can't control my switchbot with homekit.
Homebridge is showing me these logs:

I've updated to the newest node version
restarted homebridge mutliple times
installed beta version of the homebridge-switchbot
Also doesn't work with v2.9.0

To Reproduce
just install and use it
Expected Behavior
no errors switchbot can be controlled over homekit
Relevant Log Output
[15/10/2023, 00:29:09] [SwitchBot] Bot: SwitchBot Door wasn't able to establish BLE Connection, node-switchbot: false
[15/10/2023, 00:29:09] [SwitchBot] Bot: SwitchBot Door Using OpenAPI Connection to Refresh Status
[15/10/2023, 00:31:09] [SwitchBot] Was 'node-switchbot' found: false
[15/10/2023, 00:31:09] [SwitchBot] Bot: SwitchBot Door wasn't able to establish BLE Connection, node-switchbot: false
[15/10/2023, 00:31:09] [SwitchBot] Bot: SwitchBot Door Using OpenAPI Connection to Refresh Status

Config for homebridge-switchbot
{
    "name": "SwitchBot",
    "credentials": {
        "token": "xxxxxx",
        "secret": "xxxxxx",
        "notice": "Keep your Token & Secret a secret!"
    },
    "options": {
        "devices": [
            {
                "deviceId": "xxxxxx",
                "configDeviceName": "SwitchBot Door",
                "configDeviceType": "Bot",
                "connectionType": "BLE/OpenAPI",
                "bot": {
                    "mode": "press",
                    "deviceType": "switch"
                },
                "external": true,
                "logging": "standard"
            }
        ]
    },
    "platform": "SwitchBot",
    "_bridge": {
        "username": "xxxxx",
        "port": 40109
    }
}

Screenshots
No response
Device and Model
SwitchBot
Node.js Version
v18.18.2
NPM Version
9.8.1
Homebridge Version
v1.6.1
Homebridge Switchbot Plugin Version
v2.9.1
Homebridge Config UI X Plugin Version
No response
Operating System
Raspbian

You may have to reinstall BLE prerequisites.
Bluetooth issues usually have nothing to do with the plugin, checkout the Bluetooth Plugins Wiki.


in "as_cpass_data" complaining about cycle not being integers when they are integers

fix it please

actually, give a warning if cycle is missing (NA's)


Clean up default flag values

Description

Remove all redundant flag properties that are already set by default. This includes:

hidden: (default: false)
required (default: false)
multiple (default: false)

All relevant values (e.g. multiple: true) are kept untouched.
Related Issue

Closes #38
Motivation and Context

This change removes a lot of unnecessary clutter from the code.
How Has This Been Tested?

The unit tests have been changed accordingly (certain assertions removed).
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

Thank you @medusalix !!


New package: MarketCycles v0.1.5

Registering package: MarketCycles
Repository: https://github.com/flare9x/MarketCycles.jl
Created by: @flare9x
Version: v0.1.5
Commit: f73072dfb741291c0f493833b017a63b300ce664
Reviewed by: @flare9x
Reference: https://github.com/flare9x/MarketCycles.jl/commit/f73072dfb741291c0f493833b017a63b300ce664#commitcomment-36601440

@flare9x Don't worry about the "initial version number" warning. Just fix the compat entries.
[noblock]

@flare9x Yep now just leave it the way it is. This PR can be manually merged after the three-day waiting period for new packages.
[noblock]

┌ Info: Standard initial version number
│   meets_this_guideline = false
└   message = "Version number is not 0.0.1, 0.1.0, or 1.0.0"
┌ Info: Repo URL ends with /name.jl.git
│   meets_this_guideline = true
└   message = ""
┌ Info: Compat (with upper bound) for all dependencies
│   meets_this_guideline = true
└   message = ""

Ok thanks - upper bound Compat worked out.


test: add test for handlerHystrixEventStream

Description: Added a test for handlerHystrixEventStream to improve coverage.
Risk Level: Low

@rotan96 you'll need to merge maser to resolve the conflict.


Assert one mock called before another mock

Clear and concise description of the problem
I'd like to assert that one mock function is called before another similar to Jest's toHaveBeenCalledBefore spy.
Is this a feature that's been considered/is being considered?
Suggested solution
jest implementation: https://github.com/jest-community/jest-extended/issues/98
Alternative
No response
Additional context
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

You can use jest-extended with Vitest


Improve canvas animation

Improve canvas animation by saving the path and moving it with animation frames like this example https://www.demo2s.com/javascript/javascript-canvas-2d-collision.html

So I didn't do it exactly like this but animations now work. I accidentally committed to main https://github.com/uberswe/game-of-bots/commit/2efef6cb457323d0b9f67573e97f93cb895ba1af
https://user-images.githubusercontent.com/1903284/141886521-ab33c3c2-215e-41b6-919f-87ad8a9de44c.mp4


Fix capitalization in README.md first example

seems the example import should be lower-case (?)

see #514 - more complete PR


Cbt support

Added support for creating an input channel bindings value and passing that into the authGSSClientStep as an optional argument. Will continue on with the default behavior if this isn't specified.
I'm fairly new to C so happy to take any pointers and ideas on ways this could be better improved. I've tested this manually on an IIS and WinRM endpoint where the channel bindings token is set to required and verified it worked.
Test Result:
This is the environment set up I had to verify the test results, please ask me any questions around it or if you know of a better way to add automated tests.
Windows Configuration
Run this script on a Server 2008 or newer host that is hooked up to a domain https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1. This will set up a WinRM listener over HTTPS with a self signed cert and open and firewall rules
After running this run the following command in Powershell to set the CBT policy to Strict
Set-Item -Path "WSMan:\localhost\Service\Auth\CbtHardeningLevel" -Value Strict

You can verify the setting by running this in powershell
winrm get winrm/config/service/auth

Auth
    Basic = true
    Kerberos = true
    Negotiate = true
    Certificate = false
    CredSSP = false
    CbtHardeningLevel = Strict

Python Host Config
On the *nix server you are using for testing run the following command to install the relevant libraries and set everything up
pip install pywinrm
pip install git+https://github.com/jborean93/requests-kerberos@add-cbt
git clone https://github.com/jborean93/ccs-pykerberos.git
cd ccs-pykerberos
git checkout cbt-support
pip install .

Create the python script below
from winrm.protocol import Protocol

p = Protocol(
    endpoint='https://host-fqdnl:5986/wsman',
    transport='kerberos',
    server_cert_validation='ignore'
)
shell_id = p.open_shell()
command_id = p.run_command(shell_id, 'ipconfig', ['/all'])
std_out, std_err, status_code = p.get_command_output(shell_id, command_id)
p.cleanup_command(shell_id, command_id)
p.close_shell(shell_id)

print("Return Code: {0}".format(status_code))
print("STDOUT: {0}".format(std_out))
print("STDERR: {0}".format(std_err))

Run the following commands to get a kerberos ticket and test out the script
kinit<EMAIL_ADDRESS>python test-winrm.py

You get the Windows IP configuration returned

If you are using the stock standard kerberos and requests-kerberos library you would get the following error returned

I couldn't get an instance of CalendarServer up and running and interacting with LDAP so I did the next best thing and just create a site backed by Apache and mod_auth_kerb. Here is the testing setup info and details if you wish to test it manually yourself.
Kerberos Setup
/etc/krb5.conf
This is my Kerberos config setup and configured to connect to the JORDAN.LOCAL realm.
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

includedir /var/lib/sss/pubconf/krb5.include.d/
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
# default_realm = EXAMPLE.COM
 default_ccache_name = KEYRING:persistent:%{uid}

 default_realm = JORDAN.LOCAL
[realms]
# EXAMPLE.COM = {
#  kdc = kerberos.example.com
#  admin_server = kerberos.example.com
# }

 JORDAN.LOCAL = {
  kdc = dc01.jordan.local
  admin_server = dc01.jordan.local
 }

[domain_realm]
# .example.com = EXAMPLE.COM
# example.com = EXAMPLE.COM
 jordan.local = JORDAN.LOCAL
 .jordan.local = JORDAN.LOCAL

SPN
I have manually set the SPN HTTP/centos01.jordan.local on my test AD server

Keytab
This is my keytab setup at etc/krb5.keytab

Apache Setup
Apache Kerberos Config
My Kerberos config at /etc/httpd/conf.d/auth_kerberos.conf is configured like
<Directory /var/www/centos01.jordan.local>
    AuthType Kerberos
    AuthName "Kerberos Authentication"
    KrbAuthRealms JORDAN.LOCAL
    Krb5KeyTab /etc/krb5.keytab
    KrbMethodNegotiate On
    KrbMethodK5Passwd off
    KrbVerifyKDC Off
    Require user<EMAIL_ADDRESS></Directory>

I also just have a basic HTML site configured on port 80 at `/etc/httpd/sites-available/centos01.jordan.local.conf
<VirtualHost *:80>
    ServerName centos01.jordan.local
    ServerAlias centos01.jordan.local
    DocumentRoot /var/www/centos01.jordan.local/public_html
    ErrorLog /var/www/centos01.jordan.local/error.log
    CustomLog /var/www/centos01.jordan.local/requests.log combined
</VirtualHost>

Test Script
This is the script I used to test out all 4 existing tests with the Kerberos backed website. It tests it with both Python 2.7.13 and Python 3.6.1.
I had to modify the existing tests to support both Python 2 and 3 (committed) and modify the principal to work outside of CalendarServer (just done through a sed line replacement)
# Change to run in root to makes things simpler
su

# Ensure any leftover tests are cleared before testing again
rm -rf /testing

# Setup testing repo
mkdir /testing
cd /testing
git clone https://github.com/jborean93/ccs-pykerberos.git -b cbt-support
cd ccs-pykerberos

# Show the current git commit hash for verification
git show --oneline -s

# Change the uri for the server test as we aren't using calendar server
sed -i '/uri = "\/principals\/"/c\    uri = "\/"' test.py

# Get kerberos ticket for Kerberos user
kinit<EMAIL_ADDRESS>
# Create virtual env for Python 2.7.13
virtualenv /testing/py27-venv -p /usr/local/bin/python2.7
source /testing/py27-venv/bin/activate
python --version

# Install new ccs-pykerberos library with CBT support
pip install .

# Run tests for Python 2.7.13
python test.py -s<EMAIL_ADDRESS>service
python test.py -u user1 -p Password01 -s<EMAIL_ADDRESS>-r JORDAN.LOCAL basic

python test.py -s<EMAIL_ADDRESS>-r JORDAN.LOCAL gssapi
python test.py -s<EMAIL_ADDRESS>-h centos01.jordan.local -i 80 server

# Create virtual env for Python 3.6.1 and run tests
deactivate
virtualenv /testing/py36-venv -p /usr/local/bin/python3.6
source /testing/py36-venv/bin/activate
python --version

pip install .

python test.py -s<EMAIL_ADDRESS>service
python test.py -u user1 -p Password01 -s<EMAIL_ADDRESS>-r JORDAN.LOCAL basic

python test.py -s<EMAIL_ADDRESS>-r JORDAN.LOCAL gssapi
python test.py -s<EMAIL_ADDRESS>-h centos01.jordan.local -i 80 server

Test Output
This is the test output from the script
[administrator@CENTOS01 ~]$ # Change to run in root to makes things simpler
[administrator@CENTOS01 ~]$ su
Password:
[root@CENTOS01 administrator]#
[root@CENTOS01 administrator]# # Ensure any leftover tests are cleared before testing again
[root@CENTOS01 administrator]# rm -rf /testing
[root@CENTOS01 administrator]#
[root@CENTOS01 administrator]# # Setup testing repo
[root@CENTOS01 administrator]# mkdir /testing
[root@CENTOS01 administrator]# cd /testing
[root@CENTOS01 testing]# git clone https://github.com/jborean93/ccs-pykerberos.git -b cbt-support
Cloning into 'ccs-pykerberos'...
remote: Counting objects: 609, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 609 (delta 2), reused 6 (delta 2), pack-reused 603
Receiving objects: 100% (609/609), 144.42 KiB | 0 bytes/s, done.
Resolving deltas: 100% (425/425), done.
[root@CENTOS01 testing]# cd ccs-pykerberos
[root@CENTOS01 ccs-pykerberos]#
[root@CENTOS01 ccs-pykerberos]# # Show the current git commit hash for verification
[root@CENTOS01 ccs-pykerberos]# git show --oneline -s
d87a465 I broke Python 2 now I need to have a fix for both
[root@CENTOS01 ccs-pykerberos]#
[root@CENTOS01 ccs-pykerberos]# # Change the uri for the server test as we aren't using calendar server
[root@CENTOS01 ccs-pykerberos]# sed -i '/uri = "\/principals\/"/c\    uri = "\/"' test.py
[root@CENTOS01 ccs-pykerberos]#
[root@CENTOS01 ccs-pykerberos]# # Get kerberos ticket for Kerberos user
[root@CENTOS01 ccs-pykerberos]# kinit<EMAIL_ADDRESS>Password for<EMAIL_ADDRESS>
[root@CENTOS01 ccs-pykerberos]#
[root@CENTOS01 ccs-pykerberos]# # Create virtual env for Python 2.7.13
[root@CENTOS01 ccs-pykerberos]# virtualenv /testing/py27-venv -p /usr/local/bin/python2.7
Running virtualenv with interpreter /usr/local/bin/python2.7
New python executable in /testing/py27-venv/bin/python2.7
Also creating executable in /testing/py27-venv/bin/python
Installing setuptools, pip, wheel...done.
[root@CENTOS01 ccs-pykerberos]# source /testing/py27-venv/bin/activate
(py27-venv) [root@CENTOS01 ccs-pykerberos]# python --version
Python 2.7.13
(py27-venv) [root@CENTOS01 ccs-pykerberos]#
(py27-venv) [root@CENTOS01 ccs-pykerberos]# # Install new ccs-pykerberos library with CBT support
(py27-venv) [root@CENTOS01 ccs-pykerberos]# pip install .
Processing /testing/ccs-pykerberos
Building wheels for collected packages: kerberos
  Running setup.py bdist_wheel for kerberos ... done
  Stored in directory: /root/.cache/pip/wheels/7c/f0/16/7c29c46808274738267e8967235b93dda40a58a04af5c2b1c0
Successfully built kerberos
Installing collected packages: kerberos
Successfully installed kerberos-1.2.6
(py27-venv) [root@CENTOS01 ccs-pykerberos]#
(py27-venv) [root@CENTOS01 ccs-pykerberos]# # Run tests for Python 2.7.13
(py27-venv) [root@CENTOS01 ccs-pykerberos]# python test.py -s<EMAIL_ADDRESS>service

*** Running Service Principal test
Kerberos service principal for HTTP/centos01.jordan.local succeeded<EMAIL_ADDRESS>
*** Done

(py27-venv) [root@CENTOS01 ccs-pykerberos]# python test.py -u user1 -p Password01 -s<EMAIL_ADDRESS>-r JORDAN.LOCAL basic

*** Running basic test
Kerberos authentication for user1 succeeded

*** Done

(py27-venv) [root@CENTOS01 ccs-pykerberos]#
(py27-venv) [root@CENTOS01 ccs-pykerberos]# python test.py -s<EMAIL_ADDRESS>-r JORDAN.LOCAL gssapi

*** Running GSSAPI test
Status for authGSSClientInit = Complete
Status for authGSSServerInit = Complete
Status for authGSSClientStep = Continue
Status for authGSSServerStep = Complete
Status for authGSSClientStep = Complete
Server user name<EMAIL_ADDRESS>Server target name: None
Client user name<EMAIL_ADDRESS>Status for authGSSClientClean = Complete
Status for authGSSServerClean = Complete

*** Done

(py27-venv) [root@CENTOS01 ccs-pykerberos]# python test.py -s<EMAIL_ADDRESS>-h centos01.jordan.local -i 80 server

*** Running HTTP test
Authenticated successfully

*** Done

(py27-venv) [root@CENTOS01 ccs-pykerberos]#
(py27-venv) [root@CENTOS01 ccs-pykerberos]# # Create virtual env for Python 3.6.1 and run tests
(py27-venv) [root@CENTOS01 ccs-pykerberos]# deactivate
[root@CENTOS01 ccs-pykerberos]# virtualenv /testing/py36-venv -p /usr/local/bin/python3.6
Already using interpreter /usr/local/bin/python3.6
Using base prefix '/usr/local'
New python executable in /testing/py36-venv/bin/python3.6
Also creating executable in /testing/py36-venv/bin/python
Installing setuptools, pip, wheel...done.
[root@CENTOS01 ccs-pykerberos]# source /testing/py36-venv/bin/activate
(py36-venv) [root@CENTOS01 ccs-pykerberos]# python --version
Python 3.6.1
(py36-venv) [root@CENTOS01 ccs-pykerberos]#
(py36-venv) [root@CENTOS01 ccs-pykerberos]# pip install .
Processing /testing/ccs-pykerberos
Building wheels for collected packages: kerberos
  Running setup.py bdist_wheel for kerberos ... done
  Stored in directory: /root/.cache/pip/wheels/7c/f0/16/7c29c46808274738267e8967235b93dda40a58a04af5c2b1c0
Successfully built kerberos
Installing collected packages: kerberos
Successfully installed kerberos-1.2.6
(py36-venv) [root@CENTOS01 ccs-pykerberos]#
(py36-venv) [root@CENTOS01 ccs-pykerberos]# python test.py -s<EMAIL_ADDRESS>service

*** Running Service Principal test
Kerberos service principal for HTTP/centos01.jordan.local succeeded<EMAIL_ADDRESS>
*** Done

(py36-venv) [root@CENTOS01 ccs-pykerberos]# python test.py -u user1 -p Password01 -s<EMAIL_ADDRESS>-r JORDAN.LOCAL basic

*** Running basic test
Kerberos authentication for user1 succeeded

*** Done

(py36-venv) [root@CENTOS01 ccs-pykerberos]#
(py36-venv) [root@CENTOS01 ccs-pykerberos]# python test.py -s<EMAIL_ADDRESS>-r JORDAN.LOCAL gssapi

*** Running GSSAPI test
Status for authGSSClientInit = Complete
Status for authGSSServerInit = Complete
Status for authGSSClientStep = Continue
Status for authGSSServerStep = Complete
Status for authGSSClientStep = Complete
Server user name<EMAIL_ADDRESS>Server target name: None
Client user name<EMAIL_ADDRESS>Status for authGSSClientClean = Complete
Status for authGSSServerClean = Complete

*** Done

(py36-venv) [root@CENTOS01 ccs-pykerberos]# python test.py -s<EMAIL_ADDRESS>-h centos01.jordan.local -i 80 server

*** Running HTTP test
Authenticated successfully

*** Done

(py36-venv) [root@CENTOS01 ccs-pykerberos]#

Hopefully this manual test and my test with a CBT endpoint as shown in the first post helps to alleviate any concerns about backwards compatibility. If you have anything else you want me to try or do differently just ask and I should be able to do it.

@dreness I hope you were the person I was talking to in IRC, just hoping the above information is good enough to cover the testing side of things. Not sure what you would like me to do next.

@jborean93 I am. Your testing efforts have been substantial and are well received. I will dig into this and get some comments from others, and can hopefully merge this soon.

Thanks for that, I might spend some time on another PR soon to get integration with travis to make this easier in the future but it all depends on how much time I have.

This looks good -- one question:  for this malloc...
input_chan_bindings = (struct gss_channel_bindings_struct *) malloc(sizeof(struct gss_channel_bindings_struct));
Who is responsible for freeing it?  Is it handled by Python object reference counting?

I'm not sure on that (my inexperience shining through) but I suppose after the library using this get's a successful authentication it should free it. Is there a way to do this in python or do I need to pass in the object to another method on the C side?

I am not familiar with the Python/CObjects API, but I do see in the docs that PyCObject_FromVoidPtr( ) can take a destructor function which gets called with the python object is reclaimed.  Perhaps it needs to be passed a function that does the free?  We need to get someone more familiar with this to chime in.

I'll do some research and will see what I can find.

I'm trying to get this loaded up in xcode so I can point the clang static analyzer at it, which should help identify lifecycle issues.

So I think you want to pass "free" to PyCObject_FromVoidPtr, e.g.:
pychan_bindings = PyCObject_FromVoidPtr(input_chan_bindings, free);

I received a hot tip from another frog right around the time that a similar conclusion was reached by m0rgen: If "free" is passed instead of NULL, that should free the C-side object. Doing some testing on that...

So if I pass free to that Python will automatically free the memory or do I still have to call that somewhere else when ready?

The python object is reclaimed automatically, and this "destr" argument is a facility for allowing that reclamation to flow back to the C-side, by the C. sure. (cough). The argument itself is the function that is called to when the python object is reclaimed, so to do the moral equivalent on the C-side, we can just pass 'free'.

Made those changes plus I bumped the version. I checked with my original test and the CBT stuff still works after the test.

It would be really helpful if you could update the docstring for authGSSClientStep with the new parameter and an example of how to use it here:
https://github.com/apple/ccs-pykerberos/blob/master/pysrc/kerberos.py

Looking good! @jborean93 - do you still have the test environment available? If so, would it be possible for you to run through the testing and validation again with all the recent changes applied?

Yep I just reran the original tests and the WinRM test and here is the output. Also is there a way of having a collapsable block of text in Github?
Cloning into 'ccs-pykerberos'...
1200d2a More improvements to handle memory deallocation
New python executable in /testing/py27-venv/bin/python2.7
Also creating executable in /testing/py27-venv/bin/python
Installing setuptools, pip, wheel...done.
Running virtualenv with interpreter /usr/local/bin/python2.7
Python 2.7.13
Processing /testing/ccs-pykerberos
Building wheels for collected packages: kerberos
  Running setup.py bdist_wheel for kerberos: started
  Running setup.py bdist_wheel for kerberos: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/7c/f0/16/7c29c46808274738267e8967235b93dda40a58a04af5c2b1c0
Successfully built kerberos
Installing collected packages: kerberos
Successfully installed kerberos-1.3.0
Collecting pywinrm
  Using cached pywinrm-0.2.2-py2.py3-none-any.whl
Collecting xmltodict (from pywinrm)
  Using cached xmltodict-0.11.0-py2.py3-none-any.whl
Collecting requests-ntlm>=0.3.0 (from pywinrm)
  Using cached requests_ntlm-1.0.0-py2.py3-none-any.whl
Requirement already satisfied: six in /testing/py27-venv/lib/python2.7/site-packages (from pywinrm)
Collecting requests>=2.9.1 (from pywinrm)
  Using cached requests-2.17.3-py2.py3-none-any.whl
Collecting ntlm-auth>=1.0.2 (from requests-ntlm>=0.3.0->pywinrm)
  Using cached ntlm_auth-1.0.4-py2.py3-none-any.whl
Collecting idna<2.6,>=2.5 (from requests>=2.9.1->pywinrm)
  Using cached idna-2.5-py2.py3-none-any.whl
Collecting urllib3<1.22,>=1.21.1 (from requests>=2.9.1->pywinrm)
  Using cached urllib3-1.21.1-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.9.1->pywinrm)
  Using cached chardet-3.0.3-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests>=2.9.1->pywinrm)
  Using cached certifi-2017.4.17-py2.py3-none-any.whl
Collecting ordereddict (from ntlm-auth>=1.0.2->requests-ntlm>=0.3.0->pywinrm)
Installing collected packages: xmltodict, ordereddict, ntlm-auth, idna, urllib3, chardet, certifi, requests, requests-ntlm, pywinrm
Successfully installed certifi-2017.4.17 chardet-3.0.3 idna-2.5 ntlm-auth-1.0.4 ordereddict-1.1 pywinrm-0.2.2 requests-2.17.3 requests-ntlm-1.0.0 urllib3-1.21.1 xmltodict-0.11.0
Collecting git+https://github.com/jborean93/requests-kerberos@add-cbt
  Cloning https://github.com/jborean93/requests-kerberos (to add-cbt) to /tmp/pip-MFU6oE-build
Requirement already satisfied: requests>=1.1.0 in /testing/py27-venv/lib/python2.7/site-packages (from requests-kerberos==0.11.0)
Collecting pyasn1 (from requests-kerberos==0.11.0)
  Using cached pyasn1-0.2.3-py2.py3-none-any.whl
Collecting pyasn1-modules (from requests-kerberos==0.11.0)
  Using cached pyasn1_modules-0.0.8-py2.py3-none-any.whl
Requirement already satisfied: kerberos<2.0.0,>=1.2.5 in /testing/py27-venv/lib/python2.7/site-packages (from requests-kerberos==0.11.0)
Requirement already satisfied: idna<2.6,>=2.5 in /testing/py27-venv/lib/python2.7/site-packages (from requests>=1.1.0->requests-kerberos==0.11.0)
Requirement already satisfied: urllib3<1.22,>=1.21.1 in /testing/py27-venv/lib/python2.7/site-packages (from requests>=1.1.0->requests-kerberos==0.11.0)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /testing/py27-venv/lib/python2.7/site-packages (from requests>=1.1.0->requests-kerberos==0.11.0)
Requirement already satisfied: certifi>=2017.4.17 in /testing/py27-venv/lib/python2.7/site-packages (from requests>=1.1.0->requests-kerberos==0.11.0)
Installing collected packages: pyasn1, pyasn1-modules, requests-kerberos
  Running setup.py install for requests-kerberos: started
    Running setup.py install for requests-kerberos: finished with status 'done'
Successfully installed pyasn1-0.2.3 pyasn1-modules-0.0.8 requests-kerberos-0.11.0

*** Running Service Principal test
Kerberos service principal for HTTP/centos01.jordan.local succeeded<EMAIL_ADDRESS>
*** Done

*** Running basic test
Kerberos authentication for user1 succeeded

*** Done

*** Running GSSAPI test
Status for authGSSClientInit = Complete
Status for authGSSServerInit = Complete
Status for authGSSClientStep = Continue
Status for authGSSServerStep = Complete
Status for authGSSClientStep = Complete
Server user name<EMAIL_ADDRESS>Server target name: None
Client user name<EMAIL_ADDRESS>Status for authGSSClientClean = Complete
Status for authGSSServerClean = Complete

*** Done

*** Running HTTP test
Authenticated successfully

*** Done

Return Code: 0
STDOUT:
Windows IP Configuration

   Host Name . . . . . . . . . . . .    : No
   DNS Suffix Search List. . . . . . : jordan.local

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  .   : No
   Autoconfiguration Enabled . . . .   : Media disconnected
   Connection-specific DNS Suffix  .   : No
   Autoconfiguration Enabled . . . .  : Media disconnected
   Connection-specific DNS Suffix  .   : No
   Autoconfiguration Enabled . . . . : Yes

STDERR:
Using base prefix '/usr/local'
New python executable in /testing/py36-venv/bin/python3.6
Also creating executable in /testing/py36-venv/bin/python
Installing setuptools, pip, wheel...done.
Running virtualenv with interpreter /usr/local/bin/python3.6
Python 3.6.1
Processing /testing/ccs-pykerberos
Building wheels for collected packages: kerberos
  Running setup.py bdist_wheel for kerberos: started
  Running setup.py bdist_wheel for kerberos: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/7c/f0/16/7c29c46808274738267e8967235b93dda40a58a04af5c2b1c0
Successfully built kerberos
Installing collected packages: kerberos
Successfully installed kerberos-1.3.0
Collecting pywinrm
  Using cached pywinrm-0.2.2-py2.py3-none-any.whl
Collecting xmltodict (from pywinrm)
  Using cached xmltodict-0.11.0-py2.py3-none-any.whl
Collecting requests-ntlm>=0.3.0 (from pywinrm)
  Using cached requests_ntlm-1.0.0-py2.py3-none-any.whl
Collecting requests>=2.9.1 (from pywinrm)
  Using cached requests-2.17.3-py2.py3-none-any.whl
Requirement already satisfied: six in /testing/py36-venv/lib/python3.6/site-packages (from pywinrm)
Collecting ntlm-auth>=1.0.2 (from requests-ntlm>=0.3.0->pywinrm)
  Using cached ntlm_auth-1.0.4-py2.py3-none-any.whl
Collecting idna<2.6,>=2.5 (from requests>=2.9.1->pywinrm)
  Using cached idna-2.5-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests>=2.9.1->pywinrm)
  Using cached certifi-2017.4.17-py2.py3-none-any.whl
Collecting urllib3<1.22,>=1.21.1 (from requests>=2.9.1->pywinrm)
  Using cached urllib3-1.21.1-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.9.1->pywinrm)
  Using cached chardet-3.0.3-py2.py3-none-any.whl
Collecting ordereddict (from ntlm-auth>=1.0.2->requests-ntlm>=0.3.0->pywinrm)
Installing collected packages: xmltodict, idna, certifi, urllib3, chardet, requests, ordereddict, ntlm-auth, requests-ntlm, pywinrm
Successfully installed certifi-2017.4.17 chardet-3.0.3 idna-2.5 ntlm-auth-1.0.4 ordereddict-1.1 pywinrm-0.2.2 requests-2.17.3 requests-ntlm-1.0.0 urllib3-1.21.1 xmltodict-0.11.0
Collecting git+https://github.com/jborean93/requests-kerberos@add-cbt
  Cloning https://github.com/jborean93/requests-kerberos (to add-cbt) to /tmp/pip-5rln0mag-build
Requirement already satisfied: requests>=1.1.0 in /testing/py36-venv/lib/python3.6/site-packages (from requests-kerberos==0.11.0)
Collecting pyasn1 (from requests-kerberos==0.11.0)
  Using cached pyasn1-0.2.3-py2.py3-none-any.whl
Collecting pyasn1-modules (from requests-kerberos==0.11.0)
  Using cached pyasn1_modules-0.0.8-py2.py3-none-any.whl
Requirement already satisfied: kerberos<2.0.0,>=1.2.5 in /testing/py36-venv/lib/python3.6/site-packages (from requests-kerberos==0.11.0)
Requirement already satisfied: certifi>=2017.4.17 in /testing/py36-venv/lib/python3.6/site-packages (from requests>=1.1.0->requests-kerberos==0.11.0)
Requirement already satisfied: idna<2.6,>=2.5 in /testing/py36-venv/lib/python3.6/site-packages (from requests>=1.1.0->requests-kerberos==0.11.0)
Requirement already satisfied: urllib3<1.22,>=1.21.1 in /testing/py36-venv/lib/python3.6/site-packages (from requests>=1.1.0->requests-kerberos==0.11.0)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /testing/py36-venv/lib/python3.6/site-packages (from requests>=1.1.0->requests-kerberos==0.11.0)
Installing collected packages: pyasn1, pyasn1-modules, requests-kerberos
  Running setup.py install for requests-kerberos: started
    Running setup.py install for requests-kerberos: finished with status 'done'
Successfully installed pyasn1-0.2.3 pyasn1-modules-0.0.8 requests-kerberos-0.11.0

*** Running Service Principal test
Kerberos service principal for HTTP/centos01.jordan.local succeeded<EMAIL_ADDRESS>
*** Done

*** Running basic test
Kerberos authentication for user1 succeeded

*** Done

*** Running GSSAPI test
Status for authGSSClientInit = Complete
Status for authGSSServerInit = Complete
Status for authGSSClientStep = Continue
Status for authGSSServerStep = Complete
Status for authGSSClientStep = Complete
Server user name<EMAIL_ADDRESS>Server target name: None
Client user name<EMAIL_ADDRESS>Status for authGSSClientClean = Complete
Status for authGSSServerClean = Complete

*** Done

*** Running HTTP test
Authenticated successfully

*** Done

Return Code: 0
STDOUT: b'\r\nWindows IP Configuration\r\n\r\n   Host Name . . . . . . . . . . . .      : No\r\n   Autoconfiguration Enabled . . . .     : No\r\n   Autoconfiguration Enabled . . . .    : No\r\n   Autoconfiguration Enabled . . . . : Yes\r\n'
STDERR: b''

In buildChannelBindingsStruct the "et#" format is not being used properly. This causes warnings when compiling:
src/kerberos.c:272:51: warning: incompatible pointer to integer conversion assigning to 'size_t' (aka 'unsigned long') from 'int *' [-Wint-conversion]
input_chan_bindings->initiator_address.length = initiator_length;
^ ~~~~~~~~~~~~~~~~
I've attached a diff to correct this. Please run all your tests again after this fix.
diff --git a/src/kerberos.c b/src/kerberos.c
index 406f5c1..440831d 100644
--- a/src/kerberos.c
+++ b/src/kerberos.c
@@ -244,12 +244,12 @@ static PyObject *buildChannelBindingsStruct(PyObject *self, PyObject *args, PyOb
int acceptor_addrtype = GSS_C_AF_UNSPEC;
 const char *encoding = NULL;

char **initiator_address = NULL;
char **acceptor_address = NULL;
char **application_data = NULL;
int *initiator_length = NULL;
int *acceptor_length = NULL;
int *application_length = NULL;

char *initiator_address = NULL;

char *acceptor_address = NULL;

char *application_data = NULL;

int initiator_length = 0;

int acceptor_length = 0;

int application_length = 0;
int result = 0;

Ugh! My diff got messed up. Let's try again:
diff --git a/src/kerberos.c b/src/kerberos.c
index 406f5c1..440831d 100644
--- a/src/kerberos.c
+++ b/src/kerberos.c
@@ -244,12 +244,12 @@ static PyObject *buildChannelBindingsStruct(PyObject *self, PyObject *args, PyOb
     int acceptor_addrtype = GSS_C_AF_UNSPEC;

     const char *encoding = NULL;
-    char **initiator_address = NULL;
-    char **acceptor_address = NULL;
-    char **application_data = NULL;
-    int *initiator_length = NULL;
-    int *acceptor_length = NULL;
-    int *application_length = NULL;
+    char *initiator_address = NULL;
+    char *acceptor_address = NULL;
+    char *application_data = NULL;
+    int initiator_length = 0;
+    int acceptor_length = 0;
+    int application_length = 0;

     int result = 0;

Some other things:

I think "buildChannelBindingsStruct" should be renamed to "channelBindings".

I think the keyword argument for authGSSClientStep should be "channel_bindings" rather than "input_chan_bindings".

I think "channelBindings" should just return the py object and not the tuple of integer result and py object. Reasons:

The result is always set to zero - it never changes - so it is completely redundant
It will make python code cleaner:

kerberos.authGSSClientStep(..., ..., channel_bindings=kerberos.channelBindings(initiator_addrtype=0, initiator_address="foobar"))

Slightly better than having to always append "[1]" to the channelBindings result to get the py object.

@cyrusdaboo thanks for the feedback, I've made the changes you have requested and commit them. I also reran the tests and it still works fine. Please let me know if you wish for any more changes.

Merged in the latest changes from the master branch and pushed them to this branch. Looks like the travis build is working fine. Please let me know if there is anything else you need from me.

@dreness @cyrusdaboo any chance you can have another look, I am hoping to get a consensus with this PR and the Windows equivalent https://github.com/mongodb-labs/winkerberos/pull/17 and I am nearing the end of that PR.

@jborean93 I think we're looking good here. I'm going to ping one more possibly interested stakeholder, but personally I'm satisfied.

Thanks again @jborean93 - very nice job on this PR :)

Thanks @dreness and others who helped with this PR.


[SPARK][HOTFIX] Fix the existing test failures in spark-2.3

What changes were proposed in this pull request?
This pr is to fix the test failures for spark-2.3.
How was this patch tested?
Run the existing tests.

Not finished yet (I'm still working).

Merged. Thanks!


Hide empty cards when not data set

Is your feature request related to a problem? Please describe.
Hide empty cards mark by red arrow

Describe the solution you'd like
Check the data object for check if empty.
Describe alternatives you've considered
NONE
Additional context
NONE

Hey, I would like work this

@lewandy Wield your best weapon and face the monster!


Add Niko Connectable switch support

Proposed change
Add support for Niko Connectable switch (Both Double and Single rocker switch)
Additional information
Based on input from https://github.com/zigpy/zha-device-handlers/issues/2286
Checklist

[x] The changes are tested and work correctly
[x] pre-commit checks pass / the code has been formatted using Black
[x] Tests have been added to verify that the new code works

@TheJulianJES thanks for the review, I updated the PR based on your remarks. Do you happen to have some answers to my own questions in my review?

Do you happen to have some answers to my own questions in my review?

Hmm, maybe I'm missing something. But I do not see any comment/questions from you?
The changes seem to look good (from a quick review at least).

@TheJulianJES can you give this another review? I would like to have this PR merged as I have to install more of these devices in the near future :)


Timer is bugged on cat being overgrown if you have an overgrown cat banked and a kitten following you.

Also, clean installation of the plugin fix the issue apparently if that can help


Adding of organizations

Resolves issue #19

General Comments before I get to individual files:  Try to avoid using scaffold to make anything in rails in the future.  There are a lot of files you made here which are not needed.
Also:  You should make a feature test for creating an organization.


back-release 0.9.2

⚠ MERGE INTO back-release-0.9.2 branch, not master ⚠

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Required to unblock https://github.com/conda-forge/databases-feedstock/pull/21

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.

@conda-forge-admin, please rerender

@conda-forge/pymysql can someone please merge into an appropriate branch?

@conda-forge-admin, please rerender

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.
I do have some suggestions for making it better though...
For recipe:

noarch: python recipes are recommended to have a lower bound on the python version. This recommendation will become a requirement in the future.

@conda-forge/core -- what's the procedure for publishing an older version of a package that's missing like is the case here? I didn't see a recommended procedure list in the docs.

Make a new branch on the feedstock with whatever name you'd like. (It appears the PR author suggested something here). Then merge this PR into that branch.

@synapticarbors yes, as @beckermr says, AFAIR you should merge into a separate branch as I suggested in the PR


Error: No provider for CustomResource with custom functions (data, callback)

@troyanskiy Have there been some significant breaking changes in the last couple months? I'm struggling to get my resource classes (with custom functions like below) to work on 1.5.4. Here is an example of a custom function that used to work:
@ResourceAction({
method: RequestMethod.Get,
path: '/request/{id}' // Will overwrite default path
})
public getById(data:any, callback?:Function): ResourceResult { return null; }
If I add  after ResourceResult, it will compile on TSC / JIT for development purposes (e.g. using Ionic serve with Ionic RC3), but when doing a production build, I'm running into errors like "(Error: main.js:62534 Error: No provider for e!)" where e is the resource class I'm trying to inject (as a service in a constructor).
Based on your examples / documentation, it seems like ResourceMethod might have replaced ResourceResult.  Is that correct and could you please share an example of how to do a custom function that accepts a flexible data parameter and executes a callback as in above?
Thanks

Hello.
Try to use it like that

@ResourceAction({
  method: RequestMethod.Get,
  path: '/request/{id}' // Will overwrite default path
})
// Old way
// public getById(data:any, callback?:Function): ResourceResult { return null; }

// New way
// <any, any> - first type is INPUT data type, second - OUTPUT data type
getById: ResourceMethod<any, any>;

// Better like that
// getById: ResourceMethod<{id: string /* number or any other type */}, IOutputData>;

Thanks @troyanskiy for the super quick reply. Here is the error that comes up (when running with Ionic serve / TSC & JIT) using the new way with getById: ResourceMethod<any, any>;

error_handler.js:53 Error: No provider for RequestAgentService!
at NoProviderError.BaseError [as constructor] (errors.js:24)
at NoProviderError.AbstractProviderError [as constructor] (reflective_errors.js:42)

I can't check now.
But it's definitely related to ResourceModule.forRoot() in NgModule and JIT compilation.
I will check that ASAP, because I will also need to use it with ionic2.

Okay, thanks for the help and feedback. I'll do some troubleshooting and let you know if I make any progress.

I got it working - the root issue with the no provider message was an error in the NGModule definition.
With some more updates, I have my original base resource class (GCResource) taking care of authentication, server URL, and standard CRUD operations (similar to what you have in the docs, but with 'id' as an optional parameter).
In case it helps others, here are the examples working with Ionic 2 RC3 in both development and NGC production build:
`
import {Resource, ResourceAction, ResourceMethod, ResourceParams} from "ng2-resource-rest";
import {Injectable, Injector} from "@angular/core";
import {RequestMethod, Http} from "@angular/http";
import {AppConfig} from '../../config/app-config';
import {UserService} from '../user/user.service';
@Injectable()
@ResourceParams({add2Provides: false})
export class GCResource extends Resource {
// extends Resource with authentication headers, standard CRUD requests, and other dynamic server URL (for prod vs dev)
startPath:any = '';
constructor(http: Http, injector: Injector) {  super(http, injector); }
@ResourceAction({
isArray: true
})
query: ResourceMethod<any, any>;
@ResourceAction({
path: '/{id}'
})
get: ResourceMethod<any, any>;
@ResourceAction({
method: RequestMethod.Post
})
save: ResourceMethod<any, any>;
@ResourceAction({
method: RequestMethod.Put,
path: '/{id}'
})
update: ResourceMethod<any, any>;;
@ResourceAction({
method: RequestMethod.Delete,
path: '/{id}'
})
remove: ResourceMethod<{id: any}, any>;
getUrl(): string {
// AppConfig class is populated with a build script so it can generate the server URL (e.g. prod vs. dev)
return new AppConfig().url() + this.startPath;
}
getHeaders(): any {
// Prepare headers with user authentication token (JWT) if it exists. lastToken is a static property of User Authentication service
var authToken = UserService.lastToken;
var authHeaders:any = {
'Accept': 'application/json',
'Content-Type': 'application/json'
};
if (authToken) {
var bearer = 'Bearer ' + authToken;
authHeaders['Authorization'] = bearer;
}
return authHeaders;
}
}
`
Each resource class can be quite short as in this example:
`import {ResourceParams, ResourceAction, ResourceMethod}  from "ng2-resource-rest";
import {Injectable, Injector} from "@angular/core";
import {RequestMethod, Http} from "@angular/http";
import {GCResource} from "../../services/gc-resource/gc-resource"; // API Helper library
@Injectable()
@ResourceParams({
path: '/request/agent'
})
export class RequestAgentService extends GCResource  {
// This seems unnecessary but not having it was causing a production NGC build error
constructor(http: Http, injector: Injector) {  super(http, injector); }
@ResourceAction({
method: RequestMethod.Get, // Mandatory field
path: '/request/{id}' // Will overwrite default path
})
// old way public getById(data:any, callback?:Function): ResourceResult { return null; }
// new way (loosely defined with any input and any output)
getById: ResourceMethod<any, any>;
}`
There was some troubleshooting with "ionic build" / ngc compilation. I have GCResource being imported as a provider before its child classes.
After the imports in app.module.ts, here is the rest:
@NgModule({   declarations: [MyApp, PAGES, DIRECTIVES, PIPES],   imports: [ ResourceModule.forRoot(),     IonicModule.forRoot(MyApp, {mode: "ios", prodMode: true})],   bootstrap: [IonicApp],   entryComponents: [MyApp,PAGES],   providers: [ AppConfig, HttpModule, GCResource, Storage, CORE_SERVICES,  	{provide: ErrorHandler, useClass: IonicErrorHandler}] }) export class AppModule {}

@growthclick thanks a lot for your investigation.
Initially I wanted to test with creating barrel file for all injectable resources and include it into the app.module file. I'm not sure, but I think NGC will do files opening/parsing/compilation and since they will be "executed" they will be added to ResourceProviders array, which are used by calling ResourceModule.forRoot()

I'm doing the barrel file approach (http://tattoocoder.com/angular2-barrels/) with the injectable resources in the CORE_SERVICES constant in the above code. I'm not sure if it makes a difference but I put GCResource (Base class) ahead of it in the providers list, and also put ResourceModule.forRoot() ahead of the IonicModule.forRoot.
Despite sequencing efforts, there are a couple resources (that are injected immediately during app startup) where extending GCResource created an error, and so I had to implement them by extending ResourceCRUD.  Working on a deadline so just glad to have a working model now.
I think you're right about NGC doing the opening/parsing/compilation. I had some "no provider errors" due to missing resource classes in the @NGModule definition, though these issues only came up in the NGC build, not in JIT.


Create unit tests for the Self-Generating Hyperplanes (SGH) method

Tests can be based on the step by step example in the original paper:
Souza, M. A., Cavalcanti, G. D., Cruz, R. M., & Sabourin, R. (2017, May). On the characterization of the oracle for dynamic classifier selection. In Neural Networks (IJCNN), 2017 International Joint Conference on (pp. 332-339). IEEE.

Implemented in commit #d498a810a5fc96731196ec1b626a254b13fea2f4


Better mongo insert performance

Describe the bug
Inserting network data into mongo has bad performance.
Ideas:

Remove the geneRanks collection. When the network is loaded by the client also send the entire ranked gene list to be stored in-memory on the client.
Will also need a better solution for the gene-to-node mapping.

@mikekucera, can this be closed?


react-router v7 compatibility

Preliminary Checks

[X] I have reviewed the documentation: https://clerk.com/docs

[X] I have searched for existing issues: https://github.com/clerk/javascript/issues

[X] I have not already reached out to Clerk support via email or Discord (if you have, no need to open an issue here)

[X] This issue is not a question, general help request, or anything other than a bug report directly related to Clerk. Please ask questions in our Discord community: https://clerk.com/discord.

Reproduction
https://unfortunately-not-available
Publishable key
pk_test_not_relevant_to_the_question
Description
@clerk/remix has a peer dependency on @remix-run/react.
A couple of days ago, React Router v7 was released, which is the recommended migration path for Remix apps. However, @clerk/remix is not compatible with RR v7 due to the aforementioned peer dependency, and the React Router section of the Clerk docs mention that

Loaders and Actions are currently not supported by Clerk with React Router.

So this is a friendly request to make Clerk compatible with RRv7.
Thanks!
Environment
System:
    OS: macOS 15.1.1
    CPU: (16) arm64 Apple M3 Max
    Memory: 1.06 GB / 64.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 22.9.0 - ~/.nvm/versions/node/v22.9.0/bin/node
    npm: 10.8.3 - ~/.nvm/versions/node/v22.9.0/bin/npm
    pnpm: 9.1.1 - ~/Library/pnpm/pnpm
  Browsers:
    Chrome: 131.0.6778.86
    Edge: 113.0.1774.35
    Safari: 18.1.1
  npmPackages:
    @babel/plugin-syntax-import-assertions: ^7.26.0 => 7.26.0
    @babel/preset-react: ^7.25.9 => 7.25.9
    @babel/preset-typescript: ^7.26.0 => 7.26.0
    @biomejs/biome: 1.9.4 => 1.9.4
    @clerk/remix: ^4.2.52 => 4.2.52
    @clerk/testing: ^1.3.26 => 1.3.26
    @clerk/themes: ^2.1.45 => 2.1.45
    @conform-to/react: ^1.2.2 => 1.2.2
    @conform-to/zod: ^1.2.2 => 1.2.2
    @deepgram/captions: ^1.2.0 => 1.2.0
    @deepgram/sdk: ^3.9.0 => 3.9.0
    @dnd-kit/core: ^6.1.0 => 6.1.0
    @dnd-kit/sortable: ^8.0.0 => 8.0.0
    @dnd-kit/utilities: ^3.2.2 => 3.2.2
    @epic-web/restore-scroll: ^1.1.1 => 1.1.1
    @eslint/compat: ^1.2.3 => 1.2.3
    @eslint/js: ^9.15.0 => 9.15.0
    @faker-js/faker: ^9.2.0 => 9.2.0
    @formatjs/cli: ^6.3.11 => 6.3.11
    @google-cloud/storage: ^7.14.0 => 7.14.0
    @google-cloud/translate: ^8.5.0 => 8.5.0
    @google-cloud/video-transcoder: ^3.3.0 => 3.3.0
    @inngest/eslint-plugin: ^0.0.7 => 0.0.7
    @langchain/community: ^0.3.15 => 0.3.15
    @langchain/core: ^0.3.18 => 0.3.18
    @langchain/openai: ^0.3.14 => 0.3.14
    @mdx-js/rollup: ^3.1.0 => 3.1.0
    @mjackson/headers: ^0.8.0 => 0.8.0
    @mux/blurup: ^0.2.3 => 0.2.3
    @mux/mux-node: ^9.0.1 => 9.0.1
    @mux/mux-player: ^3.1.0 => 3.1.0
    @mux/mux-player-react: ^3.1.0 => 3.1.0
    @paralleldrive/cuid2: ^2.2.2 => 2.2.2
    @phosphor-icons/react: ^2.1.7 => 2.1.7
    @playwright/test: ^1.48.2 => 1.48.2
    @prisma/client: ^5.22.0 => 5.22.0
    @radix-ui/react-accordion: ^1.2.1 => 1.2.1
    @radix-ui/react-alert-dialog: ^1.1.2 => 1.1.2
    @radix-ui/react-checkbox: ^1.1.2 => 1.1.2
    @radix-ui/react-collapsible: ^1.1.1 => 1.1.1
    @radix-ui/react-dialog: ^1.1.2 => 1.1.2
    @radix-ui/react-dropdown-menu: ^2.1.2 => 2.1.2
    @radix-ui/react-hover-card: ^1.1.2 => 1.1.2
    @radix-ui/react-icons: ^1.3.2 => 1.3.2
    @radix-ui/react-label: ^2.1.0 => 2.1.0
    @radix-ui/react-popover: ^1.1.2 => 1.1.2
    @radix-ui/react-progress: ^1.1.0 => 1.1.0
    @radix-ui/react-radio-group: ^1.2.1 => 1.2.1
    @radix-ui/react-scroll-area: ^1.2.1 => 1.2.1
    @radix-ui/react-select: ^2.1.2 => 2.1.2
    @radix-ui/react-separator: ^1.1.0 => 1.1.0
    @radix-ui/react-slot: ^1.1.0 => 1.1.0
    @radix-ui/react-switch: ^1.1.1 => 1.1.1
    @radix-ui/react-tabs: ^1.1.1 => 1.1.1
    @radix-ui/react-toast: ^1.2.2 => 1.2.2
    @radix-ui/react-tooltip: ^1.1.4 => 1.1.4
    @react-hookz/web: ^24.0.4 => 24.0.4
    @react-router/dev: ^7.0.1 => 7.0.1
    @react-router/node: ^7.0.1 => 7.0.1
    @react-router/remix-routes-option-adapter: ^7.0.1 => 7.0.1
    @react-router/serve: ^7.0.1 => 7.0.1
    @remix-run/node: ^2.15.0 => 2.15.0
    @sentry/remix: ^8.38.0 => 8.38.0
    @sentry/vite-plugin: ^2.22.6 => 2.22.6
    @slack/web-api: ^7.7.0 => 7.7.0
    @types/accept-language-parser: ^1.5.6 => 1.5.6
    @types/howler: ^2.2.12 => 2.2.12
    @types/json-stable-stringify: ^1.1.0 => 1.1.0
    @types/jsrsasign: ^10.5.14 => 10.5.14
    @types/morgan: ^1.9.9 => 1.9.9
    @types/node: ^22.9.0 => 22.9.0
    @types/react: ^18.3.12 => 18.3.12
    @types/react-dom: ^18.3.1 => 18.3.1
    @zoom/videosdk: ^1.12.12 => 1.12.12
    accept-language-parser: ^1.5.0 => 1.5.0
    autoprefixer: ^10.4.20 => 10.4.20
    axios: ^1.7.7 => 1.7.7
    babel-plugin-react-compiler: ^19.0.0-beta-63b359f-20241101 => 19.0.0-beta-63b359f-20241101
    class-variance-authority: ^0.7.0 => 0.7.0
    cloudinary: ^2.5.1 => 2.5.1
    clsx: ^2.1.1 => 2.1.1
    cmdk: ^1.0.4 => 1.0.4
    cross-env: ^7.0.3 => 7.0.3
    csv-writer: ^1.6.0 => 1.6.0
    dotenv: ^16.4.5 => 16.4.5
    dotenv-cli: ^7.4.2 => 7.4.2
    embla-carousel-react: ^8.4.0 => 8.4.0
    esbuild: ^0.24.0 => 0.24.0
    eslint: ^9.15.0 => 9.15.0
    eslint-plugin-curly-quotes: ^1.3.2 => 1.3.2
    eslint-plugin-formatjs: ^5.2.5 => 5.2.5
    eslint-plugin-perfectionist: ^3.9.1 => 3.9.1
    eslint-plugin-react-compiler: ^19.0.0-beta-63b359f-20241101 => 19.0.0-beta-63b359f-20241101
    howler: ^2.2.4 => 2.2.4
    inngest: ^3.25.1 => 3.25.1
    inngest-cli: ^1.1.0 => 1.1.0
    isbot: ^5.1.17 => 5.1.17
    json-stable-stringify: ^1.1.1 => 1.1.1
    jsrsasign: ^11.1.0 => 11.1.0
    jszip: ^3.10.1 => 3.10.1
    knip: ^5.37.1 => 5.37.1
    langchain: ^0.3.6 => 0.3.6
    langsmith: ^0.2.5 => 0.2.5
    microsoft-cognitiveservices-speech-sdk: ^1.41.0 => 1.41.0
    morgan: ^1.10.0 => 1.10.0
    nanoid: ^5.0.8 => 5.0.8
    nock: ^14.0.0-beta.15 => 14.0.0-beta.15
    npm-run-all: ^4.1.5 => 4.1.5
    openai: ^4.72.0 => 4.72.0
    openapi-fetch: ^0.13.0 => 0.13.0
    openapi-typescript: ^7.4.3 => 7.4.3
    postcss: ^8.4.49 => 8.4.49
    posthog-js: ^1.186.1 => 1.186.1
    prisma: ^5.22.0 => 5.22.0
    random: ^5.1.1 => 5.1.1
    react: ^18.3.1 => 18.3.1
    react-compiler-runtime: ^19.0.0-beta-63b359f-20241101 => 19.0.0-beta-63b359f-20241101
    react-dom: ^18.3.1 => 18.3.1
    react-dropzone: ^14.3.5 => 14.3.5
    react-intl: ^7.0.1 => 7.0.1
    react-markdown: ^9.0.1 => 9.0.1
    react-router: ^7.0.1 => 7.0.1
    recharts: ^2.13.3 => 2.13.3
    rehype-raw: ^7.0.0 => 7.0.0
    remeda: ^2.17.3 => 2.17.3
    remix-flat-routes: ^0.6.5 => 0.6.5
    remix-themes: ^1.5.1 => 1.5.1
    svix: ^1.40.0 => 1.40.0
    tailwind-merge: ^2.5.4 => 2.5.4
    tailwindcss: ^3.4.15 => 3.4.15
    tailwindcss-animate: ^1.0.7 => 1.0.7
    tiny-invariant: ^1.3.3 => 1.3.3
    tsx: ^4.19.2 => 4.19.2
    typescript: ^5.6.3 => 5.6.3
    typescript-eslint: ^8.14.0 => 8.14.0
    uuidv4: ^6.2.13 => 6.2.13
    vite: ^5.4.11 => 5.4.11
    vite-plugin-babel: ^1.2.0 => 1.2.0
    vitest: ^2.1.5 => 2.1.5
    zod: ^3.23.8 => 3.23.8
    zodix: ^0.4.4 => 0.4.4

We are working on a new sdk specific for react router

Just to give an update here, I'm awaiting feedback on an issue I filed at the Remix repository: https://github.com/remix-run/react-router/issues/12399 (there were holidays in America so waiting time is expected).
Once that's fixed I'm positive that a Beta release won't take long afterwards.

Hello folks, since the issue mentioned above was fixed I was able to update the PR. You could give this version a try:
npm install<EMAIL_ADDRESS>--save-exact

Inside your root.tsx add the following (in addition to the already existing things):
import { rootAuthLoader } from<EMAIL_ADDRESS>import { ClerkProvider, SignedIn, SignedOut, UserButton, SignInButton } from "@clerk/react-router";

export async function loader(args: Route.LoaderArgs) {
  return rootAuthLoader(args)
}

export default function App({ loaderData }: Route.ComponentProps) {
  return (
    <ClerkProvider loaderData={loaderData}>
      <header className="flex items-center justify-center py-8 px-4">
        <SignedOut>
          <SignInButton />
        </SignedOut>
        <SignedIn>
          <UserButton />
        </SignedIn>
      </header>
      <main>
        <Outlet />
      </main>
    </ClerkProvider>
  );
}

The full docs are being worked on here: https://github.com/clerk/clerk-docs/pull/1760

Hey, @LekoArts. I just tried the build you posted and found that it works well for my side project. Once set up, I can't tell the difference from the Remix version.

@LekoArts Thanks for all your work on this. After following your instructions, I'm getting the error: useNavigate() may be used only in the context of a  component.
I am attempting to upgrade a Remix v2 + React 19 app to RR7. Is this a known error or am I doing something else wrong? Maybe a conflict because of React 19?

@iangrayhazzard Thanks for giving it a try and reporting back what solved your issue. As far as I can tell our library should be doing everything correctly, so I'd encourage you to report these issues to the React Router folks so that they can solve it.

That's amazing @LekoArts you are the best!!
Just a suggestion, I'd throw a redirect rather than returning it if the user is not signed in:
https://remix.run/docs/ja/main/utils/redirect

And you can throw redirects to break through the call stack and redirect right away:

if (!session) {
  throw redirect("/login", 302);
}

@ZeldOcarina The React Router docs only show returning it as also mentioned in this issue (https://github.com/remix-run/react-router/issues/12335) so I'd need to ask them what it correct now. Or if either is fine.

Oh I see.. maybe there's a difference with React Router..


Workflows: Added pause and resume commands to manage Workflows and removed the delete command

Summary
Added pause and resume commands to manage Workflows. Also commented out the delete command, as it is not yet implemented in our API.
Finally, took the chance to fix some indentation issues on a script file.
Related Wrangler PR:
https://github.com/cloudflare/workers-sdk/pull/7121

Wrangler was updated with the commands here. Can someone, please merge this? Thanks.

@bruxodasilva looks like you're going to have to chase down a code owner for an approval:


Anyone esle

didnt have this until rn now was working just fine and i reinstalled still

Same here, 3.2.3 seems to have been broken.

No. Some of TweetDeck APIs are deleted by X.
Please delete this post. Do not waste maintainer's time

Getting the same issue

Duplicate of https://github.com/dimdenGD/OldTweetDeck/issues/188


Delete vendor and add it to .gitignore

vendor files are useless when .git folders aren't there as well, because it disables the ability to use composer update. Composer need the .git folder for dev versions which are cloned with git instead of using ZIPs by default. composer.lock still ensures that there will be always the exact same dependencies.

#2 includes this.


LEGO: Pull request from lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20210724213305528 to main

LEGO: Pull request from lego/hb_04604851-bac4-4681-9f74-73de611d6e48_20210724213305528 to main with localized lcls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.002%) to 42.475%

Totals

Change from base Build<PHONE_NUMBER>:
-0.002%

Covered Lines:
26757

Relevant Lines:
57064

💛  - Coveralls


Bumped wagtail to 1.5.2 (migration req'd) and Django to 1.9.7.

This change is

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Map chart tooltip issues

Describe the bug

When the spatial analysis is executed, the value information of the tooltip is displayed differently.

If choropleth is the default value, no value information is displayed in the tooltip

To Reproduce
Steps to reproduce the behavior:

Go to mapchart
Click on spatial analysis
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
1.

Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

@kyungtaak  작업중인 브렌치는 f#1825_map-chart-tooltip 입니다.


compute_cost() function cannot find map information.

After I read your paper and code, I found that the map-based velocity screening mechanism should be inside the compute_cost() function, but I can't find where the input about the 2D grid map information is. I found that self.gc was initialized to none, and I didn't see any modifications later. Could you please help me out?

Hi, thanks for your quesstion :)
Yes, the map-based velocity screening mechanism is implemented in the compute_cost() function in the policy, and policy.gc is modified in the function get_gc() in sarl_star_node(line 172).
Note that in sarl_star_node.py (line 113), we defined a node to subscribe the global costmap published by move_base:
self.global_costmap_sub = rospy.Subscriber('/move_base/global_costmap/costmap', OccupancyGrid, self.get_gc)
which will call the function: get_gc()
That is why we need to launch the move_base before the sarl_star_node in the launch file
Hope this will help!


Access the transit callback index generated by AddMatrixDimension

What version of OR-tools and what language are you using?
Version: master/v 8.1.8487.
Language: Python
Which solver are you using (e.g. CP-SAT, Routing Solver, GLOP, BOP, Gurobi)
Routing Solver
What operating system (Linux, Windows, ...) and version?
LInux
What did you do?
Steps to reproduce the behavior:
I have been experimenting with the AddMatrixDimension call.  It is fast and exactly what I'm looking for, but there is an issue.
The code does this:
https://github.com/google/or-tools/blob/4cfd14164162be7727b8e4ee992c4b2c49eb768e/ortools/constraint_solver/routing.cc#L959-L965
In short, the transit callback function is created en passant, so to speak.
This is a problem because I want to use the same callback as the argument to routing.SetArcCostEvaluatorOfAllVehicles()
Is there a way via the API to access the current value of transit_evaluators_.size(), as is done at line https://github.com/google/or-tools/blob/4cfd14164162be7727b8e4ee992c4b2c49eb768e/ortools/constraint_solver/routing.cc#L793?
My current ugly ugly hack is:
    # time
    routing.AddMatrixDimension(
        ev.duration_cache.tolist(), # underlying travel time (duration) matrix
        int(demand.horizon),  # max time is end of time horizon
        False,  # don't set time to zero...vehicles can wait at depot if necessary
        time_dimension_name)
    demand_callback = partial(ev.get_demand_callback(), manager)
    demand_callback_index = routing.RegisterUnaryTransitCallback(demand_callback)
    # super duper possibly buggy ugly HACK
    time_callback_index = demand_callback_index - 1
    routing.SetArcCostEvaluatorOfAllVehicles(time_callback_index)

In other words, I create another transit callback, then subtract one from its returned index to guess the value of the MatrixDimension's internally created callback function.

so if I understand correctly you would like to change
https://github.com/google/or-tools/blob/4cfd14164162be7727b8e4ee992c4b2c49eb768e/ortools/constraint_solver/routing.h#L482-L491
to something like this
std::tuple<bool, int> AddMatrixDimension(
     std::vector<std::vector<int64> /*needed_for_swig*/> values,
     int64 capacity, bool fix_start_cumul_to_zero, const std::string& name);

the second argument being the RegisterCallback index ?
so in python hope to have
success, callback_index = routing.AddMatrixDimension(...)

so if I understand correctly you would like to change
https://github.com/google/or-tools/blob/4cfd14164162be7727b8e4ee992c4b2c49eb768e/ortools/constraint_solver/routing.h#L482-L491
to something like this
std::tuple<bool, int> AddMatrixDimension(
     std::vector<std::vector<int64> /*needed_for_swig*/> values,
     int64 capacity, bool fix_start_cumul_to_zero, const std::string& name);

the second argument being the RegisterCallback index ?
so in python hope to have
success, callback_index = routing.AddMatrixDimension(...)

Yes that would work.
But perhaps more general approach is to make functions for routing.RegisterMatrixTransitCallback([matrix data]) and RegisterVectorTransitCallback
The problem I’m trying to fix is the slow process of calling back to python from c++. I already create matrices and vectors for my dimension callbacks, and it is so much (8x to 10x) faster to use the matrix and vector dimension variants and just pass in all the data at once.

Yes that would work.
But perhaps more general approach is to make functions for routing.RegisterMatrixTransitCallback([matrix data]) and RegisterVectorTransitCallback
The problem I’m trying to fix is the slow process of calling back to python from c++. I already create matrices and vectors for my dimension callbacks, and it is so much (8x to 10x) faster to use the matrix and vector dimension variants and just pass in all the data at once.

Maybe something like this, just copy and paste from what is there (and sorry, I'm not going to pretend my C++ skills are good enough to submit a patch).
int RegisterMatrixCallback(std::vector<std::vector<int64>> values,
                           RoutingModel* model) {
  all_transits_positive = one_liner_are_values_positive(values);
  return RegisterCallback(
                          [model, values](int64 i, int64 j) {
                            return values[manager_.IndexToNode(i).value()]
                                         [manager_.IndexToNode(j).value()];
                          },
                          all_transits_positive
}

Note that I'm pretty sure one can't simply refer to manager_ like I have above.

Maybe something like this, just copy and paste from what is there (and sorry, I'm not going to pretend my C++ skills are good enough to submit a patch).
int RegisterMatrixCallback(std::vector<std::vector<int64>> values,
                           RoutingModel* model) {
  all_transits_positive = one_liner_are_values_positive(values);
  return RegisterCallback(
                          [model, values](int64 i, int64 j) {
                            return values[manager_.IndexToNode(i).value()]
                                         [manager_.IndexToNode(j).value()];
                          },
                          all_transits_positive
}

Note that I'm pretty sure one can't simply refer to manager_ like I have above.

thinking of it, maybe we could simply add it as an extension/sugar in the RoutingModel wrapper directly...
i.e. the ultimate goal is to have the matrix captured by copy in the C++ side to avoid the python/C++ traversal cost when used.
ps: should be model->manager_ if this member is public, otherwise need to check if there is a RoutingModel::GetManager() method...

thinking of it, maybe we could simply add it as an extension/sugar in the RoutingModel wrapper directly...
i.e. the ultimate goal is to have the matrix captured by copy in the C++ side to avoid the python/C++ traversal cost when used.
ps: should be model->manager_ if this member is public, otherwise need to check if there is a RoutingModel::GetManager() method...

Yes, the routing.i python api has the AddMatrixDimension call, and AddVectorDimension.  But the issue is that I need the callback index in order to use the "passed matrix data callback" for the  call to routing.SetArcCostEvaluatorOfAllVehicles().
I can envision situations in which one does not need to create a dimension, but still wants to call  routing.SetArcCostEvaluatorOfAllVehicles() using a very large matrix.  That's why I'm suggesting that it might be the most useful to add matrix and vector versions of RegisterCallback.

Yes, the routing.i python api has the AddMatrixDimension call, and AddVectorDimension.  But the issue is that I need the callback index in order to use the "passed matrix data callback" for the  call to routing.SetArcCostEvaluatorOfAllVehicles().
I can envision situations in which one does not need to create a dimension, but still wants to call  routing.SetArcCostEvaluatorOfAllVehicles() using a very large matrix.  That's why I'm suggesting that it might be the most useful to add matrix and vector versions of RegisterCallback.

@jmarca do a little bit of rework now we have in pyhon:
int RegisterUnaryTransitVector([....]) # Since we have RegistUnaryTransitCallback()
int RegisterTransitMatrix([[...],[...],...]) # Since we have RegistTransitCallback()

PairIntBool AddVectorDimension([...],....)
PairIntBool AddMatrixDimension([[...],[...],...],....)

usage:
p = routing.AddMatrixDimenion(...)
transit_id = p[0] # get the registered transit callback id
success = p[1] # get the boolean return of AddDimension

I didn't find a way in "pure" SWIG to do :disappointed:
transit_id, success = routing.AddMatrixDimension(...)

You can also take a look at https://github.com/google/or-tools/blob/master/examples/tests/test_routing_api.py

Awesome.

Maybe, I just find a way to output a tuple so API will change again to expected:
transit_id, success = routing.AddMatrixDimension(...)

ps: not pushed yet

I’ll pull again and test it out this weekend. I have high hopes it will be much faster.

@Mizux is it possible to use this approach for item weight? Following the documentation usually we have a dictionary of demands, but in theory could we supply a matrix of weights, where for collections the destination value is positive and for deliveries the destination value is negative?
Ive started using AddMatrixDimension with python but my worry is that the other callbacks will be a bottleneck


Improve docs about custom tracing instrumentation

The current docs or code says nothing about the fact that it's Span.Op that should be "db" for span to be classified as "db" in Sentry interface.
Mongo integration in sentry-javascript adds data["dbName"], but replicating that in Go via Span.Data apparently doesn't translate into anything in the Sentry UI.

We have https://github.com/getsentry/develop/issues/392 tracking documenting the special-cased op values.


fix: use exec in entrypoint

Signed-off-by: Matej Vasek<EMAIL_ADDRESS>

This ensures that the server process is running directly not as a shell's fork. It's important for signal handling.


Use function get_yaml_item_value

Enables using default even though the value was loaded as None.

/fun-test

/funtest


Have an edge point to the centre of another edge

I assume this can be done by calling graph.updateItem and set the target to an {x, y} that is the center of the edge.
The center of the edge can be calculated by having access to the target edge, which can be done at click events. However, I am not sure where I should do this to have access to both the graph, to call updateItem, as well as the target edge. When the edge is clicked, a event is fired in my app that adds this relation to the redux store. I think it should be done with afterDraw, but here I can't access graph.updateItem

I currently solve this by having a "helper node" that has 0.01 width and height that can be targeted, but this messes with the layout as the node introduces a new layer of depth

Why do you need such an edge? Could you pls introduce your original requirements?

The app I am developing is for text analysis purposes where edges pointing to edges is a visualization of relevance argument

I discovered that updateItem in afterrender could not solve the problem

The app I am developing is for text analysis purposes where edges pointing to edges is a visualization of relevance argument

So the other end of this type of edge is a node?

Yes correct

In my code I reposition the node that is supposed to point to the center of the edge in afterrender. This does not stop the node from taking up space in the layout.
Is there any way to stop the node from using this space?
I also would still love a solution without using a hidden "helper node"

We say the edge is a relation between two objects(nodes) in graph. Actually, The 'edge' you described does not meet the such a definition.
But to achieve the requirement, I will suggest you to add the edge with two end nodes first, and in afterrender, call the following code to update the edge to point to a coordinate:
graph.updateItem(edge, {
target: { x: 0, y: 0 } // fill it with the coordinate of the center of the pointed edge
})

Thanks, I'll try that, but do you have any ideas on how I can prevent the node and relation to alter the layout?

I'm thinking the best way to do this is to remove the node from the document flow

We say the edge is a relation between two objects(nodes) in graph. Actually, The 'edge' you described does not meet the such a definition.
But to achieve the requirement, I will suggest you to add the edge with two end nodes first, and in afterrender, call the following code to update the edge to point to a coordinate:
graph.updateItem(edge, {
target: { x: 0, y: 0 } // fill it with the coordinate of the center of the pointed edge
})

This works but the node still shifts the layout


Uncaught Error: dlopen(/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom....

[Enter steps to reproduce:]
1 print(
2. ...
Atom: 1.53.0 x64
Electron: 6.1.12
OS: Unknown macOS version
Thrown From: Atom Core
Stack Trace
Uncaught Error: dlopen(/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app.asar.unpacked/node_modules/keyboard-layout/build/Release/keyboard-layout-manager.node, 1): image not found
At electron/js2c/asar.js:138

Error: dlopen(/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app.asar.unpacked/node_modules/keyboard-layout/build/Release/keyboard-layout-manager.node, 1): image not found
    at process.func (electron/js2c/asar.js:138:31)
    at process.func [as dlopen] (electron/js2c/asar.js:138:31)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:828:18)
    at Object.func (electron/js2c/asar.js:138:31)
    at Object.func [as .node] (electron/js2c/asar.js:147:18)
    at Module.load (internal/modules/cjs/loader.js:645:32)
    at Function.Module._load (internal/modules/cjs/loader.js:560:12)
    at Module.require (/app.asar/static/index.js:72:46)
    at require (internal/modules/cjs/helpers.js:16:16)
    at customRequire (/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app/static/<embedded>:1:696929)
    at get_KeyboardLayoutManager (/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app/static/<embedded>:14:2788409)
    at get_manager (/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app/static/<embedded>:14:2788511)
    at Object.getCurrentKeyboardLayout (/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app/static/<embedded>:14:2788637)
    at e.keystrokeForKeyboardEvent (/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app/static/<embedded>:14:1057732)
    at KeymapManager.keystrokeForKeyboardEvent (/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app/static/<embedded>:11:1227949)
    at KeymapManager.handleKeyboardEvent (/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app/static/<embedded>:11:1225934)
    at WindowEventHandler.handleDocumentKeyEvent (/private/var/folders/xy/7pd3z6_n36d6th6h_4bzl3n00000gn/T/wzQL.rNjjXm/Atom.app/Contents/Resources/app/static/<embedded>:11:284919)

Commands
     -4:13.7.0 application:open (atom-workspace.workspace.scrollbars-visible-always.theme-one-dark-syntax.theme-one-dark-ui)

Non-Core Packages

Thanks for taking the time to contribute!
We noticed that this is a duplicate of https://github.com/atom/atom/issues/21285. You may want to subscribe there for updates.
Because we treat our issues list as the Atom team's backlog, we close duplicates to focus our work and not have to touch the same chunk of code for the same reason multiple times. This is also why we may mark something as duplicate that isn't an exact duplicate but is closely related.
For information on how to use GitHub's search feature to find out if something is a duplicate before filing, see the How Can I Contribute? section of the Atom CONTRIBUTING guide.


Implement reusable hook for authentication

Make it easy to check user groups and permissions
Implement new permission system that allows more flexibility

Own roles for student, instructor, grader

Please make sure to have these roles in keycloak / in the JWT only. That would be super important to me

I can put these roles in keycloak but not sure if it makes some things harder as my idea of the permissions were to make them topic / thesis based.
Example:

If you create a new topic which students can apply to, the creator can define Reviewers that will have permissions to review the applications for that topic
If you start a new thesis, each thesis can have students, instructors and graders and only the accounts added to this list can see / edit that specific thesis

so in my idea there is not really a global role (apart from maybe a global admin) but only roles for specific thesis / topics. Does that make sense? Generally I will use keycloak for all global permission stuff


Wire up included man pages to Homebrew distribution

We need to wire up the Homebrew distribution to include the man pages as part of the distribution. That way when people install git-ps-rs via Homebrew they get all the man pages installed as well.

I did the initial research for this and added notes to the Homebrew formula so that when we are ready it is trivial to add. Therefore, I am closing this issue.


Teletype error

Every time I want to enable teletype package, I got this error: "Failed to authenticate to teletype - Signing in failed with error: `Unexpected token c in JSON at position 90". Pls help

Hello, @Jokas! Thanks for your report, I think it might be helpful to see which response you are getting back from the Teletype API, so here are some steps that you can follow to allow us to detect what's going on:

Before signing in, open the DevTools (CmdOptionI on macOS) and focus the Network Panel:

While the DevTools are still open, attempt to sign in and wait until the /identity request gets recorded:

Right click on the request and click:

Copy->Copy Response Headers, and paste the contents of your clipboard here.
Copy->Copy Response, and paste the contents of your clipboard here.

Thanks in advance for your help! 🙇

Hello @as-cii
I am running into the same issue as @Jokas. Per your instructions I have gone through the DevTools and copied the response I'm getting.
The error is attached to the "nuclicons.tff" file.
Response: "Establishing a teletype connection failed with error: Unexpected token � in JSON at position 0"

No idea if this is related, but nuclicons.tff is the icon font found in Atom IDE UI.
Do you have the atom-ide-ui package installed? Does Teletype work if you disable the atom-ide-ui package package?

@simurai I already filed an issue over at atom-ide-ui regarding the missing ttf - it shouldn't have anything to do with this Teletype error and is "harmless".

If you're experiencing these errors, please upgrade to the latest version of Teletype (currently 0.7.0).
To aid in diagnosing and debugging these errors, Teletype 0.7.0 enhances the Teletype UI to provide a pre-filled GitHub Issue body with useful diagnostic information (https://github.com/atom/teletype/pull/317). If you continue experiencing these errors, please follow the link in the Teletype UI to open an issue:

We haven't received any reports of this error since rolling out the changes in https://github.com/atom/teletype-server/pull/47 a few weeks ago. 😅
With that in mind, I'm going to close this issue. If anyone is still consistently seeing package initialization errors, please let us know.


Add missing dependencies requests and ipython

The file viz.py imports both requests and IPython, but these are not
declared in setup.py.  Because of this, after a pip install mapboxgl,
attempting to import mapgoxgl.utils fails.
This adds the packages to setup.py, and after this the import succeeds.

Any chance a new release can be created so that this fix is included (along with any others that have since landed on master since 0.10.2 was released)? The missing imports has bitten me, and I must remember to explicitly include ipython in my own dependency list.