Error with Turbo Module after adding Swift file

Description
I'm getting an error with adding my TurboModule if I add a swift file to the module - I have a bridging header and everything and still doesn't work. If i remove the swift file then it works again
Steps to reproduce

npx create-react-native-library@latest BleYolanda
yarn install && npx pod-install && npx expo run:ios (expo doesn't use prebuild. I manage the android and ios directories). Note everything works here
in modules/demo-turbo-module/ios add ble-yolanda-Bridging-Header.h and BleYolanda.swift and run all of the commands again and I get the following errors

❌  (ios/Pods/Headers/Public/ReactCodegen/BleManagerSpec/BleManagerSpec.h:15:2)

  13 |
  14 | #ifndef __cplusplus
> 15 | #error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
     |  ^ This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
  16 | #endif
  17 |
  18 | // Avoid multiple includes of BleManagerSpec symbols

❌  (ios/Pods/Headers/Public/RCTRequired/RCTRequired/RCTRequired.h:8:10)

   6 |  */
   7 |
>  8 | #include <utility>
     |          ^ 'utility' file not found
   9 |
  10 | // The inliner doesn't take into account ARC optimizations that may occur after
  11 | // inlining when computing the inline cost of an ObjC++ function. Here we make

❌  (ios/Pods/Headers/Public/RCTTypeSafety/RCTTypeSafety/RCTConvertHelpers.h:8:9)

   6 |  */
   7 |
>  8 | #import <optional>
     |         ^ 'optional' file not found
   9 |
  10 | #import <vector>
  11 |

❌  (ios/Pods/Headers/Public/React-jsi/jsi/jsi.h:10:10)

   8 | #pragma once
   9 |
> 10 | #include <cassert>
     |          ^ 'cassert' file not found
  11 | #include <cstring>
  12 | #include <exception>
  13 | #include <functional>

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/utils.h:139:1)

  137 | #endif
  138 |
> 139 | namespace double_conversion {
      | ^ unknown type name 'namespace'
  140 |
  141 | static const int kCharSize = sizeof(char);
  142 |

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/utils.h:139:28)

  137 | #endif
  138 |
