internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: pytorch/TensorRT

Issue:
🐛 [Bug] Encountered TRT Error in Dynamo compile path
##  Bug Description
When compiling GPT-2 with Dynamo compile, the following error is encountered:
```python
[07/01/2023-00:07:12] [TRT] [E] 3: [executionContext.cpp::enqueueInternal::795] Error Code 3: API Usage Error (Parameter check failed at: runtime/api/executionContext.cpp::enqueueInternal::795, condition: bindings[x] || nullBindingOK
)
```
Additionally, this does not seem to cause failures in the Dynamo runtime (not caught by `pass_through_build_failures`), and it appears both with and without the experimental runtime.

## To Reproduce
```python
model = GPT2Model.from_pretrained("gpt2").eval().cuda()
input_ids      = torch.randint(0, 2, (1, 14), dtype=torch.int32).cuda()
attention_mask = torch.randint(0, 2, (1, 14), dtype=torch.int32).cuda()
traced = transformers_trace(model, input_names=["input_ids", "attention_mask"]).eval().cuda()
fx_trt_model = torch_tensorrt.compile(traced, ir="dynamo_compile", inputs=[input_ids, attention_mask], debug=True, pass_through_build_failures=True, min_block_size=10)
```

## Expected behavior

The model should not encounter TRT errors while compiling.

## Environment

 - Torch-TensorRT Version (e.g. 1.0.0): 2844630
 - PyTorch Version (e.g. 1.0): `2.1.0.dev20230620+cu118`
 - TensorRT Version: `8.6.1`

## Additional context

This error no longer appears when we apply the `@fake_tensor_unsupported` flag to the backends, as was removed in #1955. It is unclear whether this is the direct _cause_ of the bug, however.

Additionally, this bug seems to appear only sometimes, and not consistently.


Discussion:
Relevant: CI Failures on #2003, #2070, #1944

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/backend/backends.py b/py/torch_tensorrt/dynamo/backend/backends.py
--- a/py/torch_tensorrt/dynamo/backend/backends.py
+++ b/py/torch_tensorrt/dynamo/backend/backends.py
@@ -121,6 +121,9 @@ def _compile_module(
         torch_executed_ops=settings.torch_executed_ops,
     )
 
+    # Store TRT replicas of Torch subgraphs
+    trt_modules = {}
+
     # Iterate over all components that can be accelerated
     # Generate the corresponding TRT Module for those
     for name, _ in partitioned_module.named_children():
@@ -138,7 +141,10 @@ def _compile_module(
             settings=settings,
         )
 
-        # Replace FX Module with TRT Module
+        trt_modules[name] = trt_mod
+
+    # Replace all FX Modules with TRT Modules
+    for name, trt_mod in trt_modules.items():
         setattr(partitioned_module, name, trt_mod)
 
     return partitioned_module


Test patch:
Repository: pytorch/TensorRT

Issue:
Fix import error for Legacy TorchScript CI on `TorchTensorRTModule`
- Older versions of TorchScript do not have the `torch._dynamo` import capability


Discussion:

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/__init__.py b/py/torch_tensorrt/dynamo/__init__.py
--- a/py/torch_tensorrt/dynamo/__init__.py
+++ b/py/torch_tensorrt/dynamo/__init__.py
@@ -1,2 +1,6 @@
-from torch_tensorrt.dynamo import fx_ts_compat
-from .backend import compile
+import torch
+from packaging import version
+
+if version.parse(torch.__version__) >= version.parse("2.1.dev"):
+    from torch_tensorrt.dynamo import fx_ts_compat
+    from .backend import compile
diff --git a/py/torch_tensorrt/fx/tracer/dispatch_tracer/aten_tracer.py b/py/torch_tensorrt/fx/tracer/dispatch_tracer/aten_tracer.py
--- a/py/torch_tensorrt/fx/tracer/dispatch_tracer/aten_tracer.py
+++ b/py/torch_tensorrt/fx/tracer/dispatch_tracer/aten_tracer.py
@@ -2,10 +2,11 @@
 import sys
 from contextlib import contextmanager
 from typing import Any, Callable, Dict, Generator, List, Optional, Set, Tuple, Union
+from packaging import version
 
 import torch
 
