Your VS Code extension is affected by a security issue

Hi,
Kenneth here from the VS Code team.
Your extension is affected by https://code.visualstudio.com/blogs/2018/11/26/event-stream,
We will need to take action to block your extension if your extension isn't updated in a reasonable timeframe.
Please get in touch at<EMAIL_ADDRESS>/k

Thanks for fixing quickly!


fix(docs): add missing firmware events

I noticed these events were missing from the docs - please feel free to edit to make the descriptions more clear

Thanks


Does this library support Piwik v3.x?

Just  a query on which version(s) of Piwik are supported as this is not listed on the project page? Is it tested with Piwik v3.0.1 yet?
Many thanks,
Adam.

Hello, sorry for the late reply.
This library should operate correctly on all recent Piwik versions but may not support some of the latest features.


Change Python scripts' shebang to /usr/bin/python3

Description of the changes
Gramine Python utilities should use the system-wide Python interpreter instead of the local version of Python (which may not have system-wide-installed Python packages). This was detected when running the default Python Ubuntu Docker image.
Corresponding Gramine PR: https://github.com/gramineproject/gramine/pull/429
Fixes https://github.com/gramineproject/gramine/issues/482
How to test this PR?
Run example: https://gramine.readthedocs.io/projects/gsc/en/latest/#example

This change is

this is going to break on nixos.
what's the rationale of not using   #!/usr/bin/env python ?

@aep Please check our discussion in the related PR: https://github.com/gramineproject/gramine/pull/429.
For a quick reference (where it all started), check https://hub.docker.com/_/python and the section Multiple Python versions in the image.


Add V3 Schema Generator

Turns off filtering and sorting by default
Turning on granular filtering per field
Keep TypeScript generated classes even if they're not exposed to API

Merged into beta branch: https://github.com/goldcaddy77/warthog/tree/beta


Avoid trying to create duplicates in site migration

Codecov Report

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

@@           Coverage Diff           @@
##           master    #1248   +/-   ##
=======================================
  Coverage   70.14%   70.14%
=======================================
  Files         118      118
  Lines        6353     6353
  Branches      812      812
=======================================
  Hits         4456     4456
  Misses       1732     1732
  Partials      165      165

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 171df25...0b9097b. Read the comment docs.


Editing for a capital "O" at beginning of sentence

Practicing a pull request. :)

This won't work. You're starting from your master branch and merging in to dev, so there are a ton of extra changes that aren't yours. You'll want to edit your fork of the same branch you're merging to.
We also probably want to leave openaps lowercased, to differentiate it from OpenAPS.
Have you done the first-pr thing to add yourself to the loops in progress page yet? That's a good place to start PR'ing.


Add smcFanControl

NOTE: Each discrete (stand-alone) request should be in its own issue.
Put "Add ____" as Title
[x] Done
Provide a link to the proposed addition.
https://github.com/hholtmann/smcFanControl
Explain why it should be added
A small tool can that can set the fan speed manually.
Additional context
Can be used to cool down the mac.
Issue Checklist
Put an x in the boxes once you've completed each step. You can also fill these out after creating the issue. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before responding to the issue.

[x] I have checked for other similar issues
[x] I have explained why this change is important
[x] I have added necessary documentation (if appropriate)

Open a PR

Made PR #403

It seems not actively maintained. The latest release is Oct 2016: https://github.com/hholtmann/smcFanControl/releases

Thanks for checking, @xcv58.
I agree this should not be added, as it's no longer maintained.
My bad on that call.


fixes #162: Conversion error in case of nested field of array records

Fixes #162
Fixes the bug
Proposed Changes (Mandatory)
A brief list of proposed changes in order to fix the issue:

fixed the bug into ValueConverter class
added log in case of Neo4j error code listOf("Neo.ClientError.Statement.PropertyNotFound", "Neo.ClientError.Statement.SemanticError", "Neo.ClientError.Statement.ParameterMissing") because throwing an exception in that case stops the connect plugin. We also need to investigate if there are some other errors that we want they don't cause a plugin stop.

Thanks a lot Andrea, would you mind adding tests for that array case?

@jexp I updated the PR with the required changes:
Now we have a unit test for the converter ValueConverterTest where we create a tree structure like this:
       body
      /    \
 [p, ...]   [ul, ...]
                |
          [li[class, ...], ...]

thanks a lot for the feedback!


Unit tests for groups scanner.

This is my first time to unit test trees, so I would appreciate any suggestions to do this more easily or better.
My current approach involve:
1: take advantage of python's pickle library to stash a tree object in a file, which can later be re-loaded for testing
2: take advantage of anytree's ability to print out an ascii representation of a tree, which can be used for assertions
3: this way, this saves some amount of work to write test codes to build or traverse the tree

Coverage increased (+1.8%) to 82.963% when pulling af03530918366567cf342c10772f228e1471c3cf on groupscannertest into 0d368810d374e48dbac8df153ab45e89056b71a7 on master.

Coverage increased (+1.8%) to 82.963% when pulling c7e677b412acb4b2e55985242a6d63b139fca289 on groupscannertest into 0d368810d374e48dbac8df153ab45e89056b71a7 on master.

Coverage increased (+1.8%) to 82.963% when pulling acf2f63b80af01c85f4cd44de381b76c423f0ea2 on groupscannertest into 0d368810d374e48dbac8df153ab45e89056b71a7 on master.

Coverage increased (+1.7%) to 81.193% when pulling 526c9a0f13327d085ec1d05cc6194f715816db73 on groupscannertest into ff21527aa52ad31c0b7c8b401fe420c6abe23b35 on master.

Adding cla: yes label, as the PR author is a googler at the time of this PR was created.


Split may_dangle