> 139 | namespace double_conversion {
      |                            ^ expected ';' after top level declarator
  140 |
  141 | static const int kCharSize = sizeof(char);
  142 |

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/bignum-dtoa.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | enum BignumDtoaMode {
  36 |   // Return the shortest correct representation.

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/bignum-dtoa.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | enum BignumDtoaMode {
  36 |   // Return the shortest correct representation.

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/bignum.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | class Bignum {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/bignum.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | class Bignum {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/diy-fp.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | // This "Do It Yourself Floating Point" class implements a floating-point number
  36 | // with a uint64 significand and an int exponent. Normalized DiyFp numbers will

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/diy-fp.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | // This "Do It Yourself Floating Point" class implements a floating-point number
  36 | // with a uint64 significand and an int exponent. Normalized DiyFp numbers will

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/cached-powers.h:33:1)

  31 | #include "diy-fp.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | class PowersOfTenCache {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/cached-powers.h:33:28)

  31 | #include "diy-fp.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | class PowersOfTenCache {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/double-conversion.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | class DoubleToStringConverter {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/double-conversion.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | class DoubleToStringConverter {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/fast-dtoa.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | enum FastDtoaMode {
  36 |   // Computes the shortest representation of the given input. The returned

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/fast-dtoa.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | enum FastDtoaMode {
  36 |   // Computes the shortest representation of the given input. The returned

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/fixed-dtoa.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | // Produces digits necessary to print a given number with
  36 | // 'fractional_count' digits after the decimal point.

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/fixed-dtoa.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | // Produces digits necessary to print a given number with
  36 | // 'fractional_count' digits after the decimal point.

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/ieee.h:33:1)

  31 | #include "diy-fp.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | // We assume that doubles and uint64_t have the same endianness.
  36 | static uint64_t double_to_uint64(double d) { return BitCast<uint64_t>(d); }

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/ieee.h:33:28)

  31 | #include "diy-fp.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | // We assume that doubles and uint64_t have the same endianness.
  36 | static uint64_t double_to_uint64(double d) { return BitCast<uint64_t>(d); }

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/strtod.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | // The buffer must only contain digits in the range [0-9]. It must not
  36 | // contain a dot or a sign. It must not start with '0', and must not be empty.

❌  (ios/Pods/Headers/Public/glog/glog/logging.h:42:10)

  40 | #include <string.h>
  41 | #include <time.h>
> 42 | #include <iosfwd>
     |          ^ 'iosfwd' file not found
  43 | #include <ostream>
  44 | #include <sstream>
  45 | #include <string>

❌  (modules/BleYolanda/ios/BleYolanda.h:2:9)

  1 |
> 2 | #import <RNBleYolandaSpec/RNBleYolandaSpec.h>
    |         ^ could not build module 'ReactCodegen'
  3 |
  4 | @interface BleYolanda : NSObject <NativeBleYolandaSpec>
  5 |

I've tried just about everything... I can see in xcode that RNBleYolandaSpec/RNBleYolandaSpec.h does exist and links to it properly, etc..
React Native Version
0.76.5
Affected Platforms
Runtime - iOS, Build - MacOS
Areas
TurboModule - The New Native Module System
Output of npx react-native info
System:
  OS: macOS 14.6
  CPU: (14) arm64 Apple M3 Max
  Memory: 748.00 MB / 36.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 22.9.0
    path: ~/.asdf/installs/nodejs/22.9.0/bin/node
  Yarn:
    version: 1.22.22
    path: ~/.asdf/installs/nodejs/22.9.0/bin/yarn
  npm:
    version: 10.9.1
    path: ~/Sites/ccr-mobile/node_modules/.bin/npm
  Watchman:
    version: 2<IP_ADDRESS>
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.16.2
    path: /Users/x/.asdf/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 24.2
      - iOS 18.2
      - macOS 15.2
      - tvOS 18.2
      - visionOS 2.2
      - watchOS 11.2
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.2 AI-242.21829.142.2421.12409432
  Xcode:
    version: 16.2/16C5032a
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.12
    path: /usr/bin/javac
  Ruby:
    version: 3.1.4
    path: /Users/x/.asdf/shims/ruby
npmPackages:
  "@react-native-community/cli":
    installed: 15.1.2
    wanted: ^15.1.2
  react:
    installed: 18.3.1
    wanted: 18.3.1
  react-native:
    installed: 0.76.5
    wanted: 0.76.5
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: true
  newArchEnabled: true

Stacktrace or Logs
❌  (ios/Pods/Headers/Public/ReactCodegen/BleManagerSpec/BleManagerSpec.h:15:2)

  13 |
  14 | #ifndef __cplusplus
> 15 | #error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
     |  ^ This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
  16 | #endif
  17 |
  18 | // Avoid multiple includes of BleManagerSpec symbols

❌  (ios/Pods/Headers/Public/RCTRequired/RCTRequired/RCTRequired.h:8:10)

   6 |  */
   7 |
>  8 | #include <utility>
     |          ^ 'utility' file not found
   9 |
  10 | // The inliner doesn't take into account ARC optimizations that may occur after
  11 | // inlining when computing the inline cost of an ObjC++ function. Here we make

❌  (ios/Pods/Headers/Public/RCTTypeSafety/RCTTypeSafety/RCTConvertHelpers.h:8:9)

   6 |  */
   7 |
>  8 | #import <optional>
     |         ^ 'optional' file not found
   9 |
  10 | #import <vector>
  11 |

❌  (ios/Pods/Headers/Public/React-jsi/jsi/jsi.h:10:10)

   8 | #pragma once
   9 |
> 10 | #include <cassert>
     |          ^ 'cassert' file not found
  11 | #include <cstring>
  12 | #include <exception>
  13 | #include <functional>

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/utils.h:139:1)

  137 | #endif
  138 |
> 139 | namespace double_conversion {
      | ^ unknown type name 'namespace'
  140 |
  141 | static const int kCharSize = sizeof(char);
  142 |

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/utils.h:139:28)

  137 | #endif
  138 |
> 139 | namespace double_conversion {
      |                            ^ expected ';' after top level declarator
  140 |
  141 | static const int kCharSize = sizeof(char);
  142 |

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/bignum-dtoa.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | enum BignumDtoaMode {
  36 |   // Return the shortest correct representation.

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/bignum-dtoa.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | enum BignumDtoaMode {
  36 |   // Return the shortest correct representation.

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/bignum.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | class Bignum {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/bignum.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | class Bignum {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/diy-fp.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | // This "Do It Yourself Floating Point" class implements a floating-point number
  36 | // with a uint64 significand and an int exponent. Normalized DiyFp numbers will

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/diy-fp.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | // This "Do It Yourself Floating Point" class implements a floating-point number
  36 | // with a uint64 significand and an int exponent. Normalized DiyFp numbers will

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/cached-powers.h:33:1)

  31 | #include "diy-fp.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | class PowersOfTenCache {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/cached-powers.h:33:28)

  31 | #include "diy-fp.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | class PowersOfTenCache {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/double-conversion.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | class DoubleToStringConverter {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/double-conversion.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | class DoubleToStringConverter {
  36 |  public:

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/fast-dtoa.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | enum FastDtoaMode {
  36 |   // Computes the shortest representation of the given input. The returned

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/fast-dtoa.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | enum FastDtoaMode {
  36 |   // Computes the shortest representation of the given input. The returned

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/fixed-dtoa.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | // Produces digits necessary to print a given number with
  36 | // 'fractional_count' digits after the decimal point.

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/fixed-dtoa.h:33:28)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | // Produces digits necessary to print a given number with
  36 | // 'fractional_count' digits after the decimal point.

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/ieee.h:33:1)

  31 | #include "diy-fp.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | // We assume that doubles and uint64_t have the same endianness.
  36 | static uint64_t double_to_uint64(double d) { return BitCast<uint64_t>(d); }

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/ieee.h:33:28)

  31 | #include "diy-fp.h"
  32 |
> 33 | namespace double_conversion {
     |                            ^ expected ';' after top level declarator
  34 |
  35 | // We assume that doubles and uint64_t have the same endianness.
  36 | static uint64_t double_to_uint64(double d) { return BitCast<uint64_t>(d); }

❌  (ios/Pods/Headers/Public/DoubleConversion/double-conversion/strtod.h:33:1)

  31 | #include "utils.h"
  32 |
> 33 | namespace double_conversion {
     | ^ unknown type name 'namespace'
  34 |
  35 | // The buffer must only contain digits in the range [0-9]. It must not
  36 | // contain a dot or a sign. It must not start with '0', and must not be empty.

❌  (ios/Pods/Headers/Public/glog/glog/logging.h:42:10)

  40 | #include <string.h>
  41 | #include <time.h>
> 42 | #include <iosfwd>
     |          ^ 'iosfwd' file not found
  43 | #include <ostream>
  44 | #include <sstream>
  45 | #include <string>

❌  (modules/BleYolanda/ios/BleYolanda.h:2:9)

  1 |
> 2 | #import <RNBleYolandaSpec/RNBleYolandaSpec.h>
    |         ^ could not build module 'ReactCodegen'
  3 |
  4 | @interface BleYolanda : NSObject <NativeBleYolandaSpec>
  5 |

Reproducer
https://github.com/CaptainJeff/reproducer-react-native
Screenshots and Videos
No response

That's a known issue. You can't write a TurboModule directly in Swift, sadly.
The reason is that the header file that you have to import, contains some C++ code (e.g.: the getTurboModule method) and Swift can't import C++ code directly.
The proper way to do it, is currently to:

Create an ObjC++ file that extends the Codegen'd interface
Let the ObjC++ file own the Swift implementation of your module
Forward the method call from the objc++ to swift.

JS Module

import type {TurboModule} from 'react-native';
import {TurboModuleRegistry} from 'react-native';

export interface Spec extends TurboModule {
  setItem(value: string, key: string): void;
}

export default TurboModuleRegistry.getEnforcing<Spec>(
  'NativeLocalStorage',
);

Obj-C++ Module

// RCTNativeLocalStorage.h
#import <Foundation/Foundation.h>
#import <NativeLocalStorageSpec/NativeLocalStorageSpec.h>

NS_ASSUME_NONNULL_BEGIN

@interface RCTNativeLocalStorage : NSObject <NativeLocalStorageSpec>

@end

// RCTNativeLocalStorage.mm
#import "RCTNativeLocalStorage.h"

@implementation RCTNativeLocalStorage {
  SwiftLocalStorage *_swiftLocalStorage;
}

RCT_EXPORT_MODULE(NativeLocalStorage)

- (id) init {
  if (self = [super init]) {
    _swiftLocalStorage = [RCTSwiftLocalStorage new];
  }
  return self;
}

- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
  return std::make_shared<facebook::react::NativeLocalStorageSpecJSI>(params);
}

- (void)setItem:(NSString *)value
          key:(NSString *)key {
  [_swiftLocalStorage setObject:value forKey:key];
}

@end

Swift:

class SwiftLocalStorage {
	func setObject(_ value: String, forKey key: String){
		// your swift implementation
	}
}

@cipolleschi
Thanks for the pointers. That is the basic approach I was taking but when I try to implement the exmaple you provided I'm still getting issues.
Unknown type name 'SwiftLocalStorage' and Use of undeclared identifier 'RCTSwiftLocalStorage'  - it doesn't seem to be able to access the swift method at all. Is there anything else that needs to be done to give it access to the swift files? Also, can you confirm if we need to create a bridging header or not? (I tried with and without and neither seem to work)

I didn't provide the full code to you, just the rough overview of what's needed.
The bridging header should not b needed as you don't need to import any objc file in your swift.
However, you need a YourModule-Swift.h file that you must import in the .mm file to get access to the Swift objects.


Issue while parsing data source revision items

The method tableauserverclient.models.revision_item.RevisionItem.from_response() expects the attributes "isCurrent", "isDeleted" and "createdAt".
But tableau server provides these attributes with the names "current", "deleted" and "publishedAt".
The resulting RevisionItem is therefore missing these attributes.
I'm using tableau server version 3.15. Unfortunately I have no possibility to test with other versions. Probably some older version of tableau server provides the attributes with different names. I guess it is necessary to parse the server response conditionally according to the server version.

This is a duplicate of #1175 (there's also a PR with fixes at #1176)

thanks for the heads up :)


getStringForm documentation typo?

I think there is an error in that comment:
getStringForm(string, n)
    Get the correct pluralized (but untranslated) string for the value of n

Because from the code below, it rather seems that getStringForm() returns a TRANSLATED (potentially PLURALIZED) string, just not $interpolated as getString() does it in addition.
    getStringForm: function (string, n) {
        var stringTable = this.strings[this.currentLanguage] || {};
        var plurals = stringTable[string] || [];
        return plurals[n];
    },.

I think you are right!

Fix pushed, thanks for reporting this!


Allow policies to be omitted from ScubaGear

🗣 Description
Make it so that policies can be omitted from the ScubaGear reports.
💭 Motivation and context
Closes https://github.com/cisagov/ScubaGear/issues/740.
Closes https://github.com/cisagov/ScubaGear/issues/739.
Closes https://github.com/cisagov/ScubaGear/issues/738.
🧪 Testing
I'd recommend that the reviewers start by reading the documentation I added for this feature, to get a good overview of the approach taken: https://github.com/cisagov/ScubaGear/blob/739-allow-any-given-policy-to-be-ignored/docs/configuration/configuration.md#omit-policies.
Testing I've done:

Added 8 new Pester cases to cover these changes
Manually tested without a config file to ensure normal executions is unchanged
Manually tested excluding several policies without expiration dates
Manually tested excluding policies without specifying the rationale
Manually tested excluding policies with expirations date, both in the past and future
Manually tested excluding policies with a malformed expiration date
Manually tested generating a config file with policy omissions via New-Config, including some edge cases, such as malformed policy ids, variations in capitalization, and unexpected product names in the policy IDs.

✅ Pre-approval checklist

[x] This PR has an informative and human-readable title.
[x] PR targets the correct parent branch (e.g., main or release-name) for merge.
[x] Changes are limited to a single goal - eschew scope creep!
[x] Changes are sized such that they do not touch excessive number of files.
[x] All future TODOs are captured in issues, which are referenced in code comments.
[x] These code changes follow the ScubaGear content style guide.
[x] Related issues these changes resolve are linked preferably via closing keywords.
[x] All relevant type-of-change labels added.
[x] All relevant project fields are set.
[x] All relevant repo and/or project documentation updated to reflect these changes.
[x] Unit tests added/updated to cover PowerShell and Rego changes.
[x] Functional tests added/updated to cover PowerShell and Rego changes.
[x] All relevant functional tests passed.
[x] All automated checks (e.g., linting, static analysis, unit/smoke tests) passed.

✅ Pre-merge checklist

[ ] PR passed smoke test check.

[ ] Feature branch has been rebased against changes from parent branch, as needed
Use Rebase branch button below or use this reference to rebase from the command line.

[ ] Resolved all merge conflicts on branch

[ ] Notified merge coordinator that PR is ready for merge via comment mention

✅ Post-merge checklist

[ ] Feature branch deleted after merge to clean up repository.
[ ] Verified that all checks pass on parent branch (e.g., main or release-name) after merge.

Feedback on example config file
The example MS.TEAMS.6.1v1 provided in the sample config file is confusing with respect to the sample rationale. If the service is provided by M365 Defender and the Defender baseline checks for the implementation of this policy, then what is the purpose of having this policy in Teams to begin with? I believe this has a good chance of confusing users.
Instead I recommend you provide an example rationale such as "The DLP capability required for Teams is implemented by third party product X which ScubaGear does not have the ability to check" or something like that.
I also recommend that you trim the number of example policy IDs that you have. I think by the time the user gets to policy 7.1 in the example config they will get the point so you could get rid of examples 7.2, 8.1, 8.2 and we wouldn't lose anything.

Feedback on example config file
The example MS.TEAMS.6.1v1 provided in the sample config file is confusing with respect to the sample rationale. If the service is provided by M365 Defender and the Defender baseline checks for the implementation of this policy, then what is the purpose of having this policy in Teams to begin with? I believe this has a good chance of confusing users. Instead I recommend you provide an example rationale such as "The DLP capability required for Teams is implemented by third party product X which ScubaGear does not have the ability to check" or something like that.
I also recommend that you trim the number of example policy IDs that you have. I think by the time the user gets to policy 7.1 in the example config they will get the point so you could get rid of examples 7.2, 8.1, 8.2 and we wouldn't lose anything.

Done

I made a few tweaks to the configuration.md because i felt the term "excluded" could get conflated with AAD conditional access policy exclusions. we should stick with the term "omitted" and omissions.

In configuration.md, I think we can delete this paragraph. It is confusing and I don't think it adds anything. Do you think anyone is likely to send policy ids as command line arguments to New-Config? It is easier to just modify the yaml config file in my opinion.
"Policy omissions can be provided to the New-Config function as a comma-separated list of policy IDs under the OmitPolicy parameter. However, the New-Config function does not allow you to specify the rationales or expiration dates via the commandline; these must be manually entered into the resulting config file."

The expiration date feature is a nice touch!

Will the following line perform a case-insensitive match? If not, should we make is so that case does not matter?
if ($Config.OmitPolicy.psobject.properties.name -Contains $ControlId)

What are your thoughts on changing the following?
Test disabled by user.
to
Test omitted by user.

Bug
If the user accidentally provides two Rationale fields ScubaGear crashes. The same problem occurs if you have more than one omit policy entry for the same policy id.

Will the following line perform a case-insensitive match? If not, should we make is so that case does not matter?
if ($Config.OmitPolicy.psobject.properties.name -Contains $ControlId)

I tested this. It ignores case which is great for flexibility. No change needed.

Test summary

Tested prior date, today and future date for the Expiration field and the tool behaved as expected.
Tested single quote in Rationale field and tool behaved as expected.
Tested rationale missing and tool behaved as expected.
Tested malformed date and the tool behaved as expected.
Tested without rationale and without date and the tool behaved as expected.
The only test that produced a bug was when you have more than one of the same policy or you have multiple rationales. See separate comment with details.

In configuration.md, I think we can delete this paragraph. It is confusing and I don't think it adds anything. Do you think anyone is likely to send policy ids as command line arguments to New-Config? It is easier to just modify the yaml config file in my opinion.
"Policy omissions can be provided to the New-Config function as a comma-separated list of policy IDs under the OmitPolicy parameter. However, the New-Config function does not allow you to specify the rationales or expiration dates via the commandline; these must be manually entered into the resulting config file."

I agree that it's probably easier to reference the example config and modify their config file manually. I'm ok with deleting the paragraph.

Bug
If the user accidentally provides two Rationale fields ScubaGear crashes. The same problem occurs if you have more than one omit policy entry for the same policy id.

I think this bug is out of scope for this PR, I recommend opening a separate issue for it. This bug is in the orchestrator and/or the ScubaConfig.psm1 LoadConfig function. The YAML specification actually does not allow duplicate keys, so in your test, you've engineered invalid yaml. The problem this surfaces is that the orchestrator does not catch that invalid yaml was provided. The first error message in your screenshot is a bit cryptic, but the fix might be to wrap this line (in ScubaConfig.psm1) in a try/catch:

Additionally, for whatever reason, this if in Orchestraror.psm1 failed to detect that the config failed to load.

Additionally, for whatever reason, this if in Orchestraror.psm1 failed to detect that the config failed to load.

I opened an issue. BTW, from what I can tell, the reason that code in Orchestrator does not work as expected is because when the LoadConfig function produces an error, Orchestrator will not execute the if statement you mentioned. Instead it will go to the nearest catch () block, right?

Additionally, for whatever reason, this if in Orchestraror.psm1 failed to detect that the config failed to load.

I opened an issue. BTW, from what I can tell, the reason that code in Orchestrator does not work as expected is because when the LoadConfig function produces an error, Orchestrator will not execute the if statement you mentioned. Instead it will go to the nearest catch () block, right?

Honestly, I'm not really sure what will happen. Unless I'm just not looking deep enough, this block of code isn't within a try at all. Definitely more digging needed here.

What are your thoughts on changing the following? Test disabled by user. to Test omitted by user.

Changed

@nanda-katikaneni Looks like this one is good to go


[DocumentIntelligence] Added readme and samples

WIP

/azp run net - documentintelligence

/azp run net - documentintelligence

API change check
APIView has identified API level changes in this PR and created following API reviews.


[API] Running Laravel migrations on an existing database.

Topic Suggestion.
Proposed title of article
Running Laravel migrations on an existing database
Proposed article introduction
Let's imagine your company needs to make a change and use Laravel from the raw PHP technology, or it needs to shift from another framework to Laravel. In addition to that, there is an existing database with thousands, if not millions, of records. Would you delete the database first and run fresh Laravel migrations? Or would you create fresh migrations and do some fragile data exportations? You can give up as well and advise the company on the complexity of the issue, right?
All the options given are not suitable and we need a way to carefully run our migrations on the existing tables. In this article, we will learn how to do that without interfering with any preexisting data. We will run our migrations on a live hosted database using a sample table without the need of installing any package.
Key takeaways

Running migrations on an existing database.
Running the migrate command in scripts rather than the terminal.
Configuring the .htaccess files for our Laravel application in the live environment.

Article quality
It will definitely provide more information about running terminal commands in the scripts and .htaccess file configurations for the live environment. Additionally, no package will be used.
References
N/A

Could you please expand upon how your content will differ from what is already available through other website and documentation? We lean towards content that offers an original viewpoint/approach around programming-centric topics.

Greetings @LinusMuema. The official documentation only covers running migrations on a 'freshly' created database. That is ,if you are creating one for the first time. But in this scenario, I'm looking at a case where there is an existing database, an already created database with records. Also, we will be deploying it on a live server(Apache), then configure the .htaccess files.

Okay...awesome


Install Optional Packages

Tutorial URL: https://developers.sap.com/tutorials/hxe-ua-packages-vm.html
SAP HANA smart data integration | Install the Optional SAP HANA Smart Data Integration Package for SAP HANA, express edition
Link is broken

@JCurrie27 Can we modify the title to "Install Option Packages for SAP HANA, express edition"?

Broken links have been fixed.


Mark std.uni.isPowerOf2 as @nogc

It does not contain any GC-related operations.

LGTM

Auto-merge toggled on

Thanks!


Doesn't respond

Hi, I have a Discord bot hooked up to this and it's not responding. I tried running it in a solo script and it doesn't respond either. Any idea what's happening?
Please advise because people who use my bot are asking why it isn't working

There is also this huge chunk of error that gets left behind

Is it possible for you to send me the screenshot of the errors?

Same error, your api is down
translate api:

https://api.affiliateplus.xyz/

it’s fine I already switched to another API

it’s fine I already switched to another API

Can you send me link to new API?

https://www.npmjs.com/package/discord-chatbot

Same error, your api is down translate api:
https://api.affiliateplus.xyz/

About this, the api restarts every hour to clear cookies cache, the translate api isnt owned by me I dont maintain it, lmk if you have a better translate api that could work

Why I am getting {"message":"SPAM","error":true}?


Add license support to Deployment API and a new InstallLicenses API

The Deployment API Initialize() now installs license files embedded in the framework package along with embedded MSIX packages i.e.
FOREACH file IN fwkpkgdir\MSIX\*-license.xml
    InstallLicenseFile(file)
FOREACH file IN fwkpkgdir\MSIX\*.msix
    AddPackage(file)

We also add a new WindowsAppRuntime_InstallLicenses() API for use by anyone who directly installs the *.msix packages (i.e. those who don't distribute via the Store, don't use WindowsAppRuntimeInstaller.exe and don't use the Deployment API).
NOTE: The framing's in place but the implementation is stubbed. I know how but it's late so best to sleep on it before I start plowing in. What's present exposes a new entrypoint not-yet-used export with new codepath so no harm having it exist but not yet functional. Watching this space...
Updated the build pipeline to copy the implementation header into the build before compiling during build pipelines (yet w/o disrupting dev inner-loop). Needs to get the Transport package containing that. @BenJKuhn I'm a little fuzzy on the details there. Feel free to update the branch.
Also changed the installer's ordering to now install licenses BEFORE packages. In worst case scenarios better to have incomplete packages than incomplete licenses as the latter is readily identified and understood as a problem, whereas tooling, understanding and even awareness of licenses' existence is a rarer thing. This change updates the installer for improved reliability and troubleshooting if something does go wrong, and aligns with the ordering in the Deployment API (for same reasons).

/azp run

/azp run

/azp run

/azp run

Infrastructure error on the build? Trying again

/azp run

/azp run

/azp run

Best I can tell Helix infrastructure seems to have a problem (outage?)
@BenJKuhn  @kythant tag you're it

/azp run

/azp run


Improved the about page

Pull Request Template

Please provide all of the details below. Pull requests missing any of the information below will be closed!
Providing the issue number/url helps us identify the problem being solved and keep the issues tab clean and tidy

issue #792
This is fix and an addition or improvement to the about page.
Summarize what this PR fixes:-

Added the navbar and footer to the about page
I fixed the hero section
I reduced the hovering scale of the know more button and added a margin-top of 10px
I changed the section tag that wraps the information about Keiko-Corp in the about.html page to an about tag because it's style was conflicting with another section tag.
Added my name to contributors.md
Apart from doing these in the about page, I reduced the font of the navbar
Fixes #792

Checklist
(Add an x between the brackets to check the items)

[x] I have summarize what this PR fixes above
[x] I have provided the issue ID/URL above
[x] I have not added Bootstrap or jQuery and used correct styling guide.
[x] This PR fixes only the issue mentioned above (create separate PRs for separate issues)
[x] I was the first one to claim the issue or I created the issue - I created the issue

Because this pr included so many different issues, it caused conflicts with another issue that fixed just the nav bar on the about page. Please resolve the conflicts and next time create an issue for each item being fixed. Also, make sure it isn't a duplicate of another issue.

Because this pr included so many different issues, it caused conflicts with another issue that fixed just the nav bar on the about page. Please resolve the conflicts and next time create an issue for each item being fixed. Also, make sure it isn't a duplicate of another issue.

I created the issue on fixing the about page first. The other person that did a pr did not check to make sure there was nothing like that before creating the pr.


Add parameters to Sort and KLabel

Do not review yet.

Can one of the admins verify this patch?

Jenkins: test this please

Jenkins: test this please

The tests fail because of a race condition in the C semantics that requires either fixing or an updated reference file. Note that all the other rv-match tests pass and mvn verify succeeds from within the K module. So I think this is ready for review and to be merged despite the failing test. @chathhorn note that you will have to deal with this issue next time you update the K submodule after this has been merged, or you will get test failures. I tracked the issue down to a race in showQualifiers between outputting "const volatile" and outputting "volatile const", but I didn't want to spend time on a proper fix since that's Chris's responsibility.


Fixed minor issue with error message - change 'Type X has not templat…

…e' to 'Type x has no template'.

Hi @dannycallaghan! Thanks for doing this!
Ignore the snap build. I just deleted it. We're now building with Travis. I need to add a check on travis that your commit message is correct. Now that we're automating our releases with semantic-release, we need to make sure that the commit messages are correct. If you could update your commit message to use our conventions, that would be very helpful. Let me know if you have trouble with this.

Hey @kentcdodds
I've updated the commit message. Hope that's satisfactory. Let me know if it's not (or if I messed up with amending the commit).

That'll do! Thanks!


Issue with phpstan-doctrine

I have an issue using phpstan-doctrine and phpstan-vscode extension. This is my phpstan.neon:
includes:
    - vendor/phpstan/phpstan-doctrine/extension.neon
    - vendor/phpstan/phpstan-doctrine/rules.neon
parameters:
    level: 9
    paths:
        - src
        - tests
    checkMissingIterableValueType: false
    ignoreErrors:
        - '#Method .+::dispatch\(\) invoked with 2 parameters, 1 required\.#'
        - '#Method .+ return type has no value type specified in iterable type .+#'
        - '#Method .+ has parameter .+ with no value type specified in iterable type array\.#'
        - '#Property .+::\$id is never written, only read\.#'
    stubFiles:
        - app/stubs/Symfony.stub
        - app/stubs/Filter.stub
        - app/stubs/json.stub
    doctrine:
        objectManagerLoader: app/stubs/object-manager.php

And when I run it this way via cli:
<path>/phpstan analyse <path>/Repository.php -c <path>/phpstan.neon
it will return list of errors. But when I use it as extension it does not report errors. This is output log:
[check:35] Spawning PHPStan with the following configuration:  {"binCmd":"<path>/phpstan","args":["analyse","-c","<path>/phpstan.neon","--error-format=raw","--no-interaction","--memory-limit=1G","--no-progress","<path>/Repository.php","-a","/var/folders/54/7q9csvqd5_qfg91kt6j_jklc0000gn/T/tmp-1004-LXYhMyo2G3LR/autoload.php","-c","/var/folders/54/7q9csvqd5_qfg91kt6j_jklc0000gn/T/tmp-1004-LXYhMyo2G3LR/config.neon"]}
[check:34] Check completed for file:///<path>/Repository.php errors= {}

I would expect same response to be for command via cli as well via extension
Additional information is that if I remove this part from phpstan.neon configuration:
doctrine:
        objectManagerLoader: app/stubs/object-manager.php

Extension again show errors correctly

Can you check out the contents of the temporary config.neon file? Does it look OK or is there some stuff missing? Is there any special output if you run the check with the configuration in the log (so with the overridden config.neon)?
Alternatively you could try disabling the language server (phpstan.enableLanguageServer setting), that may very well fix it too
Or alternatively

@SanderRonde setting Phpstan: Enable Language Server option to false in settings fixed the issue.
How to get overridden config.neon? I don't know because when I try this file after vsconfig execute phpstan temporary config.neon is removed

Ahh yeah if it's immediately removed then that's pretty much impossible but thanks for giving it a try. If it's not easy to do that then let's just leave it for now. Glad to hear the issue was fixed by disabling the setting though. I think it causes such issues quite often so I might consider disabling it by default...
In any case, I think this issue is resolved then right? Please let me know if you need further help.


Cannot access Learning -> Reference

Clicking on Learning -> Reference (as shown) returns a blank page with this as the URL:
https://id.arduino.cc/auth/login/?go=1%26returnurl%3Dhttp%3A%2F%2Farduino.cc%2Fen%2FReference%2FHomePage

Raised here: http://forum.arduino.cc/index.php?topic=291439

Can you confirm this is now solved?

Seems OK today.


Cherry pick PR 11165

Does something else need to be done to get this merged?

Not stale. Just sitting in the waiting room.

Ping

/test istio-unit-tests

/lgtm

@kyessenov: changing LGTM is restricted to assignees, and assigning you to the PR failed.

In response to this:

/lgtm

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: kyessenov, theganyo
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

mixer/OWNERS [kyessenov]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/approve
/lgtm

@kyessenov: changing LGTM is restricted to assignees, and assigning you to the PR failed.

In response to this:

/approve
/lgtm

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: kyessenov, theganyo
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

mixer/OWNERS [kyessenov]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@theganyo: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
413469d387dac9088bc229efe0e5bc17fa996335
link
/test istio-integ-k8s-tests

prow/istio-pilot-multicluster-e2e.sh
413469d387dac9088bc229efe0e5bc17fa996335
link
/test istio-pilot-multicluster-e2e

prow/e2e-simpleTests-cni.sh
413469d387dac9088bc229efe0e5bc17fa996335
link
/test e2e-simpleTests-cni

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@theganyo: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-integ-k8s-tests.sh
413469d387dac9088bc229efe0e5bc17fa996335
link
/test istio-integ-k8s-tests

prow/e2e-simpleTests-cni.sh
413469d387dac9088bc229efe0e5bc17fa996335
link
/test e2e-simpleTests-cni

prow/istio-pilot-multicluster-e2e.sh
413469d387dac9088bc229efe0e5bc17fa996335
link
/test istio-pilot-multicluster-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Problem in ativating Zigfbee2mqtt mode

I forgot the diagnostic file, sorry
config_entry-xiaomi_gateway3-6fd15513d7eaecf34436a5f1a2f5b654.json.txt

I guess you haven't read the documentation

https://github.com/AlexxIT/XiaomiGateway3#zigbee2mqtt-mode

Hi Alexx,
I followed what you suggested in documentation:

installed zigbee2mqtt instance (via python)
in config I inserted the two statements regarding the devices (see attached)
result: Zigbee2mqtt and zigbee-herdsman remains in starting mode (see below)
Thanks for your help

zigbee2mqtt-xi.service - zigbee2mqtt-xi
Loaded: loaded (/etc/systemd/system/zigbee2mqtt-xi.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-02-04 11:53:44 CET; 6s ago
Main PID: 270195 (npm start)
Tasks: 23 (limit: 18961)
Memory: 127.8M
CPU: 2.138s
CGroup: /system.slice/zigbee2mqtt-xi.service
\u251c\u2500270195 npm start
\u251c\u2500270209 sh -c node index.js
\u2514\u2500270210 node index.js
feb 04 11:53:44 francesco-nipogi systemd[1]: Started zigbee2mqtt-xi.
feb 04 11:53:45 francesco-nipogi bash[270195]: ><EMAIL_ADDRESS>start
feb 04 11:53:45 francesco-nipogi bash[270195]: > node index.js
feb 04 11:53:46 francesco-nipogi bash[270210]: Zigbee2MQTT:info  2023-02-04 11:53:46: Logging to console and directory: '/v>
feb 04 11:53:46 francesco-nipogi bash[270210]: Zigbee2MQTT:info  2023-02-04 11:53:46: Starting Zigbee2MQTT version 1.30.0 (>
feb 04 11:53:46 francesco-nipogi bash[270210]: Zigbee2MQTT:info  2023-02-04 11:53:46: Starting zigbee-herdsman (0.14.89)
~
~
config.yaml
homeassistant: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt-xi
server: 'mqtt://localhost'
user: mqtt-user
password: And02Enr07
version: 5
include_device_information: true
serial:
port: tcp://<IP_ADDRESS>:8888
adapter: ezsp
advanced:
log_directory: /var/log
network_key:
- 18
- 40
- 1
- 186
- 221
- 19
- 54
- 33
- 229
- 49
- 35
- 233
- 65
- 164
- 69
- 106
experimental: {}
frontend:
port: 8585
ota:
update_check_interval: 10
disable_automatic_update_check: false

I'm not using z2m and can't help with problems with it


Formatter: Improved multiline dictionary and list indentation for sole function parameter

Port https://github.com/psf/black/pull/3964 added in preview style to the ruff formatter:
For better readability and less verticality, Black now pairs parantheses ("(", ")")
with braces ("{", "}") and square brackets ("[", "]") on the same line for single
parameter function calls. For example:
foo(
    [
        1,
        2,
        3,
    ]
)

will be changed to:
foo([
    1,
    2,
    3,
])

Is this preview style?

yes

😬 I do not prefer this style.

😬 I do not prefer this style.

😬 I do prefer this style.

Don't forget to share your opinions in the black repo when the time comes.
https://github.com/psf/black/issues/3989#issuecomment-1783196332

Last year I feel we may not have gotten enough feedback during this period, leading to some controversy over certain decisions, so I hope we'll be able to get more early feedback this year. If Ruff or its users could provide feedback on any preview-style features, I'd be happy.

FYI: https://github.com/psf/black/pull/3992

@henriholopainen That's what's implemented in https://github.com/astral-sh/ruff/pull/8293/files#diff-b84e5729fb09571d5fd2e3fcba65612a57765cd6351ba6388b674208b79877ffR48-R60, right?

This is now supported via https://github.com/astral-sh/ruff/pull/8293, though we don't yet apply these rules recursively (intentionally).

We're gonna continue without applying these rules recursively.


[DATA] Type returned for operator code for a87f4d

Url of request
https://api.adsbdb.com/v0/aircraft/a87f4d
Why was the data wrong
The ICAO type (E50P) is being returned for the registered_owner_operator_flag_code.
Additional context

Thanks,
Am trying to work out what the correct registered_owner_operator_flag_code should be, do you happen to know?

I assume you intend that field to hold the three letter designator that get assigned to operators (https://www.faa.gov/air_traffic/publications/atpubs/cnt_html/chap3_section_3.html)?
If so, for this owner I assume it would be null. Cavern Aviation LLC doesn’t show up on the list of FAA’s 3 letter designators.
Those only get assigned to airlines and other operators and other operators as far as I understand. Regular owners of aircraft wouldn’t request or be granted those.
From: Jack Wills @.>
Sent: Wednesday, January 11, 2023 7:21 PM
To: mrjackwills/adsbdb @.>
Cc: Scott Ladewig @.>; Author @.>
Subject: Re: [mrjackwills/adsbdb] [DATA] Type returned for operator code for a87f4d (Issue #11)
Thanks,
Am trying to work out what the correct registered_owner_operator_flag_code should be, do you happen to know?
—
Reply to this email directly, view it on GitHubhttps://github.com/mrjackwills/adsbdb/issues/11#issuecomment-1379688676, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEUJJJQLAA3U53IJSYMFHBDWR5L55ANCNFSM6AAAAAATV5ZKIU.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>

Thank you kindly for that information!
I can easily incorporate that faa table/data into the database, and then (attempt) to nullify all the incorrect entries

I’d look at using the Mictronics.de operator db. You can look up operators by hex with that. It's licensed under Open Data Commons Attribution License.
Then one you want is: Complete database for old readsb (non protocol buffer version). Can download at: https://www.mictronics.de/aircraft-database/export.php

From: Jack Wills @.>
Sent: Wednesday, January 11, 2023 7:30 PM
To: mrjackwills/adsbdb @.>
Cc: Scott Ladewig @.>; Author @.>
Subject: Re: [mrjackwills/adsbdb] [DATA] Type returned for operator code for a87f4d (Issue #11)
Thank you kindly for that information!
I can easily incorporate that faa table/data into the database, and then (attempt) to nullify all the incorrect entries
—
Reply to this email directly, view it on GitHubhttps://github.com/mrjackwills/adsbdb/issues/11#issuecomment-1379695415, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEUJJJW345MR7IJEXNTGSQDWR5NBRANCNFSM6AAAAAATV5ZKIU.
You are receiving this because you authored the thread.Message ID: @.***>

Again, amazing, I have a big list somewhere of datasets that I need to look into, but don't think this one is on it so far.
I have local branch to fix various airline problems, at the moment they are not stored jn the database as efficiently as they could be, and there's an submitted issue on github to be able to return both icao and iata airline codes to the user, but as ever, got distracted by other things/projects, even though I went through a laborious process to extract, search, and detail, all the icao/iata codes that I could find


Update Pangeo kernel on JHub and use for tutorial

Need the Pangeo environment/kernel on the JHub updated to include all of the packages that we need for this tutorial.
Also need to tailor this tutorial for this new kernel.

https://github.com/NCAR/hpc-jupyter-kernels/pull/11

Is this done?  Can we close this issue?

Is this done?

Pinging @jbaksta


How to use the NimBLE spp example? (IDFGH-6870)

I'm trying to use the NimBLE spp example (server). I can connect to my ESP from my android and send data, but can't see what is being sent. I just want read the data that is being sent to my ESP from my android.
I'm using an ESP32 DevKit and ESP-IDF version at v5.0-dev-1766-g84f9aa13c9. I can't see that the NimBLE spp example are fairly new, so is it not possible to read the incoming data?
Log from terminal:
I (26622) NimBLE: mtu update event; conn_handle=0 cid=4 mtu=256

I (30132) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 15
I (36382) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 15
I (36832) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 15
I (37012) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 15
I (37152) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 15
I (37282) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 15

Hi @brahmajit
SPP is implemented as a custom service in BLE. User needs to do read / write on gatt characteristics to achieve the same functionality as SPP.  In above, the application indicates data is received.  Please refer to the fields of ble_gatt_access_ctxt , which you can refer in your application to get needed information. The buffer om present inside this structure can be accessed and used based on the operation being attempted.
Thanks,
Rahul

@rahult-github thanks. I'm able to read the data being sent using the ctxt->om->om_data. But I get some unwanted character at the end of the message. Any idea what's happening?
I (9322) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 11
I (9322) NimBLE_SPP_BLE_PRPH: test
��q

@brahmajit  , Can you please confirm that you are printing data of correct length ?  This is the data that remote has sent. You can even enable DEBUG log level and see what is the actual data received to host over HCI.

@rahult-github I can confirm that the data I'm getting is of correct size.
Code snippet
case BLE_GATT_ACCESS_OP_WRITE_CHR:
	ESP_LOGI(
		tag,
		"Data received in write event,conn_handle = %x,attr_handle = %x",
		conn_handle, attr_handle);
	ESP_LOGI(tag, "%s %d", ctxt->om->om_data, ctxt->om->om_len);
	break;

I (7846) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 11
I (7846) NimBLE_SPP_BLE_PRPH: test
��q 6
I (8066) NimBLE_SPP_BLE_PRPH: Data received in write event,conn_handle = 0,attr_handle = 11
I (8066) NimBLE_SPP_BLE_PRPH: test
��q 6

Hi @brahmajit ,
I think you are doing this the wrong way. om_data is a pointer of type uint8_t. I would rather have a for loop running for the length and printing each byte using %x to get the contents . I think this is now more of a C coding issue rather than BLE SPP server functionality issue.
Thanks,
Rahul

@rahult-github Thanks for the heads up. I'll do that.


feat: use SPI for analyzer loading

This PR loads all classes implementing StaticAnalyzer and invokes them. Fixes more or less the to-do inside the code. We could change StaticAnalyzer from interface to abstract class to enforce a non-arg constructor or hope the programmer writes his code correct. Only StaticAnalyzer with a non-arg constructor are usable for SPI.

@MartinWitt how about we create a branch called spi and we merge your PRs over there until it is entirely ready for merge into master?

Sounds like a reasonable idea because the PR itself is somewhat worthless without the rest. I believe you need to create a branch and I have to create a new PR for the branch.

Pushed a new branch spi. You can submit all your PRs here.

I changed the target branch to SPI.


How can i delete every email i fetch?

Right now the only option is to set them as SEEN, but i want to flag them as deleted.

I think i've found a way to do it:
add this one after line 127 of index.js ->
self.imap.setFlags(result, 'Deleted', function(err) { console.log(err); });

I would let this be open and wait for more feedback. If more people +1 this i would add this feature.
I'm personally -1 on giving markDeleted as a global option. Use self.imap instance to do that for every mail you want to delete.

+1 I needed it a moment ago.

@chirag04 thoughts on exposing result in the mail event so we can delete with self.imap?
Happy to do a PR

You can flag it as deleted like this:
this.mailListener.imap.seq.setFlags(seqno, ['\\Deleted', '\\Seen'], function(err) {             if(err) {                 console.error(err);             }         } );
Be careful the function setFlags overrides all previous set flags .

+1 the solution of sergio773 solution helps me very much (in my protractor-tests): the mail is marked as deleted. But as I still found it in the Inbox, I looked further on and found out, that I have to use the command expunge too.
mailListener.imap.expunge ( function (err) { if (err) { console.error(err); } });
After this the mail is gone.
:-)

works perfectly :)

hi,
I'able to delete the email after parsing it with setflag and expunge, but then the fetch will only notify me that new mail exists and is recent (and so on for new ones)
from debug
<= '* 1 EXISTS'
<= '* 1 RECENT'
it's like the maillistener.on('mail') is not ever being called again..
anyone had this problem?
(context: what im trying to achieve is a node app that stai connected to the mail server, fetch new mail, save em as file and delete them from server)
thansk


Dex LP Actions - Silver & Core

We need a silver layer for (DEX) LP Actions with a core view. This table should includes all actions entering and exiting liquidity pools
The silver layer implementation is up to the analyst. Often distinct DEXes cannot fit one model, so there may need to be multiple transform layers. The core view that is exposed for querying should follow the structure in Direction below.
When working on the DEX data, it would be prudent to take note if there is a mapping of pool IDs to tokens, or a label of some kind on contract deployment, to curate into a dimensional labels model.
To Do

[ ]  Assign primary & secondary analysts
[ ]  Design the schema for this table
[ ]  Get confirmation on schema
[ ]  Build schema
[ ]  Schema build review
[ ]  Submit Pull Request for review by pod

Direction

Column
Data Type
Tests
Documentation

block_id
number
not null, sequence gaps, number format
Also known as block height. The block_id, which indicates the length of the blockchain, increases after the addition of each new block.

block_timestamp
timestamp
One day recent, not null, timestamp format
The date and time the block was recorded.

blockchain
string
not null, string/varchar format
The name of the blockchain.

chain_id
string
not null, string/varchar format
The version of the blockchain.

tx_id
string
not null, string/varchar format
A unique key that identifies a transaction. Called "TxHash" on block explorers.

tx_succeeded
boolean
not null
TRUE if the transaction was successful, FALSE otherwise.

liquidity_provider_address
string
not null, string/varchar format
The address of user that provided or removed liquidity from the pool.

action
string
not null, string/varchar format
Tells what action is happening in the transaction. I.E. is the user adding or removing liquidity to the pool

pool_id
number
not null, number format
Identifier for the pool within the module

amount
number
not null, number format
The amount that was used in the transaction message.

currency
string
not null, string/varchar format
The currency that was used in the transaction message.

decimal
number
not null, number format
Divide the amount by POW(10, decimal) to get the amount used in the transaction. This value can be NULL, as decimals are hand curated from an outside source and not found on-chain.

Contribution Reward
Per the S3 approach, this falls into the project category and contribution incentive will be handled through Coordinape. Expected collaboration is 3-4 individuals with a primary Analyst, primary PR Reviewer and possible secondaries for either the Analyst or Review side of the work.
Issue reward pool: $1,200 in LUNA (token amount determined at time of payment)

Will take this one

Can I sign on as secondary?


Optimize UnknownFieldOrTypeMismatch instances

remove pre-field instantiation of
DynamicParser<>::UnknownFieldOrTypeMismatch method to reduce generated
symbols

@veselinp,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

CI timeout on VC12 build is unrelated. Merging.

@veselinp,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


2023 Map

I have made a not finished 2023 map but I underestimated adding it in to the program.
Here is the WIP image if you can help me add it that would be nice

I opened a pull request with one that also fits RR coordinate system


General Poster for Greek Room

Poster created: https://docs.google.com/presentation/d/1fQmEnaV7riG9icUzpWEgnm9m7xWdqLBU/edit?usp=share_link&ouid=110735627848491427869&rtpof=true&sd=true


Is it possible to set sqlite3_busy_timeout?

Hey, great module! I'm using multiple processes to write to an sqlite DB and am running into a busy error:
{ [Error: SQLITE_BUSY: database is locked] errno: 5, code: 'SQLITE_BUSY' }
I would like to have the module wait more than the default 1 second before failing in this case. I see the sqlite3_busy_timeout variable in the src/database.cc code, but I'm unable to tell if it's exposed through the node module. Is it possible to set this busy timeout option? If so, how?
Thanks for the help!

thanks!!

This method should probably be documented in the wiki.

Is it possible to set busyTimeout via new Database constructor?

Database#configure is now documented.
@fritx no, busyTimeout must be set on a database instance.

I want to set this timeout in my java project. I see db.configure("busyTimeout", 2000) works but where exactly do we need to implement this? I am not clear on how this can be set in java programs. Any leads?

I want to set this timeout in my java project. I see db.configure("busyTimeout", 2000) works but where exactly do we need to implement this? I am not clear on how this can be set in java programs. Any leads? @kkaefer

in source code:
void Database::SetBusyTimeout(Baton* baton) {
assert(baton->db->open);
assert(baton->db->_handle);
// Abuse the status field for passing the timeout.
sqlite3_busy_timeout(baton->db->_handle, baton->status);

delete baton;

}


EnhanceUsers support multiple roles

Proposed changes
Issue Number: close #xxx
Problem summary
Describe your changes.
1.support GRANT role [, role] TO user_identity
2.support REVOKE role [, role] FROM user_identity
3.’Show grants‘ Add a column to display the roles owned by users
4.‘alter user’ prohibit deleting user's role
5.Repair Logic of roleName cannot start with RoleManager.DEFAULT_ ROLE
Checklist(Required)

[ ] Does it affect the original behavior
[ ] Has unit tests been added
[ ] Has document been added or modified
[ ] Does it need to update dependencies
[ ] Is this PR support rollback (If NO, please explain WHY)

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...

run build all

run buildall

run buildall

run buildall

run buildall

run p0

run buildall

run buildall

run buildall

run p0


Add http request from client

@chaspy  Please review and merge. The test is to check whether this branch is deleted automatically or not. Wao.

🎉


spring-cloud-cloudfoundry-connector 2.0.7.RELEASE can't be used in a modular Java 11 project

I'm trying to use spring-cloud-cloudfoundry-connector in my modular Java 11 project. This is what I have in my module-info.java file:
open module org.cloudfoundry.multiapps.controller.web {

    ...

    requires spring.cloud.cloudfoundry.connector; // This is an "automatic module name" that's derived from the name of the artifact "spring-cloud-cloudfoundry-connector-2.0.7.RELEASE.jar" (dashes are replaced with dots).
    requires spring.cloud.spring.service.connector;

    ...

}

This should work, but I get the following error while compiling my project:
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Workspace/multiapps-controller/multiapps-controller-web/src/main/java/module-info.java:[52,39] module not found: spring.cloud.cloudfoundry.connector
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

After enabling the debug output of maven, I can see the following warning in the build log:
[WARNING] Can't extract module name from spring-cloud-cloudfoundry-connector-2.0.7.RELEASE.jar: Provider class com.fasterxml.jackson.core.JsonFactory not in module

I assume that this is because spring-cloud-cloudfoundry-connector shadows jackson-databind.

@nictas  As noted in the README, the Spring Cloud Connectors project is in maintenance mode. The spring-cloud-cloudfoundry-connector module does in fact shadow Jackson libraries. This is one of the problems with maintaining the library and one of the reasons we chose to replace it with the Java CFEnv project. Removing the Jackson shading would break backward compatibility for many users of the library and would require a major version release, which we won't be doing.
If your project used Spring Boot the migration from Connectors to Java CFEnv would be pretty seamless, but it looks like your project is mostly using the lower-level Connectors API to get information and credentials from a service. You should be able to move this over to Java CFEnv using its lower-level API to retrieve the same information.
Patterns using Connectors like:
CloudFactory cloudFactory = new CloudFactory();
Cloud cloud = cloudFactory.getCloud();
ServiceInfo serviceInfo = cloud.getServiceInfo(serviceName);
String value = serviceInfo.getValue();

would be replaced with something like:
CfEnv cfEnv = new CfEnv();
CfCredentials credentials = cfEnv.findCredentialsByName(serviceName);
String value = credentials.getString("value");

I'd be happy to provide any assistance I can with moving the project from Connectors to Java CFEnv so it is better positioned for Java 11 and beyond.

Thanks for the info! I was able to migrate our project to Java CFEnv. :)


Client Storage is broken

Describe the bug
The docs describe the client storage as being extensible via a custom storage object, but in practice, this isn't true. Everything blows up.
To Reproduce
export class TokenStorage {
  items: Map<string, any>

  constructor() {
    this.items = new Map()
    console.log(this)
  }

  public getItem(key: string) {
    console.log('key', this)
    return this.items.get(key)
  }
  public setItem(key: string, value: any) {
    return this.items.set(key, value)
  }
  public removeItem(key: string) {
    return this.items.delete(key)
  }
}

// followed by

const nhost = new NhostClient({
  subdomain: process.env.REACT_APP_NHOST_SUBDOMAIN,
  region: process.env.REACT_APP_NHOST_REGION,
  clientStorageType: 'custom',
  clientStorage: new TokenStorage(),
})

Expected behavior
for the storage mechanism to work
Screenshots
Missing onError handler and/or unhandled exception/promise rejection for invocation 'importRefreshToken'. Original error: 'TypeError: Cannot read properties of undefined (reading 'items')'.  Stacktrace was 'TypeError: Cannot read properties of undefined (reading 'items')

and

Current error is 'Error: Unable to evaluate guard 'shouldRetryImportToken' in transition for event 'error.platform.importRefreshToken' in state node 'nhost.authentication.starting':
Cannot read properties of undefined (reading 'status')'. Stacktrace was 'Error: Unable to evaluate guard 'shouldRetryImportToken' in transition for event 'error.platform.importRefreshToken' in state node 'nhost.authentication.starting':
Cannot read properties of undefined (reading 'status')

Desktop (please complete the following information):

OS: MacOS
Browser: Brave
Version: latest

what a ridiculous situation.....this is why I never use classes...


Implement a HeightField collision shape

Some notes:

I went with a Vec<Vec<f32>> to define the heights, both in 2D and 3D (and only take the first sub-vec in account in 2D). I couldn't get #[cfg(features)] to work as I wanted
I'm not sure about the debug implementation, because I don't know much about lyon. I'll probably add a heightfield to the debug example to see if it does what I expect.
The scale that rapier expects is actually more the dimensions of the field, so I had to do a little conversion.
Also, it looks like rapier/parry always centers the heightfield. Is there anything I need to do to update the transform of a collision shape in rapier when it is updated in bevy?

The debug example won't compile, is it expected? It can't find the re-exported rapier crate in heron_rapier apparently…

Thank you @elegaanz!
I'll look at it tomorrow :-)

The debug example won't compile, is it expected? It can't find the re-exported rapier crate in heron_rapier apparently…

No, that isn't expected. I indeed found today a small missconfiguration of the debug crate that could lead to this behavior if it is compiled alone (without the rest of the workspace). It is fixed in main.
But you don't have to worry about that. I tried the changes in your branches, and everything compiles fine.
You can try cargo run --workspace --no-default-features --features "2d, debug" if you want ;-)

I know it compiles and passes the test suite, but I wanted to see if the debug implementation actually draws what it should draw. 'll try to rebase on main to see if it helps.

Yes.
In the examples directory, there is a debug example that display the currently supported shapes.
You can add a height field in that example, and then look at the result with: cargo run --example debug --no-default-features --features "2d, debug"

I made some ajustements on your work and pushed into a branch heightfield. You can pull from it ;-)

I went with a Vec<Vec> to define the heights, both in 2D and 3D (and only take the first sub-vec in account in 2D). I couldn't get #[cfg(features)] to work as I wanted

That's fine for me. In fact, it may be the best approach.

I'm not sure about the debug implementation, because I don't know much about lyon. I'll probably add a heightfield to the debug example to see if it does what I expect.

I see it could look weird if the the first height isn't the lowest of the shape. I fixed it in my version of this branch.

The scale that rapier expects is actually more the dimensions of the field, so I had to do a little conversion.

Ah! Actually that makes sense. I have been fooled by the name rapier uses. But I realize now that asking the user to define the size of the field makes a bit more sense, and is probably more natural for the user.
Do you mind changing the scale: f32 field for a size: Vec2?

Also, it looks like rapier/parry always centers the heightfield. Is there anything I need to do to update the transform of a collision shape in rapier when it is updated in bevy?

I think that the position of the shape in the world should correspond the center of the field. That's would be the most coherent with other placements of bevy components (like camera, sprite) and the other collision shapes (like sphere and cuboid).
If I understand well, that's what rapier does right?
If that's the case, you only need to fix the redering of debug shape to center it.
Tell me if you want more support ;-)

Thanks for your feedback, I just have one question: in 2D scale would be a f32, or should I use a Vec2 here too and ignore the second element?

Yes. You use Vec2 for both 2d/3d. In 2d you ignore the y part.

I finally found time to make the change, sorry for making you wait. It should be good now if you want to give it another review.

Thank you very much @elegaanz. Il'll have a look (and probably merge) during the week.
Do not worry about the time, if it was urgent the issue woudn't be marked 'up-for-grab' ;-)


how to use withStyles and withMobileDialog together

this code is not working
export default withStyles(styles,withMobileDialog) (Component);

@Deibi12  try this:
export default withMobileDialog()(withStyles(styles)(CreateSimulationDialog))


support helm install flags

What would you like to be added:
I hope that clusternet supports helm install flags options when installing chart.
Why is this needed:
helm chart install timeout time is default 5 mintues. If this time is exceeded, it will return failure. But my localization's installazition needs more 5 minutes sometimes. And now clusternet dont support helm install flags. So i cant use --timeout or --wait flags to Increase waiting time.

But my localization's installazition needs more 5 minutes sometimes. And now clusternet dont support helm install flags. So i cant use --timeout or --wait flags to Increase waiting time.

@wl-chen I think we can add a new field in HelmChart CRD object, where a default timeout value can be set. And we can override this default value in Localization when needed.
Would you like to implement this feature?

@dixudx In addition to the timeout value, can you add a --wait value?

In addition to the timeout value, can you add a --wait value?

--wait and --timeout are usually used together. I'm fine to add these two new fields.
@wl-chen Please feel free to implement this if you're interested.

In addition to the timeout value, can you add a --wait value?

--wait and --timeout are usually used together. I'm fine to add these two new fields.
@wl-chen Please feel free to implement this if you're interested.

ok, i will try it~

@wl-chen Any progress on this new feature?

@wl-chen Any progress on this new feature?

I've been busy lately, this week or next week.

@wl-chen Any progress on this new feature?

I want to add an annotation (helm chart timeout value) on helmchart resources. And chart when installing release can read this annotation. What do you think of it?

I want to add an annotation (helm chart timeout value) on helmchart resources. And chart when installing release can read this annotation. What do you think of it?

I think we can add it to HelmChartSpec, and set a default timeout value.


Message retention is not available with Basic tier but

It would be handy to point out in the documentation that --message-retention is not available with a Basic tier namespace. The CLI does let you set the value to 1 which must be the default and a bit confusing; The error message thrown by the the CLI is not really helpful when this scenario is encountered.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 5fa949ea-86b1-125e-e7d3-f0f88a2661ab
Version Independent ID: c8351dbc-7358-ba5b-6757-3929a4a2b42b
Content: az eventhubs eventhub
Content Source: src/command_modules/azure-cli-eventhubs/azure/cli/command_modules/eventhubs/_help.py
Service: event-hubs
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

Acknowledged.

@dsouzaarun  and @v-ajnava, would you please check the behavior of the CLI and the documentation. We may need to change the message that we are presenting to the user to make clear that the maximum value for retention is 1 for Basic tier, for example. We also need to double-check that our public documentation provides that information.


Move probing code from thesis

Probing sulle features without finetuning. Where the competencies are located with only pretraining


fix: filter draft posts from home & blog pages

Before this change a post with a draft status of true was still showing on the home and blog pages.

It is already filtered out in the allCoreContent function. It shows only in dev / preview but not in prod. You can verify that the deployed website does not have this post: https://github.com/timlrx/tailwind-nextjs-starter-blog/blob/main/data/blog/my-fancy-title.mdx

Ahhhh got it, that makes sense! I didn't see that in the docs - i can add that if you'd like!

Feel free to create a new PR if you would like to add to the docs, thanks!


Upgrade MIN_PEER_PROTO_VERSION with release of > v6.0.0

As we upgraded the Protocol version for the upcoming hard fork we have to also upgrade the increase the MIN_PEER_PROTO_VERSION that we won't rely on older peer protocols anymore, since they will get off track.

Patch required:
diff --git a/src/version.h b/src/version.h
index 2faaf946..0b691705 100644
--- a/src/version.h
+++ b/src/version.h
@@ -21,7 +21,7 @@ static const int INIT_PROTO_VERSION = 209;
 static const int GETHEADERS_VERSION = 90001;

 //! disconnect from peers older than this proto version
-static const int MIN_PEER_PROTO_VERSION = 90001;
+static const int MIN_PEER_PROTO_VERSION = 90008;

 //! nTime field added to CAddress, starting with this version;
 //! if possible, avoid requesting addresses nodes older than this

but we cant do that yet or 90008 wont have any sources to get blocks from

I left it here as a reminder, that should be done once we reached block 3,700,000


Ship 3.0.0

Prerequisites to close out 2.x.x:

[x]  Fix listeners leak in cmd.js (https://github.com/substack/watchify/pull/167)
[ ] Move test output to tmp dir (https://github.com/substack/watchify/pull/164)
[ ] Fix EPERM on windows (https://github.com/substack/watchify/pull/165)

3.0.0:

[ ] Bump chokidar to 1.0.0-rc4
[ ] Handle "ignoring" files (https://github.com/substack/watchify/issues/162)
[ ] Add some way of allowing control over usePolling & interval (https://github.com/substack/watchify/issues/162)

Wishlist:

Some way of watching adding/removing entry files (https://github.com/substack/watchify/pull/146 and https://github.com/substack/watchify/issues/56)
Maybe move rebuild dotfile to tmp dir.

Looks like a good roadmap. Feel free to publish the release to npm when all the issues are handled.

@substack How do you feel about dropping support for node 0.8.0 and adding node 0.12.0?

Released! :smile:


Rely on six to import httplib or http.client

Regarding https://github.com/elastic/elasticsearch-py/issues/253

Does this actually solve the problem in the linked issue? Why is six not affected when we are?

six handles this better by explicitly checking for Python version: https://github.com/shazow/urllib3/blob/master/urllib3/packages/six.py#L110 so on Python 2, pies won't break us. python-future shouldn't either but appears to be. Either way, six means we don't need to be conscious of the ordering of our imports for httplib.

Yeah, that's fair enough. Ok, I'm happy to go with this. =)

/me sighs.


Web IDL Parser

Complete with tests and continuous integration setup.
This is ported from mdittmer/webidl2-js. This repo will soon be its only client and @foolip convinced me that keeping the code in one place would simplify management. Furthermore, webidl2-js is a confusing name, given that webidl2 exists as version 2 of a parser (not version 2 of the Web IDL spec).

@kgrgreer and @arobins PTAL

Branch also contains license changes as per discussion with @rbyers. @kgrgreer and @arobins, LMK if you want that stuff (or even the test config stuff) yanked out of this PR.

Towards #6


add pre-compiled binary for Google colab notebooks to set of release files

Summary:
In order to get fast install of CmdStanPy and CmdStanR on a Google Colab instance, provide a pre-compiled tgz of CmdStan as part of the CmdStan release
Description:
Because Google colab instances persist for at most 12 hours, the most usual colab experience requires a re-install of packages CmdStanPy/CmdStanR and a subsequent call to install_cmdstan() which downloads and compiles the latest release.  this takes at least 10 minutes or more - far too long for classroom or tutorial purposes.
I have developed some notebooks which do the build/tar-gzip step on colab and have been storing the result on a Google Cloud Platform bucket (free trial account), I would like to also put the tgz file on the GitHub CmdStan release page, and if possible, we should do this as part of the release process.
I would like to add a precompiled Colab version for the 2.23 release.
Question regarding builds:  colab provides a dual core instance, also provides GPU enabled instance - do we need builds corresponding to both possibilities?
Reproducible Steps:
see example notebook included with cloud compute case study:
https://github.com/stan-dev/example-models/blob/master/knitr/cloud-compute-2020/CmdStanPy_Example_Notebook.ipynb
Current Output:
n/a
Expected Output:
tgz of pre-compiled CmdStan binaries as part of assets on release page (https://github.com/stan-dev/cmdstan/releases)
Additional Information:
no guarantees on how long free Google colab will be available.
Current Version:
v2.23.0

pinging @rok-cesnovar  and @serban-nicusor-toptal and @jgabry - is this a good idea?
currently working on notebooks for Andrew's covid blogpost, and would like to put up something soon.

gist of Colab notebook I've been using to create and store the tgz file:
https://colab.research.google.com/gist/mitzimorris/8ce72a4953443dd5a1c85c0e85078c13/cmdstan_tgz_colab2gcp.ipynb

just uploaded this to release for testing purposes:
https://github.com/stan-dev/cmdstan/releases/download/v2.23.0/colab-cmdstan-2-23.0.tgz

If I understand this correctly, there is a tgz file we need to add to the release? If so, can you link it so me or Nic can edit the release.

If I understand this correctly, there is a tgz file we need to add to the release? If so, can you link it so me or Nic can edit the release.

not sure what you mean by "there is a tgz file we need to add to the release" -
I've created a tgz file on a colab instance, downloaded it to my machine, and uploaded it to the release page.
the question is:  is this something we should automate going forwards?
I've muddied the discussion because previously, I was using google cloud storage as the place to stash the tgz files, thinking that in a colab situation, there might be some speed advantage in accessing the google bucket rather than trying to upload a file from github.
sorry if I've made things confusing here.   the bottom line is that we want to be able to let people use the latest Stan on Colab - CmdStanPy and CmdStanR are the way to go - but we want to speed up the CmdStan install step.
does this make sense?

Hey, we should def automate this through the release process.
Can I trigger your build in some automated way like an API call ? Will also take a look but asking so I can integrate it in a Jenkins job so it's easy to use.
I have a question, what is the use for Google Cloud Platform bucket ? Since it's on GitHub release, can't we get it from there rather than gcp ?

no use for gcp bucket - it was an experiment when I was trying to figure things out back in Dec.  github release dir seems like a much better option.

Can I trigger your build in some automated way like an API call ? Will also take a look but asking so I can integrate it in a Jenkins job so it's easy to use.

this should be doable somehow from Jenkins.   naive question - is it necessary to compile this on a Colab instance, or would any Ubuntu machine be OK?  in which case, this is one step of building pre-compiled binaries for all platforms.  have we discussed this before?

Hmh to be honest I'm not entirely sure, I think @rok-cesnovar may help on this one, thanks!
If it's not dependent on a colab instance I can easily integrate it into a Jenkins job tied to the release one. Can you point me on the build and compile docs for this specific version ?
I don't think we did, if it's not dependent on a specific hardware then we can build with our agents for win,mac,linux.

By default, Google Colab gives you Python notebook, so I installed the latest CmdStanPy, ran function install_cmdstan, and then tgz'd the resulting install.
ls -a $HOME/.cmdstanpy        # expecting default cmdstanpy install here
cd $HOME/.cmdstanpy; tar -cf - cmdstan-2.23.0 | gzip > $HOME/cmdstan-2-23-0.tgz

The install_cmdstan script gets the latest release (or specified release) and then runs make build as well as make examples/bernoulli/bernoulli in order to check that model compilation is working in order to detect any install failures.
For the release, you'd want to build from tagged version into a directory named cmdstan-Maj-Minor-patch and then upload to the release.
does this make sense?

you can skip the whole CmdStanPy install_cmdstan bit - you really just want to do  make build  - not sure you need make examples bernoulli/bernoulli.
the top-level dir in the tarfile should be named cmdstan-maj-min-patch.
hope this is clear.

Hey, I wrote a quick poc Jenkins job, you can check the output here.
What's under the hood for now:
                    git clone https://github.com/stan-dev/cmdstanpy.git

                    pushd cmdstanpy/cmdstanpy
                    echo "Installing cmdstan"
                    python3 install_cmdstan.py
                    popd

                    pushd ~/.cmdstanpy
                    echo "Creating .tgz archive"
                    tar -cf - cmdstan-${params.version} | gzip > ~/cmdstan-${params.version}.tgz
                    popd

                    echo "Preparing archive"
                    mv ~/cmdstan-${params.version}.tgz ./cmdstan-${params.version}.tgz

And then it will archive the artifact so it can be available from Jenkins here
This was built on our Jenkins agents. Can I please ask you @mitzimorris to take a look and confirm the output .tgz is valid and functioning properly ? Thanks!
If everything is fine I can fine tune the code a bit and create a PR to cmdstanpy for the Jenkinsfile so we can version it through git. Also if this needs extra stuff like being able to use a specific branch or pr, use a specific version of cmdstan passed to install_cmdstan.py etc. please let me know!

awesome!! works on Colab.
will this work on any linux machine?  which linuxes do we have to test on?
we've been distributing just the source files as cmdstan-M.m.p.tar.gz.  what should this archive be named?  cmdstan-linux-M.m.p.tar.gz?

I can't say for sure but it should work just fine on any debian linux and others.
I would test on Debian and Redhat since they're the most used ( Ubuntu, CentOS )
cmdstan-linux-M.m.p.tar.gz sounds good to me or cmdstan-linux-debian-M.m.p.tar.gz may be a bit better since it was built on debian.

Columbia's HPC cluster is running RHEL - does that mean CentOS?  in which case, I can test there, unless you have access to a test machine.

Yes, it's the enterprise version, centos is the open source one but kinda
the same under the hood.
I don't have any centos around but if needed I can spin up a vm locally or
in aws. What do I need to test on it?
On Wed, 06 May 2020, 00:47 Mitzi Morris<EMAIL_ADDRESS>wrote:

Columbia's HPC cluster is running RHEL - does that mean CentOS? in which
case, I can test there, unless you have access to a test machine.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/stan-dev/cmdstan/issues/870#issuecomment-624346179,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALR77DG76Q2FACQM3RJFC63RQCJQVANCNFSM4MYGOFRA
.

try the eight_schools model and data file -
https://github.com/stan-dev/example-models/blob/master/misc/eight_schools/eight_schools.stan
R data file:
https://github.com/stan-dev/example-models/blob/master/misc/eight_schools/eight_schools.stan
corresponding JSON:  (eight_schools.data.json) - I should add this to the repo
{
    "J" : 8,
    "y" : [28,  8, -3,  7, -1,  1, 18, 12],
    "sigma" : [15, 10, 16, 11,  9, 11, 10, 18],
    "tau" : 25
}

CmdStan test to see if model compiles and fits:

make eight_schools
./eight_schools sample data file=eight_schools.data.R
bin/diagnose output.csv

does it blend?

I downloaded the colab build (https://github.com/stan-dev/cmdstan/releases/download/v2.23.0/colab-cmdstan-2.23.0.tar.gz)  onto both a RHEL node on the Columbia HPC cluster and onto an AWS instance that @serban-nicusor-toptal spun up -
the pre-compiled stanc binaries for linux work on both instances no problem.
the linker, however fails - quickly on AWS,  very slowly and mysteriously on the cluster.
on AWS instance, compiling the eight_schools model failed:
--- Compiling, linking C++ code ---
g++ -std=c++1y -pthread -D_REENTRANT -Wno-sign-compare      -I stan/lib/stan_math/lib/tbb_2019_U8/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.72.0 -I stan/lib/stan_math/lib/sundials_5.2.0/include    -DBOOST_DISABLE_ASSERTS      -c  -x c++ -o eight_schools.o eight_schools.hpp
g++ -std=c++1y -pthread -D_REENTRANT -Wno-sign-compare      -I stan/lib/stan_math/lib/tbb_2019_U8/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.72.0 -I stan/lib/stan_math/lib/sundials_5.2.0/include    -DBOOST_DISABLE_ASSERTS            -Wl,-L,"/home/mitzi/cmdstan-2.23.0/stan/lib/stan_math/lib/tbb" -Wl,-rpath,"/home/mitzi/cmdstan-2.23.0/stan/lib/stan_math/lib/tbb"  eight_schools.o src/cmdstan/main.o         stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_nvecserial.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_cvodes.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_idas.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_kinsol.a  stan/lib/stan_math/lib/tbb/libtbb.so.2 -o eight_schools
stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to `std::out_of_range::out_of_range(char<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to `std::range_error::range_error(char<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to `std::runtime_error::runtime_error(char<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to `std::length_error::length_error(char<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to `std::invalid_argument::invalid_argument(char<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to `operator delete[](void*, unsigned<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to `operator delete(void*, unsigned<EMAIL_ADDRESS>collect2: error: ld returned 1 exit status
make: *** [eight_schools] Error 1

on the cluster the linker also fails:
g++ -std=c++1y -pthread -D_REENTRANT -Wno-sign-compare      -I stan/lib/stan_math/lib/tbb_2019_U8/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.72.0 -I stan/lib/stan_math/lib/sundials_5.2.0/include    -DBOOST_DISABLE_ASSERTS      -c  -x c++ -o examples/bernoulli/bernoulli.o examples/bernoulli/bernoulli.hpp
g++ -std=c++1y -pthread -D_REENTRANT -Wno-sign-compare      -I stan/lib/stan_math/lib/tbb_2019_U8/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.72.0 -I stan/lib/stan_math/lib/sundials_5.2.0/include    -DBOOST_DISABLE_ASSERTS            -Wl,-L,"/rigel/home/mm2368/cmdstan-2.23.0/stan/lib/stan_math/lib/tbb" -Wl,-rpath,"/rigel/home/mm2368/cmdstan-2.23.0/stan/lib/stan_math/lib/tbb"  examples/bernoulli/bernoulli.o src/cmdstan/main.o         stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_nvecserial.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_cvodes.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_idas.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_kinsol.a  stan/lib/stan_math/lib/tbb/libtbb.so.2 -o examples/bernoulli/bernoulli
/usr/bin/ld: src/cmdstan/main.o: unrecognized relocation (0x2a) in section `.text'
/usr/bin/ld: final link failed: Bad value

Columbia HPC cluster OS:
 lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	RedHatEnterpriseServer
Description:	Red Hat Enterprise Linux Server release 7.3 (Maipo)

@rok-cesnovar and @wds15 - any insights?

update - the Columbia HPC cluster node didn't like the downloaded src/cmdstan/main.o so I removed it and tried to rerun build - now getting same behavoir as AWS:
[mm2368@node215 cmdstan-2.23.0]$ rm src/cmdstan/main.o
[mm2368@node215 cmdstan-2.23.0]$ make build
g++ -std=c++1y -pthread -D_REENTRANT -Wno-sign-compare      -I stan/lib/stan_math/lib/tbb_2019_U8/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.72.0 -I stan/lib/stan_math/lib/sundials_5.2.0/include    -DBOOST_DISABLE_ASSERTS      -c -o src/cmdstan/main.o src/cmdstan/main.cpp

--- CmdStan v2.23.0 built ---
[mm2368@node215 cmdstan-2.23.0]$ ls examples/bernoulli/bernoulli*
examples/bernoulli/bernoulli.d          examples/bernoulli/bernoulli.data.R  examples/bernoulli/bernoulli.o
examples/bernoulli/bernoulli.data.json  examples/bernoulli/bernoulli.hpp     examples/bernoulli/bernoulli.stan
[mm2368@node215 cmdstan-2.23.0]$ make examples/bernoulli/bernoulli

--- Compiling, linking C++ code ---
g++ -std=c++1y -pthread -D_REENTRANT -Wno-sign-compare      -I stan/lib/stan_math/lib/tbb_2019_U8/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.72.0 -I stan/lib/stan_math/lib/sundials_5.2.0/include    -DBOOST_DISABLE_ASSERTS      -c  -x c++ -o examples/bernoulli/bernoulli.o examples/bernoulli/bernoulli.hpp
g++ -std=c++1y -pthread -D_REENTRANT -Wno-sign-compare      -I stan/lib/stan_math/lib/tbb_2019_U8/include -O3 -I src -I stan/src -I lib/rapidjson_1.1.0/ -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.72.0 -I stan/lib/stan_math/lib/sundials_5.2.0/include    -DBOOST_DISABLE_ASSERTS            -Wl,-L,"/rigel/home/mm2368/cmdstan-2.23.0/stan/lib/stan_math/lib/tbb" -Wl,-rpath,"/rigel/home/mm2368/cmdstan-2.23.0/stan/lib/stan_math/lib/tbb"  examples/bernoulli/bernoulli.o src/cmdstan/main.o         stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_nvecserial.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_cvodes.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_idas.a stan/lib/stan_math/lib/sundials_5.2.0/lib/libsundials_kinsol.a  stan/lib/stan_math/lib/tbb/libtbb.so.2 -o examples/bernoulli/bernoulli
stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to<EMAIL_ADDRESS>stan/lib/stan_math/lib/tbb/libtbb.so.2: undefined reference to<EMAIL_ADDRESS>collect2: error: ld returned 1 exit status

conclusion:  TBB requires different builds for debian and centos  ?

I apologize, forgot to reply here. Feel free to tag me again if I miss anything.
Yes, I think its not possible to do that. In general its very difficult to pre-compile for Linux across the board due to differences in std libs and other libraries, etc.
You can precompile for Linux if you bundle everything you depend on but that can lead to huge binaries. Things work on the same distribution with a not too different version number. But outside of that unfortunately no. This is also the reason why CRAN for instance does not pre-build its packages for Linux, but does so for Mac/Windows.
I think we can close this one as the precompiled binaries for the Colab instance were done.


Test against Java 15

Ref: https://community.ringcentral.com/questions/105657/ringout-example-throws-exception-javalangnosuchmet.html

Tested against JAVA 17 which is LTS version and it passed: https://github.com/ringcentral/ringcentral-java/blob/master/.github/workflows/test.yml#L26


US992146: Release prep

https://internal.almoctane.com/ui/entity-navigation?p=131002/6001&entityType=work_item&id=992146

A developer build has not yet been created for this branch. Click here to go ahead and create the build...


replaced apache with HttpURLConnection

increased target sdk version

I merged your UrlPostTask update but not your target updated : we have to keep the compliancy with the former console application.