-if not torch.__version__.startswith("1"):
+if version.parse(torch.__version__) >= version.parse("2.dev"):
     import torch._dynamo as torchdynamo
 
 from torch.fx.passes.infra.pass_base import PassResult


Test patch:
Repository: pytorch/TensorRT

Issue:
Upstream Dynamo Backend to Torch
- Add a hook in the Torch repo to secure the namespace `"tensorrt"` and have it point to `"torch_tensorrt"`
- Add necessary imports and skipped tests
- Raise a PR in Torch to add this functionality


Discussion:
See https://github.com/pytorch/pytorch/pull/104426

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/backend/backends.py b/py/torch_tensorrt/dynamo/backend/backends.py
--- a/py/torch_tensorrt/dynamo/backend/backends.py
+++ b/py/torch_tensorrt/dynamo/backend/backends.py
@@ -16,6 +16,7 @@
 logger = logging.getLogger(__name__)
 
 
+@td.register_backend(name="tensorrt")  # type: ignore[misc]
 @td.register_backend(name="torch_tensorrt")  # type: ignore[misc]
 def torch_tensorrt_backend(
     gm: torch.fx.GraphModule, sample_inputs: Sequence[torch.Tensor], **kwargs: Any


Test patch:
diff --git a/tests/py/dynamo/backend/test_backend_compiler.py b/tests/py/dynamo/backend/test_backend_compiler.py
--- a/tests/py/dynamo/backend/test_backend_compiler.py
+++ b/tests/py/dynamo/backend/test_backend_compiler.py
@@ -312,5 +312,13 @@ def forward(self, x, y):
         )
 
 
+class TestRegistration(TestCase):
+    def test_torch_tensorrt_registration(self):
+        self.assertIn("torch_tensorrt", torch._dynamo.list_backends())
+
+    def test_tensorrt_registration(self):
+        self.assertIn("tensorrt", torch._dynamo.list_backends())
+
+
 if __name__ == "__main__":
     run_tests()
Repository: pytorch/TensorRT

Issue:
Add documentation in user guide on `torch.compile` usage
- `torch.compile` "from-scratch" usage


Discussion:

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/_settings.py b/py/torch_tensorrt/dynamo/_settings.py
--- a/py/torch_tensorrt/dynamo/_settings.py
+++ b/py/torch_tensorrt/dynamo/_settings.py
@@ -39,9 +39,13 @@ class CompilationSettings:
         use_python_runtime (Optional[bool]): Whether to strictly use Python runtime or C++ runtime. To auto-select a runtime
             based on C++ dependency presence (preferentially choosing C++ runtime if available), leave the
             argument as None
-        truncate_long_and_double (bool): Truncate int64/float64 TRT engine inputs or weights to int32/float32
+        truncate_long_and_double (bool): Whether to truncate int64/float64 TRT engine inputs or weights to int32/float32
+        use_fast_partitioner (bool): Whether to use the fast or global graph partitioning system
         enable_experimental_decompositions (bool): Whether to enable all core aten decompositions
             or only a selected subset of them
+        device (Device): GPU to compile the model on
+        require_full_compilation (bool): Whether to require the graph is fully compiled in TensorRT.
+            Only applicable for `ir="dynamo"`; has no effect for `torch.compile` path
     """
 
     precision: torch.dtype = PRECISION


Test patch:
Repository: pytorch/TensorRT

Issue:
🐛 [Bug] Issue in `ConstantFolder` where certain operators no longer exist in latest nightly
##  Bug Description

[See here](https://github.com/pytorch/pytorch/blob/4b881b0da390c1290bb12850ef9daad6f6eb2cb6/torch/_inductor/constant_folding.py#L53-L63)

## To Reproduce

See recent PR 

## Expected behavior

These tests should not fail.

## Environment

> Build information about Torch-TensorRT can be found by turning on debug messages

 - Torch-TensorRT Version (e.g. 1.0.0): https://github.com/pytorch/TensorRT/commit/0ef47c78ce94f610ee2a3a5a62e6fb450d4a8b34
 - PyTorch Version (e.g. 1.0): `2.2.0.dev20231009+cu121`



Discussion:

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/lowering/passes/constant_folding.py b/py/torch_tensorrt/dynamo/lowering/passes/constant_folding.py
--- a/py/torch_tensorrt/dynamo/lowering/passes/constant_folding.py
+++ b/py/torch_tensorrt/dynamo/lowering/passes/constant_folding.py
@@ -1,5 +1,5 @@
 import logging
-from typing import Sequence
+from typing import Any, Sequence
 
 import torch
 from torch_tensorrt._utils import sanitized_torch_version
@@ -32,7 +32,7 @@ def constant_fold(
 
     Modifies the graph in-place and replaces node with constants
     """