(Split off from #3390 after discussions with t-types.)
Rendered

because this affects soundness of nearly all code using #[may_dangle], I think the compiler should require #[may_dangle] to be textually changed somehow in order to compile, maybe #[may_dangle2] or #[may_dangle(dropped)]/#[may_dangle(!dropped)]? this would make old unadjusted code fail to compile instead of being silently unsound.

since #[may_dangle] T is most commonly used when dropping T, maybe #[may_dangle] could be changed to check validity for dropping T and #[may_dangle(!drop)] T could be used when T doesn't need that? this would also avoid the silent unsoundness afaict.

yes, #[may_dangle(borrowed)] or something is fine. we just don't want to put too much work into it, since this isn't meant for stabilization.
alternatively we could just make the compiler check if drop glue for T was generated. (in other words, the compiler can effectively check if drop_in_place was called inappropriately.) but having that happen at monomorphization time is less than ideal. unfortunately the alternative to that is to go full RFC 3390.

we also note that neither this nor #3390 are an issue for future proposals. in particular, these would NOT block typestate/partially initialized types. they're orthogonal.

c.f. rust-lang/rust#110288


Does not work with 0.13

Currently it seems 0.13 will only load this Module, if it contains provider mappings (e.g. in versions.tf).

Thanks for letting me know about this -- I haven't started using 0.13 but will check this out today or tomorrow.  I'll also take a PR if you have already explored this.

Well our generated versions.tf looks like this:
terraform {
  required_providers {
    docker = {
      source = "terraform-providers/docker"
    }
    null = {
      source = "hashicorp/null"
    }
  }
  required_version = ">= 0.13"
}

Would probably be good to verify, whether it still works on 0.12 excluding the required_version line.

I've applied your PRs and updated required_versions   See tag v0.4.0. Thanks again!


python311Packages.restrictedpython: 6.1 -> 6.2

Changelog: https://github.com/zopefoundation/RestrictedPython/blob/6.2/CHANGES.rst
Description of changes

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

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

7 packages built:

home-assistant-component-tests.python_script
portmod
portmod.dist
python310Packages.restrictedpython
python310Packages.restrictedpython.dist
python311Packages.restrictedpython
python311Packages.restrictedpython.dist


KEB reverts erscontext cleanup

Description
Changes proposed in this pull request:

...
...
...

Related issue(s)

/retest


[Bug]: Query Not Working!

Describe the bug
No response
To Reproduce
No response
Expected Behavior
No response
Screenshot/ Video
No response
Desktop (please complete the following information)
No response
Additional context
No response

Fixed!


Could not find offset_information  Apple iPad Pro (12.9-inch) (4th generation)

While taking iPad Pro screenshots I'm getting below errors.
Couldn't find template for screenshot type 'Apple iPad Pro (12.9-inch) (4th generation) Space Gray'
Tried looking for offset information for 'portrait', Apple iPad Pro (12.9-inch) (4th generation) in '/Users/xxxxx/.fastlane/frameit/latest/offsets.json'
[00:30:57]: Could not find offset_information for './xxxx-gray.png'

✅ fastlane environment ✅
Stack

Key
Value

OS
10.15.4

Ruby
2.5.0

Bundler?
true

Git
git version 2.24.3 (Apple Git-128)

Installation Source
~/.rvm/gems/ruby-2.5.0/bin/fastlane

Host
Mac OS X 10.15.4 (19E287)

Ruby Lib Dir
~/.rvm/rubies/ruby-2.5.0/lib

OpenSSL Version
OpenSSL 1.1.0g  2 Nov 2017

Is contained
false

Is homebrew
false

Is installed via Fabric.app
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
11.5

System Locale

Variable
Value

LANG
en_US.UTF-8
✅

LC_ALL

LANGUAGE

fastlane files:
No Fastfile found
No Appfile found
fastlane gems

Gem
Version
Update-Status

fastlane
2.148.1
✅ Up-To-Date

Loaded fastlane plugins:
No plugins Loaded
Loaded gems

Gem
Version

did_you_mean
1.2.0

executable-hooks
1.4.2

bundler-unload
1.0.2

rubygems-bundler
1.4.4

bundler
1.16.1

CFPropertyList
3.0.2

public_suffix
2.0.5

addressable
2.7.0

atomos
0.1.3

aws-eventstream
1.1.0

aws-partitions
1.320.0

aws-sigv4
1.1.3

jmespath
1.4.0

aws-sdk-core
3.96.1

aws-sdk-kms
1.31.0

aws-sdk-s3
1.66.0

babosa
1.0.3

claide
1.0.3

colored
1.2

colored2
3.1.2

highline
1.7.10

commander-fastlane
4.4.6

declarative
0.0.10

declarative-option
0.1.0

digest-crc
0.5.1

unf_ext
<IP_ADDRESS>

unf
0.1.4

domain_name
0.5.20190701

dotenv
2.7.5

emoji_regex
1.0.1

excon
0.73.0

multipart-post
2.0.0

faraday
1.0.1

http-cookie
1.0.3

faraday-cookie_jar
0.0.6

faraday_middleware
1.0.0

fastimage
2.1.7

gh_inspector
1.1.3

jwt
2.1.0

memoist
0.16.2

multi_json
1.14.1

os
1.1.0

signet
0.14.0

googleauth
0.12.0

httpclient
2.8.3

mini_mime
1.0.2

uber
0.1.0

representable
3.0.4

retriable
3.1.2

google-api-client
0.38.0

google-cloud-env
1.3.1

google-cloud-errors
1.0.0

google-cloud-core
1.5.0

google-cloud-storage
1.26.1

json
2.3.0

mini_magick
4.10.1

multi_xml
0.6.0

plist
3.5.0

rubyzip
1.3.0

security
0.1.3

naturally
2.2.0

simctl
1.6.8

slack-notifier
2.3.2

terminal-notifier
2.0.0

unicode-display_width
1.7.0

terminal-table
1.8.0

tty-screen
0.7.1

tty-cursor
0.7.1

tty-spinner
0.9.3

word_wrap
1.0.0

nanaimo
0.2.6

xcodeproj
1.16.0

rouge
2.0.7

xcpretty
0.3.0

xcpretty-travis-formatter
1.0.0

generated on: 2020-05-26

Hmmmmm 🤔
https://github.com/fastlane/fastlane/blob/9075249574c33b0f28735ac2003078d8db52260d/frameit/lib/frameit/device_types.rb#L131

Some issues might be covered under the Apple Limited Warranty, AppleCare+, or consumer law, in which case there’s no fee to replace your product. If your iPad has accidental damage, you’ll pay an AppleCare+ service fee, as shown below.

Some example screenshots would be useful for us to try to understand the issue

I get the same error if I try to frame an iPad Pro screenshot.
It seems, that the code searchs for "Apple iPad Pro (12.9-inch) (4th generation)", but according to https://github.com/fastlane/frameit-frames/tree/gh-pages/latest it does not exist.

It is not updated since 7 months ago, don't think to be related

Exactly that is the problem. In https://github.com/fastlane/fastlane/commit/6fccfc062bae9cb1e435923ec5982efac78db474#diff-9a7418bad03e74c379cc4e6044fc26d4 you can see, that for 23 days frameit trys to use the frame "'Apple iPad Pro (12.9-inch) (4th generation) ...'" but in https://github.com/fastlane/frameit-frames/tree/gh-pages/latest such a frame has not been added.
As workaround you can go to your local frames folder copy the "Apple iPad Pro (12.9-inch) (3rd generation)" files rename the copy "Apple iPad Pro (12.9-inch) (4th generation)" and also modify the "offsets.json"-file accordingly.

I can confirm, getting this right now. Running frameit is giving me
Couldn't find template for screenshot type 'Apple iPad Pro (12.9-inch) (4th generation) Space Gray'
Please run `fastlane frameit download_frames` to download the latest frames

To reproduce, just run snapshot with the device iPad Pro (12.9-inch) (4th generation), then run frameit.

Would be good to have this included! We are also having the same problem.


neoforge and Quilt add support?

I would like to see support for the creation of neoforged and quilt added in intellj.

architectury-plugin need to be update to support Neoforge from 1.21 onward.
Is there an alternative plugin to support Neoforge & Fabric?


Fix Outstanding Pylint Issues

Fix Outstanding Pylint Issues
Problem
Due to pylint not running properly in our GitHub auto-pre-commit-runner, a number of issues have seeped into the develop branch that need to be addressed.
Solution
Resolve all pylint issues in the develop branch.
Additional Information
A full pylint report reflecting the current state of develop is below:
- hook id: pylint
- exit code: 30

************* Module flight.move_to_test
flight/move_to_test.py:22:0: C0301: Line too long (105/100) (line-too-long)
flight/move_to_test.py:27:4: C0103: Variable name "PATH" doesn't conform to snake_case naming style (invalid-name)
flight/move_to_test.py:29:4: C0103: Variable name "SYSTEM_ADDRESS" doesn't conform to snake_case naming style (invalid-name)
flight/move_to_test.py:31:4: C0103: Variable name "ALTITUDE" doesn't conform to snake_case naming style (invalid-name)
flight/move_to_test.py:32:4: C0103: Variable name "SPEED" doesn't conform to snake_case naming style (invalid-name)
flight/move_to_test.py:34:4: C0103: Variable name "FAST_PARAM" doesn't conform to snake_case naming style (invalid-name)
flight/move_to_test.py:97:4: W0105: String statement has no effect (pointless-string-statement)
flight/move_to_test.py:7:0: C0411: standard import "import logging" should be placed before "from mavsdk import System" (wrong-import-order)
flight/move_to_test.py:8:0: C0411: standard import "import sys" should be placed before "from mavsdk import System" (wrong-import-order)
************* Module maestro
flight/maestro/maestro.py:6:0: E0401: Unable to import 'serial' (import-error)
************* Module goto
flight/Waypoint/goto.py:31:0: C0301: Line too long (111/100) (line-too-long)
flight/Waypoint/goto.py:65:0: C0301: Line too long (103/100) (line-too-long)
flight/Waypoint/goto.py:8:0: C0411: standard import "import logging" should be placed before "from mavsdk import System" (wrong-import-order)
************* Module flight.goto
flight/goto.py:31:0: C0301: Line too long (111/100) (line-too-long)
flight/goto.py:65:0: C0301: Line too long (103/100) (line-too-long)
flight/goto.py:8:0: C0411: standard import "import logging" should be placed before "from mavsdk import System" (wrong-import-order)
************* Module logger
logger.py:21:0: C0301: Line too long (105/100) (line-too-long)
logger.py:44:0: R1711: Useless return at end of function or method (useless-return)
logger.py:9:0: C0411: standard import "from datetime import datetime" should be placed before "from colorlog import ColoredFormatter" (wrong-import-order)
************* Module flight.flight
flight/flight.py:61:0: C0301: Line too long (101/100) (line-too-long)
flight/flight.py:24:4: W0107: Unnecessary pass statement (unnecessary-pass)
flight/flight.py:27:0: R0903: Too few public methods (1/2) (too-few-public-methods)
flight/flight.py:144:8: W0707: Consider explicitly re-raising using 'except Exception as exc' and 'raise DroneNotFoundError() from exc' (raise-missing-from)
flight/flight.py:168:11: W0703: Catching too general exception Exception (broad-except)
flight/flight.py:184:8: W0702: No exception type(s) specified (bare-except)
flight/flight.py:212:4: W0702: No exception type(s) specified (bare-except)
flight/flight.py:7:0: C0411: standard import "from multiprocessing import Queue" should be placed before "from mavsdk import System" (wrong-import-order)
************* Module communication
communication.py:42:4: R1711: Useless return at end of function or method (useless-return)
communication.py:5:0: R0903: Too few public methods (1/2) (too-few-public-methods)
************* Module flight.search.plot_algo
flight/search/plot_algo.py:10:0: E0401: Unable to import 'pathfinding.finder.a_star' (import-error)
flight/search/plot_algo.py:11:0: E0401: Unable to import 'pathfinding.core.grid' (import-error)
************* Module flight.states.airdrop
flight/states/airdrop.py:16:0: C0301: Line too long (102/100) (line-too-long)
************* Module flight.states.takeoff
flight/states/takeoff.py:4:0: E0401: Unable to import 'config' (import-error)
flight/states/takeoff.py:5:0: C0411: standard import "import logging" should be placed before "import config" (wrong-import-order)
************* Module Move_To_Test
flight/Waypoint/Move_To_Test.py:21:0: C0301: Line too long (105/100) (line-too-long)
flight/Waypoint/Move_To_Test.py:1:0: C0103: Module name "Move_To_Test" doesn't conform to snake_case naming style (invalid-name)
flight/Waypoint/Move_To_Test.py:75:4: W0105: String statement has no effect (pointless-string-statement)
flight/Waypoint/Move_To_Test.py:8:0: C0411: standard import "import logging" should be placed before "import goto" (wrong-import-order)
flight/Waypoint/Move_To_Test.py:9:0: C0411: standard import "from typing import List" should be placed before "import goto" (wrong-import-order)
flight/Waypoint/Move_To_Test.py:10:0: C0411: standard import "import sys" should be placed before "import goto" (wrong-import-order)
************* Module flight.states.start
flight/states/start.py:9:0: W0223: Method 'run' is abstract in class 'State' but is not overridden (abstract-method)
flight/states/start.py:19:26: W0613: Unused argument 'drone' (unused-argument)
************* Module air_drop
flight/maestro/air_drop.py:8:0: C0103: Class name "Airdrop_Control" doesn't conform to PascalCase naming style (invalid-name)
************* Module flight_manager
flight_manager.py:96:8: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)
flight_manager.py:98:34: E1101: Instance of 'BaseManager' has no 'Communication' member (no-member)
flight_manager.py:114:8: W1203: Use lazy % formatting in logging functions (logging-fstring-interpolation)
flight_manager.py:115:8: W1203: Use lazy % formatting in logging functions (logging-fstring-interpolation)
************* Module flight.states
flight/states/__init__.py:14:0: W0105: String statement has no effect (pointless-string-statement)
flight/states/__init__.py:29:0: C0115: Missing class docstring (missing-class-docstring)
flight/states/__init__.py:30:4: C0103: Class constant name "Start_State" doesn't conform to UPPER_CASE naming style (invalid-name)
flight/states/__init__.py:31:4: C0103: Class constant name "Pre_Process" doesn't conform to UPPER_CASE naming style (invalid-name)
flight/states/__init__.py:32:4: C0103: Class constant name "Takeoff" doesn't conform to UPPER_CASE naming style (invalid-name)
flight/states/__init__.py:33:4: C0103: Class constant name "Waypoints" doesn't conform to UPPER_CASE naming style (invalid-name)
flight/states/__init__.py:34:4: C0103: Class constant name "ODLC_Scanning" doesn't conform to UPPER_CASE naming style (invalid-name)
flight/states/__init__.py:35:4: C0103: Class constant name "Air_Drop" doesn't conform to UPPER_CASE naming style (invalid-name)
flight/states/__init__.py:36:4: C0103: Class constant name "Land" doesn't conform to UPPER_CASE naming style (invalid-name)
flight/states/__init__.py:37:4: C0103: Class constant name "Final_State" doesn't conform to UPPER_CASE naming style (invalid-name)
************* Module flight.states.waypoints
flight/states/waypoints.py:32:0: C0301: Line too long (108/100) (line-too-long)
flight/states/waypoints.py:38:0: C0301: Line too long (126/100) (line-too-long)
************* Module vision.common.__init__
vision/common/__init__.py:1:0: R0801: Similar lines in 2 files
==flight.goto:[5:71]
==goto:[5:71]
import asyncio
from mavsdk import System
import logging

async def move_to(
    drone: System, latitude: float, longitude: float, altitude: float, fast_param: float
) -> None:
    """
    This function takes in a latitude, longitude and altitude and autonomously
    moves the drone to that waypoint. This function will also auto convert the altitude
    from feet to meters.

    Parameters
    ----------
    drone: System
        a drone object that has all offboard data needed for computation
    latitude: float
        a float containing the requested latitude to move to
    longitude: float
        a float containing the requested longitude to move to
    altitude: float
        a float contatining the requested altitude to go to (in feet)
    fast_param: float
        a float that determines if the drone will take less time checking its precise location
        before moving on to another waypoint. If its 1, it will move at normal speed, if its less than 1(0.83),
        it will be faster.
    """

    # converts feet into meters
    altitude_in_meters = altitude * 0.3048

    # get current altitude
    async for terrain_info in drone.telemetry.home():
        absolute_altitude: float = terrain_info.absolute_altitude_m
        break

    await drone.action.goto_location(latitude, longitude, altitude_in_meters + absolute_altitude, 0)
    location_reached: bool = False
    # First determine if we need to move fast through waypoints or need to slow down at each one
    # Then loops until the waypoint is reached
    while not location_reached:
        logging.info("Going to waypoint")
        async for position in drone.telemetry.position():
            # continuously checks current latitude, longitude and altitude of the drone
            drone_lat: float = position.latitude_deg
            drone_long: float = position.longitude_deg
            drone_alt: float = position.relative_altitude_m

            #  accurately checks if location is reached and stops for 15 secs and then moves on.
            if (
                (round(drone_lat, int(6 * fast_param)) == round(latitude, int(6 * fast_param)))
                and (
                    round(drone_long, int(6 * fast_param)) == round(longitude, int(6 * fast_param))
                )
                and (round(drone_alt, 1) == round(altitude_in_meters, 1))
            ):
                location_reached = True
                logging.info("arrived")
                # sleeps for 15 seconds to give substantial time for the airdrop, can be changed later.
                await asyncio.sleep(15)
                break

        # tell machine to sleep to prevent contstant polling, preventing battery drain
        await asyncio.sleep(1)
    return (duplicate-code)
vision/common/__init__.py:1:0: R0801: Similar lines in 2 files
==Move_To_Test:[29:59]
==search_path:[111:141]
    drone: System = System()
    await drone.connect(system_address="udp://:14540")

    # initilize drone configurations
    await drone.action.set_takeoff_altitude(12)
    await drone.action.set_maximum_speed(20)

    # connect to the drone
    logging.info("Waiting for drone to connect...")
    async for state in drone.core.connection_state():
        if state.is_connected:
            logging.info("Drone discovered!")
            break

    logging.info("Waiting for drone to have a global position estimate...")
    async for health in drone.telemetry.health():
        if health.is_global_position_ok:
            logging.info("Global position estimate ok")
            break

    logging.info("-- Arming")
    await drone.action.arm()

    logging.info("-- Taking off")
    await drone.action.takeoff()

    # wait for drone to take off
    await asyncio.sleep(10)

    # move to each waypoint in mission (duplicate-code)
vision/common/__init__.py:1:0: R0801: Similar lines in 2 files
==flight.move_to_test:[58:81]
==search_path:[119:142]
    logging.info("Waiting for drone to connect...")
    async for state in drone.core.connection_state():
        if state.is_connected:
            logging.info("Drone discovered!")
            break

    logging.info("Waiting for drone to have a global position estimate...")
    async for health in drone.telemetry.health():
        if health.is_global_position_ok:
            logging.info("Global position estimate ok")
            break

    logging.info("-- Arming")
    await drone.action.arm()

    logging.info("-- Taking off")
    await drone.action.takeoff()

    # wait for drone to take off
    await asyncio.sleep(10)

    # move to each waypoint in mission
    point: int (duplicate-code)
vision/common/__init__.py:1:0: R0801: Similar lines in 2 files
==Move_To_Test:[37:59]
==flight.move_to_test:[58:80]
    logging.info("Waiting for drone to connect...")
    async for state in drone.core.connection_state():
        if state.is_connected:
            logging.info("Drone discovered!")
            break

    logging.info("Waiting for drone to have a global position estimate...")
    async for health in drone.telemetry.health():
        if health.is_global_position_ok:
            logging.info("Global position estimate ok")
            break

    logging.info("-- Arming")
    await drone.action.arm()

    logging.info("-- Taking off")
    await drone.action.takeoff()

    # wait for drone to take off
    await asyncio.sleep(10)

    # move to each waypoint in mission (duplicate-code)
vision/common/__init__.py:1:0: R0801: Similar lines in 2 files
==execute:[37:55]
==goto:[38:56]
    async for terrain_info in drone.telemetry.home():
        absolute_altitude: float = terrain_info.absolute_altitude_m
        break

    await drone.action.goto_location(latitude, longitude, altitude_in_meters + absolute_altitude, 0)
    location_reached: bool = False
    # First determine if we need to move fast through waypoints or need to slow down at each one
    # Then loops until the waypoint is reached
    while not location_reached:
        logging.info("Going to waypoint")
        async for position in drone.telemetry.position():
            # continuously checks current latitude, longitude and altitude of the drone
            drone_lat: float = position.latitude_deg
            drone_long: float = position.longitude_deg
            drone_alt: float = position.relative_altitude_m

            #  accurately checks if location is reached and stops for 15 secs and then moves on.
            if ( (duplicate-code)
vision/common/__init__.py:1:0: R0801: Similar lines in 2 files
==Move_To_Test:[63:82]
==flight.move_to_test:[85:104]
    logging.info("Last waypoint reached")
    logging.info("Returning to home")
    await drone.action.return_to_launch()
    print("Staying connected, press Ctrl-C to exit")

    # infinite loop till forced disconnect
    while True:
        await asyncio.sleep(1)

if __name__ == "__main__":
    """
    Runs through the code until it has looped through each element of
    the Lats and Longs array and the drone has arrived at each of them
    """
    try:
        loop = asyncio.get_event_loop()
        loop.run_until_complete(run())
    except KeyboardInterrupt: (duplicate-code)
vision/common/__init__.py:1:0: R0801: Similar lines in 2 files
==flight.states.__init__:[4:14]
==flight.states.state:[5:15]
from flight.states.start import Start
from flight.states.preprocess import PreProcess
from flight.states.takeoff import Takeoff
from flight.states.waypoints import Waypoints
from flight.states.odlcs import ODLC
from flight.states.airdrop import AirDrop
from flight.states.land import Land
from flight.states.final import Final

 (duplicate-code)
vision/common/__init__.py:1:0: R0801: Similar lines in 2 files
==vision.emergent_object.emergent_object:[122:131]
==vision.standard_object.odlc_image_processing:[46:55]
if __name__ == "__main__":
    import sys

    if len(sys.argv) != 2:
        print("Error: Incorrect number of parameters. Please specify an image file path.")
        sys.exit()

    # read in image
    image_path: str = sys.argv[1] (duplicate-code)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.airdrop -> flight.states.odlcs) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.airdrop -> flight.states.state -> flight.states.odlcs) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.airdrop -> flight.states.land -> flight.states.final -> flight.states.state -> flight.states.odlcs) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.final -> flight.states.state) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.final -> flight.states.state -> flight.states.land) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.airdrop -> flight.states.state) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.odlcs -> flight.states.state) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.state -> flight.states.takeoff) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.start -> flight.states.state) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.preprocess -> flight.states.state) (cyclic-import)
vision/common/__init__.py:1:0: R0401: Cyclic import (flight.states.airdrop -> flight.states.state -> flight.states.takeoff -> flight.states.waypoints -> flight.states.odlcs) (cyclic-import)

------------------------------------------------------------------
Your code has been rated at 9.49/10 (previous run: 0.00/10, +9.49)

feature/pylint_fixes


improvementSupport invalid/not invalid option for refresh catalog and db.

Proposed changes
Issue Number: close #xxx
Problem summary
Current refresh catalog/db operation always invalid all the related cache. In some cases, it is not necessary, for example, create a new db in external data source. This pr is to support refresh without invalidate cache.
refresh catalog hive properties("invalid_cache" = "false");
refresh database hive.db1 properties("invalid_cache" = "false");
Checklist(Required)

Does it affect the original behavior:

[ ] Yes
[ ] No
[ ] I don't know

Has unit tests been added:

[ ] Yes
[ ] No
[ ] No Need

Has document been added or modified:

[ ] Yes
[ ] No
[ ] No Need

Does it need to update dependencies:

[ ] Yes
[ ] No

Are there any changes that cannot be rolled back:

[ ] Yes (If Yes, please explain WHY)
[ ] No

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 37.4 seconds
load time: 501 seconds
storage size:<PHONE_NUMBER>4 Bytes
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20221208053853_clickbench_pr_59914.html

Please add document in next PR


Add hookspecs for data archive

And include archive location information in initial csp config dict.

Realize I used the term metering instead of usage records. Will clean up in a new PR.


Create subproject best practices docs

To see the specific tasks where the Asana app for GitHub is being used, see below:

https://app.asana.com/0/0/1206557953368858

Some bits to add...

Hi John, I think having split up the meetings really improved the focus of the meetings and we still seem to have a big enough group joining the different meetings. 10 to 25 attendees for each. Our main struggle at the moment is keeping up with pull requests. That seems to improve a bit. We have more people for other organizations now active as code reviewers. That helps as well.


Add Readme

Hello :). Can i work on this?

yeah, go nuts!

can you tell me some of the things you want me to include in the readme? like any social links, features?

#5


Tutorial 4 - Geophysics (Seismology): Add JN

This PR adds the Jupyter notebook for Tutorial 4 - Geophysics (Seismology).

Study region: Chilean subduction zone since there are significant topographic variation, earthquakes, and volcanoes
Orientation: https://www.pygmt.org/dev/gallery/images/cross_section.html

Content:

[x] Prepare gridded data: pygmt.xyz2grd
[x] Create a contour map: pygmt.Figure.grdcontour
[x] Create a profile plot: pygmt.project and pygmt.grdtrack
[x] Additional features: seismicity, beachball, plate motion

Feel free to fill the subsections with suggestions for code and docs🙂.
Preview:

https://github.com/GenericMappingTools/agu24workshop/blob/add-jn-geo-seis/book/tut4_geophysics.ipynb
https://gitnotebooks.com/GenericMappingTools/agu24workshop/pull/8

Fixes: #6

Hi @yvonnefroehlich
do we use grdproject or project ?
Since grdproject is specified for a region rather than individual point-to-point.
see also: https://www.pygmt.org/v0.13.0/gallery/images/cross_section.html#sphx-glr-gallery-images-cross-section-py

Hi @yvonnefroehlich do we use grdproject or project ? Since grdproject is specified for a region rather than individual point-to-point.
see also: https://www.pygmt.org/v0.13.0/gallery/images/cross_section.html#sphx-glr-gallery-images-cross-section-py

Yep, I am sorry, I mean project I mistyped this 🙁.

Thanks a lot, @jhtong33 , for getting started here 👍!
I made a few updates:

I prefer to use the Scientific colour maps by F. Crameri, i.e., for topography, "oleron".
I reduced the resolution of the image showing within the Jupyter notebook to keep the file size smaller.
I figured out that list input is supported for the center and endpoint parameters of project.
Fix typo grdproject to project.
So minor code style improvements.
I think we should be consistent and use either single (') or double (") quotation marks; I prefer double quotation marks.

Great! Thanks for your updates.
I used a remote dataset to convert data into a .txt file, which I then provided as input materials for pygmt.xyz2grd.

Hi @yvonnefroehlich
I have one idea that plotting beachballs for magnitude >6 events to make the tutorial more comprehensive.
However, If time make it challenging to cover all details within a 45-minute session, it would be great to focus on one significant event as an example.
see also: https://www.isc.ac.uk/cgi-bin/web-db-run?request=COMPREHENSIVE&out_format=CATCSV&searchshape=RECT&bot_lat=-40&top_lat=0&left_lon=-90&right_lon=-60&ctr_lat=&ctr_lon=&radius=&max_dist_units=deg&srn=&grn=&start_year=2022&start_month=1&start_day=01&start_time=00%3A00%3A00&end_year=2023&end_month=1&end_day=01&end_time=00%3A00%3A00&min_dep=&max_dep=&min_mag=6&max_mag=&req_mag_type=MW&req_mag_agcy=&include_links=on

Hi @yvonnefroehlich I have one idea that plotting beachballs for magnitude >6 events to make the tutorial more comprehensive. However, If time make it challenging to cover all details within a 45-minute session, it would be great to focus on one significant event as an example.
see also: https://www.isc.ac.uk/cgi-bin/web-db-run?request=COMPREHENSIVE&out_format=CATCSV&searchshape=RECT&bot_lat=-40&top_lat=0&left_lon=-90&right_lon=-60&ctr_lat=&ctr_lon=&radius=&max_dist_units=deg&srn=&grn=&start_year=2022&start_month=1&start_day=01&start_time=00%3A00%3A00&end_year=2023&end_month=1&end_day=01&end_time=00%3A00%3A00&min_dep=&max_dep=&min_mag=6&max_mag=&req_mag_type=MW&req_mag_agcy=&include_links=on

Regarding plotting the seismicity as color- and size-coded circles: Actually, is more or less the same as I do already in part "1.3 Create a geographical map of the earthquakes" of tutorial 2 (please see https://github.com/GenericMappingTools/agu24workshop/blob/add-jn-pd-gpd/book/tut2_spec_pd_gpd.ipynb). Reading data in to a pandas.Dataframe and plotting it with color- and size-coding. Maybe we just provide the data and they should try to write the code on their own as an additional task?
Some updates from my side

Code for plotting one single earthquake as beachball
More documentation
Links to the PyGMT documentation for the used functions and methods
Usage of SC by F. Crameri
Reduced resolution for all images shown within the JN to keep the file small

Regarding plotting the seismicity as color- and size-coded circles: Actually, is more or less the same as I do already in part "1.3 Create a geographical map of the earthquakes" of tutorial 2 (please see https://github.com/GenericMappingTools/agu24workshop/blob/add-jn-pd-gpd/book/tut2_spec_pd_gpd.ipynb). Reading data in to a pandas.Dataframe and plotting it with color- and size-coding. Maybe we just provide the data and they should try to write the code on their own as an additional task?

Oh! Great! I agree that they can write the code on their own. Perhaps we can write more details or provide the example figure with them. How do you think ?

In this tutorial, we create a more complex figure across multiple cells. In this case, re-running cells to play around with different arguments for the parameters does not work (only works for the cells that contain the creation of the new Figure instance).

So, some more updates

Section 3: Added subsection for Section 3 to improve the structure
Section 4: Removed the code for plotting seismicity and added some references for orientation
Some improvements and additions to the docs
Use a colormap of the SC that does not flip between the (GMT) versions
Introduces a variable to set the resolution for the images within the JN for all images consistently
Cartesian plot: Plot the profile with color-coding for the elevation

In this way, fig1 is not affected by the changes in the cell for fig2 and re-running this cell would again start at the status of fig1. But so far, it looks like it does not work as expected, but both fig1 and fig2 are changed. I am not a Jupyter notebook or lab user (but prefer to write normal [Python] scripts), so ideas from more experienced users are highly welcome 🙂.

Understanding your concerns, this approach achieves the same results we expected. By doing it this way, we can avoid altering the original figure.

Cartesian plot: Plot the profile with color-coding for the elevation
I prefer using a black line since color-coding does not better visualize the topography variations. The y-axis already effectively indicates this information.

Hi @yvonnefroehlich, I think this tutorial can be reviewed.

Cartesian plot: Plot the profile with color-coding for the elevation

I prefer using a black line since color-coding does not better visualize the topography variations. The y-axis already effectively indicates this information.

Totally fine! Maybe using the same color as the profil line has would nice (in our case red).

In this way, fig1 is not affected by the changes in the cell for fig2 and re-running this cell would again start at the status of fig1. But so far, it looks like it does not work as expected, but both fig1 and fig2 are changed. I am not a Jupyter notebook or lab user (but prefer to write normal [Python] scripts), so ideas from more experienced users are highly welcome 🙂.

Understanding your concerns, this approach achieves the same results we expected. By doing it this way, we can avoid altering the original figure.

Hm. But for me, this approach does not work in the expected way. Actually, this reminds me a bit of ObsPy where users actively need to copy the Stream object, before applying any processing steps in case they want to keep their raw data in the initial  variable unchanged (https://docs.obspy.org/packages/autogen/obspy.core.stream.Stream.copy.html).

Hm. But for me, this approach does not work in the expected way. Actually, this reminds me a bit of ObsPy where users actively need to copy the Stream object, before applying any processing steps in case they want to keep their raw data in the initial variable unchanged (https://docs.obspy.org/packages/autogen/obspy.core.stream.Stream.copy.html).

I misunderstood your meaning previously. I also encounter same condition in Jupyter lab.
In obspy, they use copy.deepcopy(self). I tried to use same way to solve this issue, but the result is same.

As this

Hm. But for me, this approach does not work in the expected way. Actually, this reminds me a bit of ObsPy where users actively need to copy the Stream object, before applying any processing steps in case they want to keep their raw data in the initial variable unchanged (https://docs.obspy.org/packages/autogen/obspy.core.stream.Stream.copy.html).

I misunderstood your meaning previously. I also encounter same condition in Jupyter lab. In obspy, they use copy.deepcopy(self). I tried to use same way to solve this issue, but the result is same.

No worries!
As this is not working as expected, I removed introducing different variables for the Figure in https://github.com/GenericMappingTools/agu24workshop/pull/8/commits/2a2e2382855617be1224e625ee89521585efa07a.

Hm. But for me, this approach does not work in the expected way. Actually, this reminds me a bit of ObsPy where users actively need to copy the Stream object, before applying any processing steps in case they want to keep their raw data in the initial variable unchanged (https://docs.obspy.org/packages/autogen/obspy.core.stream.Stream.copy.html).

I misunderstood your meaning previously. I also encounter same condition in Jupyter lab. In obspy, they use copy.deepcopy(self). I tried to use same way to solve this issue, but the result is same.

This seem to be more complicated to implemente, please see https://github.com/GenericMappingTools/pygmt/issues/3645#issuecomment-2499892184 for details.

Are there any major review requests on this tutorial 🙂? Otherwise, I feel we can move on and merge this tutorial in the current state and, if needed, open separat PRs for minor corrections and improvements.

I have two observations only:

The first row of the seismicity_2022.csv file is: time,lon,lat,depth,mag. With GMT, it is good to add a # to the beginning of the line so that it is automatically identified as a header. I suspect that with PyGMT this is not necessary. is it true?
It would be possible to add a shading effect to the topographic map of South America. The idea would be to show that with GMT you can make very good maps simply.
Then, during the workshop it might be better to say that one removes the shading effect to make the processing faster.

The first row of the seismicity_2022.csv file is: time,lon,lat,depth,mag. With GMT, it is good to add a # to the beginning of the line so that it is automatically identified as a header. I suspect that with PyGMT this is not necessary. is it true?

In this tutorial, we read the CSV file via pandas into a DataFrame. The first line is by default considered as the header line and used for the column names. Later, these column names can be used to access the single columns. pandas does not require a # to indicate a header line,  but would include the # into the first column name 😬:
                            #time      lon      lat    depth  mag
0     2022-12-31T23:04:12.784000Z -69.6800 -16.5378  196.743  4.9
1     2022-12-31T12:47:57.842000Z -71.5625 -32.2686   48.300  4.5
2     2022-12-31T03:31:43.830000Z -68.8969 -23.1036   96.224  5.1
3     2022-12-31T00:43:57.999000Z -77.7617  -1.7451  182.543  4.3
4     2022-12-30T22:35:25.866000Z -67.1397 -24.0267  232.941  4.5
                          ...      ...      ...      ...  ...

Thus, I prefer to leave this file as is.

It would be possible to add a shading effect to the topographic map of South America. The idea would be to show that with GMT you can make very good maps simply.
Then, during the workshop it might be better to say that one removes the shading effect to make the processing faster.

Hm. You mean something simliar as Max does in the Xarray tutorial in the section "Processing raster data" (https://github.com/GenericMappingTools/agu24workshop/blob/add-xarray-tutorial/book/tut03_spec_xarray.ipynb) using grdgradient? Maybe we can include this in the section "Additional comments" as the tutorial is already a bit longer?

Hm. You mean something simliar as Max does in the Xarray tutorial in the section "Processing raster data" (https://github.com/GenericMappingTools/agu24workshop/blob/add-xarray-tutorial/book/tut03_spec_xarray.ipynb) using grdgradient? Maybe we can include this in the section "Additional comments" as the tutorial is already a bit longer?

My idea is just to make the maps look better. I don't think it's necessary to explain anything. So, I think you can add something like shading="+a" in the code so the map looks better.

Hm. You mean something simliar as Max does in the Xarray tutorial in the section "Processing raster data" (https://github.com/GenericMappingTools/agu24workshop/blob/add-xarray-tutorial/book/tut03_spec_xarray.ipynb) using grdgradient? Maybe we can include this in the section "Additional comments" as the tutorial is already a bit longer?

My idea is just to make the maps look better. I don't think it's necessary to explain anything. So, I think you can add something like shading="+a" in the code so the map looks better.

Ah, I first thought about grdgradient but applying the illumination directly via grdimage sounds good to me. Made an update in commit https://github.com/GenericMappingTools/agu24workshop/pull/8/commits/a3ded9d26f7c2b9c853221cbb8a05fc36425eaac.

Personally, I would have preferred it if the .txt and .csv file were not in the repository since they are big files, but hopefully everyone has good internet connection during the workshop 😆

If needed, I can adjust the period of the earthquake catalog, which might reduce the file size.

Wonderful, thanks @yvonnefroehlich and @jhtong33 for working on this! Sorry for leaving this last, Seismology isn't my area of expertise, so I was hoping someone would jump in to review, but I trust that this is ok.

Now worries @weiji14, @Esteban82 made already some helpful suggestions! And somethings it's actually also good to have a review from another field and also good to a have native-speaking person reading through the documentation.

Personally, I would have preferred it if the .txt and .csv file were not in the repository since they are big files, but hopefully everyone has good internet connection during the workshop 😆

Yeah! Also was thinking about what is better: people download the data during the tutorials or we provide data files within the repo, when creating the pands / geopandas tutorial. Downloading the data directly underlines that PyGMT integrates smoothly in the complete analysis workflow, and we keep the repo size small. Regarding a stable internet connection, I feel (hope) this should work (I have never been to AGU or any other big conference yet, but a working (acceptable fast) internet connection is essential for a nicely running conference) .
Regarding the elevation data: The "normal" way doing this would be to simply download the built-in GMT remote dataset for the Earth relief into a xarray.DataArray and using it for the further processing and analysis. However, in this tutorial, we like to show how people can convert any specific grid which is provided as xyz columns into a [Py]GMT-ready grid. Thus, the elevation data was written to a txt file with xyz columns, and in the tutorial we convert it back to a [Py]GMT-ready grid via xyz2grd.
Regarding the seismicity data: ObsPy is required to request and download this data. If we include this part within the tutorial, ObsPy will become a dependency, which people need to install. This was probably the reason why Jin-Hui downloaded the data externally and wrote it to a CSV file for usage in the tutorial (reading via pandas).

I've got some minor suggestions below, which either of you can apply, and then I will try to merge this by tomorrow. After this, we can work on polishing all of the notebooks to have a consistent header, title and such.

Sounds good!

Regarding the elevation data: The "normal" way doing this would be to simply download the built-in GMT remote dataset for the Earth relief into a xarray.DataArray and using it for the further processing and analysis. However, in this tutorial, we like to show how people can convert any specific grid which is provided as xyz columns into a [Py]GMT-ready grid. Thus, the elevation data was written to a txt file with xyz columns, and in the tutorial we convert it back to a [Py]GMT-ready grid via xyz2grd.

Yvonne raised a critical point: many current datasets (e.g., crustal thickness and seismic tomography) are available only as xyz columns rather than pre-processed GMT grids. If beginners fail to correctly convert xyz data into a grid, using grdimage  will not produce accurate results. That’s why providing the xyz file is essential.

Regarding the seismicity data: ObsPy is required to request and download this data. If we include this part within the tutorial, ObsPy will become a dependency, which people need to install. This was probably the reason why Jin-Hui downloaded the data externally and wrote it to a CSV file for usage in the tutorial (reading via pandas).

If including Obspy, installing and downloading IRIS dataset more relies on internet.
I can mitigate this by reducing the file size, perhaps by limiting the earthquake data to a shorter time period.

Regarding the elevation data: The "normal" way doing this would be to simply download the built-in GMT remote dataset for the Earth relief into a xarray.DataArray and using it for the further processing and analysis. However, in this tutorial, we like to show how people can convert any specific grid which is provided as xyz columns into a [Py]GMT-ready grid. Thus, the elevation data was written to a txt file with xyz columns, and in the tutorial we convert it back to a [Py]GMT-ready grid via xyz2grd.

Yvonne mentioned a critical point: many current datasets (e.g., crustal thickness and seismic tomography) are available only as xyz columns rather than pre-processed GMT grids. If beginners fail to correctly convert xyz data into a grid, using grdimage  will not produce accurate results. That’s why providing the xyz file is essential.

Ah I see, then teaching xyz2grd would make sense here.

Regarding the seismicity data: ObsPy is required to request and download this data. If we include this part within the tutorial, ObsPy will become a dependency, which people need to install. This was probably the reason why Jin-Hui downloaded the data externally and wrote it to a CSV file for usage in the tutorial (reading via pandas).

If including Obspy, installing and downloading IRIS dataset more relies on internet. I can mitigate this by reducing the file size, perhaps by limiting the earthquake data to a shorter time period.

The earthquake data in CSV format is actually not too big (64KB before, now 29KB). It's more the south_america_topography_05m.txt file that's a little large (5.0MB) :slightly_smiling_face:, but I think it's ok to just keep it in the repository for now instead of changing the workflow. Also ok with having ObsPy included in the dependency list, but that can be done in a follow-up PR (only if there's time, otherwise the PR is ok as is).
@jhtong33, I'll leave this up for a few more hours in case there's any small changes you still want to make, and will merge once you hit approve (or by the end of my work day in ~7 hours).

Tutorial is now up at https://www.generic-mapping-tools.org/agu24workshop/tut04_geophysics.html :tada:


Enhance Feedback Mechanism for local-pr-precheck command

Description
Background
Following the resolution of issue #2066, we have a comprehensive script that automates the verification process for changes made to the repository, including running various unit tests, building projects, and executing formatters. This automation ensures that modifications do not adversely affect the repository's integrity and functionality. However, the current output from this automation script is quite verbose, making it challenging to quickly identify the status of each check, especially in the context of numerous unit tests producing extensive logs.
Proposal
I propose we enhance the script's feedback mechanism to provide more concise and informative logs that clearly indicate the success or failure of each step in the automation process. This enhancement will make it easier for contributors to identify and address issues promptly, improving the efficiency of the development workflow.
Suggested Improvements

Summarized Output: Implement a summarization feature in the script that collates the results from each step (e.g., code generation, unit tests for different packages, building projects) and presents a consolidated report at the end. This report should highlight the overall success or pinpoint exactly what failed, such as which unit test(s), code generation step, or build process encountered issues.

Error Detailing: For steps that fail, provide a detailed output that includes not just the fact that it failed, but also specific information about what caused the failure. This could include the name of the failing test, the expected vs. actual outcome, or the error message from a build failure.

Automated Suggestions: Where possible, include automated suggestions or common fixes for identified issues. This could help contributors quickly resolve common problems without needing to dig deeply into the logs.

Tracked in Apple’s issue tracker as rdar://123190895


ToyEngine updates

This fixes one significant bug in ToyEngine, and also adds lots of docstrings.
The bug is that the n_steps_per_frame parameter was being ignored. Now it is used. I switched our notebooks to take n_steps_per_frame=1, since that's what they were actually doing before.
Other than that, I added docstrings for toy engine stuff, and made sure that it shows up in the API docs.
There are also a couple little updates based on discussions with ESDW participants: improved the install instructions, and added jupyter to our requirements (apparently, we currently do require it, based on some imports of IPython that aren't checked by a try: / except: -- it doesn't cause problems for tests because our tests require jupyter.)

Passed tests, so it is ready for review.

Very good. Will merge...


Cannot delete the tesseract::TessBaseApi instance

Environment
\Tesseract-4.00.00alpha
Windows 10 64 bit Visual Studio 2013 building the Win32 DLL.
Current Behavior:
Create an instance, call Init, then delete the instance, an exception is thrown.
Expected Behavior:
No exception!
Suggested Fix:
I have not yet found the cause of the exception.

I have created a Windows console app which does no more than new tesseract::TessBaseAPI() and then delete the instance, and it throws an exception on the delete. This must be something obvious but I can't see the cause.


Need help; __webpack_hmr is serving the SPA app

I'm getting this error:
EventSource's response has a MIME type ("text/html") that is not "text/event-stream". Aborting the connection.
The problem seems to be because __webpack_hmr is serving the SPA app instead of the EventSource, but I'm not sure how to fix this.
My Startup file looks like this:
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                if (context.Configuration.EnableDevelopmentWebInterface) {
                    app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
                    {
                        HotModuleReplacement = true,
                        ProjectPath = ClientAppPath,
                        ConfigFile = $"{ClientAppPath}build/webpack.dev.conf.js"
                    });
                }
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            // add wwwroot/
            app.UseStaticFiles();

            // set up Nancy OWIN hosting
            app.UseOwin(x => x.UseNancy(options =>
            {
                options.PassThroughWhenStatusCodesAre(
                    HttpStatusCode.NotFound,
                    HttpStatusCode.InternalServerError
                );
                options.Bootstrapper = new SpeercsBootstrapper(context);
            }));

            // set up MVC fallback
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");

                routes.MapSpaFallbackRoute(
                    name: "spa-fallback",
                    defaults: new { controller = "Home", action = "Index" });
            });

and my Webpack config:
module.exports = {
  entry: {
    app: './src/main.js'
  },
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src')
    }
  },
  module: {
    rules: [
      {
        test: /\.(js|vue)$/,
        loader: 'eslint-loader',
        enforce: 'pre',
        include: [resolve('src'), resolve('test')],
        options: {
          formatter: require('eslint-friendly-formatter')
        }
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: vueLoaderConfig
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test')]
      },
      {
        test: /\.styl$/,
        loader: ['style-loader', 'css-loader', 'stylus-loader']
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
        }
      }
    ]
  }
}

Unfortunately this is not something I can diagnose given the info here and your custom project setup. I don't know what effect the Nancy middleware might have, for example, or about what publicPath values you're using, what PathBase values are in effect, and so on. Can you compare against the project produced by dotnet new vue to establish which of your differences is making this not work?
Sorry that's not incredibly useful. The ideal thing would be if you could use a debugger to step into the SpaServices code to see where it sets up the listener for __webpack_hmr and find out if it's listening on some other path, for example, however I'm not sure there's a convenient way to do that besides cloning the whole of this repo and connecting your app to it as a <ProjectReference> instead of a <PackageReference>. If it comes to it, that might be your best bet to find out what's going on!


Update service-security-dlp-policies-for-power-bi-override.md

I wanted to include in this article that 'fixing' the dataset is another action that can be taken on the policy tip... Feel free to incorporate it differently if it makes more sense to you, Thanks!

@paulinbar
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

Dealing with this content in a PR on the private repo. https://github.com/MicrosoftDocs/powerbi-docs-pr/pull/9826


Transfer input attributes (placeholder, type) to generated TypedInput field

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)

Proposed changes

Per https://github.com/node-red/node-red/issues/2059, this change addresses how the TypedInput should transfer the type and placeholder attributes from a normal configuration input field to a TypedInput field.
Currently, the generated TypedInput can only be a text input and doesn't handle values like passwords that shouldn't be visible to the user. Additionally, the placeholder text of the original input field isn't used and presents an empty text input to the user.
Checklist

[x] I have read the contribution guidelines
[ ] For non-bugfix PRs, I have discussed this change on the mailing list/slack team.
[x] I have run grunt to verify the unit tests pass
[ ] I have added suitable unit tests to cover the new/changed functionality

Coverage remained the same at 76.418% when pulling 97e789538e61847a54cf08def12eaa42972bd538 on jeancarl:dev into e05ff01d579b3747bd8d44b8af639330168e9c08 on node-red:dev.


fix: remove unneeded import

I was optimistic that we had the matrix associated to a bilinear form until I found that the import was not used :-/

Thanks :tada:
bors merge


Reformatted with black.  Changed np.int (deprecated) to int.

Cleaned up the code by:

Reformatting the .py files with black.
Replacing np.int (which is deprecated) with int

The .ipynb Jupyter Notebook files were not reformatted.
This is to address #13 and a secondary aspect of  #12.

There's a lot of changes in one commit here. For ease of review can you break this formatting change into different commits where black is run on one file at a time and then of course a final commit where np.int is converted to int?

I can do that, but I don't know how much it will ease review.  Do you want me to push each time or only at the end.

pushing each time would be great so I can just go through the files as you get them done

I just did 5, an dpushed, so I will push after each one from now on.

I would say that we should format all the .py files, including those in the notebook directory

YOu pulled while I was still pushing.
Should I also reformat the .ipynb files?

with the exception of the 3 comments on the example files the other reformats look good to me

I think that looks great to me. Thanks David. On Nov 13, 2023, at 6:17 PM, David Palmer @.***> wrote:
@dmopalmer commented on this pull request.
In notebooks/trial_NGC2992.py:

table_everything = ba.from_heasarc(**queryargs)

-minexposure = 1000     # cm^2 after cos adjust
-exposures = np.array([object_batsource.exposure(ra=row['RA'], dec=row['DEC'], roll=row['ROLL_ANGLE'])[0] for row in table_everything])
+minexposure = 1000  # cm^2 after cos adjust
+exposures = np.array(
What do you think of the format
exposures = np.array(
[object_batsource.exposure(ra=row["RA"],
dec=row["DEC"],
roll=row["ROLL_ANGLE"])[0]
for row in table_everything
])
?  (For all three files).  I think it improves the clarity, even if it lacks the purity of letting black format everything.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were assigned.Message ID: @.***>

Last push with those reformat.  Ready to go.

This looks good to me. I will merge now.


Cab file does not exist

If I try to extract a certain file:
lessmsi x windows%20sdk%20desktop%20libs%20x64-x86_en-us.msi

I get this message:
Error: System.Exception: The file "C:\sdk\58314d0646d7e1a25e97c902166c3155.cab"
does not exist.

Fair enough, but does LessMsi have a way to list all the files that are
required?

This seems to do it:
lessmsi l -t Component sunday.msi | sed '
/dirCatalogRepositoryDirectory/!d
s/sca//
s/,.*//
'

Hey there @cup ! Yep, you can list the files on the command line (docs) or in the GUI there is a "Extract Files" tab that should show them to you.
If you think there is a bug/error in the program related to that msi, please feel free to re-open this issue and attach that msi and I'll look into it.
Thanks for leaving a comment!

@activescott this isnt about extracting files, it about dealing with MSI that require external CAB files

Here is another way to do this, using Python:
import msilib
path = 'Windows SDK for Windows Store Apps Headers-x86_en-us.msi'
db = msilib.OpenDatabase(path, msilib.MSIDBOPEN_DIRECT)
view = db.OpenView('SELECT * FROM Media')
view.Execute(None)

while True:
   rec = view.Fetch()
   if rec is None:
      break
   print(rec.GetString(4))

Here is another way to do this, using Python:
import msilib
path = 'Windows SDK for Windows Store Apps Headers-x86_en-us.msi'
db = msilib.OpenDatabase(path, msilib.MSIDBOPEN_DIRECT)
view = db.OpenView('SELECT * FROM Media')
view.Execute(None)

while True:
   rec = view.Fetch()
   if rec is None:
      break
   print(rec.GetString(4))


Introduce the @backstage/errors package

End goal that led to all of this: To encode thrown errors in the backend as a JSON payload using a facility in that new package, and to add a core component that can render helpful frontend displays of those errors.
Backend response shape:
{
  "error": {
    "name": "NotFoundError",
    "message": "No entity named 'tara.macgovern2' found, with kind 'user' in namespace 'default'",
    "stack": "NotFoundError: No entity named 'tara.macgovern2' found, with kind 'user' in namespace 'default'\n    at eval (webpack-internal:///../../plugins/catalog-backend/src/service/router.ts:117:17)"
  },
  "request": {
    "method": "GET",
    "url": "/entities/by-name/user/default/tara.macgovern2"
  },
  "response": {
    "statusCode": 404
  }
}

Error panel collapsed:

Error panel expanded:

Feeds into https://github.com/backstage/backstage/issues/3781 🎉

kk, rebased and ready to roll - merj?

merj


Add Arrikto EKF distribution

Would like to add Arrikto's Enterprise Kubeflow distribution under "docs/Distributions" and in the table of distros on the getting-started/installation page.

While Arrikto's effort to push Kubeflow v1.3 out the door deserves a lot of merit, I would like to have a community decision on the topic as it adds a proprietary distribution with no way for a user to try aside from asking for a commercial demo/quote.
@animeshsingh @aronchick @thesuperzapper @Bobgy any thoughts on this?

There are two points here:
First, I dont really want to add more distribution docs to kubeflow.org, as I want to see them move to vendor websites, see issue https://github.com/kubeflow/website/issues/2629.
Second, I dont see any reason not to link them under the "Installing Kubeflow" section for now. But clearly, once we setup a verification process they would be required to undertake the same process as any other distribution. (Whatever verification the governance group of Kubeflow decides to impose)

@RFMVasconcelos I don't see a reason to exclude specifically this distribution, under the generic distributions table.
My understanding is that this was the reason we included the table in the first place, to differentiate from what is official Kubeflow and what isn't. We've put all the relevant warnings, so that users can redirect to distribution owners, if they choose to go with a distribution.
Even if a user goes with a cloud vendor's distro, they actually need a commercial relationship with that vendor to be able to spin up the infrastructure to execute the installation guides. So, it's hard for me to see why this distribution is special.


cli plugins not installing because old plugin exists?

Command
cf install-plugin https://github.com/cloudfoundry/v3-cli-plugin/blob/master/bin/OSX_binary?raw=true
What occurred, incl. error and/or stack trace
The file OSX_binary already exists under the plugin directory.
What you expected to occur
I had previously uninstalled the plugin successfully using the cf cli, so i expected the binary to be removed, but it appears to have been left behind.
CLI Version
cf version 6.21.1+6fd3c9f-2016-08-10
Platform & Shell Details
Mac OSX 10.11.6

$ cf uninstall-plugin v3_beta
Uninstalling plugin v3_beta...
OK
Plugin v3_beta successfully uninstalled.
pintail:~ jamesbayer$ cf install-plugin https://github.com/cloudfoundry/v3-cli-plugin/blob/master/bin/OSX_binary?raw=true

**Attention: Plugins are binaries written by potentially untrusted authors. Install and use plugins at your own risk.**

Do you want to install the plugin https://github.com/cloudfoundry/v3-cli-plugin/blob/master/bin/OSX_binary?raw=true? (y or n)> y

Attempting to download binary file from internet address...
13258092 bytes downloaded...
Installing plugin OSX_binary...
FAILED
The file OSX_binary already exists under the plugin directory.

pintail:~ jamesbayer$ cf uninstall-plugin v3_beta
Uninstalling plugin v3_beta...
FAILED
Plugin name v3_beta does not exist
pintail:~ jamesbayer$ cf install-plugin https://github.com/cloudfoundry/v3-cli-plugin/blob/master/bin/OSX_binary?raw=true

**Attention: Plugins are binaries written by potentially untrusted authors. Install and use plugins at your own risk.**

Do you want to install the plugin https://github.com/cloudfoundry/v3-cli-plugin/blob/master/bin/OSX_binary?raw=true? (y or n)> y

Attempting to download binary file from internet address...
13258092 bytes downloaded...
Installing plugin OSX_binary...
FAILED
The file OSX_binary already exists under the plugin directory.

this may be a confusing error as i downloaded the plugin with wget and was able to install it by using the local executable.

the original cf plugin location is here: https://github.com/cloudfoundry/v3-cli-plugin

@jbayer
I tried to reproduce this bug but I wasn't able to. My steps included:

Install the plugin locally using a downloaded binary. (cf install-plugin OSX_BINARY)
Uninstall the plugin (cf uninstall-plugin v3_beta)
Re-install the plugin using the git url (cf install-plugin https://github.com/cloudfoundry/v3-cli-plugin/blob/master/bin/OSX_binary?raw=true)
Re-uninstall the plugin (cf uninstall-plugin v3_beta)

After doing these steps, I saw no complaints about the binary already existing.
Do you recall doing anything else while discovering this bug? If you could help us reproduce this bug on our machines, that would be swell.
-@jeffpak

i don't recall doing anything differently. if it's hard or not possible to reproduce, it's ok with me to close the issue and we can open a new one it if it surfaces again

We have a story coming up allowing install-plugin to update plugins (i.e. no need to uninstall the old one yourself). I'll give it one more go to see if I can reproduce this issue after that story's been delivered.
Regards,
Dies Koper
CF CLI PM

We have significantly improved the install and uninstall logic of plugins in cf CLI 6.27.0, which should prevent you from getting into a situation like this again.
If you do, please submit a new issue and we'll investigate.
Thanks for reporting.
https://github.com/cloudfoundry/cli#downloads
Cheers,
Dies Koper
CF CLI PM

Hi, i have a query
i executed cf plugins ,deploy version was 0.2.0 then i reinstalled with 0.3.0 version
$cf plugins
plugin                  version   command name   command help
deploy                  0.2.0     deploy         Deploys all the things, including orgs, spaces, domains, users, services and applications
if i try to re install same plugin and different version that is 0.3.0 with the command cf install-plugin deploy -f
now it is showing as following messages.
Install and use plugins at your own risk.
Plugin deploy 0.3.0 is already installed. Uninstalling existing plugin...
OK
Plugin deploy successfully uninstalled.
Installing plugin deploy ...
OK
Plugin deploy  0.3.0 successfully installed.
but i need output like this
Plugin deploy 0.2.0 is already installed. Uninstalling existing plugin...
OK
Plugin deploy successfully uninstalled.
Installing plugin deploy ...
OK
Plugin deploy  0.3.0 successfully installed.


Fix for #134: Goal: use-releases doesn't processes imported POMs in dependencyManagement

added PomHelper.readImportedPOMsFromDependencyManagementSection in order to read imported POMs from raw pom.xml

UseReleases process imported POMs when processing dependencyManagement
fixed spelling mistake in javadoc for PomHelperTest

So far it seems like imported boms are getting processed anyway even if we skip PomHelper.readImportedPOMsFromDependencyManagementSection...


Fill props from route models

This PR introduces a FromRouteModel attribute along with a FillRouteModelPropertiesDataPipe, based on the discussion here.
Note that this PR implements steps 1 & 2 from the comment linked above, and does not change the Unique attribute / rule. I felt this was outside of the scope of a single PR, and something that isn't strictly necessary from benefitting from route model binding.
@rubenvanassche would you mind reviewing this and let me know if I'm moving in the right direction here. I can try adding documentation as well once you feel the implementation and tests look good.
Usage examples
This change allows filling data object properties from route model bindings. In the example below, if SongData is created from a request, the id property will be filled with Song model $id, if the request contains a route model binding for the Song model.
class SongData extends Data
{
    public function __construct(
        #[FromRouteModel('song')]
        public int $id,
        public string $name,
    ) {
    }
}

It's also possible to fill data properties from a different route model property. Here, SongData::$name will be filled from Song::$title.
class SongData extends Data
{
    public function __construct(
        #[FromRouteModel('song')]
        public int $id,
        #[FromRouteModel('song', 'title')]
        public string $name,
    ) {
    }
}

Finally, it's possible to control wether route model properties should replace existing properties - ie, for example if the request contains the model $id both in the body and in the route model. Replacements are turned on by default, but they can be turned off using the replace: false flag. Here, SongData::$name will be filled in from the route model only if the request body does not contain the name key.
class SongData extends Data
{
    public function __construct(
        #[FromRouteModel('song')]
        public int $id,
        #[FromRouteModel('song', replace: false)]
        public string $name,
    ) {
    }
}

Open questions and TODOs

[ ] Documentation

Should we support nested properties?
Current implementation only supports shallow route model properties, ie, you cannot use nested keys:
#[FromRouteModel('invoice', 'customer.name')]

To support the above, we'd probably need to convert the model to array, so we can fetch the nested property using Arr::get()
Allow targeting the whole class with FromRouteModel?
Perhaps it would be helpful to allow targeting the data class itself with this attribute. It would essentially mean that any data properties that can be mapped from the route model, would be mapped automatically. For example:
#[FromRouteModel('song')]
class SongData extends Data
{
    public function __construct(
        public int $id,
        public string $name,
    ) {
    }
}

In the example above, both id and name would be filled in from the route model, if present.

You may also add the documentation like you described, so other people may also enjoy this feature!
As for nested properties, if it is not too much work and it can be coded cleanly in then I don't see a reason not to support it!
Targeting a whole class seems a bit overkill for me, I think this would be a bit too much.
Thanks!

@rubenvanassche thanks, I've updated the PR with your suggestions and also added support for nested route model properties.
However, there are a few things I wanted to discuss, before moving further.
Your comment on renaming routeModel to routeParameter made me think whether it would make sense to rename this whole feature to FromRouteParameter? It would make it a more generic approach to fill properties from any kind of route parameters, not just models. The data pipe doe snot really care, as long as the parameter is Arrayable (to support nested props).
As you can see here, I am checking if the route parameter is an instance of Model, so that we can safely call toArray() on it. Perhaps we should check for instanceof Arrayable, or even is_callable([$model, 'toArray']), instead?
I also realized during the tests that toArray() is called for every property that has the FromRouteModel attribute. Normally, toArray() should be rather quick, but I'm wondering if we should perhaps memoize the array version of the model/parameter, so that subsequent accesses would be quicker? Imagine a data object with 20 properties, where all of them would use this attribute - toArray() would be called 20 times.
What do you think?

@ragulka instead of using ->toArray() on the model and then Arr::get to get a property, would it be possible to use something like data_get($model, $routeModelProperty) instead?

@ragulka instead of using ->toArray() on the model and then Arr::get to get a property, would it be possible to use something like data_get($model, $routeModelProperty) instead?

@bentleyo that's a great idea. I'll try to refactor my PR around that. Thanks!

Wow, this is looking great!

☝ I was not entirely sure if that's the best approach. Maybe it should throw an exception instead?

Yeah let's do that

☝ I'd like some feedback on how this is implemented. My reasoning to use a boolean false was that I didn't want to sacrifice the fallback to the data property name if the route parameter property name is not provided. However. I find using false to trigger the behavior above is somewhat ambiguous. Maybe flipping it so that if its set to a boolean true? Or perhaps introduce a different, optional param like useFullParameter?

An extra parameter seems indeed the best solution to me, because false doesn't really tell what's going to happen.
Would it be possible to also provide some docs? Then everyone can enjoy this lovely feature! I think this can even be a new docs page since it adds a lot of functionality.
The plan is to release v3 within a few hours, since this PR isn't breaking we can also add it in 3.1. I've already updated the branch to merge to.

Wow, this is looking great!

@rubenvanassche Thanks 😊

Maybe it should throw an exception instead?

Yeah let's do that

Perhaps there's a better way. Let me explain: Ideally, I'd like avoid throwing exceptions because filling from route parameters is sort-of optional anyway - properties will be filled if the route parameter exists. Also, there may be scenarios where it's more suitable to ignore the route parameter value if it's scalar, instead. With that in mind, I'll address the next point:

An extra parameter seems indeed the best solution to me, because false doesn't really tell what's going to happen.

I agree that false doesn't tell whats going to happen. So I played around with the extra parameter a little and.. I think it's a bit awkward. What if I set both the property and the extra parameter at the same time?
// What exactly is going on here???
#[FromRouteParameter('author', 'name', useFullRouteParameter: true )]
public string $author

It's not at all clear what the intention of the developer is here. For the developer, it's unclear how the data property will be filled.
Given both points above, I'm leaning towards 2 separate attributes, with very clear purposes:
// fill with the full route parameter / model
#[FromRouteParameter('author')]
public AuthorData $author,

// fill with a scalar route parameter
#[FromRouteParameter('song-slug')]
public string $slug,

// fill from a particular key/property of the route parameter,
// defaulting the key to the property name - in this case - `title`
#[FromRouteParameterKey('song')]
public string $title,

// fill from a particular key/property of the route parameter using custom mapping
#[FromRouteParameterKey('song', 'name')]
public string $title

What do you think? FromRouteParameterKey could also be named FromRouteParameterProperty.

Would it be possible to also provide some docs? Then everyone can enjoy this lovely feature! I think this can even be a new docs page since it adds a lot of functionality.

Of course. Just want to land on the final implementation first 😅

Mhh yeah let's go with the two of them. It's a lot more readable.

What do you think? FromRouteParameterKey could also be named FromRouteParameterProperty.

Yeah let's go with FromRouteParameterProperty, it makes it a lot more clear what's happening.

Mhh GH closed that one automatically since it is not targetted to main.

@rubenvanassche that's fine, I can open a new one.


Disable code coverage in CI

Removing test-coverage from the CI workflows:

It slows down the build times
scoverage is not up-to-date, see this build
I don't think anybody was looking at the coverage plots in years.

Without code coverage in tests:

With code coverage in tests:

The integration tests are still slower though, so the total build times are not changing.

ah, actually, I cannot just yolo it :)


Set unpropagated annotations via command line args

The list of unpropagated annotations should very rarely be changed, and
controlling them via the HNCConfiguration object has a bunch of problems
(e.g. merging fields set by an external operator, like the Config Sync
operator, with user-specified fields). As a result, I think it makes
more sense to specify these as command-line params instead.
Tested: verified that the annoations are removed if specified in the
command line args in the Deployment and that HNC plays well with Config
Sync as a result. Migrated the HNCConfiguration integ test to the object
reconciler instead.

/hold
/assign @rjbez17
/assign @yiqigao217
Let's not submit this just yet, but wdyt of this change? Sorry to partially undo my last change but the prospect of automatically managing these fields in a K8s resource that's also human-editable didn't seem too appealing, and command-line args are much easier for our usecase. Pity I didn't figure that out last week :P

/lgtm
/hold
for @rjbez17

/hold cancel
@rjbez17 lgty?

/lgtm


Investigate using pyinstaller to create one-click installer

This is a tough one, perhaps :-) but it could be extremely useful for users who want to try Lute but are overwhelmed with the setup!
I've never used pyinstaller (or alternatives), so I don't know what's involved.  But I feel off the bat that there are a few things that would need to be handled/investigated:

[ ] first, just get a simple one-click installer to run
[ ] figure out how to do different configurations for the installs.  e.g., for me, I like to set up Lute to store different data in different locations.  We can't/shouldn't assume that all users will want their data to go into the system/user preferences folder.
[ ] how to handle plugins, which are currently done with different pip installs
[ ] how to handle updates

@jzohrab I'm gonna take a crack at this.

Super @cblanken , thank you!  Any progress is good.

Hi @cblanken -- thank you very much for your time and the great write-up, really appreciated!  It's a bigger problem to solve than it first seems.
I think I'll reach out to the team at Anki and see if they can offer additional guidance -- but in the meantime, I'll leave this in the backlog.  Cheers!


feat: Screen capture validation on FCS

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


make the Deposit Agreement text configurable

As the Repository Admin, I need to configure the text of the Deposit Agreement that is displayed to a depositor when the depositor clicks "Deposit Agreement" on the Save Work panel on a Add New Work page.
I want to access this configurability from the Admin Dashboard. I need to apply basic formatting to the text and to be able to include active links.

@mjgiarlo Here is the ticket related to #406


No field access completion support for anonymous function call expression

Description:

Steps to reproduce:
function testAnon() {
    function (int) returns string myFunc = function(int arg)  returns string {return "abc";};
    string result  = myFunc().<cursor>
}

Affected Versions:
stage-sl-snapshot

I think this will be fixed with #34505.

I think this will be fixed with #34505.

Checked the changes locally. Seems it is not fixed.


Do not default to external linking on arm, i386

Reverts https://github.com/docker/docker/pull/18197
This was a workaround before Go 1.6, not required any more.
cc @nalind @Govinda-Fichtner
Signed-off-by: Justin Cormack<EMAIL_ADDRESS>

LGTM 🐸
/cc @tianon

LGTM (if CI goes green)

@justincormack should we pick this for the 1.12 builds?

@thaJeztah I don't think this really matters for 1.12, I just happened to spot it while looking for something completely unrelated...

:tada: :balloon: :birthday:
LGTM!

@justincormack is this a known flaky test on ARM? https://jenkins.dockerproject.org/job/Docker-PRs-arm/284/console
16:01:42 FAIL: docker_cli_run_test.go:2999: DockerSuite.TestRunPidHostWithChildIsKillable
16:01:42
16:01:42 docker_cli_run_test.go:3018:
16:01:42     c.Fatal("Kill container timed out")
16:01:42 ... Error: Kill container timed out
16:01:42

@thaJeztah just started showing up on power too

@tophj-ibm opened an issue for that one; https://github.com/docker/docker/issues/24863


Move acorn to dependency

We dont really need it but its needed for Standard and gulp-sourcemaps.
Heroku removes dev dependency by default.

can we add to changelog?


[WIP] Pre-compute pathways for fitting

[ ] Implement logic for passing pathways to C code
[ ] Document code changes (docstrings + changelog)
[ ] Update online examples to use sim.optimize()/sim.release()
[ ] Ensure serialization of Simulator does not include pathways

Need to have a check case where there are no pathways for the given spin systems and methods


Property without a setter, typescript isn't catching error when settting

if you create a "property" with a public getter and no setter. if you then try to set that property typescript doesn't tell you this isn't allowed. But it sure will blow up your code.
    private _date: Date;
    public get Date()
    {
        return this._date;
    }

In the above scenario if you do
this.Date = new Date();
typescript allows this without catching anything (no red underbar or error), but the javascript doesn't allow it. Changing the code to the below code works as expected.
this._date = new Date();

See #12

In fact #12 and this one is completely different.
The other is talking about readonly properties in interfaces (something that the current language does not support). This one is talking about a simple validation to throw a compiler error when trying to change a getter only property.
This one is very simple to implement (and, for me, it's a must), totally different from the other.

"Property without a setter" and "Property that is read-only" is a distinction without a difference.
For example, if we have some class
class Foo {
  get bar() { return 0 }
}

This is its corresponding .d.ts:
class Foo {
  bar: number;
}

Without a readonly modifier, there's no way to represent this except when we can see the implementation. Trying to implement this as via "see if there's a setter" would be a hack.


Replace squeeze and unsqueeze with view?

View might be faster than squeeze and unsqueeze, since AFAIK it doesn't create a new tensor.

Looks like squeeze / unsqueeze is as fast as view.

hmmmm yeah but find a squeeze that is happening in a bottleneck in the code and try it?


feat: Pre Authenticated Sessions

Spanner.go looks a little odd but its because I removed the generic spannerSessionManager and moved it to its own file called spanner_manager.go . Since the spanner Session manager was generic, I felt it better lived in its own file. Then each type of Spanner Session (Preauth, user pass, oidc, etc) could live in that spanner.go file.
Otherwise its starting to get hard to follow where everything is located. I'd say most people would be very confused coming to this repo as a whole.

Hey @hdishner-ccc , I am curious. What are you thinking for the handlers and middleware on this? Is that something that is coming?

@Hunter
The implementation of SpannerPreauthSessionManager looks to be good. This is the storage driver that will get passed into our new PreauthSession.
PreauthSpannerSession is a little off the rails. It looks to be an implementation of PreauthSession that is hard-coded to spanner instead of allowing us to pass in a storage driver so it can be used with any database.
I will be pushing up a few commits to get this back on track.

Seems like there are several things we will need to support with this implementation

creating the session when the username is submitted
validating the session. redirect back to login if it is invalid
adding and updating session metadata
clearing session metadata

Can we add a generic field in the db that is just JSON for metadata?

Seems like there are several things we will need to support with this implementation

creating the session when the username is submitted
validating the session. redirect back to login if it is invalid
adding and updating session metadata
clearing session metadata

Can we add a generic field in the db that is just JSON for metadata?

My updates should address all the session management items.

After completing the login workflow, the session will be created using the NewSession() method.
I was assuming we would be creating an Angular App for DLH. If so, the App will handle the redirection back to login once it receives the 401 from the API.
We should discuss how this library might be extended to store generic session data. My initial direction and thoughts were that we would store session data outside of this library. This way each app could customize what needs to be stored, and it would be stored under the sessionID in a standalone table. The drawback to that is you will then need to manage the data retention in that table.

Spanner has a nice TTL feature

I'm good to merge this is you are @zredinger-ccc @jwatson-ccc . I'm the opener though so I can't really put an "approval" per say

We should shore up the new code with unit tests.
These test should be very similar to existing tests for the other implementation, so I hope it would quick

@jwatson-ccc @zredinger-ccc  the tests for preauth implementations are written. If we can I'd like to do any other tests under another ticket. That way I can move on to more feature development in DLH.


Create central CLI entry point for the various scripts

Right now, we have several standalone scripts.  We can create a central CLI entry point that triggers each as appropriate.

Implemented


Bot falls back to random spawn when map rotation stays on same map

When the server switches to the next level and that next level happens to also be the current level, the map rotation reset removes details required for non-random spawning. However, since the game is staying on the same map, it does not reload it. Thus, the end of screen stays stays on the score list before entering the game again. The map briefing never becomes visible.
Possible fix: Actively open map briefing if on eor screen and join game button is visible.

This is not some edge case, it happens on every map reload on single-map servers (Super@ S1, Weekend Warriors Wake Island, ...).


Add server endpoint to retrieve BTR related configuration values

Originally written by chomp

Added with: https://dev.sp-tarkov.com/SPT-AKI/Server/commit/399bbb2e3bed6e80dcf6c000f94a832627a484cb

Originally written by chomp


Instal -> Install

Fixed a typo: "INSTAL" -> "INSTALL".
My editor (Atom) also removed trailing spaces from a handful of lines.

Oh, thanks. :)


fix: renamed command from goto note to go to note

In reference to issue #2089
Pull Request Checklist
If this is your first time submitting a pull request to Dendron, copy and paste the full Dendron Review Checklist into this request and check off each item as necessary.
This template contains the short checklist which is used by the Dendron core team.
Testing

[ ] Write Tests
[ ] Confirm existing tests pass
[ ] Confirm manual testing
[ ] If your tests changes an existing snapshot, make sure that snapshots are updated
[ ] If you are adding a new language feature (graphically visible in VS Code/preview/publishing), make sure that it is included in the test workspace

Docs

[ ] if your change reflects documentation changes, also submit a PR to dendron-site and mention the doc PR link in your current PR

Analytics

[ ] if you are adding analytics related changes, make sure the Telemetry docs are updated

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.skfile seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

awesome, thanks for the PR! could you sign the CLA as well to appease our CLA bot?

There was an issue with permissions on commit. The email didn't match so CLA didn't go through. Will redo PR.


Split regular shutdown from errors

As of now the templates only include container_die, but do not distinguish by exit code. This alerts, even if the container is shut down on purpose (exit code 0).
Options:

split by exit code (i.e. 0 vs. not 0)
use different status messages (to be determined)

@rbnmax as you are involved: What status codes do you receive on wich actions from your containers?
I get the following codes:

0: container stopped itself (expected)
137: container was stopped from portainer (expected) but can be out-of-memory

But it's difficult to determine which errors to alert on and which to deliver silently:

Exit Code 0: Absence of an attached foreground process
Exit Code 1: Indicates failure due to application error
Exit Code 137: Indicates failure as container received SIGKILL (Manual intervention or ‘oom-killer’ [OUT-OF-MEMORY])
Exit Code 139: Indicates failure as container received SIGSEGV
Exit Code 143: Indicates failure as container received SIGTERM

I restart container with cronjob, I get 0 mostly, sometime even 137. I use also portainer.  I get 137 mostly when i restart from portainer, even 0 sometime. I didn't got any other failure  yet.
(sorry for late reply)

Thank you for your response. I am still unsure whether to mute some of those notifications...


Government region support

Per doc http://azure-sdk-for-python.readthedocs.io/en/latest/multicloud.html#azure-government , I can find a example for Resource to use Azure Government region, and it says for all region the authenciaion endpoint is https://login.microsoftonline.com/.
And for storage, from what I understanding, I need to pass a suffix like https://github.com/Azure/azure-storage-python/blob/master/samples/advanced/client.py#L84 . So for different service, I have to find out how to configure its Government endpoint.
But I didn't find any useful information for Government region support of Office 365 Management APIs. So do we need to do anything special for office 365 management API endpoint? Thanks.

Hi @likel
I won't be able to answer to you here, I'm sorry, I have no idea how Python and Office 365 is working :(
Is there a Python package for that? You might want to open an issue in their GH repo.
Thanks,

@lmazuel Thanks for your reply. They don't have a lib for its api, actually I don't know how to reach anybody for Office 365 API. But when I authenticating office 365 api, the login url is also https://login.microsoftonline.com/ . So I thought you maybe know something about it... :)

@likel , the Office 365 Government Community Cloud (GCC) uses the same endpoints as Office 365 commercial (the regular one), so the login URL is also https://login.microsoftonline.com.
The key consideration here is that government customers generally have two accounts/tenants:

1 tenant for Azure Government - login using login-us.microsoftonline.com and use the Azure Government endpoints as outlined here.
1 tenant for Office 365 GCC - login using login.microsoftonline.com and use the same endpoints as regular O365.

Thank you @gsacavdm . If I'm not wrong,

For O365, we don't need to do something special for GCC which uses the same endpoints (login and API endpoint) with regular O365.
For Azure: Governemt customer uses different login endpoint login-us.microsoftonline.com
instead of https://login.microsoftonline.com and different endpoints. And regular user use login endpoint https://login.microsoftonline.com and regular API endpoints. But the doc http://azure-sdk-for-python.readthedocs.io/en/latest/multicloud.html#azure-government said

Azure Government is currently using the same authentication endpoint that public azure. This means that we can use the default authentication_endpoint.

Could you please clarify, very thanks for your help.

@likel , your summary is accurate.

Hi @likel
I updated the documentation to make it right. Government will be using its own authentication endpoint (https://login-us.microsoftonline.com/) and we should use it.
Thanks!