-    cf = ConstantFolder(gm, skip_constructors=False)
+    cf = _TorchTensorRTConstantFolder(gm, skip_constructors=False)
     cf.run()
 
     for node, constant in cf.node_replacements.items():
@@ -58,3 +58,14 @@ def constant_fold(
     logger.debug(f"Graph after constant folding:\n{gm.graph}")
 
     return gm
+
+
+# TODO: Delete this class when the following code is fixed in nightly:
+# https://github.com/pytorch/pytorch/blob/4b881b0da390c1290bb12850ef9daad6f6eb2cb6/torch/_inductor/constant_folding.py#L53-L63
+class _TorchTensorRTConstantFolder(ConstantFolder):  # type: ignore[misc]
+    def __init__(self, *args: Any, **kwargs: Any) -> None:
+        super().__init__(*args, **kwargs)
+
+    # TODO: Update this function when quantization is added
+    def is_impure(self, node: torch.fx.node.Node) -> bool:
+        return False


Test patch:
Repository: pytorch/TensorRT

Issue:
🐛 [Bug] aten.index converter doesn't work when index is a TRTTensor
##  Bug Description

aten index converter fails for data dependent shape operator. If we try to get the  output shape of aten.index converter, it gives an error message as follows invalidating the INetwork. 

To reproduce, use the https://github.com/pytorch/TensorRT/tree/dyn_2.2 branch as it has the implementation for sym_int converter which is required to run the reproducer.

Error: 
```
gather_layer.get_output(0).shape # Print the output shape of this index converter
[11/21/2023-00:33:07] [TRT] [E] 3: [GATHER]-[aten_ops.index.Tensor]-[__/index_index_gather]: only kINT32 allowed for input 1 to this layer.
(1, 3, 4, 4, 3, 4, 4)
```

## To Reproduce

```py
import torch
import torch_tensorrt

class DDS(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.relu = torch.nn.ReLU()

    def forward(self, x, mask):
        out = x[mask]
        out = self.relu(out)
        return out

model = DDS().eval().cuda()
x = torch.randn(1, 3, 4, 4).cuda()
y = torch.rand((1, 3, 4, 4), device="cuda") < 0.9

trt_model = torch_tensorrt.compile(model, inputs=[x, y], 
                                    ir="dynamo",
                                    min_block_size=1, 
                                    debug=True)
```

Steps to reproduce the behavior:

1.
2.
3.

<!-- If you have a code sample, error messages, stack traces, please provide it here as well -->

## Expected behavior

<!-- A clear and concise description of what you expected to happen. -->

## Environment

> Build information about Torch-TensorRT can be found by turning on debug messages

 - Torch-TensorRT Version (e.g. 1.0.0):
 - PyTorch Version (e.g. 1.0):
 - CPU Architecture:
 - OS (e.g., Linux):
 - How you installed PyTorch (`conda`, `pip`, `libtorch`, source):
 - Build command you used (if compiling from source):
 - Are you using local sources or building from archives:
 - Python version:
 - CUDA version:
 - GPU models and configuration:
 - Any other relevant information:

## Additional context

<!-- Add any other context about the problem here. -->



Discussion:

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/conversion/aten_ops_converters.py b/py/torch_tensorrt/dynamo/conversion/aten_ops_converters.py
--- a/py/torch_tensorrt/dynamo/conversion/aten_ops_converters.py
+++ b/py/torch_tensorrt/dynamo/conversion/aten_ops_converters.py
@@ -364,7 +364,19 @@ def aten_ops_sigmoid(
     )
 
 
-@dynamo_tensorrt_converter(torch.ops.aten.index.Tensor)
+def index_dtype_validator(node: Node) -> bool:
+    index = node.args[1]
+    for ind in index:
+        if ind is not None:
+            val = ind.meta.get("val")
+            if val is not None and val.dtype != torch.int32:
+                return False
+    return True
+
+
+@dynamo_tensorrt_converter(
+    torch.ops.aten.index.Tensor, capability_validator=index_dtype_validator
+)
 @enforce_tensor_types(
     {
         0: (TRTTensor,),


Test patch:
Repository: pytorch/TensorRT

Issue:
Expose ISelectLayer in dynamo.conversion.impl



Discussion:
This issue has not seen activity for 90 days, Remove stale label or comment or this will be closed in 10 days

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/conversion/impl/condition/ops.py b/py/torch_tensorrt/dynamo/conversion/impl/condition/ops.py
--- a/py/torch_tensorrt/dynamo/conversion/impl/condition/ops.py
+++ b/py/torch_tensorrt/dynamo/conversion/impl/condition/ops.py
@@ -96,8 +96,18 @@ def where(
                 ctx, target, source_ir, f"{name}_y_expand", y_val, output_shape
             )
 
-    select_layer = ctx.net.add_select(condition_val, x_val, y_val)
+    return select(ctx, target, source_ir, name, x_val, y_val, condition_val)
 
-    set_layer_name(select_layer, target, f"{name}_select")
 
+def select(
+    ctx: ConversionContext,
+    target: Target,
+    source_ir: Optional[SourceIR],
+    name: str,
+    input: TRTTensor,
+    other: TRTTensor,
+    condition: TRTTensor,
+) -> TRTTensor:
+    select_layer = ctx.net.add_select(condition, input, other)
+    set_layer_name(select_layer, target, name + "_select", source_ir)
     return select_layer.get_output(0)


Test patch:
Repository: pytorch/TensorRT

Issue:
`aten.arange.start_step`



Discussion:
#2505 

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/conversion/ops_evaluators.py b/py/torch_tensorrt/dynamo/conversion/ops_evaluators.py
--- a/py/torch_tensorrt/dynamo/conversion/ops_evaluators.py
+++ b/py/torch_tensorrt/dynamo/conversion/ops_evaluators.py
@@ -2,6 +2,7 @@
 import operator
 from typing import Dict, Sequence, Tuple, Union
 
+import numpy as np
 import torch
 from torch.fx.node import Argument, Node, Target
 from torch_tensorrt.dynamo.conversion._ConversionContext import ConversionContext
@@ -35,3 +36,14 @@ def generic_evaluator(
         f"Evaluating {ConverterRegistry.qualified_name_or_str(target)} on object with name: {name}"
     )
     return target(*args)
+
+
+@dynamo_tensorrt_converter(torch.ops.aten.arange.start_step)
+def aten_ops_arange_start_step(
+    ctx: ConversionContext,
+    target: Target,
+    args: Tuple[Argument, ...],
+    kwargs: Dict[str, Argument],
+    name: str,
+) -> Union[TRTTensor, Sequence[TRTTensor]]:
+    return np.arange(*args)


Test patch:
diff --git a/tests/py/dynamo/conversion/test_arange_aten.py b/tests/py/dynamo/conversion/test_arange_aten.py
new file mode 100644
--- /dev/null
+++ b/tests/py/dynamo/conversion/test_arange_aten.py
@@ -0,0 +1,34 @@
+import torch
+import torch.nn as nn
+from parameterized import parameterized
+from torch.testing._internal.common_utils import run_tests
+
+from .harness import DispatchTestCase
+
+
+class TestArangeConverter(DispatchTestCase):
+    @parameterized.expand(
+        [
+            (0, 5, 1),
+            (1, 5, 2),
+            (3, 5, 3),
+            (5, 0, -1),
+            (5, 1, -2),
+            (5, 3, -3),
+        ]
+    )
+    def test_arange(self, start, end, step):
+        class Arange(nn.Module):
+            def forward(self, x):
+                return torch.ops.aten.arange.start_step(start, x.shape[0], step)
+
+        inputs = [torch.randn(end, 1)]
+        self.run_test(
+            Arange(),
+            inputs,
+            use_dynamo_tracer=True,
+        )
+
+
+if __name__ == "__main__":
+    run_tests()
Repository: pytorch/TensorRT

Issue:
Add support for `aten.copy`



Discussion:

Resolving patch:
diff --git a/py/torch_tensorrt/dynamo/conversion/aten_ops_converters.py b/py/torch_tensorrt/dynamo/conversion/aten_ops_converters.py
--- a/py/torch_tensorrt/dynamo/conversion/aten_ops_converters.py
+++ b/py/torch_tensorrt/dynamo/conversion/aten_ops_converters.py
@@ -2547,3 +2547,28 @@ def aten_ops_trunc(
         name,
         args[0],
     )
+
+
+@dynamo_tensorrt_converter(torch.ops.aten.copy.default)
+@enforce_tensor_types(
+    {
+        1: (TRTTensor,),
+    }
+)
+def aten_ops_copy(
+    ctx: ConversionContext,
+    target: Target,
+    args: Tuple[Argument, ...],
+    kwargs: Dict[str, Argument],
+    name: str,
+) -> Union[TRTTensor, Sequence[TRTTensor]]:
+    src = args[1]
+    return impl.cast.to_copy(
+        ctx,
+        target,
+        SourceIR.ATEN,
+        name,
+        src,
+        src.dtype,
+        force_layer=True,
+    )


Test patch:
diff --git a/tests/py/dynamo/conversion/test_copy_aten.py b/tests/py/dynamo/conversion/test_copy_aten.py
new file mode 100644
--- /dev/null
+++ b/tests/py/dynamo/conversion/test_copy_aten.py
@@ -0,0 +1,31 @@
+import torch
+import torch.nn as nn
+from parameterized import parameterized
+from torch.testing._internal.common_utils import run_tests
+
+from .harness import DispatchTestCase
+
+
+class TestCopyConverter(DispatchTestCase):
+    @parameterized.expand(
+        [
+            ((3,), (3,), False),
+            ((1, 10), (1, 10), False),
+            ((2, 3, 4), (2, 3, 4), True),
+            ((2, 3, 4, 5), (2, 3, 4, 5), True),
+        ]
+    )
+    def test_copy_float(self, input_shape, src_shape, non_blocking):
+        class Copy(nn.Module):
+            def forward(self, input, src):
+                return torch.ops.aten.copy.default(input, src, non_blocking)
+
+        inputs = [torch.randn(input_shape), torch.randn(src_shape)]
+        self.run_test(
+            Copy(),
+            inputs,
+        )
+
+
+if __name__ == "__main__":
+    run_tests()
Repository: OCHA-DAP/hdx-ckan

Issue:
Change onHover of the logo to display version #
Text to display:  HDX version Beta0.2.2



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/helpers.py b/ckanext-hdx_theme/ckanext/hdx_theme/helpers.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/helpers.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/helpers.py
@@ -6,6 +6,7 @@
 import sqlalchemy
 import ckan.logic as logic
 import datetime
+import version
 import count
 import json
 import logging
@@ -116,5 +117,6 @@ def render_date_from_concat_str(str, separator='-'):
                 log.warning(e)
     
     return result
-        
 
+def hdx_version():
+    return version.hdx_version
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
@@ -1,11 +1,11 @@
+import ckanext.hdx_theme.licenses as hdx_licenses
+from beaker.cache import cache_regions
+
 import ckan.plugins as plugins
 import ckan.plugins.toolkit as toolkit
-
 import ckan.model.package as package
 import ckan.model.license as license
-import ckanext.hdx_theme.licenses as hdx_licenses
-
-from beaker.cache import cache_regions
+import version;
 
 cache_regions.update({
         'hdx_memory_cache':{
@@ -66,7 +66,8 @@ def get_helpers(self):
             'get_group_followers':hdx_helpers.get_group_followers,
             'get_group_members':hdx_helpers.get_group_members,
             'markdown_extract_strip':hdx_helpers.markdown_extract_strip,
-            'render_date_from_concat_str':hdx_helpers.render_date_from_concat_str
+            'render_date_from_concat_str':hdx_helpers.render_date_from_concat_str,
+            'hdx_version':hdx_helpers.hdx_version
         }
         
     def get_actions(self):
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/version.py b/ckanext-hdx_theme/ckanext/hdx_theme/version.py
new file mode 100644
--- /dev/null
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/version.py
@@ -0,0 +1 @@
+hdx_version='v0.2.2'
\ No newline at end of file


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Implement GA tracking of downloads
From Luis: 

_I've done some research about how to track the number of downloads in the website. We can track those events using Google Analytics as you suggested. There is a slight change of code that has to be implemented following Google Analytic's developer manual [here](https://developers.google.com/analytics/devguides/collection/analyticsjs/events). It is a bit more refined than copying and pasting code, although at a glance it doesn't seem to be extremely complicated._



Discussion:

Resolving patch:
diff --git a/ckanext-metadata_fields/ckanext/metadata_fields/plugin.py b/ckanext-metadata_fields/ckanext/metadata_fields/plugin.py
--- a/ckanext-metadata_fields/ckanext/metadata_fields/plugin.py
+++ b/ckanext-metadata_fields/ckanext/metadata_fields/plugin.py
@@ -47,6 +47,7 @@ def package_types(self):
     def _modify_package_schema(self, schema):
         
         schema.update({
+                'notes': [tk.get_validator('not_empty')], #Notes == description. Makes description required
                 'package_creator': [tk.get_validator('not_empty'),
                     tk.get_converter('convert_to_extras')],
                 'groups_list': [vd.groups_not_empty],
@@ -75,8 +76,8 @@ def update_package_schema(self):
 
     def show_package_schema(self):
         schema = super(HdxMetadataFieldsPlugin, self).show_package_schema()
-
         schema.update({
+            'notes': [tk.get_validator('not_empty')], #Notes == description. Makes description required
             'package_creator': [tk.get_converter('convert_from_extras'),
                 tk.get_validator('ignore_missing')],
             'caveats' : [tk.get_converter('convert_from_extras'),


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Provide a free text field for the "Other" license and remove the CC-noDerives license



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/licenses.py b/ckanext-hdx_theme/ckanext/hdx_theme/licenses.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/licenses.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/licenses.py
@@ -40,6 +40,16 @@ class LicenseOtherPublicDomainNoRestrictions(DefaultLicense):
     def title(self):
         return _("Public Domain / No Restrictions")
 
+class LicenseHdxMultiple(DefaultLicense):
+#     domain_content = True
+    id = "hdx-multi"
+#     is_generic = True
+#     is_okd_compliant = True
+
+    @property
+    def title(self):
+        return _("Multiple Licenses")
+
 class LicenseHdxOther(DefaultLicense):
 #     domain_content = True
     id = "hdx-other"
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
@@ -23,6 +23,7 @@ def _generate_license_list():
                                                   license.License(license.LicenseCreativeCommonsAttributionShareAlike()),
                                                   license.License(hdx_licenses.LicenseCreativeCommonsNoDerives()),
                                                   license.License(hdx_licenses.LicenseOtherPublicDomainNoRestrictions()),
+                                                  license.License(hdx_licenses.LicenseHdxMultiple()),
                                                   license.License(hdx_licenses.LicenseHdxOther())
                                                   ]
 
diff --git a/ckanext-metadata_fields/ckanext/metadata_fields/plugin.py b/ckanext-metadata_fields/ckanext/metadata_fields/plugin.py
--- a/ckanext-metadata_fields/ckanext/metadata_fields/plugin.py
+++ b/ckanext-metadata_fields/ckanext/metadata_fields/plugin.py
@@ -59,6 +59,8 @@ def _modify_package_schema(self, schema):
                     tk.get_converter('convert_to_extras')],
             'methodology' : [tk.get_validator('ignore_missing'),
                     tk.get_converter('convert_to_extras')],
+            'license_other' : [tk.get_validator('ignore_missing'),
+                    tk.get_converter('convert_to_extras')],
             })
 
         return schema
@@ -88,6 +90,8 @@ def show_package_schema(self):
                 tk.get_validator('ignore_missing')],
             'methodology' : [tk.get_converter('convert_from_extras'),
                 tk.get_validator('ignore_missing')],
+            'license_other' : [tk.get_converter('convert_from_extras'),
+                tk.get_validator('ignore_missing')],
             })
         return schema
         


Test patch: